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

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


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

19 минут назад, Solidman сказал:

работает также как и старая версия

43 минуты назад, Kelny сказал:

Делал такую вариацию SetDimension V1.0:

https://kelnyproject.ucoz.ru/load/2-1-0-1

 

в дополнении есть ещё такая штука:

Условное обозначение отверстий (calloutformat.txt)

https://kelnyproject.ucoz.ru/load/uslovnoe_oboznachenie_otverstij_calloutformat_txt/2-1-0-27

при нажатии на кнопку запуска макроса ничего не происходит((

не понял что это значит:

"' * Для запуска макроса SetDimension.swp используйте модуль SetDimension_run
' * или класс ClassSetDimension, во всех других случаях при запуске макроса
' * возможно появление ошибки.

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


59 минут назад, DuS сказал:

не понял что это значит:

"' * Для запуска макроса SetDimension.swp используйте модуль SetDimension_run

Это если запускать макрос из редактора, понится были какие-то проблемы с запуском - уже не помню, что побудило написать это.

Так же проверить, что нет потерынных ссылок MISSING в меню редактора VBA Tool->References...

 

 

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

 

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

при нажатии на кнопку запуска макроса ничего не происходит((

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

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

работает также как и старая версия

Помнится эта проблема вытекает из-за того что М запрятана в парметр <DIM> в строке размера уже с этой буквой и макрос не может проверить, что в теге уже есть буковка M.

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

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

нет, окна нет.

14 минут назад, Kelny сказал:

Помнится эта проблема вытекает из-за того что М запрятана в парметр <DIM> в строке размера уже с этой буквой и макрос не может проверить, что в теге уже есть буковка M.

согласен

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

нет, окна нет.

Таких проблем замечено не было.

Так нет потерянных ссылок?

А если запускать макрос не кнопкой, а из редактора макроса?

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

Таких проблем замечено не было.

Так нет потерянных ссылок?

А если запускать макрос не кнопкой, а из редактора макроса?

Аннотация 2022-12-02 150749.jpg

ругается на что то

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

ругается на что то

Можно сделать код универсальным

Цитата

#If Win64 Then

          Private Declare PtrSafe Function ...

          ...

#Else    

          Private Declare Function ...

          ...

#End If

или просто добавить PtrSafe для всех фукнций такого рода:

Цитата

Private Declare PtrSafe Function ...

и ещё, если не заработает, то только в этих функциях поменять Long на LongPtr

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

Помнится эта проблема вытекает из-за того что М запрятана в парметр <DIM> в строке размера уже с этой буквой и макрос не может проверить, что в теге уже есть буковка M.

Какие-никакие данные можно выкопать из интерфейса IDisplayData ( IDisplayDimension.GetDisplayData() ).

Там при вызове метода IDisplayData.GetTextAtIndex(0) получается:

 - если обычный размер то данный текст содержит ПрефиксТекст + ЗначениеРазмера + СуффиксТекст.

 - если размер с резьбой - то только значение резьбового размера. (например М5)

Не факт что это все закономерности, но что заметил - то заметил.

Причем IDisplayData только для чтения.

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

Какие-никакие данные можно выкопать из интерфейса IDisplayData ( IDisplayDimension.GetDisplayData() ).

Там при вызове метода IDisplayData.GetTextAtIndex(0) получается:

 - если обычный размер то данный текст содержит ПрефиксТекст + ЗначениеРазмера + СуффиксТекст.

 - если размер с резьбой - то только значение резьбового размера. (например М5)

Не факт что это все закономерности, но что заметил - то заметил.

Причем IDisplayData только для чтения.

Может быть , если у вас есть возможность , вы поправите макрос? Для меня весь этот VBA как египетские иероглифы)

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

Может быть , если у вас есть возможность , вы поправите макрос? Для меня весь этот VBA как египетские иероглифы)

Увы, я на VBA тоже не пишу - я на C#.

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

Увы, я на VBA тоже не пишу - я на C#.

Жаль( 

Я то по простоте своей думал, открою макрос, найду строчку где он добавляет букву М и вместо М сделаю пробел. ))) Не получилось.

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

Здравствуйте, всем!

как в SW можно добавить такое обозначение номера размера на продолжении размерной линии? Может есть макрос?

ps

при оформлении эскизов ЕСТД

 

image.png

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

как в SW можно добавить такое обозначение номера размера на продолжении размерной линии?

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

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

2022-12-05_18-39-00.gif

 

Ссылка на сообщение
Поделиться на других сайтах
11.03.2013 в 22:40, Shvg сказал:

Тема про условные обозначения отверстий. <noindex>http://fsapr2000.ru/index.php?showtopic=60...st&p=532211</noindex>

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

HoleSymbol.rarНедоступно

Уважаемый Shvg, а нельзя ли ещё разок сделать доступным сие чудо света?

Ссылка на сообщение
Поделиться на других сайтах
05.12.2022 в 13:35, anton1308 сказал:

как в SW можно добавить такое обозначение номера размера на продолжении размерной линии?

 

20 часов назад, Snake 60 сказал:

Макрос такой не встречал, теоретически, думаю, реализуемо.

Возможно в API это Compound Note (вольный машинный перевод):

Цитата

Составная заметка — это заметка, которая может содержать несколько текстовых строк и геометрию эскиза.

