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

Как получить, в макросе SolidWorks, пути (адреса, имена) всех деталей и подсборок сборки (всех компонентов дерева конструирования)?


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

Как получить, в макросе SolidWorks, пути (адреса, имена) всех деталей и подсборок сборки (всех компонентов дерева конструирования)?

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

Заранее спасибо.

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


Здравствуйте.

А зачем?

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

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

Как все сложно.

Возьмите спецификацию.

Еще вариантов нет?

Мне необходимо без промежуточных этапов это реализовать.

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

Как получить, в макросе SolidWorks, пути (адреса, имена) всех деталей и подсборок сборки (всех компонентов дерева конструирования)?

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

Заранее спасибо.

см. здесь:

<noindex>http://www.solidworks.com/sw/support/APIDownloads.html</noindex> <<= ценная ссылка!:

...

Assembly How to adjust the scope of assembly-level features VB

Assembly How to change the configuration of an assembly component to in-use or last-saved VB

Assembly How to check an assembly for interference C++

Assembly How to create a cavity in an assembly VB

Assembly How to determine if an assembly component is being edited in-context VB

Assembly How to get the parent component of an assembly component VB

Assembly How to implement Drag and Drop of files from a FM-TreeCtrl to SW-View C++

Assembly How to iterate over mates in an assembly C++

Assembly How to reload an assembly component from a different path VB

Assembly How to rename components in an assembly VB

Assembly How to suppress assembly rebuild dialog VB

Assembly How to suppress rebuild dialog when activating assembly Any

Assembly How to resolve Component2::IGetChildren Visual C++ compiler error C++

Attributes How to add an attribute to the selected entity VB

...

Еще примерчик:

Attribute VB_Name = "Module8"

'------------------------------------------

' Description:

' How to traverse an assembly or part at the feature level

'

' Problem:

' How to to obtain a list of features which is similar to the Feature Manager Tree which is displayed by SolidWorks.

'

' For assemblies, this requires recursion into the sub-assemblies.

'

' To obtain a full list of the features, it is necessary to show each component in an assembly. This is not as expensive as it may seem as SolidWorks will load these files in order eferences to entities in these files.

'

' Preconditions:

' 1) a part or assembly is open

'Option Explicit

Dim FileNumber2 As Variant

Dim IndGen As Integer

Sub TraverseModelStart()

Set swApp = CreateObject("SldWorks.Application")

Set Model = swApp.ActiveDoc

FileNumber2 = FreeFile 'Определяем свободный файл

FName = "c:\Program Files\SolidWorks\VB\0_Excel\Out"

IndGen = 1: Form1.Text1 = Str(IndGen)

Open FName For Output Shared As #FileNumber2

Print #FileNumber2, "Start"

Call TraverseModel(swApp, Model, 0) '***********************

Close #FileNumber2

Model.ClearSelection

MsgBox "OK!"

End Sub

Sub TraverseModel(swApp As SldWorks.SldWorks, ByVal swModel As SldWorks.ModelDoc2, nLevel As Long)

Dim swSelMgr As SldWorks.SelectionMgr

Dim swComp As SldWorks.Component2

Dim swCompModel As SldWorks.ModelDoc2

Dim swFeat As SldWorks.feature

Dim swSubFeat As SldWorks.feature

Dim swSubSubFeat As SldWorks.feature

Dim swSubSubSubFeat As SldWorks.feature

Dim sPadStr As String

Dim nErrors As Long

Dim nWarnings As Long

Dim i As Long

Dim bRet As Boolean

' explicitly show the document since this could be a part

' or a part in a sub-assy

'swApp.ActivateDoc2 swModel.GetPathName, True, nErrors

For i = 0 To nLevel - 1

sPadStr = sPadStr + " "

Next i

Set swSelMgr = swModel.SelectionManager

Set swFeat = swModel.FirstFeature

While Not swFeat Is Nothing

FullDataCMP = sPadStr + swFeat.Name + " [" + swFeat.GetTypeName + "]"

'MsgBox FullDataCMP

Print #FileNumber2, FullDataCMP

Print #FileNumber2, "--------------------------"

' part or sub assy, so recurse into it get a reference to the Component through the SelectionManager

'-----------------------------------------------------------

If "Reference" = swFeat.GetTypeName Then

bRet = swFeat.Select2(False, 0)

nLevel = nLevel + 1

' returns NULL if this is a part

' returns NULL if this is a part in a sub-assy AND sub-assy has not been explicitly opened

Set swComp = swSelMgr.GetSelectedObjectsComponent(1)

If Not swComp Is Nothing Then ' will be NULL if component is lightweight

Set swCompModel = swComp.GetModelDoc

If Not swCompModel Is Nothing Then

