Отверстие на 3D модели (деталь и сборка)

Автор rxtstorm, 17.08.22, 23:11:47

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

rxtstorm

Коллеги, здравствуйте.
Кто может поделиться скриптом добавления отверстия с резьбой (допустим М20 на 1.5) на 3D деталь, а лучше на 3D сборку, не чертеж.

Нигде не могу найти. В SDK смотрел и ничего не понял.

P.S. Помидорами не закидывать - я в этом деле еще чайник... :angel:
Вычитывал, что pykompasmacro может записать операции. Стандартный КомпасМакро не пишет эти действия...

Михаил88

+ Благодарностей: 1

Slaviation

Добрый день.
Пример во вложении. Запускать на активной новой (или пустой) детали.
+ Благодарностей: 1

rxtstorm

Доброго времени суток.
Спасибо большое за ответы!!!

Но есть нюанс))

Записанный пример работает на базовой плоскости. А если нужно делать на смещенной плоскости то ошибка, т.е. отверстие добавляется, но с потерянной связью в модели (восклицательный знак). Записываемый макрос(отдельно спасибо за KompasPyMakro -Slaviation) записанный макрос так же добавляет отверстие на деталь, но так же с потерянной связью.

Связь пропадает относительно именно смещенной плоскости на которой строится отверстие.

def CreateHoles():
     #  Получи интерфейс активного документа
    kompas_document = application.ActiveDocument

    #  Создай объект модели "Отверстие"
    kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)
    part7 = kompas_document_3d.TopPart
    model_container = kompas_api7_module.IModelContainer(part7)
    holes_3d = model_container.Holes3D
    hole_3d = kompas_api7_module.IHole3D(holes_3d.Add())
    hole_3d.HoleType = kompas6_constants_3d.ksHTBase
    hole_3d.Name = "Отверстие:2"
    hole_3d.Diameter = 10.0
    hole_3d.Axis = False
    hole_3d.DepthType = kompas6_constants_3d.ksDTValue
    hole_3d.Depth = 40.0
    hole_3d.EndFaceType = kompas6_constants_3d.ksEFConic
    hole_3d.EndFaceAngle = 118.0

    hole_disposal = kompas_api7_module.IHoleDisposal(hole_3d)
    hole_disposal.Direction = True
    hole_disposal.Perpendicular = True
    hole_disposal.ProcessCanopy = False

    hole_disposal.BaseSurface = part7.SelectByPoint(model_container.Objects(kompas6_constants_3d.o3d_planeOffset), 0.0, 0.0, 61.5)[0]
    point_3d_param_surface = kompas_api7_module.IPoint3DParamSurface(hole_disposal.Point3DParamSurface)
    point_3d_param_surface.OffsetType = kompas6_constants_3d.ksOffsetByLenFromObj
    point_3d_param_surface.SetObject1(None)
    point_3d_param_surface.Offset1 = 15.9477475
    point_3d_param_surface.SetObject2(None)
    point_3d_param_surface.Offset2 = 9.0008919
    point_3d_param_surface.AllowBoundaries = False
    hole_3d.Update()


Slaviation

Цитата: rxtstorm от 24.08.22, 21:34:57А если нужно делать на смещенной плоскости то ошибка, т.е. отверстие добавляется, но с потерянной связью в модели (восклицательный знак).

Добрый день.
Да, действительно, PyKompasMacro пока не может определить у созданного отверстия параметры
IPoint3DParamSurface::Object1 и IPoint3DParamSurface::Object2.
Это видно из строк вышеприведенного макроса: point_3d_param_surface.SetObject1(None) и point_3d_param_surface.SetObject2(None). Вместо None должен быть код определения Object1 и Object2.
Это ошибка в КОМПАС-3D, которая была исправлена. Исправление будет доступно в экспресс обновлении для КОМПАС-3D версии 21.
+ Благодарностей: 2

rxtstorm

Понятно :(
Спасибо большое за помощь!

Slaviation

ЦитироватьЭто ошибка в КОМПАС-3D, которая была исправлена. Исправление будет доступно в экспресс обновлении для КОМПАС-3D версии 21.
Экспресс обновление КОМПАС-3D версии 21 с исправленной ошибкой вышло.

Yukichi

Как правильно определить point_3d_param_surface.SetObject1(...)
Пишу self.Point3DParamSurface.SetObject1 = \
            IPart7().iPart7.Select(InterfaceKompas().kompas6_constants_3d.o3d_planeXOZ)

отверстие не строит
Помогите, пожалуйста!

Nipal

Читайте, SDK и текст должен быть полным, а так напишите за меня.