Перейти к публикации

Сделай свою работу в Solidworks эффективнее


Рекомендованные сообщения

tompsongun

Думаю дальше нет смысла мучиться.

Пробовал разные варианты запуска. Хотел посмотреть быстродействие по

сравнению с эксплорером от SW.

Запускали и от имени администратора, все то же самое.

Макрос вообще не запустился.

Спасибо за участие.

Иногда требуется найти и переименовать файл. Это  можно сделать и на родном ее языке.

Ссылка на сообщение
Поделиться на других сайтах


19.11.2020 в 06:27, tompsongun сказал:

поправил макрос "переименование и сохранение с чертежом", если кому надо:

SaveAsCopy 2.3.3.zip 24 \u041a\u0431 · 25 скачиваний

 

- исправил ошибку завершения макроса в панели Custom Toolbar (CAD+ Toolset)Custom Toolbar (CAD+ Toolset) - спасибо за наводку artem_cad.

- убрал ник из заголовка формы.

- исправил ошибку - как следствие исправления первой и неопытности - запоминало имя закрываемого файла в сессии солида при повторном запуске макроса и подставляло его в качестве нового имени (не обнулялась переменная).

 

ссылка на первый пост с этим макросом

св2019 с Toolbar+, галка с unload after run убрана. Если ставишь галку "открыть новый файл", а галку "закрыть исходный файл" не ставишь, то новый файл создаётся, но не открывается. Если кто-нибудь пользуется макросом, есть ли такая фигня? Может референсы не все отмечены...

Ссылка на сообщение
Поделиться на других сайтах

@Docuk1 , вроде поправил. Спасибо, за бдительность! )). Попробуйте, на всякий случай предыдущую версию сохраните. не было условия проверки по этому поводу.

версия 2.3.4

SaveAsCopyWithDrawing.swp

Изменено пользователем tompsongun
Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

версия 2.4 SaveAsCopyWithDrawing

возможность выбора компонента для копирования в модели сборки (без предварительного открытия в отдельном окне модели подлежащей копированию), запрос работы с выбранной или с открытой моделью, окно предупреждения открытия переименованной модели, изменил окно развития программы.мымыы.jpg

если в модели сборки что-то выбрано в дереве или графической части - будет запрос о копировании этого компонента, если ничего не выбрано - запрос о копировании текущей модели сборки, если ответить "нет" макрос завершается; в модели детали - сразу главное окно.

SaveAsCopyWithDrawing.swp

не забываем, сохранять копию предыдущей верси )) я ж любитель

 

да, добавились лишние телодвижения.. но вы всегда можете подправить макрос под себя. мне кажется, что так лучше - меньше вероятность ошибки

Изменено пользователем tompsongun
Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, tompsongun сказал:

версия 2.4 SaveAsCopyWithDrawing

возможность выбора компонента для копирования в модели сборки (без предварительного открытия в отдельном окне модели подлежащей копированию), запрос работы с выбранной или с открытой моделью, окно предупреждения открытия переименованной модели, изменил окно развития программы.мымыы.jpg

если в модели сборки что-то выбрано в дереве или графической части - будет запрос о копировании этого компонента, если ничего не выбрано - запрос о копировании текущей модели сборки, если ответить "нет" макрос завершается; в модели детали - сразу главное окно.

SaveAsCopyWithDrawing.swp 127 \u041a\u0431 · 2 скачивания

не забываем, сохранять копию предыдущей верси )) я ж любитель

 

да, добавились лишние телодвижения.. но вы всегда можете подправить макрос под себя. мне кажется, что так лучше - меньше вероятность ошибки

Возможно ли добавить настройку(галку), чтобы новая деталь/сборка была с рандомным цветом? 

Ссылка на сообщение
Поделиться на других сайтах

@Docuk1 , могу предложить отдельный макрос, т.к. его можно будет вызывать сколь угодно раз чтобы расскрасить деталь или все детали в сборке и не зависеть от создания копии.

просто, если случайный цвет назначится совсем тёмный или повторится с небольшим отклонением - перекрашивать придётся всё равно и тогда лучше уж иметь отдельную кнопочку.  если всё же настаиваете - впилю его )) но не сразу правда, и при этом скорее всего получится, что он во вновь созданной сборке расскрасит все входящие детали в разные цвета.

