
报表模板的开发



1,基础应用,使用TEKLA基本功能(out-of-box, 开箱即用)
2,高级应用,会使用TEKLA定制、自定义节点、objects.inp创建
3,会使用TEKLA Open API

ROI: Return on Investment
投资回报率

什么是模板
Ø用于TEKLA中的图表/表格(Forms/Tables)
Ø图形模板(Graphical),文件后缀 .tpl,用于图纸文件
Ø文本模板(Textual),文件后缀.rpt, 用于生成报表
图形模板(Graphical),文件后缀.tpl,用于图纸文件
材料表、图签、图表
可以包含图形(如表格轮廓线、图片、符号)
可以有不同的字体设置
文本模板(Textual),文件后缀.rpt,用于生成报表
报表(Report)、清单(List)
不可以包含图形
虽然也可以有不同的字体设置,但是输出显示不会出现这些格式



TEKLA模型文件为一个数据库,其中包含了TEKLA里面的各种信息与数据
模板编辑器不可以直接读取TEKLA文件及其数据库
TEKLA给模板提供了可供其读取的定义文件,当模板要输出时,TEKLA提供实时数据



模板组件
1.标题
2.页眉
3.行
4.页脚
5.脚注
模板对象
1.图纸对象: 线、折线、弧、圆、矩形
2.符号(Symbol)
3.位图图片(Picture)
4.文本(Text)
5.AutoCAD文件和MicroStation文件(File)
6.值字段(Value Field)
7.图形字段(Graphical Field)

1.插入模板组件,即各种行
2.插入模板对象,即各种线条、文本、值字段
3.按需求调整格式
4.按需求调整公式及规则
5.调试

组件可以理解为一个容器,里面可以放各种对象(Objects)




图纸对象: 线、折线、弧、圆、矩形
符号(Symbol)
位图图片(Picture)
文本(Text)
AutoCAD文件和MicroStation文件(File)
值字段(Value Field)
图形字段(Graphical Field)











值字段属性设置


用于值字段公式和行规则
重量:型钢按毛重计算,板按净重计算
型钢毛重=型钢最长尺寸*单位长度的重量
板的毛重=板的厚度*宽度*长度*材质的密度
型钢或板的净重=型钢或板在模型中所占的实际体积*材质的密度


数学运算
算术运算符
三角函数
其它函数
统计函数
数据类型转换




数学运算
算术运算符
三角函数
其它函数
统计函数
数据类型转换

字符串运算

属性函数

值字段函数


1.利用已有模板,或TEKLA自带模板进行修改
2.对于用法不太清楚的,就去试,根据测试结果进行调整
3.一定要对测试的样本进行分析,确保可能出现的各种状况都有考虑到

1.研究已有模板
2.根据自己的需求,去修改模板,反复试错(Trial and Error)并验证
3.此PPT前面所列仅为模板文件的组成简要介绍,详细可见帮助文件
4.仅看介绍及帮助文件无法学会,一定要动手练习

