Как получить все размеры выбранного компонента в файле сборки в Solidworks?

Я написал макрос, чтобы выбрать компонент по имени из сборки, а затем изменить его размеры по мере необходимости, чтобы автоматизировать процесс.

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

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

Включая часть моего кода здесь:


Dim vComponents As Variant
Dim vComp As Variant

Dim Part As Object



Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

vComponents = Part.GetComponents(True)



For Each vComp In vComponents
Set swComp = vComp
If InStr(swComp.Name2, "_ST_") > 0 Then swComp.Select4 True, Nothing, False
Next


Set swSelMgr = Part.SelectionManager
Set swSelComp = swSelMgr.GetSelectedObjectsComponent4(1, -1)
Set swReferenceModel = swSelComp.GetModelDoc2

originalStello = swReferenceModel.Parameter("D7@Schizzo1").Value  // this is where I am hard coding the name

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

Я начал работать с Solidworks API 2 дня назад. Пожалуйста помоги!


person Aman Kejriwal    schedule 21.11.2019    source источник


Ответы (2)


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

Переменная vParamNames содержит имена параметров, а переменная vParamValues ​​содержит принадлежащие значения. Возможно, вам придется отфильтровать необходимые размеры.

Dim swSelMgr As SldWorks.SelectionMgr
Set swSelMgr = Part.SelectionManager

Dim swSelComp As SldWorks.Component2
Set swSelComp = swSelMgr.GetSelectedObjectsComponent4(1, -1)

Dim swReferenceModel As SldWorks.ModelDoc2
Set swReferenceModel = swSelComp.GetModelDoc2

Dim swConfig As SldWorks.Configuration
Set swConfig = swReferenceModel.ConfigurationManager.ActiveConfiguration

Dim vParamNames As Variant
Dim vParamValues As Variant

swConfig.GetParameters vParamNames, vParamValues
person Sinue    schedule 22.11.2019

Другой вариант — пройтись по всем размерам отображения по всем функциям.

Function GetAllDimensions(vFeats As Variant) As Variant

    Dim swDimsColl As Collection
    Set swDimsColl = New Collection

    Dim i As Integer

    For i = 0 To UBound(vFeats)

        Dim swFeat As SldWorks.Feature
        Set swFeat = vFeats(i)

        Dim swDispDim As SldWorks.DisplayDimension
        Set swDispDim = swFeat.GetFirstDisplayDimension

        While Not swDispDim Is Nothing

            If Not Contains(swDimsColl, swDispDim) Then
                swDimsColl.Add swDispDim
            End If

            Set swDispDim = swFeat.GetNextDisplayDimension(swDispDim)
        Wend

    Next

    GetAllDimensions = CollectionToArray(swDimsColl)

End Function

Полный пример можно найти здесь

person Artem    schedule 22.11.2019