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

Программное чтение структуры сборки


BazingAAA

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

Задача состоит в том чтобы в Windows-приложении (WPF или Windows Forms) подключиться к работающему приложению SolidWorks с открытой сборкой и прочесть структуру этой сборки с вложенными сборками и деталями. Плюс после хотелось бы прочесть свойства у каждого из этих элементов. Полистал справку по API, особого результата не дало. Сумел подключиться к приложению и прочитать некоторые свойства запущенного приложения.

К проекту подключал SolidWorks.Interop.sldworks.dll и SolidWorks.Interop.swconst.dll.

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


36 минут назад, BazingAAA сказал:

Полистал справку по API, особого результата не дало.

Ищите по ключевым словам Tree (дерево).

 

Правде теперь не понятно где искать, т.к. онлайн справку на оф.сайте похоже грохнули (по крайней мере пока пропали только ссылки на справку по API со страницы http://help.solidworks.com/ ).

 

Но пока есть сам ресурс: http://help.solidworks.com/SearchEx.aspx?query=tree&version=2010&lang=English,rus&prod=api

 

Один из примеров: http://help.solidworks.com/2010/english/api/sldworksapi/get_and_set_featuremanager_design_tree_display_example_vb.htm 

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

Ищите по ключевым словам Tree (дерево).

 

Правде теперь не понятно где искать, т.к. онлайн справку на оф.сайте похоже грохнули (по крайней мере пока только ссылку на справку по API).

Но пока есть сам ресурс: http://help.solidworks.com/SearchEx.aspx?query=tree&version=2010&lang=English,rus&prod=api

Например: http://help.solidworks.com/2010/english/api/sldworksapi/get_and_set_featuremanager_design_tree_display_example_vb.htm 

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

Данные примеры могут быть в приложенной справке API?

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

Данные примеры могут быть в приложенной справке API?

По последней ссылке и есть пример.

В справке много примеров, которые можно использовать в той или иной мере.

 

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

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

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

А если не секрет для чего сие нужно ?

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

 

2 часа назад, BazingAAA сказал:

подключиться к работающему приложению SolidWorks с открытой сборкой

А не проще ли выгрузить структуру средствами самого Солида, раз уж он запущен и сборка в него загружена?

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

А если не секрет для чего сие нужно ?

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

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

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

Мои соболезнования.

Ну, передадите структуру в этот несчастный Лоцман. Дальше-то что? Какой толк от этой "структуры"? Просто "шоб було"?

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

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

Эх, а я уж думал Treehouse посоветовать...

 

21 минуту назад, Ветерок сказал:

Мои соболезнования.

+1

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

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

А Эксель файл не подойдет?

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

Мои соболезнования.

Ну, передадите структуру в этот несчастный Лоцман. Дальше-то что? Какой толк от этой "структуры"? Просто "шоб було"?

Начальство попросило, значит им надо.

По сути чтобы быстро переносить эту структуру.

11 час назад, VOleg сказал:

А Эксель файл не подойдет?

Ну вообще если только как промежуточный этап. Какой-то инструмент есть для этой выгрузки?

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

Начальство попросило, значит им надо.

По сути чтобы быстро переносить эту структуру.

Ну вообще если только как промежуточный этап. Какой-то инструмент есть для этой выгрузки?

У меня расширенный шаблон спецификации - его сохраняю в эксель и импортирую в ПДМ.

Ессно, эти эксель файлы передаю производству. Они только рады.

Т.к. у меня есть добавочка в каждой сборке - то при опции "только детали" получаю полный состав изделия. Производство довольно. Это для случая без ПДМ.

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

Эх, а я уж думал Treehouse посоветовать...

А он как работает? Во что выгружает?

3 минуты назад, VOleg сказал:

У меня расширенный шаблон спецификации - его сохраняю в эксель

Вот здесь хотелось бы по-подробнее, если не сложно)

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

А он как работает? Во что выгружает?

Он берёт файл SolidWorks и строит дерево "до последнего винтика", с картинками, свойства показывает...

В SolidWorks 2017 и новее он в комплекте поставки.

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

А чем проблема программно?

 

Dim swApp As SldWorks.SldWorks
Dim swDoc As SldWorks.ModelDoc2
Dim swADoc As SldWorks.AssemblyDoc
Dim varComp As Variant
Dim varMatProp As Variant

Option Explicit
Sub main()

Set swApp = Application.SldWorks
Set swDoc = swApp.ActiveDoc
Set swADoc = swDoc
varComp = swADoc.GetComponents(True)     ' Получили все компоненты которые входят в сборку

  ' ===================делаете свои грязные дела c каждым компонентом=================
Dim I As Long
For I = LBound(varComp) To UBound(varComp)
    Dim swComp As SldWorks.Component2

    Dim swChild as SldWorks.ModelDoc2
    Set swComp = varComp(I)

    Set swChild = swComp.GetModelDoc2

 

