|
Расположение в меню |
---|
Правка → Расположение... |
Верстаки |
Все |
Быстрые клавиши |
Нет |
Представлено в версии |
- |
См. также |
Выравнивание, Расположение |
The Std Placement command displays the Placement task panel for a selected object.
The Placement task panel
The dialog can also be launched by clicking on the ellipsis button ... that appears in the Property editor when you click on the ДанныеPlacement property.
Смотрите так же: Основы составления скриптов в FreeCAD.
See the Python scripting tutorial.
A placement is internally defined by a matrix; in many cases it is simpler to represent it by means of two components, a Base
point (vector), and a Rotation
value. The Rotation
itself has different representations; it can be entirely defined by the value of a "quaternion" (xi + yj + zk + w)
, but it can also be described by a rotation Axis
(unit vector) and a rotation Angle
(radians).
import FreeCAD as App
doc = App.newDocument()
obj = doc.addObject("Part::Cylinder", "Cylinder")
print(obj.Placement)
# Placement [Pos=(0,0,0), Yaw-Pitch-Roll=(0,0,0)]
print(obj.Placement.Base)
# Vector (0.0, 0.0, 0.0)
print(obj.Placement.Rotation)
# Rotation (0.0, 0.0, 0.0, 1.0)
print(obj.Placement.Rotation.Angle)
# 0.0
print(obj.Placement.Rotation.Axis)
# Vector (0.0, 0.0, 1.0)
print(obj.Placement.Rotation.Q)
# (0.0, 0.0, 0.0, 1.0)
Move the base point of the object, then rotate the object 45 degrees around the X axis.
The math module supplies a method radians()
to easily convert degrees to radians and has to be imported at first.
import math
obj.Placement.Base = App.Vector(5, 3, 1)
obj.Placement.Rotation.Axis = App.Vector(1, 0, 0)
obj.Placement.Rotation.Angle = math.radians(45)
print(obj.Placement)
# Placement [Pos=(5,3,1), Yaw-Pitch-Roll=(0,0,45)]
print(obj.Placement.Rotation.Q)
# (0.3826834323650898, 0.0, 0.0, 0.9238795325112867)
print(obj.Placement.Matrix)
# Matrix ((1,0,0,5),(0,0.707107,-0.707107,3),(0,0.707107,0.707107,1),(0,0,0,1))