函数: Arc(角度)
示例:
from pyp3d import *
# 定义参数化模型
class 弧(Component):
# 定义各个参数及其默认值
def __init__(self):
Component.__init__(self)
# obvious 属性的可见性 True时可见,False为不可见。默认为False
# readonly 属性的只读性 True时不可调,为置灰状态,False为可调状态。默认为False
self['a轴长度'] = Attr(1000.0, obvious=True, readonly = False)
self['b轴长度'] = Attr(300.0, obvious=True)
self['弧'] = Attr(None, show=True)
self['旋转角度'] = Attr(0,obvious = True)
self['X'] = Attr(300.0, obvious=True)
self['Y'] = Attr(300.0, obvious=True)
self['Z'] = Attr(300.0, obvious=True)
self.replace()
@export
# 开始写模型
def replace(self):
# 在 def relpace(self)中,凡是self['']形式的变量,都会参与输出与绘制。
# 因此,请不要随便使用self['']来作为变量名,尽量在最终输出模型时以该形式作为变量名
# 设置变量,同时调用参数(简化书写过程)
L = self['a轴长度']
W = self['b轴长度']
x = self['X']
y = self['Y']
z = self['Z']
Angle = self['旋转角度']
# 绘制模型
self['弧'] = translate(x,y,z) * rotation(math.pi/180 * Angle) * scale(L,W) * Arc(math.pi*2)
# 输出模型
if __name__ == "__main__":
FinalGeometry = 弧()
place(FinalGeometry)
实现效果
示例中所包含的函数:
代码 | 函数名 |
---|---|
Arc | 圆弧线函数 |
color | 颜色参数 |
示例中,第一行为引用pyp3d工具包,每个脚本的开头都应当引用所需使用的工具包。(后文中所有示例中默认首行已引用pyp3d)Arc
创建的是单位圆弧(半径为单位1的圆弧)。Arc
只需要填写角度,即可创建一个单位圆弧。如Arc(pi*2)
,即为创建一个单位圆。示例中填写的角度值为1.5π
,则会创建一个半径为1的3/4个圆弧。
Arc的默认绘制起点为X轴上,即圆心为(0,0,0),起点为(1,0,0),绘制方向为逆时针绘制,遵循右手定则。
1.1.1 右手定则
右手食指到小指四指握拳,大拇指伸出(“点赞”造型)。大拇指指向为旋转轴指向,四指握拳方向为旋转的正方向。即当右手握拳放于桌面上是,大拇指朝上,此时拇指指向为Z轴正方向,桌面为XY平面,旋转方向为逆时针。
1.1.2 三点画弧
Arc函数可以实现三点画弧功能。只需要将原有的角度值改为三个点即可。这三个点分别为弧线的起点,弧线中任意一点和弧线终点即可。
示例:
from pyp3d import *
# 圆弧线-三点画弧
# 函数名 Arc
# 参数:圆弧角度(弧度制)
from pyp3d import *
# 定义参数化模型
class 弧(Component):
# 定义各个参数及其默认值
def __init__(self):
Component.__init__(self)
self['弧'] = Attr(None, show=True)
self.replace()
@export
# 开始写模型
def replace(self):
# 绘制模型
self['弧'] = Arc(Vec3(0,0,0), Vec3(100,100,0), Vec3(0,200,0)).color(1,0,0,1)
# 输出模型
if __name__ == "__main__":
FinalGeometry = 弧()
place(FinalGeometry)
1.1.3 color函数
color函数包括了颜色和不透明度。color中的四组数字分别代表R(红),G(绿),B(蓝)和不透明度。其中R,G,B的取值范围是0到1(对应0到255),不透明度的取值是0到1,数字越大,不透明度越高(透明度越低),当不透明度为0时,构件会在P3D的光照下呈白色和灰色。当不输入颜色时,输出默认颜色,为白色不透明。
1.1.4 place函数
place函数为放置纯几何体,即需要在BIMBase中手动使用鼠标左键选择布置位置。
通常,非参数化建模过程中,只需要使用create_geometry和place中的一个即可,不需要同时使用这两个函数。