Multicolor.zip

Изменено пользователем tompsongun
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, tompsongun сказал:

могу предложить отдельный макрос, т.к. его можно будет вызывать сколь угодно раз чтобы расскрасить деталь или все детали в сборке и не зависеть от создания копии.

Возможно ли сделать так, чтобы одинаковым деталям назначался одинаковый цвет?

Ссылка на сообщение
Поделиться на других сайтах

@malvi.dp , макрос не мой. можно раскрасить по уникальности детали. посмотрю, если осилю ) то выложу. но боюсь, это не скоро у меня получится.

возможно в этом нам подсобит уважаемый @alek77 в его замечательном макросе по подсчету идентичных компонентов и выводу сводной инфы есть, как мне кажется, нужный механизм. но его надо оттуда достать , осознать и внедрить.

изображение.png

я раскраской этой давно не пользовался. тут может и проще, судя по тому, что Вы описали, тут окрас производится на уровне сборки, если это производить на уровне детали - тогда механизмы не нужны. но тут появляется вилка - нужно тогда развить макрос до формы/диалога с выбором как необходимо расцветить сборку, ибо комук-то не нужно, чтобы цвет попал в деталь, а остался в сборке, кому-то иначе

Изменено пользователем tompsongun
Ссылка на сообщение
Поделиться на других сайтах

Всем Привет.

А существует ли макрос для открытия просто папки (ее место расположения)

Типа нажимаешь на кнопочку и открывается проводник

с местом расположения файлов, и запускаешь программку) ?

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Crab сказал:

А существует ли макрос для открытия просто папки (ее место расположения)

Типа нажимаешь на кнопочку и открывается проводник

с местом расположения файлов, и запускаешь программку) ?

Не совсем понятно каких файлов и какой папки?

Есть вот такой макрос у Артема: https://www.codestack.net/solidworks-api/document/assembly/components/show-selected-assembly-component-window-folder

или вот этот

https://www.codestack.net/visual-basic/algorithms/fso/browse-folder/

Есть вот такой макрос у Олега:

https://streamdivision.ru/otkryt-papku/

выбирайте...

Изменено пользователем Snake 60
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Crab сказал:

нажимаешь на кнопочку и открывается проводник

с местом расположения файлов

 

"Откройте меню Окно, наведите указатель мыши на название открытого документа и нажмите на значок папки"

2021 Справка по SOLIDWORKS - Открытие содержащих папок для документов

 

open folder.jpg

 

Такой простой путь не подойдёт, нужен макрос? )

Ссылка на сообщение
Поделиться на других сайтах

Прошу прощения что не правильно изъяснился.

Интересует открытие папки где лежат не связанные с solidworks программы.

Ранее писал что не запускается сторонняя программка с использованием макроса.

По этому хотелось бы открыть саму папку проги и просто запустить ее, а не лазить по проводнику

в поисках ее.

Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, Crab сказал:

По этому хотелось бы открыть саму папку проги и просто запустить ее, а не лазить по проводнику

в поисках ее.

Можно сделать это средствами самого проводника и не морочить себе голову

Clip269.png

Надеюсь как быстро вызвать проводник, объяснять не надо

Изменено пользователем Plumber
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Crab сказал:

По этому хотелось бы открыть саму папку проги и просто запустить ее, а не лазить по проводнику

в поисках ее.

 

1 час назад, Plumber сказал:

Можно сделать это средствами самого проводника и не морочить себе голову

Так же можно добавить папку в библиотеку проектирования (через правую кнопку мыши ДОБАВИТЬ СУЩЕСТВУЮЩУЮ ПАПКУ) и после добавления нужной папки через правую кнопку мыши ОТКРЫТЬ ПАПКУ:

http://help.solidworks.com/2010/russian/solidworks/sldworks/legacyhelp/sldworks/ui/design_library.htm

Ссылка на сообщение
Поделиться на других сайтах

Макрос SaveAsCopyWithDrawings переработал. теперь он называется SaveAsCopyReplace - в общем основная цель развития макроса была достичь переименования в сборке ))

