7.1.1 旋转布置
旋转布置只需要在原脚本中的末尾部分添加一行代码,即可实现旋转布置效果。
旋转布置时,第一次点击鼠标左键为选择布置原点,此时移动鼠标,组件会跟随鼠标发生转动,再次点击鼠标左键时,组件会根据点击位置绕原点旋转相应角度布置。
示例:
from pyp3d import *
class 立方体(Component):
def __init__(self):
Component.__init__(self)
self['长'] = Attr(1000.0, obvious=True)
self['宽'] = Attr(300.0, obvious=True)
self['高'] = Attr(500, obvious = True)
self['立方体'] = Attr(None, show=True)
self['旋转角度'] = Attr(0,obvious = True)
self['X'] = Attr(0.0, obvious=True)
self['Y'] = Attr(0.0, obvious=True)
self['Z'] = Attr(0.0, obvious=True)
self.replace()
@export
def replace(self):
L = self['长']
W = self['宽']
H = self['高']
x = self['X']
y = self['Y']
z = self['Z']
Angle = self['旋转角度']
TestCube = translate(x,y,z) * rotation(math.pi/180 * Angle) * scale(L,W,H) * Cube()
self['立方体'] = TestCube
if __name__ == "__main__":
# 只需加上下面两行即可实现旋转布置
# 第一行 对【立方体】这个class进行装饰
FinalGeometry = 立方体()
# 第二行 实现旋转布置 注意最后Place时需要填入的是装饰后的立方体
RotationPlace.RotationFunction(FinalGeometry)
place(FinalGeometry)
步骤1:第一次点击左键时,会选中布置位置。
步骤2:此时移动鼠标,模型会跟随鼠标进行转动,再次点击鼠标左键,即可完成旋转布置。
此时,可以继续选择下一个要布置模型的点(回到步骤1),即可以连续布置多个需要旋转布置的模型
7.1.2 两点布置
两点布置中,需要选定一个变量作为线性变量,通常选择为长、高等。
要点:线性布置的构件中,要进行线性变化的变量需要放在X轴上。放置在Y轴或Z轴时,需要对几何体进行旋转。
我们以长度为线性变量的长方体两点布置为例。(案例为非参数化,可自行改为参数化模型脚本)
示例:
from pyp3d import *
class 立方体(Component):
def __init__(self):
Component.__init__(self)
self['长'] = Attr(1000.0, obvious=True)
self['宽'] = Attr(300.0, obvious=True)
self['高'] = Attr(500, obvious = True)
self['立方体'] = Attr(None, show=True)
self['旋转角度'] = Attr(0,obvious = True)
self['X'] = Attr(0.0, obvious=True)
self['Y'] = Attr(0.0, obvious=True)
self['Z'] = Attr(0.0, obvious=True)
self.replace()
@export
def replace(self):
L = self['长']
W = self['宽']
H = self['高']
x = self['X']
y = self['Y']
z = self['Z']
Angle = self['旋转角度']
TestCube = translate(x,y,z) * rotation(math.pi/180 * Angle) * scale(L,W,H) * Cube()
self['立方体'] = TestCube
if __name__ == "__main__":
# 第一行 对【立方体】这个class进行装饰
FinalGeometry = 立方体()
# 第二行 实现两点布置
TwoPointPlace.linearize(FinalGeometry,'长')
place(FinalGeometry)