老版本的HM采用的是Tcl语言,新版本同时兼顾Tcl和Python语言,但新版本HM侧重在新界面,好不习惯。
ANSA一直以来都是采用Python语言。
今天来介绍下HM/Tcl和ANSA/Python两种语言的差异
HM和ANSA类似命令举例:
HM命令*createmarkpanel,无法给你过滤单元类型,*createmark是可以过滤单元类型的
*createmarkpanel elems 1 "select elems"
set elems_id [hm_getmark elems 1]
ANSA命令base.PickEntities,可以给你过滤单元类型
import ansa
from ansa import *
deck = constants.ABAQUS
con_elems=base.PickEntities(deck,"CONNECTOR")
print(con_elems)虽然第一接触的是HM/Tcl,也用了很长时间了,但ANSA/Python给我的感觉是更方便。
# Tcl使用大括号来定义代码块
set age 10
if {$age > 18} {
puts "You have voting rights"
} else {
puts "You don't have voting rights"
}
# Python使用冒号和缩进来定义代码块
age = 10
if age > 18:
print("你有投票权利")
else:
print("你没有投票权利")
# Python还支持中文输出# Tcl通过set来申明变量
set a 10
set b 3.14
set c "Hello CCCAE"
set d {1 2 3}
# Python通过“=”来申明变量
a = 10
b = 3.14
c = "Hello CCCAE"
d = [1,2,3]# Tcl有列表、字典等数据类型,但个人觉得都可以当成字符串处理
set a {1 2 3 4 5}
set b [lindex $a 2]
puts $b
===>3
set my_dict {name 'CCCAE' age 18}
puts $my_dict
set my_dict_name [dict get $my_dict name]
puts $my_dict_name
===>CCCAE
# 看着好像还是字符串
# Python有列表list,元组turple,字典dict,集合set等数据类型,且是严格区分
a = [1,2,3,4,5]
b = a[2]
print(b)
===>3
my_dict = {'name':'CCCAE','age':18}
print(my_dict.get('name'))
===>CCCAE# Tcl有if、elseif、else关键字来创建控制结构
if {表达式1} {
语句块1
} elseif {表达式2} {
语句块2
} elseif {表达式3} {
语句块3
} ......
} else {
语句块n
}
# Python有if、elif、else关键字来创建控制结构
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
......
else:
语句块n# Tcl主要有for、while和foreach循环结构
for {set a 1} {$a <= 5} {incr a} {
puts "$a"
}
set a 1
while {$a <= 5} {
puts $a
incr a
}
set a {1 2 3 4 5}
foreach b $a {
puts $b
}
# Python主要有for和while循环结构
for a in range(1,6):
print(a)
a = 1
while a <= 5:
print(a)
a += 1
# 上述所有结果是一样的,1,2,3,4,5# Tcl使用proc来定义函数
proc plus {a b} {expr {$a + $b}}
set c [plus 1 2]
puts $c
# Python使用def来定义函数
def plus(a,b):
return a + b
c = plus(1,2)
print(c)# Tcl采用catch来处理
# 作者在HM/Tcl常用的语法,因为有时可能就没有comps
catch {*createmark comps 1 "all"}
catch {*deletemark comps 1}
# Python采用try、except、finally来处理
# 作者目前还没怎么用到过
try:
a = 1 / 0
except ZeroDivisionError:
print("除数不能为0")
# Tcl采用source来导入加载模块
source 路径/脚本文件.tcl
# Python采用import来导入加载模块,写ANSA脚本第一步就是导包
import ansa
from ansa import base# Tcl只有单行注释#
# 这是一个Tcl注释
# Python有单行注释#,多行注释''''''或""""""
# 这是一个Python单行注释
'''
这是多行注释,可用于表头
文件名:
日期:
作者:
'''HyperMesh/Tcl与ANSA/Python的开发环境
如何加密HyperMesh的tcl和ANSA的python脚本