прошу извинить, что доставил тем самым некоторые неудобства.

-----------------------------------------

из справки к макросу:

Макрос для создания (резервной) копии модели и чертежа с новым заданным именем и местом расположения с возможностью замены исходной модели на копию (переименование) в сборке.

     Макрос рядом с собой создаёт файлы path.txt (последние пути сохранения) и SaveAsCopyReplace.ini (запоминает положение 'птичек' выбора действий в макросе) - в кодировке win1251,  желательно их вручную не править, особенно ini-файл (не менять количество строк во избежание ошибок).

1. Простое копирование.
           Откройте модель, если модель - сборка, в ней ничего не выделяйте.
           Запустите макрос, в сборке появится окно запроса, ответьте 'да' - откроется главное окно, 'нет' - завершит макрос.
           Внесите необходимые изменения, нажмите 'сохранить'.
2. Копирование из сборки          

           Откройте модель сборки, выделите какую-либо модель детали в дереве построения/графической области.
           Для копирования модели подсборки её необходимо выбрать в дереве построения.
           Запустите макрос, в сборке появится окно запроса о выделенном компоненте, ответьте 'да' - откроется главное окно, 'нет' - завершит макрос.  
           Уберите 'галочку' с 'заменить модель в сборке', если она была установлена и, внеся необходимые изменения, нажмите 'сохранить'.
3. Копирование с заменой исходной модели в сборке (Переименование модели вместе с чертежом в сборке)
           Откройте модель сборки, выделите какую-либо модель детали в дереве построения/графической области.
           Для копирования модели подсборки её необходимо выбрать в дереве построения.
           Запустите макрос, в сборке появится окно запроса о выделенном компоненте, ответьте 'да' - откроется главное окно, 'нет' - завершит макрос.  
           Поставьте 'крыжик' на 'заменить модель в сборке', если его не было. Обратите внимание на  удаление исходных файлов модели и чертежа - они удалятся безвозвратно
           - по сути произойдёт переименование. Если отключить опцию удаления - получится своего рода резервная копия,
           Внесите необходимые изменения, нажмите 'сохранить'.

-------------------------------

Screenshot_7.jpgScreenshot_8.jpg

-------------------------------

SaveAsCopyReplace.zip

-------------------------------

свойства "наименование" и "обозначение" вносить/править через Mrop - когда-то планирую реализовать, сейчас пока нет на это времени. да и на отладку пока, видимо, тоже (. в чём немного не уверен - что есть завязка на последовательное открытие/закрытие окна детали/подсборки из сборки при замене. хотя в этот процесс вроде не вклиться стороннему окну или чего-то

.

ну и обработка ошибок скорее всего не в полной мере реализованна.

 

надеюсь, доставит ))

-------------------------------

 

прошу помощи в создании простого в реализации контекстного меню для textbox, combobox. хотелось добавить функции копировать, вставить, вырезать, очистить.  через SendKeys не очень - иногда срабатывает numlock - находил инфу, что это баг vba. на numlock, у меня висит калькулятор. потому пытался использовать keybd_event. да и доп. библ. меньше хочется использовать. Наивно думал, что этот функционал прост, т.к. повсеместно используется, или не там и не то ищу..

 

находил, что можно через listbox меню сделать, но в нём пункты не подсвечиваются, и функционал не всегда сразу срабатывает, и почему-то всегда вставляет во второе текстовое поле, хотя вроде активным указываю другое - не разобрался.

тут вот мой корявенький код по контекстному меню)), в котором для элементов где контекстное меню не нужно - пришлось писать обработки - громоздко вышло, что не "айс". не осилил, короче, (да и аврал на работе, переименование и логику чек-боксов тупил доделывал) :

Скрытый текст

  ----------модуль--------------

.....

Public Function CopyMe()
   keybd_event VK_CONTROL, 0, 0, 0
    keybd_event VK_C, 0, 0, 0
    keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
End Function

 

Public Function PasteMe()
   keybd_event VK_CONTROL, 0, 0, 0
   keybd_event VK_V, 0, 0, 0
   keybd_event VK_V, 0, KEYEVENTF_KEYUP, 0
   keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
