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

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

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

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

Условие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 – перевернуть компонент.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Visual Basic

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

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 и выделим другие грани.

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

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

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