
發布
注冊
/
登錄tcl命令的案例
Hypermesh-利用tcl創建宏命令來快速化構建實體螺栓的pretension surface ¥10
這里利用tcl寫了一個宏命令用來快速化構建實體螺栓的pretension surface。但首先需要保證每個實體螺栓網格至少有一個水平面。如下圖所示,模型中有8個螺栓。
那么需要構建8個pretension surface,在hypermesh中利用tcl創建宏命令來進行構建。在這里需要首先在hypermesh構建group,如下圖所示。
然后選擇宏命令,程序自動進行判定并選定每個螺栓pretension surface,然后放入對應的group中。最后創建的pretension surface如下圖所示:
這里程序僅適用于螺栓的中心軸沿著Z方向,與xy平面垂直的情況,每種螺栓的尺寸可以不一樣。附件是操作的視頻。
kk 2018-02-28 16-02-15.mp4
展開 TCL自學筆記-20 lreplace命令
lreplace命令是tcl語言中的一個列表操作命令,它用于替換列表中一個或多個元素。
語法: lreplace list first last ?element element ...?
參數介紹: list:要操作的列表。 first:第一個要替換的元素的索引,從0開始。 last:最后一個要替換的元素的索引,如果只想替換一個元素,則可將該參數設為同first一樣的值。 element:要替換的元素。
示例:
set my_list {a b c d e f g}
set new_list [lreplace $my_list 2 4 x y z]
puts $new_list
輸出: a b x y z f g
示例解釋: 在上面的示例中,我們首先定義了一個包含7個元素的列表my_list,然后使用lreplace命令將my_list列表中的第3個到第5個元素(即c、d和e)替換為x、y和z。最后,我們將新的列表存儲在new_list變量中,并使用puts命令將其輸出。
輸出結果為a b x y z f g。
lreplace:替換 / 刪除 指定 索引位置 / 索引范圍 的元素。
展開 使用HyperGraph/HyperView批處理進行后處理用于聯合優化軟件
另外兩種方法一個是通過使用tcl腳本來處理結果文件,并將需要讀取的設計響應結果輸出到一個文本文件中。還有一種方法是使用hyperview/hypergraph的mvw文件來處理結果文件,這種方法相比于第二種方法更加容易掌握,不需要熟悉tcl腳本語言。本文主要針對后兩種方法進行講解。(注:這兩種方法均需要使用hyperworks的batch命令)
Hyperworks批處理命令格式:
<altair_home>/hw/bin/<platform>/hw.exe-clientconfig hwfepre.dat -tcl my_script.tcl
方法一:通過tcl腳本進行結果后處理
命令格式:
D:\Altair\14.0\hw\bin\win64\hw.exe-b -clientconfig hwpost.dat -tcl my_script.tcl
其中:
-b 為后臺運行hyperworks軟件命令
-clientconfig后面跟模塊屬性文件其中hwpost.dat為hyperview屬性文件
-tcl 后面跟要運行的tcl腳本文件
實例:通過tcl命令讀取一個擺臂應力結果,并將最大應力結果寫到一個結果文件中,用于后續優化軟件聯合。
擺臂最大應力值為370.1MPa.
部分tcl命令:
通過運行tcl命令生成一個包含最大應力結果的文本文件。
該結果文件便可直接用于優化軟件設計響應的設置。
這種方法需要讀者熟悉tcl語言,而且對于不同的項目而言,往往需要修改tcl命令來適用于不同的項目和模型文件,因此這種方法具有一定的門檻和局限性。作者推薦后面的方法二。
展開 TCL自學筆記-17 lsort命令
list
描述
這個命令對list中的元素進行排序,返回一個重新排序的列表。lsort命令的執行使用歸并排序算法,所以排序性能穩定在(n log n)的級別。
默認使用ASCII表排序,但是以下的options選項也可以控制排序的方式:
-ascii
使用 ASCII表的字符順序排序,默認方式。
-dictionary
使用字典關系,基本上和 -ascii差不多,區別在于 -dictionary忽略了大小寫關系,而且把數字字符看作是數值來處理。比如在 -dictionary模式,bigBoy在bigbang和bigboy中間,x10y在x9y和x11y之間。
-integer
把列表元素轉換成整數并且使用整數關系排序。
-real
把列表元素轉換成浮點數并且使用浮點數關系排序。
-command
command
使用 command作為一個比較命令,比較兩個元素。這個命令需要返回一個整數,表示小于、等于或大于0,分別對應第一個元素是小于、等于還是大于第二個元素。
-increasing
排序時按照由小到大的順序排列,默認方式。
-decreasing
排序時按照由大到小的順序排列。
-indices
返回一個列表,包含的元素是排序后的元素對應以前的 list的索引。
展開 
TCL自學筆記-13 for命令
for循環是一個循環控制結構,可以有效地編寫需要執行特定的代碼次數。
for { set a 10} {$a < 20} {incr a} {
puts "value of a: $a"
}
TCL自學筆記-06 after命令語法
名稱
after - 等待一段時間后再執行命令
語法
after ms
after ms ?script script script ...?
after cancel id
after cancel script script script ...
after idle ?script script script ...?
after info ?id?
間隔一段時間后執行一條命令:
% set a a
a
% after 5000 set a b
after#1
間隔5秒鐘后執行命令set a b,如果等待5秒鐘后再查看$a的值就變成b了。
堅持每天學習,時間會證明一切,加油!
展開 TCL自學筆記-15 hm_entitylist命令
Type
HyperMesh Tcl Query
Description
Returns a list of names or IDs of all entities of the requested type.
Inputs
entity_type
The type of entity to query.
name_or_id
The type of list to generate. Valid values are:
name - Return the list of names. Only named entity types support this option.
id - Return the list of IDs. All entity types support this option.
mode
An optional argument that specifies which entity types are returned:
active - Return only the active entities. This is the default if not specified.
all - Return both active and inactive entities.
inactive - Return only the inactive entities.
展開 TCL自學筆記-07 proc函數命令語法
過程函數proc
語法格式:proc 函數名 參數列表 函數主體
功能:類似于C語言中的函數。即用戶自定義的功能,方便多次調用。
proc add {a b} {
set sum [exp $a + $b]
return $sum}
puts [add 3 4]
puts [add 66 11]
全局變量與局部變量
全局變量:在所有過程之外定義的變量
局部變量:對于在過程中定義的變量,因為它們只能在過程中被訪問,并且當過程退出時會被自動刪除。
指令global,可以在過程內部引用全部變量
set a 2
proc sample {x} {
global a
set a [expr $a+1]
return [expr $a + $x]}
puts [sample 3]
展開 TCL自學筆記-12 eval命令
eval命令
接收一個或多個參數,然后把所有的參數以空格隔開組合到一起成為一個腳本,然后對這個腳本進行求值。
proc test1 {var} \
{
if {$var == 1} {
puts "var is one"
} else {
puts "var is not one"
}
}
以上也等效于:
proc test1 {var} {
if {$var == 1} {
puts "var is one"
} else {
puts "var is not one"
}
}
運行完以上程序后再運行以下代碼:
eval test1 1
或等效于:
test1 1
(Documents) 465 % eval [set foo "puts hi"]
hi
展開 TCL自學筆記-05 *createstringarray命令語法
Syntax
*createstringarray size strings
Type
HyperMesh Tcl Modify
Description
Creates an array of strings for use in a subsequent command.
Inputs
size
The size of the array.
strings
The strings to put in the array.
Examples
To create a string array with the strings "abc" and "def":
*createstringarray 2 "abc" "def"
自學語句1:
*createstringarray 2 "elements_on" "geometry_off"
創建2個字符串數組,"elements_on" "geometry_off" 以便在后續命令中使用
See Also
*createarray
*createdoublearray
*createdoublearray2d
*createentityarray2d
*createintarray2d
堅持每天學習,時間會證明一切,加油
展開 TCL自學筆記-16 hm_nodevalue命令
獲取節點坐標
hm_nodevalue $i coordates
執行如下代碼:
hm_nodevalue 1 coordates
(Documents) 176 % hm_nodevalue 145 coordates
{210000 10004 0.3}
# ###############選中第一個節點id############
*createmark nodes 2 3
# ########測量節點3和坐標為20,20,20節點的距離輸出的是一個列表,第一個值是距離############
hm_measureshortestdistance2 20 20 20 nodes 2 0 0
展開 
TCL自學筆記-18 lindex函數命令
tcl腳本-lindex函數
語法:lindex list indiex
例:
set a {1 2 3 4 5}
lindex a 2
3 //返回第三個元素
或者:lindex list {}
這種情況下返回 lindex列表本身。
當只有一個單獨的元素時,lindex命令返回list列表中的第index個元素。替代時元素從0開始(也就是說索引0就是指列表的第一個元素),如果index是負數或者大于列表長度就返回一個空字符串。解釋器在解釋每一個index值時和string index命令相同,都支持單個和多個index參數。
lindex {a b c}
→ a b cl
index {a b c} {}
→ a b c
lindex {a b c} 0
→ a
lindex {a b c} 2
→ c
lindex {a b c} end
→ c
lindex {a b c} end-1
→ b
如果指定了多個index,將會選擇列表的子列表中的元素。
展開 TCL自學筆記-08 foreach函數命令語法
foreach
循環指令foreach
語法格式:foreach 變量 列表 循環主體
功能:從第0個元素開始,每次按順序取得列表的一個元素,將其賦值給變量,然后執行循環主體一次,直到列表最后一個元素
set list1{1 2 3 4}
foreach i $list1 {
puts $i
}
TCL自學筆記-09 break函數命令語法
循環控制指令break
語法格式:break
功能:結束整個循環過程,并從循環中跳出
foreach i $list1 {
if { $i==3 } {
break}
puts $i}
STKO助力OpenSEES系列:平面多層多跨混凝土框架靜力循環pushover分析
如果通過編寫Tcl命令流,我們很容易在三維纖維截面的劃分,梁柱單元的geomtransf的方向,甚至單元編號上犯錯,當這些因無意識犯的錯誤,因為沒有可視化的提示,通過逐行校核代碼是很困難了,而STKO則輕松的解決了上述問題,通過可視化很容易幫助我們看單元有沒有賦予錯,單元的geomtranf有沒放放置錯,如果放錯,可以通過建立local axis 坐標,很快進行更正,通過和abaqus 建模一致的方式迅速搭建模型,如下圖所示,這個過程可以規避掉很多因不細心導致模型不能算的局限。
圖2 建模過程
上述建模過程和結果輸出中幾處要點:
• 約束混凝土本構的自動生成:
STKO 根據現有的幾種成熟的約束混凝土模型,通過使用戶提供的箍筋信息,包括直徑,數目,間距等,自動計算約束混凝土區域的本構模型。從而避免了以往要對fibre 截面不同約束混凝土區域賦予不同的混凝土模型。
圖3 約束混凝土本構
• 纖維截面抗剪和抗扭剛度的在STKO中的實現:
OpenSEES默認的纖維單元是不考慮剪切變形的,因為OS中的纖維單元相當于是一個伯努利梁,也即抗剪剛度是無窮大,這對一般的細長梁分析是沒有問題的,但在有些問題中,比如深梁,或者較粗柱子,或者剪力墻中,我們就需考慮剪切剛度,因為在這些分析中剪切變形的影響是不可忽視的。在Tcl 命令流中,是通過section aggregator 來進行截面剛度的組裝,當然這在STKO中是一致的,我們首先創立對應的抗剪剛度和抗扭剛度的標準彈性材料,最后通過aggregator option 組裝。如下圖。
展開