End Function

 

 

------------ форма-------------

 

' в начале

Me.ListBox_Menu.AddItem ("Копировать")
  Me.ListBox_Menu.AddItem ("Вставить")

......
'контекстное меню СКРЫТЬ 2.4.1

Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then Me.ListBox_Menu.Visible = False
    Me.ListBox_Menu.Visible = False
End Sub
Private Sub IncludeDRW_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then Me.ListBox_Menu.Visible = False
    Me.ListBox_Menu.Visible = False
End Sub
Private Sub CloseOldFile_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then Me.ListBox_Menu.Visible = False
    Me.ListBox_Menu.Visible = False
End Sub
Private Sub OpenNewFile_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then Me.ListBox_Menu.Visible = False
    Me.ListBox_Menu.Visible = False
End Sub

 

' контекстное меню ПОКАЗАТЬ 2.4.1
Private Sub TextBoxPathOld_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBoxPathOld.SetFocus
    If Button = 2 Then
        Me.ListBox_Menu.ListIndex = -1
        Me.ListBox_Menu.Top = TextBoxPathOld.Top
   '     Me.ListBox_Menu.Left =TextBoxPathOld.Left
        Me.ListBox_Menu.Visible = True
        Me.ListBox_Menu.Font.Size = 10
    ElseIf Button = 1 Then
        Me.ListBox_Menu.Visible = False
    End If
End Sub

Private Sub TextBoxName_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then
    TextBoxName.SetFocus
        Me.ListBox_Menu.ListIndex = -1
        Me.ListBox_Menu.Top = TextBoxName.Top
     '   Me.ListBox_Menu.Left = TextBoxName.Left
        Me.ListBox_Menu.Visible = True
        Me.ListBox_Menu.Font.Size = 10
    ElseIf Button = 1 Then
        Me.ListBox_Menu.Visible = False
    End If
End Sub

Private Sub ComboBoxNewPath_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then

        Me.ListBox_Menu.ListIndex = -1
        Me.ListBox_Menu.Top = ComboBoxNewPath.Top
   '     Me.ListBox_Menu.Left = ComboBoxNewPath.Left
        Me.ListBox_Menu.Visible = True
        Me.ListBox_Menu.Font.Size = 10
    ElseIf Button = 1 Then
        Me.ListBox_Menu.Visible = False
    End If
    ComboBoxNewPath.SetFocus
End Sub

Private Sub ListBox_Menu_Click()
    If Me.ListBox_Menu.ListIndex = 0 Then CopyMe
    
   If Me.ListBox_Menu.ListIndex = 1 Then PasteMe
    Me.ListBox_Menu.Visible = False
End Sub

 

 

Изменено пользователем tompsongun
Ссылка на сообщение
Поделиться на других сайтах

Ребята, вспомнил тут про макрос переименования файлов из дерева построения в контексте последнего поста и вспомнил про небольшое затруднение, которое возникает в работе. Макрос меняет имя файла да, но не присваивает новые свойства модели по новому имени файла. Может был уже макрос, или кусок кода, который можно было бы прикрутить к макросу переименования, чтобы свойства автоматом записывались тоже. А то каждый раз после переименования надо Mprop запускать. Присоединяюсь к последнему посту с пожеланием это реализовать.

Ссылка на сообщение
Поделиться на других сайтах

@none , да кусок кода есть в пакете swplus от  уважаемого Leon, кое где ещё, но надо заниматься этим, сделаю, но надо время. и если кто выдерет кусок кода необходимый - сэкономит время ))

получить имя файла, применить разделитель (он у всех разный может быть) между наименованием и обозначением, собственно добавить в макрос кнопочку по внесению свойств.

думал по подобию макроса от уважаемого Fox1001 сделать, но это закомпилированный файл, пока не ковырял его.

изображение.png

макрос полуавтоматический и наименование считывает- одно слово - до 1го пробела, однако вносит исправно если более 1 слова.

 

предполагал также сделать. три поля под наименование и обозначение и разделитель (с предустановленным списком) . поля редактируемые. кнопка для считывания наим/обознач, чекбокс на внесение свойств, чек чтобы редактировать эти поля. можно и суффиксы-префиксы тоже добавить ))

 

