hypermesh二次開發之求取2d單元面積
瀏覽:154734 評論:6 收藏:3
最近在學
HYPERMESH二次開發,發覺可以用它做很多有用的東西以簡化工作。下面例子講述的是如何利用
hypermesh二次開發
在ansys模板下求2d單元面積。
問題描述:在Ansys模板下,如果要用下面工具求2d單元面積,則單元必須要有單元類型,如果沒有單元類型,則面積不可求,
這就有一個麻煩,當我們須要導出ansys的只是三維模型,那么二維單元相對于后面計算來說是不須導出的,所以也不須賦與其單
類型,但可能計算時又要用到模型某個面的面積,這樣又必須賦與其單元 ,通常做法是為單元賦與shell 93單元類型,那么有沒有
一種更直接的方法測量任何2d單元的面積,不管它有沒有單元類型呢?這就是本二次開發的一個目的。
首先,要創要創建一個名稱空間,名字 InquireArea,如下
namespace eval ::Ansys::ToolKit::InquireArea {
set elem_ids_list []
set area_sum 0
}
該名稱空間創建了兩個變量,其中elem_ids_list 用存放選取的單元ID值,area_sum用來存放最后總的面積,并且作為結果輸出。
下一步,創建一個計算單元面積的過程:
proc ::Ansys::ToolKit::InquireArea::CalculateArea { args } {
#聲名變量為該名稱空間的變量
variable elem_ids_list
variable area_sum 0
#計算每一個單元的面積并累加到area_sum中去
foreach elem_id $elem_ids_list {
#通過dataname訪問每個單元的面積
set current_elem_area [ hm_getentityvalue elems $elem_id "area" 0 ]
set area_sum [ expr $current_elem_area + $area_sum ]
}
#這句語句是算完面積清空單元列表,以便下一次求面積
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
}
有了計算單元的過程,下一步我們要做什么呢?當然我們要做是把要求面積的單選取出來,下面這個過程就是選取單元的過程
proc ::Ansys::ToolKit::InquireArea::AddElems { args } {
if { [lindex $args 0] == "typechangenotify"} {
return;
}
switch [lindex $args 0] {
"getadvselmethods" {
*entityhighlighting 1
*clearmark elems 1
wm withdraw .inquireAreaWindow;
*createmarkpanel elems 1 "Select elements:"
wm deiconify .inquireAreaWindow;
eval lappend ::Ansys::ToolKit::InquireArea::elem_ids_list [ hm_getmark elems 1 ]
*clearmark elems 1
*entityhighlighting 0
if { [ llength $::Ansys::ToolKit::InquireArea::elem_ids_list ] == 0 } {
tk_messageBox -message "No elements were selected. \n Please select elements to inquire area" -title "Altair HyperMesh"
return;
}
return;
}
"reset" {
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
return;
}
default {
return 1;
}
}
}
這個過程看起來有點復雜,其實是比較簡單的,下面拆解分析下它,
首先,這個proc中部分語句是為gui服務的,GUI編寫放在后面,你也可以聯合起來看,現在我們只看單元選取的,
很簡單,就一句語句 *createmarkpanel elems 1 "Select elements:" ,找到了沒呢?
有了這條語句,當TCL運行到它時,就會彈出選擇面板了
在它下面的一條語句是 eval lappend ::Ansys::ToolKit::InquireArea::elem_ids_list [ hm_getmark elems 1 ] ,這條語
句的作用取得剛選取的單元ID值并把它們附到elem_ids_list 中去,到這一步為止,elem_ids_list 列表已經有東西了,
也就是,我們已經把單元選出來了,此時只調用proc ::Ansys::ToolKit::InquireArea::CalculateArea 過程,就可以算出
面積來了。
那么下步做什么呢,那當然是要把我們的結果顯示出來,有很多種方法,其中最簡單的是調用TCL語言TK語句:
tk_messageBox -message " Area is : $::Ansys::ToolKit::InquireArea::area_sum" -title "Inquire Area " -icon info
這個東西有個壞處,就是你不能復制里面的面積信息,也就是說,你只能看。
那么我們可以做一簡單的GUI,通過entry(輸入框)來取得面積信息
上面那個選取單元的過程提到過,那里部分語句是為GUI 服務,下面寫這個GUI
首先,這個GUI用到hypermesh hwt toolkit,因此第上步加入下面語句
package require hwt;
這樣我們就可以大膽用hwt里面的一些控件了
此外還用到hypermesh軟件包自帶的一過程,我們也要把它SOURCE進來
SourceFile [file join [hm_info -appinfo SPECIFIEDPATH hw_tcl_common] "hw" "collector" "hwcollector.tcl"]
好了,下面可能是讀者最心的,如何創建一個窗口,通常還是把它放在一個過程里面
proc ::Ansys::ToolKit::InquireArea::InquireAreaWindow { args } {
::Ansys::ToolKit::InquireArea::Desroy
hwt::CreateWindow .inquireAreaWindow \
-windowtitle "Inquire Area " \
-noGeometrySaving \
-cancelButton Cancel \
-helpButton help \
destroyOnUnpost \
-post;
#設置窗口最大與最小值
wm minsize .inquireAreaWindow 400 140;
wm maxsize .inquireAreaWindow 400 140;
#如果置頂窗口,加上它吧
wm attribute .inquireAreaWindow -topmost true
#取得空腔,也就窗口里面放控件的地方吧,這是個path
set base [ hwt::WindowRecess .inquireAreaWindow ]
#創建一個框架,然后我們才能往里放東西
set fra1 [ frame $base.fra1 ]
#創建了框架,還要把它顯示出來吧,下面這語句就是把它顯示出來
pack $fra1 -side top -anchor nw -fill x -expand false
#一個框架是不夠的,多創建一個吧,反正不用錢的
set fra2 [ frame $base.fra2 ]
pack $fra2 -side top -anchor nw -fill x -expand false
#創建一個標簽,
set elem_label [ label $fra1.elem_label \
-text "Select elements :" \
-font [hwt::AppFont] \
-justify center ]
#顯示這個標簽 ,至于里面的選項,不懂可以看TCL的參考書
pack $elem_label -side left -anchor nw -fill none -expand 0 -padx 4 -ipady 3
#創建選取單元按鈕
set elems_button [Collector $fra1.addelems entity 1 HmMarkCol \
-types "elements" \
-withtype 0 \
-withReset 1 \
-callback "::Ansys::ToolKit::InquireArea::AddElems"]
#顯示它
pack $fra1.addelems -side left -padx 3 -pady 5
#這里創建一個輸入框,你可以從這里復制面積
set area_entry [ AddEntry $fra2.areaentry \
-label "Area = " \
-labelWidth 15 \
-entryWidth 24 \
-validate real \
-state normal \
-textVariable ::Ansys::ToolKit::InquireArea::area_sum ]
pack $area_entry -side left -anchor nw -padx 4 -pady 5
#這里計算面積的按鈕,-command 調用了我們之前創建的過::Ansys::ToolKit::InquireArea::CalculateArea
#這樣我們按下它時,就執行這個過程了
set get_area_but [ button $fra2.getareabut \
-text "Calculate" \
-command ::Ansys::ToolKit::InquireArea::CalculateArea]
pack $get_area_but -side left -anchor nw -padx 10 -pady 5 -ipadx 10 -ipady 3
}
相對是一個比較長的過程,先看一下效果,如果你是第一次接觸GUI,估計不看效果也很頭痛的
很簡,兩個entry ,兩個按鈕
好吧,下面我們分析一下吧
::Ansys::ToolKit::InquireArea::Desroy 調用一個Desroy 的過程,現在還沒有寫這個過程,接下來就寫它吧
proc ::Ansys::ToolKit::InquireArea::Desroy { } {
destroy .inquireAreaWindow
}
就一條語句,其中.inquireAreaWindow叫做窗口路徑,通過destroy語句,我們把窗口毀了,這樣每次我們創建一
新的窗口之前,都會先毀一下窗口,保證只有一.inquireAreaWindow顯示出來
通過這條語句,我們就可以創建下個窗口了
hwt::CreateWindow .inquireAreaWindow \
-windowtitle "Inquire Area " \
-noGeometrySaving \
-cancelButton Cancel \
-helpButton help \
destroyOnUnpost \
-post;
有興趣的可以把這段語句與 package require hwt 一起放到復制到txt文檔,保存為tcl運行一下吧
其中的選項我就不說,已經很很啰嗦啦,可以查看幫助,其它的請看注釋
最后,加上這條語句:
::Ansys::ToolKit::InquireArea::InquireAreaWindow
各個過程就串接起來了
到現在為止,整個開發就完成了,,當然還有許多細節說不到的,請大家原諒
下面給出完整腳本:
namespace eval ::Ansys::ToolKit::InquireArea {
set elem_ids_list []
set area_sum 0
}
package require hwt;
SourceFile [file join [hm_info -appinfo SPECIFIEDPATH hw_tcl_common] "hw" "collector" "hwcollector.tcl"]
proc ::Ansys::ToolKit::InquireArea::CalculateArea { args } {
variable elem_ids_list
variable area_sum 0
foreach elem_id $elem_ids_list {
set current_elem_area [ hm_getentityvalue elems $elem_id "area" 0 ]
set area_sum [ expr $current_elem_area + $area_sum ]
}
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
}
proc ::Ansys::ToolKit::InquireArea::Desroy { } {
destroy .inquireAreaWindow
}
proc ::Ansys::ToolKit::InquireArea::InquireAreaWindow { args } {
package require hwt
::Ansys::ToolKit::InquireArea::Desroy
hwt::CreateWindow .inquireAreaWindow \
-windowtitle "Inquire Area " \
-noGeometrySaving \
-cancelButton Cancel \
-helpButton help \
destroyOnUnpost \
-post;
wm minsize .inquireAreaWindow 400 140;
wm maxsize .inquireAreaWindow 400 140;
wm attribute .inquireAreaWindow -topmost true
set base [ hwt::WindowRecess .inquireAreaWindow ]
set fra1 [ frame $base.fra1 ]
pack $fra1 -side top -anchor nw -fill x -expand false
set fra2 [ frame $base.fra2 ]
pack $fra2 -side top -anchor nw -fill x -expand false
set elem_label [ label $fra1.elem_label \
-text "Select elements :" \
-font [hwt::AppFont] \
-justify center ]
pack $elem_label -side left -anchor nw -fill none -expand 0 -padx 4 -ipady 3
set elems_button [Collector $fra1.addelems entity 1 HmMarkCol \
-types "elements" \
-withtype 0 \
-withReset 1 \
-callback "::Ansys::ToolKit::InquireArea::AddElems"]
pack $fra1.addelems -side left -padx 3 -pady 5
set area_entry [ AddEntry $fra2.areaentry \
-label "Area = " \
-labelWidth 15 \
-entryWidth 24 \
-validate real \
-state normal \
-textVariable ::Ansys::ToolKit::InquireArea::area_sum ]
pack $area_entry -side left -anchor nw -padx 4 -pady 5
set get_area_but [ button $fra2.getareabut \
-text "Calculate" \
-command ::Ansys::ToolKit::InquireArea::CalculateArea]
pack $get_area_but -side left -anchor nw -padx 10 -pady 5 -ipadx 10 -ipady 3
}
proc ::Ansys::ToolKit::InquireArea::AddElems { args } {
if { [lindex $args 0] == "typechangenotify"} {
return;
}
switch [lindex $args 0] {
"getadvselmethods" {
*entityhighlighting 1
*clearmark elems 1
wm withdraw .inquireAreaWindow;
*createmarkpanel elems 1 "Select elements:"
wm deiconify .inquireAreaWindow;
eval lappend ::Ansys::ToolKit::InquireArea::elem_ids_list [ hm_getmark elems 1 ]
*clearmark elems 1
*entityhighlighting 0
if { [ llength $::Ansys::ToolKit::InquireArea::elem_ids_list ] == 0 } {
tk_messageBox -message "No elements were selected. \n Please select elements to inquire area" -title "Altair HyperMesh"
return;
}
return;
}
"reset" {
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
return;
}
default {
return 1;
}
}
}
::Ansys::ToolKit::InquireArea::InquireAreaWindow
下面是運行過程:
首先,你總得要創建一個TCL文件吧
用文本編輯器把上述代碼復制進去,保存為file_name.TCL就可以了
然后在hypermesh 菜單File-> run->tclscript 然后打開那個文件就OK了
彈出:
雙擊elements
選擇單元(圖中白色顯示)
單擊Calculate按鈕就可以計算面積了,
共同學習,共同進步!!
在ansys模板下求2d單元面積。
問題描述:在Ansys模板下,如果要用下面工具求2d單元面積,則單元必須要有單元類型,如果沒有單元類型,則面積不可求,
這就有一個麻煩,當我們須要導出ansys的只是三維模型,那么二維單元相對于后面計算來說是不須導出的,所以也不須賦與其單
類型,但可能計算時又要用到模型某個面的面積,這樣又必須賦與其單元 ,通常做法是為單元賦與shell 93單元類型,那么有沒有
一種更直接的方法測量任何2d單元的面積,不管它有沒有單元類型呢?這就是本二次開發的一個目的。
首先,要創要創建一個名稱空間,名字 InquireArea,如下
namespace eval ::Ansys::ToolKit::InquireArea {
set elem_ids_list []
set area_sum 0
}
該名稱空間創建了兩個變量,其中elem_ids_list 用存放選取的單元ID值,area_sum用來存放最后總的面積,并且作為結果輸出。
下一步,創建一個計算單元面積的過程:
proc ::Ansys::ToolKit::InquireArea::CalculateArea { args } {
#聲名變量為該名稱空間的變量
variable elem_ids_list
variable area_sum 0
#計算每一個單元的面積并累加到area_sum中去
foreach elem_id $elem_ids_list {
#通過dataname訪問每個單元的面積
set current_elem_area [ hm_getentityvalue elems $elem_id "area" 0 ]
set area_sum [ expr $current_elem_area + $area_sum ]
}
#這句語句是算完面積清空單元列表,以便下一次求面積
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
}
有了計算單元的過程,下一步我們要做什么呢?當然我們要做是把要求面積的單選取出來,下面這個過程就是選取單元的過程
proc ::Ansys::ToolKit::InquireArea::AddElems { args } {
if { [lindex $args 0] == "typechangenotify"} {
return;
}
switch [lindex $args 0] {
"getadvselmethods" {
*entityhighlighting 1
*clearmark elems 1
wm withdraw .inquireAreaWindow;
*createmarkpanel elems 1 "Select elements:"
wm deiconify .inquireAreaWindow;
eval lappend ::Ansys::ToolKit::InquireArea::elem_ids_list [ hm_getmark elems 1 ]
*clearmark elems 1
*entityhighlighting 0
if { [ llength $::Ansys::ToolKit::InquireArea::elem_ids_list ] == 0 } {
tk_messageBox -message "No elements were selected. \n Please select elements to inquire area" -title "Altair HyperMesh"
return;
}
return;
}
"reset" {
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
return;
}
default {
return 1;
}
}
}
這個過程看起來有點復雜,其實是比較簡單的,下面拆解分析下它,
首先,這個proc中部分語句是為gui服務的,GUI編寫放在后面,你也可以聯合起來看,現在我們只看單元選取的,
很簡單,就一句語句 *createmarkpanel elems 1 "Select elements:" ,找到了沒呢?
有了這條語句,當TCL運行到它時,就會彈出選擇面板了
在它下面的一條語句是 eval lappend ::Ansys::ToolKit::InquireArea::elem_ids_list [ hm_getmark elems 1 ] ,這條語
句的作用取得剛選取的單元ID值并把它們附到elem_ids_list 中去,到這一步為止,elem_ids_list 列表已經有東西了,
也就是,我們已經把單元選出來了,此時只調用proc ::Ansys::ToolKit::InquireArea::CalculateArea 過程,就可以算出
面積來了。
那么下步做什么呢,那當然是要把我們的結果顯示出來,有很多種方法,其中最簡單的是調用TCL語言TK語句:
tk_messageBox -message " Area is : $::Ansys::ToolKit::InquireArea::area_sum" -title "Inquire Area " -icon info
這個東西有個壞處,就是你不能復制里面的面積信息,也就是說,你只能看。
那么我們可以做一簡單的GUI,通過entry(輸入框)來取得面積信息
上面那個選取單元的過程提到過,那里部分語句是為GUI 服務,下面寫這個GUI
首先,這個GUI用到hypermesh hwt toolkit,因此第上步加入下面語句
package require hwt;
這樣我們就可以大膽用hwt里面的一些控件了
此外還用到hypermesh軟件包自帶的一過程,我們也要把它SOURCE進來
SourceFile [file join [hm_info -appinfo SPECIFIEDPATH hw_tcl_common] "hw" "collector" "hwcollector.tcl"]
好了,下面可能是讀者最心的,如何創建一個窗口,通常還是把它放在一個過程里面
proc ::Ansys::ToolKit::InquireArea::InquireAreaWindow { args } {
::Ansys::ToolKit::InquireArea::Desroy
hwt::CreateWindow .inquireAreaWindow \
-windowtitle "Inquire Area " \
-noGeometrySaving \
-cancelButton Cancel \
-helpButton help \
destroyOnUnpost \
-post;
#設置窗口最大與最小值
wm minsize .inquireAreaWindow 400 140;
wm maxsize .inquireAreaWindow 400 140;
#如果置頂窗口,加上它吧
wm attribute .inquireAreaWindow -topmost true
#取得空腔,也就窗口里面放控件的地方吧,這是個path
set base [ hwt::WindowRecess .inquireAreaWindow ]
#創建一個框架,然后我們才能往里放東西
set fra1 [ frame $base.fra1 ]
#創建了框架,還要把它顯示出來吧,下面這語句就是把它顯示出來
pack $fra1 -side top -anchor nw -fill x -expand false
#一個框架是不夠的,多創建一個吧,反正不用錢的
set fra2 [ frame $base.fra2 ]
pack $fra2 -side top -anchor nw -fill x -expand false
#創建一個標簽,
set elem_label [ label $fra1.elem_label \
-text "Select elements :" \
-font [hwt::AppFont] \
-justify center ]
#顯示這個標簽 ,至于里面的選項,不懂可以看TCL的參考書
pack $elem_label -side left -anchor nw -fill none -expand 0 -padx 4 -ipady 3
#創建選取單元按鈕
set elems_button [Collector $fra1.addelems entity 1 HmMarkCol \
-types "elements" \
-withtype 0 \
-withReset 1 \
-callback "::Ansys::ToolKit::InquireArea::AddElems"]
#顯示它
pack $fra1.addelems -side left -padx 3 -pady 5
#這里創建一個輸入框,你可以從這里復制面積
set area_entry [ AddEntry $fra2.areaentry \
-label "Area = " \
-labelWidth 15 \
-entryWidth 24 \
-validate real \
-state normal \
-textVariable ::Ansys::ToolKit::InquireArea::area_sum ]
pack $area_entry -side left -anchor nw -padx 4 -pady 5
#這里計算面積的按鈕,-command 調用了我們之前創建的過::Ansys::ToolKit::InquireArea::CalculateArea
#這樣我們按下它時,就執行這個過程了
set get_area_but [ button $fra2.getareabut \
-text "Calculate" \
-command ::Ansys::ToolKit::InquireArea::CalculateArea]
pack $get_area_but -side left -anchor nw -padx 10 -pady 5 -ipadx 10 -ipady 3
}
相對是一個比較長的過程,先看一下效果,如果你是第一次接觸GUI,估計不看效果也很頭痛的
很簡,兩個entry ,兩個按鈕
好吧,下面我們分析一下吧
::Ansys::ToolKit::InquireArea::Desroy 調用一個Desroy 的過程,現在還沒有寫這個過程,接下來就寫它吧
proc ::Ansys::ToolKit::InquireArea::Desroy { } {
destroy .inquireAreaWindow
}
就一條語句,其中.inquireAreaWindow叫做窗口路徑,通過destroy語句,我們把窗口毀了,這樣每次我們創建一
新的窗口之前,都會先毀一下窗口,保證只有一.inquireAreaWindow顯示出來
通過這條語句,我們就可以創建下個窗口了
hwt::CreateWindow .inquireAreaWindow \
-windowtitle "Inquire Area " \
-noGeometrySaving \
-cancelButton Cancel \
-helpButton help \
destroyOnUnpost \
-post;
有興趣的可以把這段語句與 package require hwt 一起放到復制到txt文檔,保存為tcl運行一下吧
其中的選項我就不說,已經很很啰嗦啦,可以查看幫助,其它的請看注釋
最后,加上這條語句:
::Ansys::ToolKit::InquireArea::InquireAreaWindow
各個過程就串接起來了
到現在為止,整個開發就完成了,,當然還有許多細節說不到的,請大家原諒
下面給出完整腳本:
namespace eval ::Ansys::ToolKit::InquireArea {
set elem_ids_list []
set area_sum 0
}
package require hwt;
SourceFile [file join [hm_info -appinfo SPECIFIEDPATH hw_tcl_common] "hw" "collector" "hwcollector.tcl"]
proc ::Ansys::ToolKit::InquireArea::CalculateArea { args } {
variable elem_ids_list
variable area_sum 0
foreach elem_id $elem_ids_list {
set current_elem_area [ hm_getentityvalue elems $elem_id "area" 0 ]
set area_sum [ expr $current_elem_area + $area_sum ]
}
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
}
proc ::Ansys::ToolKit::InquireArea::Desroy { } {
destroy .inquireAreaWindow
}
proc ::Ansys::ToolKit::InquireArea::InquireAreaWindow { args } {
package require hwt
::Ansys::ToolKit::InquireArea::Desroy
hwt::CreateWindow .inquireAreaWindow \
-windowtitle "Inquire Area " \
-noGeometrySaving \
-cancelButton Cancel \
-helpButton help \
destroyOnUnpost \
-post;
wm minsize .inquireAreaWindow 400 140;
wm maxsize .inquireAreaWindow 400 140;
wm attribute .inquireAreaWindow -topmost true
set base [ hwt::WindowRecess .inquireAreaWindow ]
set fra1 [ frame $base.fra1 ]
pack $fra1 -side top -anchor nw -fill x -expand false
set fra2 [ frame $base.fra2 ]
pack $fra2 -side top -anchor nw -fill x -expand false
set elem_label [ label $fra1.elem_label \
-text "Select elements :" \
-font [hwt::AppFont] \
-justify center ]
pack $elem_label -side left -anchor nw -fill none -expand 0 -padx 4 -ipady 3
set elems_button [Collector $fra1.addelems entity 1 HmMarkCol \
-types "elements" \
-withtype 0 \
-withReset 1 \
-callback "::Ansys::ToolKit::InquireArea::AddElems"]
pack $fra1.addelems -side left -padx 3 -pady 5
set area_entry [ AddEntry $fra2.areaentry \
-label "Area = " \
-labelWidth 15 \
-entryWidth 24 \
-validate real \
-state normal \
-textVariable ::Ansys::ToolKit::InquireArea::area_sum ]
pack $area_entry -side left -anchor nw -padx 4 -pady 5
set get_area_but [ button $fra2.getareabut \
-text "Calculate" \
-command ::Ansys::ToolKit::InquireArea::CalculateArea]
pack $get_area_but -side left -anchor nw -padx 10 -pady 5 -ipadx 10 -ipady 3
}
proc ::Ansys::ToolKit::InquireArea::AddElems { args } {
if { [lindex $args 0] == "typechangenotify"} {
return;
}
switch [lindex $args 0] {
"getadvselmethods" {
*entityhighlighting 1
*clearmark elems 1
wm withdraw .inquireAreaWindow;
*createmarkpanel elems 1 "Select elements:"
wm deiconify .inquireAreaWindow;
eval lappend ::Ansys::ToolKit::InquireArea::elem_ids_list [ hm_getmark elems 1 ]
*clearmark elems 1
*entityhighlighting 0
if { [ llength $::Ansys::ToolKit::InquireArea::elem_ids_list ] == 0 } {
tk_messageBox -message "No elements were selected. \n Please select elements to inquire area" -title "Altair HyperMesh"
return;
}
return;
}
"reset" {
set ::Ansys::ToolKit::InquireArea::elem_ids_list []
return;
}
default {
return 1;
}
}
}
::Ansys::ToolKit::InquireArea::InquireAreaWindow
下面是運行過程:
首先,你總得要創建一個TCL文件吧
用文本編輯器把上述代碼復制進去,保存為file_name.TCL就可以了
然后在hypermesh 菜單File-> run->tclscript 然后打開那個文件就OK了
彈出:
雙擊elements
選擇單元(圖中白色顯示)
單擊Calculate按鈕就可以計算面積了,
共同學習,共同進步!!
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
3
6
3




















