在工程设计中,通常需要根据实际仪表厂家资料图纸进行符号开发。
在PDMS中,如下截图所示,仪表的定制、测试都在PARAGON模块下可视化编辑。而S3D目前也引入界面操作的工具,但笔者暂时并未掌握,且为了更好的说明底层的逻辑,笔者使用了传统.NET开发过程,并将结果记录分享如下。

目标说明:如下截图所示,目标开发上/下两种表皮温度计。

开发步骤:
-
1. 增加引用及namespace 等基本设定。
Namespace 可以自定义。但是新编制class需要继承CustomSymbolDefinition。

-
2. 整体结构说明
-
A. Definition of Inputs
此处定义元件中用户交互的参数/part表格中使用的参数。此处需要注意:CustomInterfaces中SymbolParameter中名称定义尽量自己给写,不要用诸如HandwheelAngle 或是Operator***等字眼,说不上什么原因就会与内置已有的一些值冲突导致BULKLOAD出错。

-
B. Definition of Aspects and their
Outputs
此处定义元件中每一部分具体显示类型(实体/保温等)。
具体格式如下:
Aspect(Name,
Description, Aspect ID)
SymbolOutput(Name,
Description)
-
C. Definition of
ConstructOutputs() Sub
此处即元件开发主体。
注意事项:a.建议使用try-catch进行错误捕捉
b.可以使用同一dll对近似符号统一编制,只需要基于partDataBasis进行多条件跳转即可。本例即适用此情况。

-
3. 符号定义
符号的开发可以使用“搭积木”方式执行,几个要点:
-
A. 使用UtilityFunctions.GetPipingPortData获取PORT相关信息,如DN等值。
-
B. 实体常用Graphics3D 类(CreateBox /CreateCylinder /CreateRevolution等)
-
C. 单位注意:距离默认使用m,因此程序中应该常见小数
-
4. 编译测试
需要如下表格:
InstrumentClassData、PipingCommodityMatlControlData、CustomInterfaces、自定义的PART。(对于tag 的方式无需要设置R-Hierarchy)
对于InstrumentClassData,示例如下截图,RequisitionType为必须项。如果使用TAG+CC直接用5即可,不要给10(只有tag的用10),否则会出现放置错误。

注意dll更新后将part表m更新下,不然旧有的程序不替换。(不知道是不是延迟的原因)
-
5. 结果示例:


您需要登录 或注册 后才可以发表评论。