import FreeCAD as App import FreeCADGui as Gui # App.newDocument() doc = App.ActiveDocument print('задайте начальную точку захватной зоны. ') print('Учтите, что ось X должна быть направлена вдоль направления раскрытия пальцев') print('Ось Z должна быть направлена в противоположную сторону от направления кончика пальца захвата') lcsname = input('Введите название начальной точки' + "\n") lcs = doc.getObject(lcsname) def poseGenerator(lcs): box = doc.addObject("Part::Box", "gripSpace") box.Length = 62 #раскрытие box.Width = 10 #ширина пальца box.Height = 40 #глубина box.Placement = lcs.Placement #box.Transparency = 80 #не работает, хз почему #есть смысл создавать привязку прямо здесь же. благодаря параметризации, при подстройке куба все точки сместятся как надо gripPose = App.ActiveDocument.addObject('PartDesign::CoordinateSystem', 'GripPose') gripPose.Support = box gripPose.MapMode = 'ObjectXY' gripPose.AttachmentOffset.Base = [box.Length/2, box.Width/2, 0] #здесь должна быть активная привязка, не просто значения координат gripPose.addProperty("App::PropertyFloat", "GripOpen") gripPose.addProperty("App::PropertyFloat", "GripDepth") gripPose.addProperty("App::PropertyFloat", "GripWidth") gripPose.GripOpen = box.Length.Value gripPose.GripWidth = box.Width.Value gripPose.GripDepth = box.Height.Value #нужно создавать обьект внутри Part, а не внутри главного документа. сбиваются привязки !!! print('Установите захватную зону вручную, растянув обьект GripSpace') doc.recompute() #вроде как работает poseGenerator(lcs)