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