许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  HyperMesh二次开发:Tcl语言入门指南

HyperMesh二次开发:Tcl语言入门指南

阅读数 10
点赞 0
article_banner

简介

hypermesh二次开发使用的语言是tcl语言 ,这个语言相对比较小众,但并不是很难学。下面简单介绍一下我所理解的tcl语言知识框架,便于我们对这门语言有个简单且整体的认识。我们可以将tcl语言大概分成以下5部分内容。(实际tcl语言可以写一本很厚的书,但我们刚开始学二次开发,我觉得暂时学这些内容够用了)

  1. 输出命令、设置变量、输出变量中的命令、计算指令
  2. 条件循环语句if、for、foreach
  3. 列表、数组、字典
  4. proc函数
  5. tk界面开发

下载好ActiveTcl8.6 ,它可以运行tcl,方便我们练习。Are you ready?

ActiveTcl 8.6

Are you ready?

一、输出命令、设置变量、输出变量中的命令、计算指令

  1. 输出命令 puts
     puts helloworld 
     puts "hello world" 
     puts {hello world}

2. 设置变量 set 引用变量 $ (tcl语言引用已经设定的变量前都要加一个$,必须先给钱才能给你引用)

     set software "hyperworks"
     $software

3. 输出变量中的命令 eval

     set foo "puts hi"  
     eval $foo

4. 计算指令 expr { } (所有的数学计算公式什么的都要用expr才能执行计算)

     expr {1+1}  
     expr {1==1}

二、循环语句if、for、foreach

  1. 循环比较语句 if
if { } {
    do something here
} else if {
	do something here
}

2. 循环语句 for

for {set i 0} {$i < 10} {incr i} {
	puts 
}

3. 循环语句 foreach

foreach var $list {
	
}

三、列表、数组、字典

1.列表 list

  • 创建列表(创建列表有三种方式,列表还可以嵌套)
set lst {{item1} {item2} {item3}}
set lst [split "item1.item2.item3" "."]
set lst [list "item1" "item2" "item3"]

set lst1 {1 2 3 4}
set lst2 {5 6 {7 {8 9}}}
  • 引用列表
lindex $lst1 2
lindex $lst2 2
lindex $lst2 2 2
lindex $lst2 2 2 1
  • 范围列举列表
lrange $lst1 0 2
  • 列表赋值
lassign $lst1 a b c d
  • 创建重复内容
lrepeat 10 *
  • 反转列表顺序
lreverse $lst1
  • 增加删除列表元素
set lst1 [list 1 2 3 4 5]
set lst2 [list a b c d e]
set lst3 [concat $lst1 $lst2]
set lst4 [list $lst1 $lst2]
lappend lst1 6 7 8 9
set lst5 [linsert $lst1 end 10]
set lst6 [linsert $lst1 0 0]
set lst7 [lreplace $lst1 2 3 0 0]  将2,3处的元素换成0,0
set lst7 [lreplace $lst1 2 3]      将2,3处的元素删掉
  • 列表排序
set lst1 [list 1 2 3 4 5 6 7 8 9 0]
lsort $lst1

set lst2 [list 1 2 3 3 5 5 0 0 10 100]
lsort $lst2

set lst3 [list "a" "b" "abc" "cca"]
lsort $lst3

lsort -indices $lst2      返回坐标
lsort -uniq $lst2         去除重复元素
lsort -stride 2 $lst2     两两组合排序
lsort -index end-1 $lst2  以倒数第二个排序


set d [dict creat a 1 b 2 c 3 e 5 d 4]
lsort -stride 2 $d   字典排序

2. 数组 array

set ArrayName(Index) list     数组创建
 eg:   
    set yinfu(1) do;
    set yinfu(2) re;
    set yinfu(3) mi;

array set ArrayName {index1 list1 index2 list2}    数组创建
 eg:
    array set yinfu {1 do 2 re 3 mi 4 fa 5 sol 6 la 7 si}  
    parray yinfu   数组查看

 运行结果:
 yinfu(1) = do
 yinfu(2) = re
 yinfu(3) = mi
 yinfu(4) = fa
 yinfu(5) = sol
 yinfu(6) = la
 yinfu(7) = si

3.字典 dict (键key---值value)

  • 字典创建
dict set colours coluor1 red 

set colours [dict create colour1 "red"]
  • 查找某键对应的值
dict get $colours colour1

dict keys $colours      得到键

dict values $colours    得到值

foreach {key value} [set colours] {
	#set value [dict get $colours $item]
	puts "$key -- $value"
	}                       遍历所有的键与值
  • 嵌套字典
dict set part1 part11 id 1
dict set part1 part11 name flower
dict set part1 part11 color red

dict set part1 part12 id 2
dict set part1 part12 name flower
dict set part1 part12 color black

dict get $part1 part11 color
dict get $part1 part12 color

eg:
	set HyperWorks [dict create preprocess hypermesh post hyperview year 2022]

	dict size $HyperWorks      查询字典大小

	dict set HyperWorks solver1 optistruct
	dict set HyperWorks solver2 RADIOSS
	dict append HyperWorks CFD acuSolve     增添一项

	dict unset HyperWorks CFD               真删掉一项

	dict remove $HyperWorks slover1         假删掉一项

	dict replace $HyperWorks year 2023      修改一项内容

四、proc函数

%1.定义函数(输入为整数)

proc fac {n} {
	if {$n == 0 | $n == 1} {
			return 1
	} else {
			return [expr {$n * [fac [expr {$n-1}]]}]
	}
}

%调用函数

fac 3
fac 2
fac 1
fac 0



%2.定义函数(输入为列表)

proc product {n} {
	set product 1
	foreach num $n {
		set product [expr {$product * $num}]
	}
	return $product
}

%调用函数

set input [list 1 2 3 4]
product $input

%3.定义函数(输出为列表)

proc vproduct {v1 v2} {
	set product [list]
	foreach x $v1 y $v2 {
		set inc [expr {$x * $y}]
		lappend product $inc
	}
	return $product
}

%调用函数

set v1 [list 1 2 3 4]
set v2 [list 0.1 0.1 0.1 0.1]
vproduct $v1 $v2

五、tk界面开发 (tk命令用来开发界面可以与用户交互)

#对话框性质
tk_messageBox -icon error

tk_messageBox -icon info

tk_messageBox -icon question

tk_messageBox -icon warning

#对话框标题
tk_messageBox -title "腾讯游戏"

#对话内容
tk_messageBox -message "欢迎来到王者荣耀"

#交互类型:
tk_messageBox -type ok

tk_messageBox -type okcancel

tk_messageBox -type retrycancel

tk_messageBox -type yesno

tk_messageBox -type yesnocancel


eg:

tk_messageBox -icon info -title "腾讯游戏" \
-message "欢迎来到王者荣耀" -type yesnocancel

tk_messageBox -icon question -title "智慧问答" \
-message "生存还是死亡" -type yesno

总结

其实这一篇只是二次开发入门的一些基础知识,实际二次开发的内容远比这些内容复杂丰富,不过后面可以根据具体的二次开发小案例来深入学习,学东西的最好方式就是先正向学习然后再逆向学习,正逆结合,哈哈哈。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空