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

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


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

IFU

Смотрю на всевозможные TreeControlItem уже несколько часов. Подробнее есть возможность пояснить?

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


Хотя не. Был не прав. А прав был Shvg )))

Сразу присваивание Component2 - работает только в сборке. Вы же в чертеже. Естественно будет null.

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

Хотя не. Был не прав. А прав был Shvg )))

Сразу присваивание Component2 - работает только в сборке. Вы же в чертеже. Естественно будет null.

Значит придется эту радость забыть. Спасибо.

<noindex>Макрос, прикрепленный к посту #2944</noindex> - по ходу дела обновляю (последняя версия макроса от 30.05.2013) (он же - в <noindex>сообщении #2949</noindex>).

Кому интересно - пишите, буду дорабатывать интересующие моменты.

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

IFU

Ну что значит забыть? ))) Мой любимый метод в "три строчки кода". Получение модели из чертежа <noindex>http://www.streamdivision.com/model-iz-chertezha/</noindex>

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

Значит придется эту радость забыть. Спасибо.

Зачем забывать? Если Component2 равен нулю в чертеже, то можно попробовать DrawingComponent

Скрытый текст: Code VBA

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swSelMgr As SldWorks.SelectionMgr





Sub main()

	Set swApp = Application.SldWorks

	

	Dim swModel As SldWorks.ModelDoc2

	Set swModel = swApp.ActiveDoc

	

	If swModel Is Nothing Then Exit Sub

	   

	Dim docType As Integer

	docType = swModel.GetType()

	

	Select Case docType

		Case swDocDRAWING

			GetSelectedModelInDrawingView swModel

		Case swDocASSEMBLY

			GetSelectedPartInAssembly swModel

	End Select

	

		

End Sub



Sub GetSelectedModelInDrawingView(swModel As SldWorks.ModelDoc2)

	Set swSelMgr = swModel.SelectionManager

	Dim countObj As Integer

	countObj = swSelMgr.GetSelectedObjectCount()

	If countObj <> 1 Then Exit Sub

	

	Dim selType As Integer

	selType = swSelMgr.GetSelectedObjectType2(1)

	

	If selType = swSelectType_e.swSelCOMPONENTS Then ' если выбрали какой то компонент в дереве

		Dim swDrwComponent As SldWorks.DrawingComponent

		Set swDrwComponent = swSelMgr.GetSelectedObject5(1)

		

		Dim swComponent As SldWorks.Component2

		Set swComponent = swDrwComponent.Component

		

		Dim swModelDoc As SldWorks.ModelDoc2

		Set swModelDoc = swComponent.GetModelDoc2

		' далее бла-бла......

		

	End If



End Sub



Sub GetSelectedPartInAssembly(swModel As SldWorks.ModelDoc2)

	Set swSelMgr = swModel.SelectionManager

	Dim countObj As Integer

	countObj = swSelMgr.GetSelectedObjectCount()

	If countObj <> 1 Then Exit Sub

	

	Dim selType As Integer

	selType = swSelMgr.GetSelectedObjectType2(1)

	

	If selType = swSelectType_e.swSelCOMPONENTS Then

		Dim swComponent As SldWorks.Component2

		Set swComponent = swSelMgr.GetSelectedObject5(1)

				

		' далее бла-бла......

		

	End If



End Sub

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

Зачем забывать? Если Component2 равен нулю в чертеже, то можно попробовать DrawingComponent

Не забываем забирать обновленный макрос.

Shvg, streamdown - за подсказки спасибо! Все работает.

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

Ммда, по ходу я допер в чем проблема) Гигантское спасибо за наводку

Во вложении версия макроса от 24.05.2013

не работает на solidworks 2013 SP3 х64 Windows 7 х64 Идея работы этого макроса очень впечетляет если все заробает это будет очень хороший жирный плюс
Ссылка на сообщение
Поделиться на других сайтах

не работает на solidworks 2013 SP3 х64 Windows 7 х64 Идея работы этого макроса очень впечетляет если все заробает это будет очень хороший жирный плюс

Дайте скриншот ошибки посмотреть и подскажите - какой MS-Office стоит.

Нет SW2013 в наличии

Пробуйте переназначить библиотеки самостоятельно.

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

____________

Ставлю дома SW2013. Как адаптирую макрос - прикреплю.

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

<noindex>Предлагаю вниманию желающих макрос</noindex> по редактированию свойств моделей/чертежей.

Ссылка для скачивания демонстрационного видеоролика):