TraverseModel swApp, swCompModel, nLevel

End If

End If

End If

'-----------------------------------------------------------

Set swSubFeat = swFeat.GetFirstSubFeature

While Not swSubFeat Is Nothing

' MsgBox sPadStr + " " + swSubFeat.Name + " [" + swSubFeat.GetTypeName + "]"

FullDataCMP = sPadStr + swFeat.Name + " [" + swFeat.GetTypeName + "]"

'MsgBox FullDataCMP

Print #FileNumber2, FullDataCMP

Print #FileNumber2, "---" + Chr$(13) + Chr$(10)

Print #FileNumber2, IndGen

Set swSubSubFeat = swSubFeat.GetFirstSubFeature

While Not swSubSubFeat Is Nothing

' MsgBox sPadStr + " " + swSubSubFeat.Name + " [" + swSubSubFeat.GetTypeName + "]"

FullDataCMP = sPadStr + swFeat.Name + " [" + swFeat.GetTypeName + "]"

'MsgBox FullDataCMP

Print #FileNumber2, FullDataCMP

Print #FileNumber2, "-" + Chr$(13) + Chr$(10)

Print #FileNumber2, IndGen

Set swSubSubSubFeat = swSubFeat.GetFirstSubFeature

' While Not swSubSubSubFeat Is Nothing

' MsgBox sPadStr + " " + swSubSubSubFeat.Name + " [" + swSubSubSubFeat.GetTypeName + "]"

' Set swSubSubSubFeat = swSubSubSubFeat.GetNextSubFeature()

' Wend

Set swSubSubFeat = swSubSubFeat.GetNextSubFeature()

IndGen = IndGen + 1: Form1.Text1 = Str(IndGen) '***************** ssv 16.05.04

Wend

Set swSubFeat = swSubFeat.GetNextSubFeature()

IndGen = IndGen + 1: Form1.Text1 = Str(IndGen) '***************** ssv 16.05.04

Wend

Set swFeat = swFeat.GetNextFeature

IndGen = IndGen + 1: Form1.Text1 = Str(IndGen) '***************** ssv 16.05.04

Wend

End Sub

Sub mainTr()

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim nErrors As Long

Set swApp = CreateObject("SldWorks.Application")

Set swModel = swApp.ActiveDoc

' level is zero since top level of part or assy

TraverseModel swApp, swModel, 0

' switch back to our original document

swApp.ActivateDoc2 swModel.GetPathName, True, nErrors

End Sub

'------------------------------------------

Есть еще масса примеров...

PS.че-то многовато любителей задавать вопросы типа "а зачем"!

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

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

см. здесь:

<noindex>http://www.solidworks.com/sw/support/APIDownloads.html</noindex> <<= ценная ссылка!:

Есть еще масса примеров...

PS.че-то многовато любителей задавать вопросы типа "а зачем"!

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

Больщущее спасиба. Выручил

Щас я ток прорабатываю, но уже сейчас получается хорошо то чего я хотел.

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

Больщущее спасиба. Выручил

Щас я ток прорабатываю, но уже сейчас получается хорошо то чего я хотел.

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

Возьмите спецификацию.

Я беру спецификацию - (с массой, материалом, автором и еще чем-то там), включаю нумерацию - и в экселе имею все, что надо. Без разных хлопот. Даже так - все, что Солид знает о модели, можно увидеть в спецификации. Включая входящие узлы и детали...

(Построена хорошая, асфальтированная дорога. И почему всегда найдется любитель в фуфайке с бензопилой переть по тайге, параллельно дороге?) :smile::smile:

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

...

Построена хорошая, асфальтированная дорога. И почему всегда найдется любитель в фуфайке с бензопилой переть по тайге, параллельно дороге?) :smile::smile:

Потому-что кругом полно на 1000%-х "упертых" индивидов, которые прут по этой дороге(которая не ими даже и построена) и прут не смотря ни на что!

Дорога, блин, есть вот, че тут думать - "перететь" надо... Как в анекдоте: "...че тут думать трясти надо".

Жалкое зрелище...

Не бы было-бы таких "любителей в фуфайке..." до сих пор в шкуры бы одевались и в перщерах жили....

И вот по какой дороге они бы "перли"... ?

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

Жалкое зрелище...

Да наздоровье!

Форд свою первую машину тоже в гараже собрал - и построил империю. Я таких примеров тоже много знаю.

Однако это был Форд! А если бы у Форда все его работники от уборщицы до директоров на работе научными разработками занимались - вот точно в пещерах бы жили!

... Крылья им... понимаешь...

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

Да наздоровье!

Форд свою первую машину тоже в гараже собрал - и построил империю. Я таких примеров тоже много знаю.

