3DM参数化设计系统构建语言 一、描述语言的意义 目的在于建立柔性化的专业 CAD/CAM系统,如模具 CADICAM系统,企业可以针对自身的情况 随时对系统进行改造,包括设计规则、标准和模型架构等。主要思想如下 CADICAM=解释器+描述语言代码+参数化数据模型 其中 1) CAD/CAM系统固定部分:解释器。 对于不同的 CAD/CAM系统可用相同的解释器 2) CAD/CAM系统柔性部分:描述语言代码+参数化数据模型。 对于不同的 CAD/CAM系统需要编写不同的描述语言代码,并且建立相应的参数化数据模型 3)描述语言代码的生成方式: 人工直接书写描述语言代码 草图和符号识别。将草图和符号转换为描述语言代码 语音识别。将语音转换为描述语言代码。 架成型序分口套|拉料杆杆|滑块机构|料指杆热流通 模架 板厚度 A厚度10 加工工艺
3DM 参数化设计系统构建语言 一、描述语言的意义 目的在于建立柔性化的专业 CAD/CAM 系统,如模具 CAD/CAM 系统,企业可以针对自身的情况 随时对系统进行改造,包括设计规则、标准和模型架构等。主要思想如下: CAD/CAM = 解释器 + 描述语言代码 + 参数化数据模型 其中: 1) CAD/CAM 系统固定部分:解释器。 对于不同的 CAD/CAM 系统可用相同的解释器。 2) CAD/CAM 系统柔性部分:描述语言代码 + 参数化数据模型。 对于不同的 CAD/CAM 系统需要编写不同的描述语言代码,并且建立相应的参数化数据模型。 3) 描述语言代码的生成方式: z 人工直接书写描述语言代码。 z 草图和符号识别。将草图和符号转换为描述语言代码。 z 语音识别。将语音转换为描述语言代码。 图 1
二、体系架构 在工作目录下 SystemDef3dm文件描述构型系统的总体架构。图1系统架构如下所述 System Def SYSNAME("注塑模机构设计系统[基于3DM参数化构型语言]",8) SubModel(Moldbase "模架 加工工艺", PlatForm), SubModel (Part 成型部分","加工工艺",Part), SubModel( SprueBushing,"浇口套","加工工艺",O) SubModel( RunnerLockPin"拉料杆","加工工艺",0) SubModel (mandril "顶杆 加工工艺",0) SubModel( SidelongPin,"滑块机构""加工工艺",0) SubModel (Lifter. 斜滑杆","加工工艺",0) SubModel( Hotrunner,"热流道”,"加工工艺",0), 其中 SYSNAME函数描述了系统名称为"E- proms:注塑模机构设计系统",共计8个页面。 SubModel函数每个页面所需数据资源在系统工作路径下的子目录名称、页面名称、页面中数据栅 格表名称和页面类型 个子目录对应一个页面且对应一个子目录下的子系统,所以系统文件架构如下:
二、体系架构 在工作目录下 SystemDef.3dm 文件描述构型系统的总体架构。图 1 系统架构如下所述: SystemDef { SYSNAME ("注塑模机构设计系统[基于 3DM 参数化构型语言]",8); SubModel (Moldbase, "模架", "加工工艺", PlatForm); SubModel (Part, "成型部分","加工工艺", Part); SubModel (SprueBushing, "浇口套", "加工工艺", 0); SubModel (RunnerLockPin,"拉料杆", "加工工艺", 0); SubModel (Mandril, "顶杆", "加工工艺", 0); SubModel (SidelongPin, "滑块机构","加工工艺", 0); SubModel (Lifter, "斜滑杆", "加工工艺", 0); SubModel (HotRunner, "热流道", "加工工艺", 0); } 其中: SYSNAME 函数描述了系统名称为"E-proms: 注塑模机构设计系统",共计 8 个页面。 SubModel 函数每个页面所需数据资源在系统工作路径下的子目录名称、页面名称、页面中数据栅 格表名称和页面类型。 一个子目录对应一个页面且对应一个子目录下的子系统,所以系统文件架构如下:
模架子系统 Moldbase 3dm 成型子系统 Part. 3d 浇口套子系统 Sprue Bushing 3dm 拉料杆子系统 总体架构描述 RunnerLock Pin 3dm SystemDef3dm 顶杆子系统 Mandril 3dm 滑块机构子系统 SidelongPin 3dm 斜滑杆子系统 Lifter 3dm 热流道子系统 HotRunner 3d 螺纹子系统 Unscrew 3dm 图2系统架构 通用命令与函数 1局部数值型变量定义命令(Var Var n=expr; 其中 n:局部数值型变量 expr:表达式(变量、数据、表达式或函数) 例如 arHl@草图1@ RunnerlockPin l part= Combox ve(2)
模架子系统 Moldbase.3dm 成型子系统 Part.3dm 浇口套子系统 SprueBushing.3dm 拉料杆子系统 RunnerLockPin.3dm 图 2 系统架构 三、通用命令与函数 1.局部数值型变量定义命令(Var) 局部数值型变量。 据、表达式或函数)。 H1@草图 1@RunnerLockPin_1.Part = ComboxVal(2); Var n = expr; 其中: n: expr:表达式(变量、数 例如: Var 总体架构描述 SystemDef.3dm 顶杆子系统 Mandril.3dm 滑块机构子系统 SidelongPin.3dm 斜滑杆子系统 Lifter.3dm 热流道子系统 HotRunner.3d 螺纹子系统 Unscrew.3dm
2局部字符串型变量定义命令(Str) Str s=expr; 其中 s:字符串型变量 expr:字符串常量或字符串函数。 例如 Str Btn Type= Button Valo 3环境变量(全局数值型变量)定义命令(Env) Env n= expr, 其中 n:数值型变量。 expr:表达式(变量、数据、表达式或函数) 环境变量可以为各子系统所应用。 例如 Env TCP T= TCP T@Base Extrude(@top clamp Part; 4赋值命令(=) n-expr 其中 n:局部数值型变量。 expr:表达式(变量、数据、表达式或函数)。 例如 HI@T 1@RunnerLockPin 1 Part=B T+C T+SP T+B02 T-EPI T: 5平方根函数(Sqrt) Sart(expr): 其中 expr:表达式(变量、数据、表达式或函数) 该函数返回expr的平方根。 6字符串比较函数( Strequ, Strequ) StrEqul( sl, S2 StrEqu( sl, S2); 其中 sl,s2:字符串 1和s2相同时返回1;否则返回0。其中 Strequl忽略大小写。 5条件判别命令(f. elsei.else) 格式如下 if(条件表达式)
2.局部字符串型变量定义命令(Str) 符串型变量。 字符串函数。 tnType = ButtonVal(); .环境变量(全局数值型变量)定义命令(Env) 数值型变量。 、数据、表达式或函数)。 例如 TCP_T = TCP_T@Base_Extrude@top_clamp.Part; .赋值命令(=) 局部数值型变量。 据、表达式或函数)。 草图 1@RunnerLockPin_1.Part = B_T + C_T + SP_T + B02_T - EP1_T; .平方根函数(Sqrt) r:表达式(变量、数据、表达式或函数)。 .字符串比较函数(StrEquI, StrEqu) s2:字符串。 1;否则返回 0。其中 StrEquI 忽略大小写。 .条件判别命令(if…elseif…else) ) Str s = expr; 其中: s:字 expr:字符串常量或 例如: Str B 3 Env n = expr; 其中: n: expr:表达式(变量 环境变量可以为各子系统所应用。 : Env 4 n = expr; 其中: n: expr:表达式(变量、数 例如: H1@ 5 Sqrt(expr); 其中: exp 该函数返回 expr 的平方根。 6 StrEquI( s1, s2 ); StrEqu( s1, s2 ); 其中: s1, s1 和 s2 相同时返回 5 格式如下: if(条件表达式 { }
elseif(条件表达式) 条件表达式中可以使用条件逻辑运算符包括 等于 !=不等于 大于 <小于 大于等于 <=小于等于 &逻辑与 逻辑或 逻辑非(取反) 例如 if( Strequlr( Btn Type,"构型")| StrEqul( Btn Type,"更新"))& StrEqul( Asm Type,"型式1") if( StrEqu山( Btn Type,"构型")) InsertASM("RunnerLock Pinl","RunnerLockPin 1") elseif( StrEqul( Btn Type,"更新")) UpdateASMO Var HI@+k l@RunnerLock Pin 1. Part =Combox Val ( 2); varH2@草图1@ RunnerLockPin1Pat= Combox val(3); Var DI@Rk 1@RunnerLock Pin 1. Part =Combox Val(4); VarD2@草图1@ RunnerLockPin 1 Part= Combox val(5) varR@草图1@ RunnerLockPin1Pant= Combox Val(6) Var H3@--K 2(@ RunnerLockPin 1 Part =Combox Val(7) VarR2@草图2@ RunnerLockPin1Pat= Combox Val(8) HI@R I@RunnerLockPin 1 Part=B T+C T+SP T+B02T-EPl T SetComBox Val(2, HI@*K l@RunnerLockPin 1 Part); Relation(XY, PLANE", Ejector2 top, "PLANE",0, 1, 0) Relation(AXIs O, "AXIS",AXIs O, "AXIS", 0,0,0);
elseif(条件表达式) 件表达式中可以使用条件逻辑运算符包括: 于 取反) quI( BtnType, "构型" ) | StrEquI( BtnType, "更新" ) ) & StrEquI( AsmType, "型式 1" ) ) if( StrEquI( BtnType, "构型" ) ) rtASM("RunnerLockPin1","RunnerLockPin_1"); if( StrEquI( BtnType, "更新" ) ) pdateASM(); H1@草图 1@RunnerLockPin_1.Part = ComboxVal(2); _T - EP1_T; { } … else { } 条 == 等于 != 不等于 > 大于 < 小于 >= 大于等 <= 小于等于 & 逻辑与 | 逻辑或 ! 逻辑非( 例如: if( ( StrE { { Inse } else { U } Var Var H2@草图 1@RunnerLockPin_1.Part = ComboxVal(3); Var D1@草图 1@RunnerLockPin_1.Part = ComboxVal(4); Var D2@草图 1@RunnerLockPin_1.Part = ComboxVal(5); Var R1@草图 1@RunnerLockPin_1.Part = ComboxVal(6); Var H3@草图 2@RunnerLockPin_1.Part = ComboxVal(7); Var R2@草图 2@RunnerLockPin_1.Part = ComboxVal(8); H1@草图 1@RunnerLockPin_1.Part = B_T + C_T + SP_T + B02 SetComBoxVal(2,H1@草图 1@RunnerLockPin_1.Part); Relation(XY,"PLANE",Ejector2_top,"PLANE",0,1,0); Relation(AXIS_O,"AXIS",AXIS_O,"AXIS",0,0,0); }