Как добавить сопряжение к двум элементам в сборке с помощью макроса

Условие1. Открыт файл сборки. В нем находятся детали: вал (зафиксирован) и кольцо (свободно). Выделяем соответствующие грани и между двумя деталями появляется сопряжение «концентричность».

Условие2. Те же детали. Выделяем уже другие грани. Запускаем макрос и появляется сопряжение «совпадение».

Для создания сопряжений в сборке между выделенными объектами в SW api существует метод AddMate3 (c 2005 года) интерфейса IAssemblyDoc.

Метод принимает 13 параметров. Возвращает объект типа Mate2 (новое созданное сопряжение).

[Mate2] = [AssemblyDoc].AddMate3 (MateTypeFromEnum, AlignFromEnum, Flip, Distance, DistanceAbsUpperLimit, DistanceAbsLowerLimit, GearRatioNumerator, GearRatioDenominator, Angle, AngleAbsUpperLimit, AngleAbsLowerLimit, ForPositioningOnly, ErrorStatus)

1. MateTypeFromEnum. Тип long. Тип сопряжения число из enum-списка swMateType_e.

Некоторые значения:

§ 0 – swMateCOINCIDENT – совпадение

§ 1 – swMateCONCENTRIC – концентрический

§ 2 – swMatePERPENDICULAR – перпендикулярно

§ 3 – swMatePARALLEL – параллельно

§ 4 – swMateTANGENT – касательность

§ 5 – swMateDISTANCE – на расстоянии

§ 6 – swMateANGLE- под углом

§ 8 – swMateSYMMETRIC – симметрично

2. AlignFromEnum. Тип long. Тип выравнивания. Число из enum-списка swMateAlign_e. Возможные значения:

§ 0 – swMateAlignALIGNED

§ 1 – swMateAlignANTI_ALIGNED

§ 2 – swMateAlignCLOSEST

3. Flip. Тип boolean. True – перевернуть компонент.

4. Distance. Тип double. Используется при применении сопряжения swMateDISTANCE (на расстоянии) или сопряжения ограничение.

5. DistanceAbsUpperLimit. Тип double. Максимальное расстояние.

6. DistanceAbsLowerLimit. Тип double. Минимальное расстояние.

7. GearRatioNumerator. Тип double. Числитель в передаточном отношении для сопряжения типа редуктор.

8. GearRatioDenominator. Тип double. Знаменатель в передаточном отношении.

9. Angle. Тип double. Значение угла при применении угловых сопряжений.

10. AngleAbsUpperLimit. Тип double. Максимальное угловое значение.

11. AngleAbsLowerLimit. Тип double. Минимальное угловое значение.

12. ForPositioningOnly. Тип boolean. True – сопряжение только для позиционирования.

13. ErrorStatus. Тип long. Значение ошибки при создании сопряжения. Число из enum-списка swAddMateError_e

Возможные значения:

§ 0 – Неизвестная ошибка

§ 1 – Все в порядке. Ошибок нет.

§ 2 – Неизвестный тип сопряжения, который не представлен в swMateType_e.

§ 3 – Неизвестное сопряжение выравнивания

§ 4 – Некорректно выделены объекты для сопряжения

§ 5 – Сопряжение переопределяет сборку

§ 6 – Некорректное передаточное число

Перейдем к коду:

Текст программы для условия 1 (Концентричность):

Visual Basic

Option ExplicitDim swApp As SldWorks.SldWorksDim model As ModelDoc2Dim assem As AssemblyDocDim sel As SelectionMgrDim face1 As face2, face2 As face2Dim err As LongSub main()Set swApp = Application.SldWorksSet model = swApp.ActiveDocSet assem = modelSet sel = model.SelectionManagerSet face1 = sel.GetSelectedObject6(1, 1)Set face2 = sel.GetSelectedObject6(2, 1)assem.AddMate3 swMateCONCENTRIC, swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, errEnd Sub

Option Explicit Dim swApp As SldWorks.SldWorks Dim model As ModelDoc2 Dim assem As AssemblyDoc Dim sel As SelectionMgr Dim face1 As face2, face2 As face2 Dim err As Long Sub main() Set swApp = Application.SldWorks Set model = swApp.ActiveDoc Set assem = model Set sel = model.SelectionManager Set face1 = sel.GetSelectedObject6(1, 1) Set face2 = sel.GetSelectedObject6(2, 1) assem.AddMate3 swMateCONCENTRIC, swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, err End Sub

Для условия 2 поменяем параметры метода AddMate3 и выделим другие грани.

Visual Basic

assem.AddMate3 swMateCOINCIDENT, swMateAlignCLOSEST, False, 0, 0, 0, 0, 0, 0, 0, 0, False, err

assem.AddMate3 swMateCOINCIDENT, swMateAlignCLOSEST, False, 0, 0, 0, 0, 0, 0, 0, 0, False, err