下述代码讲述如何用代码进行贴图

from pyp3d import *
# 定义参数化模型
class 长方体(Component):
    # 定义各个参数及其默认值
    def __init__(self):
        Component.__init__(self)
        self['长'] = Attr(1000, obvious = True, combo = [500,1000,2000,3000,4000])
        self['宽'] = Attr(300.0, obvious = True)
        self['高'] = Attr(500, obvious = True)
        self['长方体'] = Attr(None, show = True)
        self.replace()
    @export
    # 模型造型
    def replace(self): 
        # 设置变量,同时调用参数(简化书写过程)

        L = self['长']
        W = self['宽']
        H = self['高']
        # 绘制模型
        TestCube = scale(L,W,H) * Cube()
        self['长方体'] = TestCube
        self['长方体'].material('M8')

# 输出模型
if __name__ == "__main__":
    mt3 = create_material('M8', mapMode = 5, mapUnit = 0, uvScale = [1,1], wRotation = 0)
    mt3.mapFile = R'C:\Users\PKPM\Pictures\BIMBase图标.png'
    FinalGeometry = 长方体()
    place(FinalGeometry)

可以看到,我们对要某个几何体进行贴图时,需要加上material这个成员方法,同时,括弧内的字符串表示这个贴图的名称(name),而这个贴图的名称则是在输出模型阶段进行定义的。而这个贴图的变量名是mt3,需要用到create_material这个函数,这个函数的具体用法,我们来一起看一下。

create_material函数

create_material函数的含义是创建一个材质,可以是图片(贴图)也可以是颜色,在创建材质时,就可以填入各种默认参数。
create_material函数参数与说明表

参数 含义 参数格式
name 材质名称(必填) str
mapFile 贴图路径(贴图时必填) str
mapUnit 贴图单位 3按尺寸贴图 0按比例贴图 索引
mapMode 贴图模式 0参数几何投影 2平面投影 4立方体投影 5球形投影 6圆柱形投影 索引
uvScale 贴图缩放 [float,float]
uvOffset 贴图偏移 [float,float]
wRotation 贴图旋转角度(弧度制) float
Color 颜色 RGB(取值范围为0-1) [float,float,float]
transparency 透明度(取值范围0-1) float
specularColor 高光颜色RGB(取值范围0-1) [float,float,float]
specularFactor 高光系数(取值范围0-1) Float
glowColor 自发光颜色RGB(取值范围0-1) [float,float,float]
glowFactor 自发光系数(取值范围0-100 int
ambientFactor 环境光(取值范围0-1) float

需要注意,在uvScale(贴图缩放)中,以uvScale=[m,n]为例。当mapUnit(贴图模式)为3(按尺寸贴图)时,表示将原有图片缩放为(m1000mm)×(n1000mm);当mapUnit为0(按比例贴图)时,[m,n]表示将原图片缩放为m×n倍
注意,创建材质的过程放在了输出模型的部分,也就是模型代码结构中的第三部分,请不要在建模部分创建材质。