用python脚本对图形进行构建,脚本的位置在C:\AutoCAD Plant 3D 2019 Content\CPak Common\CustomScripts,CustomScripts没有即自创
脚本的名称需要与函数的名称对应(相同)
案例一:
from aqa.math import *
from varmain.primitiv import *
from varmain.custom import *
@activate(Group="Support",
TooltipShort="Test script",
TooltipLong="This is a custom Testscript",
LengthUnit="in",
Ports=1)
@group("MainDimensions")
@param(D=LENGTH, TooltipShort="Cylinder Diameter", Ask4Dist=True)
@param(L=LENGTH, TooltipLong="Length of the Cylinder")
@param(OF=LENGTH0)
@group(Name="meaningless enum")
@param(K=ENUM)
@enum(1, "align X")
@enum(2, "align Y")
@enum(3, "align Z")
#--------------------------------------------------------
#(arxload "PnP3dACPAdapter")
#
def TESTSCRIPT(s, D=80.0, L=150.0, OF=-1, K=1, **kw):
CYLINDER(s, R=D/2, H=L, O=0.0).rotateY(90)
s.setPoint((0.0, 0.0, 0.0), (-1.0, 0.0, 0.0), 0.0)
s.setPoint((L, 0.0, 0.0), ( 1.0, 0.0, 0.0), 0.0)
案例二:
增加# -- coding: utf-8 --用来支持中文
# -*- coding: utf-8 -*-
from varmain.primitiv import *
from varmain.custom import *
@activate(Group="Elbow", FirstPortEndtypes="FL", Ports=2, TooltipShort="Test script", TooltipLong="This is a custom Testscript", LengthUnit="in")
@group("MainDimensions")
@param(D=LENGTH, TooltipShort="Cylinder Diameter", Ask4Dist=True)
@param(L=LENGTH, TooltipLong="Length of the Cylinder")
@param(OF=LENGTH0)
def TESTSCRIPT2(s, D=80.0, L=150.0, OF=-1, **kw):
CYLINDER(s, R=D/2, H=L, O=0.0).rotateY(90)
s.setPoint((0.0, 0.0, 0.0), (-1.0, 0.0, 0.0), 0.0)
s.setPoint((L, 0.0, 0.0), ( 1.0, 0.0, 0.0), 0.0)
Group
表示脚本是Support组,与元件库中对应;TooltipShort
表示显示的名字;TooltipLong
表示描述;LengthUnit
表示长度单位是英寸;- 参数
D
,L
,OF
在MainDimensions
组中; D
带了一个标记Ask4Dist
,表示它的长度可以通过模型给定的距离;K
在meaningless enum
组中。K
是枚举值,1表示align X
,2表示align Y
等。@active
声明元数据;@group
定义参数组;@param
定义参数元数据;@enum
定义枚举类型参数。
定义好脚本之后,以此输入三条命令:
# 注册脚本
PLANTREGISTERCUSTOMSCRIPTS
# 加载lisp命令
(arxload "PnP3dACPAdapter.arx")
# 测试对应的脚本。后面一个参数与函数的名称一一对应
(TESTACPSCRIPT "TESTSCRIPT01")
@activate:必须是第一个声明,声明脚本拥有这个元数据。允许定义以下属性: Group, FirstPortEndtypes, Ports, TooltipShort, TooltipLong, ThumbnailImage, ParamDimImage,
SCEditDimImage, Language, LengthUnit@group:定义参数组。通常在@param段声明,允许定义以下这些属性: Name, TooltipLong
@param:定义参数元数据,有以下这些属性: Name, Type, Value, TooltipShort, TooltipLong, Ask4Dist Name跟Type可以定义为类似@param(Name=”A”, Type=”ANGLE”,
…)或@param(A=ANGLE, …)@enum:定义枚举类型参数。声明如下:
Value, TooltipLong
声明遵循标准Python函数,它们可以被赋值位置或关键字
编译之后生成:
a. TestScript.pyc
编译好的二进制python文件。b. ScriptGroup.xml
这个文件包括所有添加的组信息。例如,组名为“TESTSCRIPT”是“Support”。组名也可以是Plant3D的类名,例如“Eblow”,“Tee”等。
c. TESTSCRIPT.xml
这个文件描述了脚本“TestScript”的元数据。
d. Variants.xml
这个文件存放脚本的工具提示信息及它的参数、参数组名、枚举值。
e. Variants.map
这是个匹配文件,用来存放匹配脚本名跟脚本路径的信息。