54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
![]() |
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)
|
|||
|
|