и это по простому - 2 свойства, так-то Мпроп вносит + комплекс свойств типа: Наименование_ФБ, дескрипшн, намбер.  

 

собственно сам скомпилированный макрос, в ветке swplus.net вроде он есть, а может и нет уже. Fox1001, увы, более не поддерживает проект.

Rename part.zip

Изменено пользователем tompsongun
Ссылка на сообщение
Поделиться на других сайтах

Всем привет!

Оставлю тут обновленную версию. Не помню, было ли здесь. sw17sp5

Макрос для приведения ширины дерева к привычному размеру после ручного изменения ширины, например для просмотра длинных наименований, настраивается внутри макроса изменением ширины в пикселях, там подписано. Нужную ширину можно подсмотреть при пошаговом выполнении.

Пользуюсь постоянно, удобен на горячей кнопке.

 

FeatureManagerWidth.swp

Ссылка на сообщение
Поделиться на других сайтах

SaveAsCopyReplace 2.6

таки сделал автовнесение свойств в копию модели, а именно:Description, Number, Наименование, Обозначение (во вкладки общая и активная конфигурация),

такие свойста Мпропом вносятся.

 

разделитель обозначения и наименования - списочек малый, можете свой указать запомнит последний в ini-файле. слово 'пробел' заменяется внутри макроса на соотв. символ. при первом пользовании, выберите из списка, наверно, иначе он пустой.

изображение.png

ini-файл, возможно пересоздать придётся, просто однажды были ошибки. сейчас не было, т.е. я не пересоздавал его. надеюсь в этой версии ничего не испортил, а то с горяча жешь)))

 

SaveAsCopyReplace 2.6.zip

Ссылка на сообщение
Поделиться на других сайтах

оставлю код для внесение свойств в модель. т.к. пришлось много перелопатить. может кому-то облегчу жизнь ). в [] - пояснение с форума солида от Deepak Gupta

Скрытый текст

Public swCustProp      As CustomPropertyManager
Public swConfigMgr     As SldWorks.ConfigurationManager
Public swConfig As SldWorks.Configuration

Public Obozn As String
Public Naimen As String

 

'вносим свойства настройки


'  [  swCustPropMgr.Add3 "Quantity", swCustomInfoNumber, "800", 2]
'  [You can also use 1 in place of 2. Explanation of 0, 1 and 2 below.]
' [   swCustomPropertyDeleteAndAdd 1 = Delete an existing custom property having the same name and add the new custom property]
'  [  swCustomPropertyOnlyIfNew 0 = Add the custom property only if it is new]
'  [  swCustomPropertyReplaceValue 2 = Replace the value of an existing custom property having the same name]

 

Set swCustProp = swModel.Extension.CustomPropertyManager("")
swCustProp.Add3 "Number", swCustomInfoText, Obozn, 1
swCustProp.Add3 "Обозначение", swCustomInfoText, Obozn, 1
swCustProp.Add3 "Description", swCustomInfoText, Naimen, 1
swCustProp.Add3 "Наименование", swCustomInfoText, Naimen, 1

 

' вносим свойства на вкладку конфигурация
Set swConfigMgr = swModel.ConfigurationManager
Set swConfig = swConfigMgr.ActiveConfiguration
Set swCustProp = swModel.Extension.CustomPropertyManager(swConfig.Name)
swCustProp.Add3 "Обозначение", swCustomInfoText, Obozn, 1

 

и код для разделения обозначения и наименования

Скрытый текст

Public Obozn As String
Public Naimen As String
Public Razdelitel As String

Public TempString      As String

Public CharPos     As Long

 

Razdelitel = ComboRazdeliteli.Text

ComboBoxINI.List(5) = Razdelitel ' для сохранения в ини-файле
Razdelitel = Replace(Razdelitel, "пробел", " ")
    CharPos = InStr(TempString, Razdelitel)
    Obozn = Left$(TempString, CharPos - 1)
    Naimen = Right$(TempString, (Len(TempString) - Len(Obozn)))
    Naimen = Right$(Naimen, (Len(Naimen) - Len(Razdelitel)))

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...