Составные заметки эквивалентны определяемому пользователем символу и могут быть созданы с помощью IDrawingDoc::CreateCompoundNote . После создания вы можете использовать другие методы составных заметок для добавления текста и геометрии эскиза к объекту.

Этот объект представляется конечному пользователю, как если бы это был один элемент. Если пользователь выбирает составную заметку и перетаскивает ее, все объекты и текст перемещаются вместе.

https://help.solidworks.com/2010/english/api/sldworksapiprogguide/overview/compound_note.htm

 

Пример:

https://help.solidworks.com/2010/english/api/sldworksapi/create_compound_note_example_vb.htm

 

 

 

 

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

Уважаемый Shvg, а нельзя ли ещё разок сделать доступным сие чудо света?

Так по вашей же ссылке файл HoleSymbol.rar лежит:

https://cccp3d.ru/applications/core/interface/file/attachment.php?id=56398

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

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

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

(Вот пример для Корела - https://forum.rudtp.ru/threads/avtozapusk-makrosa-v-corel-x3-x4-est-li.40828/)

Для Solidworks такого не нашел есть только события Workspace_Startup() и Workspace_Exit(), причем не понятно, как они работают. Solidworks на эти события вроде бы вообще не реагирует (по крайней мере я не понял, какое действие приводит к запуску)

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

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

Тоже самое.

 

19 часов назад, SerSAW сказал:

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

Существует способ постоянного висения в памяти и слежения за действиями и в случае запуска нужного активация нужных действий.

 

19 часов назад, SerSAW сказал:

Для Solidworks такого не нашел есть только события Workspace_Startup() и Workspace_Exit()

https://help.solidworks.com/2010/english/api/swconst/solidworks.interop.swconst~solidworks.interop.swconst.swappnotify_e.html

 

https://help.solidworks.com/2010/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.DSldWorksEvents_FileOpenNotify2EventHandler.html

 

Пример:

https://help.solidworks.com/2010/english/api/sldworksapi/fire_notification_after_adding_a_mate_example_vb.htm

 

https://help.solidworks.com/SearchEx.aspx?q=Notify+example&nresults=5&sort=&version=2010&lang=english&prod=api

 

 

 

 

 

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

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

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

(Вот пример для Корела - https://forum.rudtp.ru/threads/avtozapusk-makrosa-v-corel-x3-x4-est-li.40828/)

Для Solidworks такого не нашел есть только события Workspace_Startup() и Workspace_Exit(), причем не понятно, как они работают. Solidworks на эти события вроде бы вообще не реагирует (по крайней мере я не понял, какое действие приводит к запуску)

вопрос решил в следующей последовательности:

1) https://www.youtube.com/watch?v=T8MhrWHzUQc&t=142s&ab_channel=JavelinTechnologiesInc.|ATriMechCompany) от сюда передрал код для обработчика событий.

2) https://r1132100503382-eu1-3dswym.3dexperience.3ds.com/?_gl=1*1sb0o1g*_ga*MTI1NzU1NjE1Ny4xNjU2ODQxMzI5*_ga_XQJPQWHZHH*MTY3MTAxOTA3Ny4yMi4wLjE2NzEwMTkwNzcuNjAuMC4w&serverId=SwymHttpdTomcatServer_3#community:yUw32GbYTEqKdgY7-jbZPg/iquestion:tBn8dQ49Tci3Ap3MbglWwQ От сюда взял строку кода для запуска второго макроса из первого

3) https://www.codestack.net/solidworks-api/getting-started/macros/run-macro-on-solidworks-start/ По этому методу добавил макрос с обработчиком событий в загрузку вместе с солидом.

Получилось что я теперь могу добавить любой макрос на какое действие программы (в моем случае открытие документа) Для моих задач этого хватило

 

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

вопрос решил в следующей последовательности

Часть ресурсов не доступно для РФ, а видео смотреть долго, было бы нагляднее указать конкретные используемые строки или зарисовку макроса для того, что бы вашим последователям было проще разобраться в вопросе и не изучать вопрос с нуля.

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

Часть ресурсов не доступно для РФ, а видео смотреть долго, было бы нагляднее указать конкретные используемые строки или зарисовку макроса для того, что бы вашим последователям было проще разобраться в вопросе и не изучать вопрос с нуля.

Извиняюсь. ну ресурсы не для РФ обычно мало кого останавливают)

В общем делать надо так:

1) По видео на ютубе наверно пояснений не нужно. просто нужно все повторить как там показано.

2) Private Function swApp_FileOpenPostNotify(ByVal FileName As String) As Long

swApp.RunMacro "C:\Users\SER\Desktop\Macro", "Macro1", "main"

End Function

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

Этот кусок надо поставить вместо функции из видео, которая вызывает MSG при создании документа. 

3) Создаем новый ярлык на Solidworks

В поле объект (нового ярлыка) прописываем примерно так A:\SW2020\SOLIDWORKS\SLDWORKS.exe /m "C:\Users\user.SER\Desktop\Event Listener.swp" только нужно указать свои пути к солиду и к макросу.

В принципе по пункту 3 было много инфы на форуме правда подробно, как сделать только по ссылке выше нашел.

В итоге получаем что Event Listener.swp загружается вместе с Солидом и висит в памяти. Как только происходит открытие документа (или какое то ваше необходимое событие) Event Listener.swp запускает нужный вам макрос.

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

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

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

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

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

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

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

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

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

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

    • Snake 60



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