Next I
varComp = Empty

'======================================================================
End Sub

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

импортирую в ПДМ

Это не PDM. PDM - это когда всё работает автоматически, без всяких импортов-экспортов. Иначе это не PDM, а просто хранилище данных.

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

А он как работает? Во что выгружает?

Вот здесь хотелось бы по-подробнее, если не сложно)

Вот подробнее в шаблоне спецификации

СП 80.sldbomtbt

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

А чем проблема программно?

 

Dim swApp As SldWorks.SldWorks
Dim swDoc As SldWorks.ModelDoc2
Dim swADoc As SldWorks.AssemblyDoc
Dim varComp As Variant
Dim varMatProp As Variant

Option Explicit
Sub main()

Set swApp = Application.SldWorks
Set swDoc = swApp.ActiveDoc
Set swADoc = swDoc
varComp = swADoc.GetComponents(True)     ' Получили все компоненты которые входят в сборку

  ' ===================делаете свои грязные дела c каждым компонентом=================
Dim I As Long
For I = LBound(varComp) To UBound(varComp)
    Dim swComp As SldWorks.Component2

    Dim swChild as SldWorks.ModelDoc2
    Set swComp = varComp(I)

    Set swChild = swComp.GetModelDoc2

 

Next I
varComp = Empty

'======================================================================
End Sub

Сначала промаргал такой путь)

Только начал ее рассматривать и ваш ответ пришел))

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

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

 

57 минут назад, BazingAAA сказал:

Сначала промаргал такой путь)

Только начал ее рассматривать и ваш ответ пришел))

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

GetComponents(True) кстати выводит все компоненты в том числе и погашенные, так что не забудьте проверку сделать. Ну и с конфигурациями повнимательней, он для активной конфигурации получает значения (на всякий случай вначале узнаете, какая конфигурация вам нужна, потом, когда получите ModelDoc2 делайте ее активной. Это я про подсборки говорю).

Массу и материалы достать не проблема, а вот что за размеры вы хотите достать? 

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

Ну и с конфигурациями повнимательней, он для активной конфигурации получает значения

А как уж с ними разобраться?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • eljer0n
      @malvi.dp в общем порядок следующий (на каждое исполнение свой чертеж и позиция в спецификации):   Для исполнения с 2мя знаками. 1. Есть деталь с именем формата ХХ-01.01-01 (последнее -01 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации (как у вас на картинке). Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с корректным именем. 5. В спецификации сборки все отображается корректно.     Для исполнения с 3мя знаками. 1. Есть деталь с именем формата ХХ-01.01-011 (последнее -011 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации. Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с некорректным именем, а именно - с обрезанным до двух знаков исполнением (-01). 5. В спецификации сборки шифр отображается (внезапно! может какой глюк был: у солида или у меня ) корректно, как и у вас на рисунке.     Выходит, загвоздка все-таки только в сохранялке чертежа.
    • gudstartup
      да информация о решенной проблеме очень важна так что будем ждать хороших новостей!
    • mrVladimir
      @gudstartup Спасибо Вам за помощь. Теперь дело в приобретении платы. Как что-то получится (сперва приобрести, потом поставить) обязательно отпишусь.
    • gudstartup
      а как вы taxid фирмы нашли?
    • gudstartup
      все что я написал в цитате выше по теме полная фигня в связи с вновь приобретённой информацией. можно менять любые компоненты в пределах серии чпу если только не меняете по или записываете oprminf но  всегда могут быть нюансы  @mrVladimir все должно получиться извините за то что выдал непроверенную информацию за мнение типа знающего эксперта оказывается я 
    • malvi.dp
      Какое у детали имя файла и как формируете Обозначение и Наименование? Вы каждое исполнение сохраняете в новый чертеж? Или это групповой чертеж? Если групповой-то имя конфигурации в нем быть не должно. Стоит ли галочка "Исполнение" "Из конфигурации"? На сколько мне не изменяет память макрос сохраняет файл чертежа с тем же именем что и файл модели в папке модели. В спецификации все правильно отображается, даже если знаков исполнений больше трех  
    • gudstartup
      и главная деталь чтобы на системе была remote option system а именно файл oprminf.000 c сертификатами и были ли проблемы с ними после замены компонентов.
    • boomeeeer
      с него родимого
    • Grundick
    • eljer0n
      Большое спасибо! Посмотрю. Но, судя по всему, даже если удастся заставить его сохранять чертеж с трехзначным исполнением, видимо, в той же спецификации правильного отображения не добиться. У Леона с товарищем был об этом разговор, что солид вроде как не воспринимает исполнения дальше двузначного. Хотя, может и я неправильно понял. Вернусь к этому вопросу чуть позже. Еще раз спасибо за совет.
×
×
  • Создать...