<noindex>i_property.avi</noindex>

Добавил демонстрационный ролик по выложенному мною макросу.

Ссылка для скачивания демонстрационного видеоролика):

<noindex>i_property.avi</noindex>

Он же - в прикрепленном файле.

Ролик поверхностно иллюстрирует возможности макроса.

Также обновил версию макроса (теперь - от 30.05.2013) (<noindex>прикреплен к посту #2944</noindex>, он же - в <noindex>сообщении #2949</noindex>)

demo.zip

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

не работает на solidworks 2013 SP3 х64 Windows 7 х64 Идея работы этого макроса очень впечетляет если все заробает это будет очень хороший жирный плюс

Проблема при работе в SW2013 - упомянутый мною Microsoft treeview control 6.0 (SP4) control из mscomctl.ocx.

Интересно то, что в установленном тут же MS Office 2007 данный элемент доступен и успешно функционирует.

Стоит задача заменить этот элемент на доступный в версии SW2013 (и заодно в MS Office 2010) не худший по функционалу объект (ну или, на худой конец - продолжить использовать имеющийся).

Если кто решал эту задачу - буду признателен за подсказку.

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

Проблема при работе в SW2013 - упомянутый мною Microsoft treeview control 6.0 (SP4) control из mscomctl.ocx.

Интересно то, что в установленном тут же MS Office 2007 данный элемент доступен и успешно функционирует.

Стоит задача заменить этот элемент на доступный в версии SW2013 (и заодно в MS Office 2010) не худший по функционалу объект (ну или, на худой конец - продолжить использовать имеющийся).

Если кто решал эту задачу - буду признателен за подсказку.

Нехитрые изыскания показали, что для 64-битной версии VBA7 не существует в природе 64-битной версии "mscomctl.ocx", а объекты ее 32-битной предшественницы VBA7 прочитать не в состоянии. Обращения народа в техподдержку MS ничего не дают аж с самого момента появления VBA7 в MS Office 2010 64bit - тогда у людей посыпалось множество Custom application.

Т.о., нужна альтернативная библиотека с treeview, listview и прочими приятными объектами для VBA7 64bit - нельзя же ораничиваться стандартными элементами VBA в ущерб удобству.

Идеи?

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

Идеи?

Что значит VBA7? Если это Visual Basic 7, то может пора перейти на более новую бесплатную версию серии Express

Нехитрые изыскания показали, что для 64-битной версии VBA7 не существует в природе 64-битной версии "mscomctl.ocx", а объекты ее 32-битной предшественницы VBA7 прочитать не в состоянии.

В чём выражается не способность прочитать? Может его надо зарегистрировать или в папку с программой положить?
Ссылка на сообщение
Поделиться на других сайтах

В гугле прям первая ссылка <noindex>http://www.jkp-ads.com/articles/treeview.asp</noindex>

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

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

Что значит VBA7? Если это Visual Basic 7, то может пора перейти на более новую бесплатную версию серии Express

VBA7 - VB for Application версии 7 - это редактор API SW2013 (VBA 7.1), MS Office 2010 (VBA 7.0).

Что такое "версия серии Express" не знаю. В VB не програмирую - новые приложения для собственных нужд если пишу, то пишу быстро и в VBA, а кучку старых перекодировать нет ни желания, ни времени. Ну вот так получается.

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

В англоязычных источниках упоминается: 64битный VBA7 не способен прочитать 32битные объекты msconctl.ocx (к примеру, <noindex> заметки про MS Office 2010</noindex>, а также пост без ответа: <noindex>64-bit ActiveX Controls for VBA7?</noindex>).

Регистрация и прочие ухищрения ничего на дают - библиотека видна в VBA7 x64, а ее объекты - нет.

Это значит помогло? Или сарказм? :smile:

Помогло? Я очень надеюсь - что это то, что надо. Самому такое не попадалось, да еще первой строкой. Да и ответ искал на др. вопрос - до последнего надеялся все-таки использовать именно mscomctl - дабы не перекодировать гору "мусора"... :smile:

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

В гугле прям первая ссылка <noindex>http://www.jkp-ads.com/articles/treeview.asp</noindex>

Полистал творение...

Дааааааа... Жуткий, но тем не менее - очевидный способ "сконструировать" "treeview" "из-того-что-было".

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

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

IFU

забить на VBA и плотно заняться WPF - там хоть из кнопок деревья прям в разметке строить.

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

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

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

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

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

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

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

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

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

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

    • Snake 60
    • vot



  • Сообщения

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