1.编号
GetValue("PART_POS")+"上翼缘
即:零件编号+"上翼缘“
2.规格
"PL"+int(GetValue("PROFILE.FLANGE THICKNESS"))+"*"+int(GetValue("WIDTH"))
即:"pL"+int(上翼缘厚度)+"*"+int(宽度)
3.长度
要选择上翼缘长度、下翼缘长度、腹板长度
4.单重
GetValue("PROFILE.FLANGE THICKNESS"*GetValue("WIDTH")*GetValue("FLANGE LENGTH U")*0.00000785
即:上翼缘厚度*宽度*上翼缘长度*密度


构件号:"#-" + CopyField("A_Name")
if (GetValue("MAINPART.FINISH")=="1") then GetValue("ASSEMBLY_POS") else GetValue("ASSEMBLY_POS") endif
零件号:GetValue("ASSEMBLY_POS")
if (GetValue("MAINPART.USERDEFINED.USER_FIELD_1")==0) then GetValue("MAINPART.PROFILE") else GetValue("MAINPART.USERDEFINED.USER_FIELD_1") endif
GetValue("LENGTH")
GetValue("MODEL_TOTAL")
GetValue("WEIGHT_GROSS")*1.015
GetValue("WEIGHT_GROSS")*GetValue("MODEL_TOTAL")*1.015
GetValue("MODEL_TOTAL")
GetValue("WEIGHT_GROSS")
GetValue("PART_POS")
GetValue("PROFILE")
GetValue("LENGTH")
GetValue("NUMBER")*GetValue("ASSEMBLY.MODEL_TOTAL")/GetValue("ASSEMBLY.MODEL_TOTAL")
GetValue("WEIGHT_GROSS")
GetFieldFormula("N4")*GetFieldFormula("4w")
GetValue("MATERIAL")
GetValue("USERDEFINED.SJ")
GetValue("WEIGHT_GROSS")*0.015
GetValue("WEIGHT_GROSS")*GetValue("MODEL_TOTAL")*0.015
GetValue("WASHER.WEIGHT")
GetValue("WASHER.NUMBER")
GetValue("NUT.WEIGHT")
"M"+int(GetValue("DIAMETER"))+"*"+int(GetValue("LENGTH"))
GetValue("WEIGHT")
GetValue("NUMBER")
"连接板总厚" + int(GetValue("BOLT_MATERIAL_LENGTH")) + "mm"
GetValue("NUMBER")
GetFieldFormula("ww")*GetFieldFormula("nw")+GetFieldFormula("wn")*GetFieldFormula("nn")+GetFieldFormula("wb")*GetFieldFormula("nb")
GetValue("TYPE")
"Φ"+int(GetValue("DIAMETER"))+"*"+int(GetValue("LENGTH"))
GetValue("NUMBER")
GetValue("WEIGHT")*GetValue("NUMBER")
if (GetValue("WEIGHT_GROSS")<1000) then "吊耳1" else (if (GetValue("WEIGHT_GROSS")<2000) then "吊耳2" else (if (GetValue("WEIGHT_GROSS")<4000) then "吊耳3" else (if (GetValue("WEIGHT_GROSS")<8000) then "吊耳4" else "--" endif) endif) endif) endif
if (GetValue("WEIGHT_GROSS")<1000) then "PL8*70" else (if (GetValue("WEIGHT_GROSS")<2000) then "PL8*75" else (if (GetValue("WEIGHT_GROSS")<4000) then "PL10*95" else (if (GetValue("WEIGHT_GROSS")<8000) then "PL16*110" else "大于8t吊耳另选" endif) endif)endif)endif)
if (GetValue("WEIGHT_GROSS")<1000) then "70" else (if (GetValue("WEIGHT_GROSS")<2000) then "90" else (if (GetValue("WEIGHT_GROSS")<4000) then "110" else (if (GetValue("WEIGHT_GROSS")<8000) then "130" else "大于8t吊耳另选" endif) endif)endif)endif)
if GetValue("LENGTH")<2501 then 1 else 2 endif
if (GetValue("WEIGHT_GROSS")<1000) then "0.31" else (if (GetValue("WEIGHT_GROSS")<2000) then "0.42" else (if (GetValue("WEIGHT_GROSS")<4000) then "0.82" else (if (GetValue("WEIGHT_GROSS")<8000) then "1.80" else "--" endif) endif) endif) endif
GetFieldFormula("LUG_W")
GetFieldFormula("LUG_W") * GetFieldFormula("N")
"Q355B"

"#-" +CopyField("A1_Name")
if (GetValue("MAINPART.FINISH")=="1") then GetValue("ASSEMBLY_POS") else GetValue("ASSEMBLY_POS") endif
GetValue("MODEL_TOTAL")
GetFieldFormula("U2")+GetFieldFormula("A-Name")
Total("NUM")



1、先学会调用:首先要掌握如何调用别人开发好的模板,
2、会自己开发:进一步学习要自己开发模板掌握了如何开发模板即使还不够完善,也可以根据需要做些简单的调整,在工作中多一分灵活机动性;
3、在逐步深入的学习实践中把自己开发的模板推向成熟;
逐步深化:认知是在实践中逐步深化的。
技能的掌握有一个,从不知道到知道,从不会到会,从不熟练到熟练的渐进过程;这中间的改变源于自己不断的学习与实践,没有不断的精进,这种转变就不会出现的。

0.n...(相对路径)tekla安装路径下
C:\ProgramData\Tekla Structures\19.0\Environments\china\template
1.n...(相对路径)模型文件路径下
D:\TeklaStructuresModels\模型名称...\attributes
tekla宏文件存放路径
C:\ProgramData\Tekla Structures\19.0\Environments\china\macros
修改属性文件路径
ctrl+e高级选项文件位置-MODELXS_PRWJECT(属性文件路径)