Однако это был Форд! А если бы у Форда все его работники от уборщицы до директоров на работе научными разработками занимались - вот точно в пещерах бы жили!

... Крылья им... понимаешь...

Ну слава Богу! Последовал ответ!

А я-то уж грешным делом подумал не случилось-ли что с 'VOleg'ом

:smile:

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • gudstartup
    • Guhl
      Журнал "Огонёк" брать надо, у него бумага хорошая, плотная.
    • Viktor2004
      ну да. Поезд попался не реставрированный. Даже без биотуалета. До последнего момента думал что поеду один в купе. В последнюю секунду вбегает мужик с глазами как у рака. Бросил сумку и давай метаться от туалета к туалету. Но нет. Санитарная зона. А ему очень плохо. Говорю ему, Ладно. Давай этот журнал раскладывай на полу, закрывай дверь и делай свое дело. Потом свернешь в окно выкинешь. Его аж трясет бедного. Закрыли дверь, он расположился, я отвернулся, отошел к окну, открыл его и закурил. Вдруг слышу сзади грозный упрек "Вообще-то в купе не курят!"  
    • gudstartup
      @Viktor2004 согласен. но человек сам хочет попробовать фанук на зуб.. с фирмой или китайцами всегда успеет связаться
    • Viktor2004
      ему надо искать фирму которая продаст FROM модуль к его станку. И ехать покупать вместе с ЧПУ что бы на месте проверить
    • gudstartup
      @Viktor2004 у автора по от 35i работает на 32i а собственный модуль фром неисправен и в м\сх флэш небольшая каша в данных так что ему придется искать другой фром модуль от 32i чтобы считать  рабочий   образ с нормальными данными.  
    • Viktor2004
      Я пробовал считывать так. Выпаял микросхему памяти из модуля, затем купил CF карту с таким же контроллером. Выпаял оттуда микросхему на 128Mb она была на месте "0" и впаял вместо нее микросхему с модуля. https://market.yandex.ru/product--karta-pamiati-cfg8b51mkazws-zaveb-tdk-512-mb/109304488?sku=102980643607&uniqueId=45170721&do-waremd5=G3-wTXG-Bm2zCvteY2KyaA&resale_goods=resale_resale&resale_goods_condition=resale_excellent Так как контроллеры совпадают, GBDriver RA8 программой WINHEX я снял образ с карты. Там уже все блоки были на своих местах. Только вряд ли вам это поможет. На 31i-A такое бы еще прокатило, а на 31i-B в системе появился файл SYS CNTL. Он генерится как на основе загружаемого софта, так и на основе ID-номера контроллера GBDriver. Так что побитно скопированная микросхема у меня работать не стала.
    • gudstartup
      @ДмитрийКм образ с плохого фром модуля у вас явно поврежден так что его на работоспособность можете не рассчитывать. надо считывать системные файлы с хорошего станка @ДмитрийКм если с хорошего 32i фром модуль не дадут то надо искать  файлы вашего по отдельно. но учитывая сложности с бэкапом системы у современных вряд ли они имеются в чистом виде.
    • a_schelyaev
      Убедиться в том, что "учет гидростатики" работает, можно на примере со свободной конвекцией. Сделали проект с "коробкой": справа стенка горячая, слева холодная, снизу и сверху - адиабатика. Если моделировать без учета гидростатики, то мы опять же видим "гидростатический" столб, и видим, что воздух движется в результате нагрева в поле действия силы тяжести: Если же включить "учет гидростатики", то гидростатического столба мы не видим, давление практически постоянно. Однако по векторам мы видим, что движение идет, то есть все работает так же, как и в первом случае, только решатель оперирует другими значениями давления.   Как итог - накатали заявку в следующей версии выводить "Давление+гидростатика", чтобы все было наглядно и не приходилось эти умозрительные эксперименты проводить.   В документации смысл фразы не в том, что давление не нужно задавать, а в том, что при задании его значений не нужно учитывать гидростатический перепад. Если вход находится сверху, а выход снизу, то давления на них будут отличаться за счет гидростатики. И вот при использовании "учета" не нужно высчитывать, сколько составит перепад и прибавлять/вычитать из него нужные значения. Это может так же помогать на вертикальных границах входа/выхода. У нас в FlowVision есть туториал с нефтью: там сбоку вертикальная входная граница. В проекте включен учет гидростатики и стоит просто полное давление 0. Если же учет отключить, то придется задавать на этой границе значение через формулу, которая учитывает гидростатику, пример вот здесь:    
    • a_schelyaev
      Модель k-e, т.к. Y+=<1 в Компасе сейчас недостижим. Поэтому не нужно качаться на папе, он не для этого вешался.
×
×
  • Создать...