ADAMS二次開發(fā)及實例_第1頁
ADAMS二次開發(fā)及實例_第2頁
ADAMS二次開發(fā)及實例_第3頁
ADAMS二次開發(fā)及實例_第4頁
ADAMS二次開發(fā)及實例_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第11章ADAMS二次開發(fā)及實例ADAMS具有很強的二次開發(fā)功能,包括ADAMS/View界面的用戶化設計,利用cmd語言實現自動建模和仿真控制,通過編制用戶子程序滿足用戶的某些特定需求,甚至可以拓展ADAMS的功能。本章主要介紹如何定制用戶化界面、宏命令的用法和條件循環(huán)命令的用法,以及綜合以上功能的應用實例。由于用戶子程序的主要內容已在第9章進行了詳細介紹,因此本章只對所涉及到的用戶子程序編譯聯接操作過程進行簡單介紹。定制用戶界面ADAMS/View的界面對象都是以層次結構存儲在模型數據庫中,類似于零件模型的層次結構。所有定制的界面對象都存儲在名為GUI的數據庫中,該數據庫可以很方便地管理所有的標準界面對象。如圖11-1所示。圖11-1界面對象的層次結構最上層的界面對象是窗口和對話框。如果主要建模窗口起名為main的話,其數據庫全名應為.。盡管窗口和對話框看起來很相似,但它們卻是很不相同的。窗口通常是在用戶工作的時候在屏幕上停留一段時間,而對話框通常是在用戶輸入數據或是進行訪問控制時才會出現。窗口有工具條和菜單欄,窗口和對話框也包含其他的界面對象如按鈕,標簽等等。大多數用戶化操作涉及到創(chuàng)建對話框或者修改標準對話框。但若不用創(chuàng)建一個完整的用戶化界面時,則通常只用修改菜單條和工具欄。ADAMS所包含界面對象屬性如表11-1所示。表11-1ADAMS所包含界面對象屬性界面對象:對象屬性:Window(窗口)可包含用戶自定義的菜單條和工具條可有一個以上的菜單條,但一次只能顯示一個包含所有低層次的界面對象Toolbar(工具條)出現在窗口上端或下端的子區(qū)域能包含其它的對象MenuBar(菜單條)出現在窗口上端可有子菜單僅用于控制菜單Menu(菜單)包含三種類型:下拉式、彈出式或子菜單可包含按鈕、開關按鈕、分割條和子菜單Dialogbox(對話框)除菜單條和工具條之外還可包含其他對象Container(界面對象區(qū))包含在對話框,窗口和工具條內的子區(qū)域可包含其他對象Buttonstack(按鈕串)可包含多個按鈕,而只顯示一個按鈕僅一個按鈕被激活可通過右鍵操作顯示所有按鈕.Lable(標簽)用在對話框中顯示文本和圖象Field(數據區(qū))用于用戶輸入信息Button(按鈕)激活操作在按鈕上顯示文本和圖象對相應操作進行提示Togglebutton(開關按鈕)顯示激活狀態(tài)的按鈕Seperator(分割線)畫出水平線分割線Slide(滑動條)通過滑動條設置當前范圍內的整數值,而不用鍵入數值Optionmenu(可選菜單項)在多個菜單項中作一選擇包含一個彈出菜單的圖框只顯示一行選定菜單項Radioboa(狀態(tài)設置框)設置狀態(tài)和模式Tabcontainer(標簽界面對象)給界面和對話框設置標簽Datatable(數據表)用來顯示數據的表格,你可增加欄或列在大多數情況下,用戶定制界面是指制作用戶自己的菜單和對話框。通常可使用菜單編輯器和對話框編輯器來定制界面,通過它們可以很快地訪問并改變大多數界面對象和功能。下面就這兩方面的內容作簡單介紹。定制菜單1。菜單編輯器通過以下菜單路徑可以調出菜單編輯器窗口:Mainmenu==》Tools==》Menu==》Modify……菜單編輯器窗口如圖11-2所示:圖11-2菜單編輯窗口在菜單編輯器窗口中顯示的是ADAMS菜單文件,菜單文件是按照一定的語法書寫的解釋性程序文件,在默認情況下,菜單編輯器窗口里顯示的是描述ADAMS標準菜單的菜單文件,通過按照一定的語法規(guī)則修改該菜單文件,就可以得到用戶化的菜單。下面的程序段是對標準ADAMS/View菜單文件的節(jié)選,粗略顯示了標準ADAMS/View菜單文件的各個菜單項和File菜單項所包含的按鈕和分割條界面對象,以便讀者能把握菜單文件的全貌,如圖11-3所示為相應的圖形界面。圖11-3ADAMS/View菜單MENU1&File!File菜單項NAME=fileHELP=Readandwritefiles,printmodelviews,orexitADAMSBUTTON2&NewDatabase::Ctrl+N!NewDatabase按鈕NAME=new……BUTTON2&OpenDatabase::Ctrl+O!OpenDatabase按鈕NAME=openHELP=OpenaDatabaseFile(ADAMS/ViewBinaryFile)……BUTTON2SaveDatabase&As...!SaveDatabase按鈕……SEPARATOR2!分割線……BUTTON2&Import!Import按鈕……...BUTTON2&Export!Export按鈕……...SEPARATOR2!分割線……BUTTON2&Print...::Ctrl+P!Print按鈕……SEPARATOR2!分割線……BUTTON2&SelectDirectory.!SelectDirectory.按鈕……..SEPARATOR2!分割線……BUTTON2E&xit::Ctrl+Q!Exit按鈕……MENU1&Edit!Edit菜單項……MENU1&View!View菜單項……MENU1&Build!Build菜單項……MENU1&Simulate!Simulate菜單項……MENU1&Review!Review菜單項……MENU1Settin&gs!Settings菜單項……MENU1&Tools!Tools菜單項……MENU1&Help!Help菜單項在菜單編輯器窗口中對菜單文件進行用戶化修改后,點擊編輯器窗口上的Menubar菜單項下的ExportText按鈕可將用戶化的菜單文件到用戶二次開發(fā)文件目錄中。如果要重新調入菜單,使用菜單編輯器的ImportText按鈕調入相應的菜單文件,然后點擊Apply按鈕;或者直接通過以下菜單路徑來實現:Mainmenu==》Tools==》Menu==》Read…….2。菜單語法如前所述,菜單文件實際上是用解釋性語言編制的程序段,下面介紹該解釋性語言的編程語法。菜單對象有四種類型:菜單、按鈕或圖標按鈕、開關按鈕和分割線,分別用關鍵詞MENUn、BUTTONn、TOGGLEn和SEPARATORn定義。如表11-2所示列出的是菜單對象類型及其參數含義。表11-2菜單對象類型及其參數含義菜單對象參數含義:MENUnLabelBUTTONnLabelornameoficonfileTOGGLEnLableSEPARATORn(none)表中菜單對象的參數含義如下:(1)n是從1到10之間的整數,它表示對象在菜單中出現的級別。例如,MENU1出現在菜單欄,BUTTON2出現在MENU1的之中。MENU菜單后面的n是必須要的,而對于其他的對象則為可選項。如果忽略級別,ADAMS/View將默認該對象屬于最后一個MENU。(2)lable是出現在菜單中的文本。對于圖標按鈕,可以指定圖標的名字,或者其他圖形格式文件。在Windows中圖標名字為bitmap(.bmp)格式的文件名字。創(chuàng)建每種菜單對象的語法結構如下:創(chuàng)建MENU可以創(chuàng)建多級的菜單,第一級菜單為MENU1,出現在菜單條上,低一級的菜單如MENU2和MENU3出現在層疊的下拉菜單中。語法:MENUnTITLENAME=nameHELP=Help參數:n=整數值,表明該菜單在菜單條中出現的層數。n=1時菜單出現在菜單欄上,n≥2時菜單出現在下拉菜單中。TITLE=字符串,出現在菜單欄上,可以在表提前加一個&字符用作記憶法(如“&File”在菜單上顯示為File)。NAME=模型數據庫中對象的名字。HELP=出現在狀態(tài)欄中的文字。創(chuàng)建BUTTON每個按鈕對應一個菜單命令,可以在下拉菜單或是子菜單上放置按鈕。語法:BUTTONnLABLEACCELERATORNAME=nameHELP=helpCMD=command參數:n=整數值,表明按鈕出現的層數。N=2時按鈕出現在下拉菜單上,n≥3時按鈕出現在子菜單上。LABLE=按鈕名,出現在下拉菜單或子菜單上。ACCELERATOR=鍵或鍵組用來執(zhí)行菜單命令。NAME=模型數據庫中菜單對象的名字。HELP=出現在狀態(tài)條上的文字。CMD=點擊按鈕時所執(zhí)行的命令,當有:多行命令時,每一行前面都要加CMD。創(chuàng)建分隔符(SEPERATOR)在下拉菜單和子菜單中的各項目之間添加分割線。語法:SEPERATORn參數:n=整數值,表明分隔符出現的層數,n=2時分隔符出現在下拉菜單中,n=3時分隔符出現在子菜單中。創(chuàng)建開關按鈕TOGGLE用于在兩種狀態(tài)之間設置切換開關,開關按鈕可以在下拉菜單或是在子菜單上。語法:TOGGLEnTITLENAME=nameHELP=helpSTATE=stateCMD=command其參數含義同上其他對象。下面是一個利用菜單編輯器定制用戶化菜單的例子,該例在ADAMS/View標準菜單的Tools菜單項和Help菜單項之間定制了用戶自己的菜單項MyMenu2003,通過展開該菜單項顯示了用戶菜單各層次之間的關系,如圖11-4所示。圖11-4用戶菜單MyMenu2003的層次結構下面是本例的程序清單:……MENU1&Tools……MENU1&MyMenu2003NAME=mymenu2003HELP=AMenuTestBUTTON2MyButton&1NAME=My_Button_1HELP=TestofMyButton1CMD=AdamsCommandofMyButton1BUTTON2MyButton&2NAME=My_Button_2HELP=TestofMyButton2CMD=AdamsCommandofMyButton2BUTTON2……NAME=Some_ButtonsHELP=TestofSomeButtonCMD=AdamsCommandsofSomeButtonsBUTTON2MyButton&nNAME=My_Button_nHELP=TestofMyButtonnCMD=AdamsCommandofMyButtonnSEPARATOR2MENU2&SonMenu1BUTTON3SonButton1NAME=Son_Button_1CMD=AdamsCommandofSonButton1BUTTON3SonButton2NAME=Son_Button_2CMD=AdamsCommandofSonButton2BUTTON3……NAME=Some_Son_ButtonCMD=AdamsCommandofSomeSonButtonBUTTON3SonButtonnNAME=Son_Button_nCMD=AdamsCommandofSonButtonnSEPARATOR3MENU3Son'sSonMenuBUTTON4Son'sSonButtonBUTTON4……MENU3.……MENU2&SonMenu2MENU2……MENU2&SonMenunMENU1&Help……定制對話框ADAMS/View中使用的對話框包括各種界面對象,如標簽、數據區(qū)、按鈕等等??梢允褂肁DAMS對話框編輯器來創(chuàng)建和修改對話框以更好地滿足用戶的需要。例如為標準對話框添加一個按鈕來包含要作的選項,或添加一個對話框以執(zhí)行經常運行的步驟等等。利用對話框編輯器創(chuàng)建用戶自定義對話框的操作方法如下:1。創(chuàng)建對話框對話框編輯器包含了用來創(chuàng)建對話框的所有工具,創(chuàng)建對話框的步驟如下:(1)通過如下菜單路徑:在Tools==》DialogBox==》Create,于是出現對話框編輯器如圖11-5所示:圖11-5對話框編輯器(2)在DialogBox菜單中,選擇New按鈕,出現新的對話框,如圖11-6所示。圖11-6創(chuàng)建新對話框窗口(3)在Name欄中輸入你的對話框的標題,然后選擇想在對話框上添加的默認按鈕。(4)選擇OK按鈕完成設置,.于是出現一個新對話框如圖11-7所示。圖11-7新創(chuàng)建的對話框2。修改對話框可以利用對話框編輯器對創(chuàng)建好的對話框進行修改,可以添加各種不同的界面對象到對話框中,設計布局、外觀、命令和對話框對象的大小等。具體做法為:(1)選擇在Tools==》DialogBox==》Modify,出現數據庫向導。(2)選擇想修改的對話框,在從Tools菜單選擇對話框編輯器之后,通過雙擊出現的對話框的背景,這樣就顯示對話框編輯器并可以修改對話框了。3。增加界面對象到用戶定制對話框可以利用對話框編輯器為用戶定制對話框添加界面對象,ADAMS/View對話框的界面對象有以下幾種類型。(1)Label——顯示對話框中的文字和圖象。(2)Field——提供輸入文字和數值的空間。(3)Button——激活操作;在按鈕上有顯示該操作的圖象,標題或文字。(4)Togglebutton——顯示激活狀態(tài)。(5)Seperator——劃一條水平線。(6)Slider——設置對象的數值而不用鍵入數據。(7)Optionmenu——從多個選擇中挑選一個,有彈出式圖框以顯示整個菜單。(8)Buttonstack——設置狀態(tài)。(9)Buttonstack——包含多個按鈕,可通過右鍵彈出所有按鈕。(10)Container——可添加信息。利用對話框編輯器為用戶定制對話框添加界面對象的步驟為:(1)在Create菜單中,選擇想添加的對象。(2)將鼠標放在想添加對象的對話框中。(3)放下鼠標左鍵,并拖動來創(chuàng)建對象。所有界面對象的屬性都可以通過對話框編輯器進行修改。4。在對話框中使用命令在用戶定制對話框中,大多數界面對象都對應著一個ADAMS/View可執(zhí)行命令,這些命令是為了完成用戶希望的某項功能,或改變模型,或改變用戶輸入數據,或作出選擇。.可以用ADAMS/View命令語言(cmd)來為對象創(chuàng)建命令。也可以通過命令向導來找到所需要的命令。一旦你找到命令,就可將它從命令窗口和log文件中拷貝,并粘貼或鍵入到命令編輯框。(1)察看對象的命令可以通過如下操作查看界面對象所對應的命令:雙擊你想察看命令的對象。從菜單的Attribute選項中,選擇Commands。(2)將命令替換成文本在執(zhí)行命令之前,ADAMS/View會執(zhí)行一些文本替代操作。這些替代操作就是用界面對象的屬性值來取代替換文本,并將其用在命令中。替代文本表字符為“$”,表明替代文本的位置。有四種形式的替代文本:$object_name——其名字與界面對象的名字相同。當ADAMS/View執(zhí)行命令時,它會將當前object_name的值替換為$object_name的值。如表11-3所示列出了不同界面對象的值。表11-3不同界面對象的值對象數值含義Field(數據區(qū))當前數據區(qū)內容Option-menu(可選菜單項)當前選定的數據Radio-box(狀態(tài)設置框)當前選定的數據Toggle-button(開關按鈕)當前定義的開關值Slide(滑動條)當前的滑動整數值例如,為將命令中的my_value值賦給參數,可用以下語句:my_commandmy_parameter=$my_value如果數據區(qū)內容為123,那么在ADAMS/View中執(zhí)行命令時:my_commandmy_parameter=123缺省情況下,選擇菜單或狀態(tài)設置框的值為顯示或選擇按鈕的文字,也可以為ADAMS/View的替換指定別的值。在togglebutton開關按鈕值的屬性中,由數據區(qū)來設置開關數值。在OptionMenu選項菜單和RadioBox狀態(tài)控制欄,你可以用“|”符來分割多個選擇。$_value——替換包含該對象命令的值。例如,如果是名字為“my_toggle”的按鈕上的命令,則$_value的含義與$_toggle是相同的。在可能的情況下,應該使用$_value的值來替代實際對象的值,因為這樣更容易理解和維護。如果在命令中看見了$_value,應該知道它代表界面對象的值,另外,如果要改變對象的名字,也不必改變命令。這一點對于togglebuttons,radiobox和optionmenu特別有用,因為這樣可以在相關聯的命令中改變這些對象的值。$_self,$_parent,$_topgui——它們可使對話框更容易理解和維護。例如,對話框能用以下命令調入它的子類的數據:interfacefieldsetfield=$strings=…一般應盡可能使用$_self或$_parent命令來指代對象名字,而不用真實的名字。$_1,$_2,$_3——用來指代窗口或對話框顯示命令相關的參數,窗口或對話框以及它們的子類都可以在命令中使用$_1,$_2,$_3。當ADAMS/View執(zhí)行命令時,它可替代參數的當前值。(3)條件命令替換替換文本被包含在單引號內,如果在引號內的$name或$value為空,則ADAMS/View除去單引號之間的文本。如果返回文字為空(‘’),該對象無效或不顯示,則$name為空。條件替代更容易處理選擇或命令中的手工排除參數。例如,如果使用下列命令,而用戶不提供參數,則該命令就失效了:my_commandmy_parameter=$my_value…相反,如果你使用下列命令,則該命令有效:my_command‘my_parameter=$my_value’在手工排除參數時可以使用相同的技巧,只要參數包含在單引號‘’內,并一次只顯示一個選項或只有一個選項有效。(4)Windows,DialogBoxes和Container的特殊命令Windows(窗口),DialogBoxes(對話框)和Container(界面對象區(qū))都有特殊命令:start(開始),execution(執(zhí)行)和finishcommand(完成)。當顯示對象時ADAMS/View會自動執(zhí)行開始命令,而且當對象被關閉時ADAMS/View會自動執(zhí)行完成命令,執(zhí)行命令通過interfacedialog_box/window/containerexecute命令來執(zhí)行。開始和完成命令有助于對話框的初始化設置,當界面對象被顯示時將缺省值放入數據區(qū)。而完成命令使當對象不顯示時,幫助清除參數設置。執(zhí)行命令是指在點擊缺省的按鈕“OK”和“Apply”是所執(zhí)行的命令。(5)編輯命令在對話框編輯器的命令區(qū)按下鼠標右鍵就會彈出選擇菜單,如表11-4所示。通過菜單可以對命令進行編輯。表11-4編輯器選擇菜單命令功能References顯示和插入$xxx的對象文本Pick選擇對象并在命令中插入名字Browse顯示數據庫向導并在命令中插入所選的名字Cut出去選擇的文本并將它放在剪切版上Copy拷貝選擇的文字到文字緩沖區(qū)Paste從剪切版上粘貼到光標位置Edit顯示文本編輯器(缺省的,限于UNIX)5。測試對話框用戶在將定制好的對話框保存到數據庫以前進行測試,具體方法為:.(1)在Option菜單中,選擇TestBox按鈕,ADAMS/View會顯示該對話框。(2)測試想要執(zhí)行的對話框命令。6。保存對話框在用戶定制好自己的對話框之后,必須要對對話框進行保存。點擊在DialogBox菜單中的Export按鈕,然后選擇CommandFile按鈕,可以將用戶對話框保存到適當的位置以便下次調用。7。加載和顯示對話框用戶可以通過以下命令加載已經保存好的對話框:在File菜單中,選擇import按鈕,然后讀入所需的對話框命令文件,用戶定制的對話框就被加載到數據庫中。使用數據庫向導可以顯示對話框:標準的ADAMS/View對話框列在前面,以字母順序,接著是用戶定制的對話框,顯示對話框的步驟為:(1)在Tool菜單中點擊DialogBox按鈕,然后選擇Display按鈕,則會出現數據庫向導,其中列出了所有對話框。(2)選擇所需對話框,并選擇OK按鈕。宏命令的使用宏命令實際上是一組命令集,它可以執(zhí)行一連串的ADAMS/View命令。創(chuàng)建宏命令時,首先按順序列出想執(zhí)行的ADAMS/View命令的清單,然后就可以將這些命令寫成宏命令的形式。在宏命令中,也可以使用參數。每次使用宏命令時,都將通過參數將數據傳給宏。當執(zhí)行帶有參數的宏命令時,ADAMS/View將所提供的值替代到宏命令中。ADAMS/View對宏命令與其他的ADAMS/View的命令一樣,可以在命令窗口中輸入宏命令,從命令向導中選擇它。也可將它包含在其他的宏命令中,或者從自己的定制菜單、對話框或按鈕中執(zhí)行它。使用宏命令可以實現以下功能:(1)自動完成重復性的工作。(2)為ADAMS/View建立模型數據交換功能。(3)自動創(chuàng)建整個模型。(4)快速建立機械系統(tǒng)的多個變量。創(chuàng)建宏命令通??梢酝ㄟ^三種方式創(chuàng)建宏命令:記錄方式、使用宏編輯器來編輯和創(chuàng)建宏命令、通過導入文件來創(chuàng)建宏命令。1。以記錄方式創(chuàng)建宏命令(1)記錄宏a.通過如下菜單路徑:Tools==》Macro==》Record/Replay==》RecordStart,開始記錄宏命令。b.執(zhí)行想在宏命令中進行的操作。c.通過如下菜單路徑:Tools==》Macro==》Record/Replay==》RecordStop,可以停止記錄宏。(2)回放記錄的宏通過如下菜單路徑可以回放記錄好的宏命令:Tools==》Macro==》Record/Replay==》ExecuteRecordMaro。.(3)保存記錄的宏通過如下菜單路徑,Tools==》Macro==》Record/Replay==》WriteRecordMacro,將ADAMS/View宏命令保存為的命令格式。2。使用宏編輯器來編輯和創(chuàng)建宏命令使用宏編輯器是創(chuàng)建宏命令的另一種方式,具體創(chuàng)建步驟為:(1)選擇如下菜單命令:Tools==》Macro==》Edit==》New或者Modify,然后出現宏命令編輯器窗口,如圖11-8所示。.(2)如果你選擇Modify,則會出現數據庫向導。(3)如果在創(chuàng)建新的宏,則在MacroName編輯框輸入宏的名字。(4)在Command編輯框,輸入執(zhí)行宏命令的命令串,使用宏的名字,選擇UseMacroName選項。必須注意:所輸入的命令串的名字必須是唯一的,不能重新定義一個已存在的命令,但可以在已存在的命令中添加新的關鍵詞。例如,輸入“MARKERCREATE”就是無效的,因為“MARKERCREATE”是早已存在的命令,但輸入“MARKERGENERATE”就是有效的。(5)指明整個宏命令是否能用單個的“Undo”命令撤銷。對于非常大的宏命令,單個的“Undo”會消耗大量的內存,甚至沒有使用撤銷操作都會顯著地減慢宏命令的執(zhí)行速度。一般情況下是在初始化創(chuàng)建和調試階段采用“Undo=yes”,當確定宏命令可以正常工作之后,切換到“Undo=no”來提高運行速度。圖11-8宏命令編輯器圖11-8宏命令編輯器3。通過導入文件來創(chuàng)建宏命令通過導入文件來創(chuàng)建宏命令是創(chuàng)建宏命令的第三種方式。具體步驟如下:(1)選擇如下菜單路徑顯示導入宏對話框:Tools==》Macro==》Read,導入宏對話框如圖11-9所示。(2)在MacroName編輯框中輸入ADAMS/View將在當前數據庫中保存宏的名字。(3)在FileName編輯框中輸入包含要執(zhí)行命令的文件。(4)在UserEnteredCommand編輯框中指明將要執(zhí)行宏命令的命令串,如果不輸入命令串的名字,則缺省為宏命令的名字。(5)指明整個宏命令能否被單個的“Undo”命令撤銷,對于大的宏命令,單個的“Undo”命令會消耗大量的內存或者顯著地減慢宏命令執(zhí)行的速度。(6)指明包含宏命令幫助文件或者輸入字符串來描敘宏。(7)確信你沒有創(chuàng)建過期的對話框,從CreatePanel選擇菜單中選擇“no”。(8)選擇“OK”。.圖11圖11-9導入宏對話框在宏命令中使用參數宏命令的參數是在實際執(zhí)行宏命令時提供給系統(tǒng)信息的占位符,參數通常以”$”開頭,后面跟著參數的名字??梢远x多個參數,也可以將一個參數定義多次。當創(chuàng)建宏命令時,ADAMS/View掃描命令文本以確定所有的參數。當執(zhí)行宏命令時,必須為參數提供值,或者它們有缺省值,ADAMS/View將數值替代命令中參數的位置,然后執(zhí)行命令。如果在命令中多次使用相同的參數,ADAMS/View將用同一個值替代每一個參數出現的地方。1。帶參數宏命令的例子下面是一個宏命令的例子,用它可以解釋如何用宏命令改變力的大小和模型中約束圖標,宏中的命令名為“icon_size”,約束名為“size”。constraintattributesconstraint_name=.*size_of_icon=$sizeforceattributesforce_name=.*size_of_icon=$size當輸入命令:icon_size=25ADAMS/View執(zhí)行命令為:constraintattributesconstraint_name=.*size_of_icon=25forceattributesforce_name=.*size_of_icon=252。擴展參數值在某些情況下,ADAMS/View在將參數替代到命令中之前,可以重新定義和擴展參數值,但ADAMS/View不會改變數值。在宏命令中替換時,ADAMS/View不會轉換單位,它會直接將數值輸入到命令中,命令本身會轉換單位。ADAMS/View在將參數替換到宏命令中時,會將數據庫名擴展為全名,擴展名使用“.”來分割名字。使用“.”可以讓程序直接訪問數據庫值。例如:下面例子是包含參數“name”的宏命令“Ipart”list_infopartpart_name=$name當輸入下列命令時:Ipartname=left_wheelADAMS/View將全名left_wheel替換$name,并執(zhí)行命令:List_infopartpart_name=.3。通用參數格式通用參數格式為$‘name:q1:q2:q3:…’其中:name為參數的名字,q1,q2,q3…是說明參數特征的一個或多個限定詞。單引號和限定詞是可選擇性的,下面是可能的四種格式:$name;$‘name’;$name::q1:q2:q3:…;$‘name:q1:q2:q3:…’;4。參數命名規(guī)則參數名必須以字母開頭,余下的名字可為字母(a-z,A-Z),數值或者下劃線,結尾字母可為字母,數字,不能是下劃線。因而,$P、$P1和$PART_1是合法的,而$PART#1和$1P是不合法的。5。參數限定詞及其格式限定詞出現在參數第一次出現的時候,以對其屬性進行控制。限定詞是可選的也只能在參數第一次出現時使用。參數的限定詞為:Type(類型)Range(范圍)Count(值)Default(缺省)(1)TypeQualifierTypequalifier是用戶必須輸入的類型,其格式為:T=typeT=type(additionaldata)其中:type是basictype、databaseobjecttype或者databaseobjectclasstype,Additionaldata是可選的或者需要由數據類型決定。BasicType包括:real、integer、location、orientation、string、function、list(str1,str2,str3,…)和file(pathwildcard)。指明DatabaseObjectType意味著用戶必須輸入已存在該類型對象的名字,其前綴必須為new_來指明該類型的新對象的名字。例如,t=marker為已存在的marker點的名字,新marker點的名字寫為t=new_marker。下面是另外一些例子:$stiffness:t=real$counter:t=integer$end_point:t=location$attitude:t=orientation$mat:t=marker可以通過下列步驟在ADAMS/View中察看databaseobjecttypes類型:在Tools菜單中,選擇FunctionBuilder。.從選擇菜單中,選擇。從選擇菜單的列表中,選擇SELECT_TYPE。選擇Assist。在Assist對話框中,輸入all,然后選擇OK。選擇Evaluate。然后出現所有對象類型的列表。DatabaseObject-ClassType包括下面一些:(2)RangeQualifiers一個rangequalifier指明參數的取值范圍,它僅僅適用于數值類型,其格式如表11-5所示:表11-5rangequalifier參數格式格式含義GT=r大于rGE=r大于等于rLT=r小于rLE=r小于等于r(3)CountQualifiersCountQualifiers指明數據的個數,其格式如表11-6所示:表11-6CountQualifiers參數格式格式含義C=0大于或等于1C=n等于nC=n,0大于或等于nC=n,m從n到m(4)DefaultQualifiersDefaultQualifiers為可選限定詞,如果參數沒有缺省的話,用戶必須輸入一個值來執(zhí)行宏命令。有三種類型的缺省限定詞:Constant——為可選的,如果用戶沒有提供參數值時,ADAMS/View使用的缺省值。格式為:D=valueUpdate——為可選的,如果用戶沒有提供參數值時,ADAMS/View將使用最后一次使用的值。格式為:U=valueDatabaseobject——自動產生并應用缺省的databaseobjects。格式為:A6。缺省參數特性在命令文本的第一次出現的參數定義了參數的特性。如果首次出現時有限定詞,則該限定詞將決定參數的特性,如果沒有限定詞,而參數出現在“=”后,則該參數從前面的命令參數繼承了type,count和default,如果參數既沒有限定詞,也沒有出現在“=”后,則缺省為字符串。在下面的例子中,參數“$text”缺省為字符串,因為它沒有限定詞,也沒有出現在命令中。參數“$numbers”有限定詞,指明了它一個或多個是大于零的整數。參數“$part_1”是一個“par”,因為它出現在“=”后,繼承了前面參數“part_name”的類型。參數“$part_2”缺省為字符串,因為它沒有出現在“=”后,參數“$part_3”和“$part_4”有都是part。!Parameter$textisastring!$numbers:t=integer:c=0:gt=0list_infopartpart_name=$part_1,$part2list_infopartpart_name=$part_3:t=part,$part_4:t=part循環(huán)命令和條件命令ADAMS/View命令語言包含有條件與循環(huán)結構語句,可以用它實現邏輯判斷和循環(huán)功能。它們可以用在菜單命令、對話框命令和用戶自己編寫的宏命令程序文件中。循環(huán)命令循環(huán)命令的主要形式有以下兩種:FOR/ENDWHILE/END1。FOR/END循環(huán)結構FOR/END循環(huán)結構的一般格式有兩種,分別如下:(1)對參數數值的循環(huán)操作:FORVARIABLE_NAME=varSTART_VALUE=REAL&INCREMENT_VALUE=REAL&END_VALUE=REAL…END格式中:START_VALUE,INCREMENT_VALUE和END_VALUE可以是值為實數的表達式。INCREMENT_VALUE可以是正數,也可以是負數,缺省值為1。在循環(huán)體內的命令可以調用循環(huán)變量作為其可用的任何實數變量。格式應用實例如下:variablesetvariable_name=$integer=1forvariable_name=istart=1end=6partcreaterigid_bodyname_and_positionpart_name&=(eval("ball_"&orientation=0,0,0&relative_to=.variablesetvariable_name=$integer=(eval($+1))…endvariabledeletevariable_name=$在上例中,變量i從1循環(huán)到6,一次建立了ball_1到ball_6共6個part,其分別相對于ground的位置為(0,0,100)到(0,0,600),在循環(huán)體中,變量$進行了自加。(2)對一組模型對象進行循環(huán)操作:FORVARIABLE_NAME=varOBJECT_NAMES=object&TYPE=database_object_type&…END格式中:循環(huán)變量var為database_object_type類型的變量,它是對OBJECT_NAMES內所有database_object_type類型的對象一個個地進行操作或賦值。程序實例如下:variablesetvariable_name=temp_numinteger=1forvariable_name=my_partobject_names=.my_model.*type=partpartmodifypart_name=(eval(my_part))adams_id=(eval(temp_num))variablesetvariable_name=temp_numinteger=(eval(temp_num+1))endvariabledeletevariable_name=temp_num在上例中,ADAMS/View對my_model中的所有part的ID號進行重新編碼,從1開始,直至編碼完成。2。WHILE/END循環(huán)結構WHILE/END循環(huán)結構的一般格式為:WHILECONDITION=(expression)…ENDWHILE/END循環(huán)結構的功能是:循環(huán)執(zhí)行WHILE和END之間的命令,直到條件不成立或為“0”時退出循環(huán)。前述FOR/END的例子也可以用WHILE/END來編程:variablesetvariable_name=$integer=1variablesetvariable_name=temp_numinteger=1whilecondition=(temp_num<=6)partcreaterigid_bodyname_and_positionpart_name&=(eval("ball_"&orientation=0,0,0&relative_to=.variablesetvariable_name=$integer=(eval($+1))…endvariabledeletevariable_name=$variabledeletevariable_name=temp_num條件命令條件命令的主要形式有以下三種:IF/ELSEIF/ELSE/ENDBREAKCONTINUE1。IF/ELSEIF/ELSE/END命令IF/ELSEIF/ELSE/END命令的功能為:可以用IF、ELSEIF、ELSE和END命令有條件地執(zhí)行一組命令,用來實現邏輯判斷功能。該組命令包含在IF和END內。該條件值取決于表達式(expression)的邏輯值。在IF/END內,如果表達式邏輯值為1,則符合條件而執(zhí)行內部命令。如果表達式邏輯值為0,則不符合條件而執(zhí)行ELSE/END中的命令。該命令可以用在命令語言、宏命令和命令文件中。IF/ELSEIF/ELSE/END命令的一般格式為:(1)IFCONDITION=(expression)…END(2)IFCONDITION=(expression)…ELSE…END(3)IFCONDITION=(expression)…ELSEIF…ELSE…END下面是IF/ELSEIF/ELSE/END命令使用的一個例子:ifcondition=(db_exists("."))constraintmodifymotionmotion_name=.adams_id=1typ=rot&joint_name=.function=""constraintmodifymotionmotion_name=.adams_id=2typ=rot&joint_name=.function=""elsegimovementconstraintcreatemotionmotion_name=.adams_id=1typ=rot&joint_name=.function=""constraintcreatemotionmotion_name=.adams_id=2typ=rot&joint_name=.function=""end在上例中,如果數據庫中存在.,則對其進行修改,如果不存在.,則調用命令文件gimovemen創(chuàng)建它。2。BREAK命令BREAK命令用在循環(huán)體內,用于中斷命令并無條件退出循環(huán)命令的執(zhí)行。格式為:BREAK下面是一段程序例子:variablecreatvariable_name=temp_numinteger_value=1whilecondition=(temp_num<=5)ifcondition=(eval(DB_EXISTS(“MAR”del)!如果數據庫中不存在路徑變量cvj_dir!定義路徑變量variablecreatevariable=.string=(eval("d:"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"file&=(eval((.&file=(eval((./"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"/"\\"modeldisplaymodel_name=cvj為了以后敘述方便,特將本例的某些內容進行說明:三球銷式等速萬向節(jié)由圓柱槽殼、三銷架和球環(huán)三部分組成,本例所涉及到的用于該萬向節(jié)建模、分析和結果后處理的對話框文件和命令文件如表11-7所示:表11-7萬向節(jié)建模、分析和結果后處理的對話框文件和命令文件文件類型調用階段對話框文件命令文件萬向節(jié)建模圓柱槽殼三銷架球環(huán)萬向節(jié)分析結果后處理菜單文件及菜單的初始化在上一節(jié)中,通過調用文件對ADAMS環(huán)境進行了與二次開發(fā)相關的初始化工作,這其中包括通過讀入文件和分別定制主界面用戶菜單和分析曲線后處理界面用戶菜單,以及調用文件對用戶菜單進行初始化。在本例中,主界面用戶菜單是在ADAMS/View主界面菜單條上插入的WX-CVJoint用戶菜單項及其相應下拉菜單。主界面用戶菜單的建模部分和分析計算部分的菜單項分別如圖11-12和圖11-13所示。圖11-12主界面用戶菜單的建模部分的菜單項圖11-13主界面用戶菜單的分析計算部分的菜單項上述用戶菜單的定制是通過讀取CVJ文件夾下的menus文件夾里的文件來實現的,文件的內容是在ADAMS/View的原始菜單文件中加入如下程序段:MENU1WX-CVJointNAME=wx_cvjoint_menuHELP=CreateormodifyCV-JointmodelMENU2ModelCreate/Modify!相應的下拉菜單用于萬向節(jié)建模NAME=cv_model_menuBUTTON3GeneralConfiguration...NAME=general_configHELP=DisplaythebasicConfigurationDB!此菜單項的命令是調用萬向節(jié)選型對話框.CMD=interfacedialog_boxdisplaydialog_box=.SEPARATOR3!分割條SEPARATOR3!分割條!有關用于ACJoint型萬向節(jié)建模的各菜單項(省略)…SEPARATOR3!分割條!有關用于GIJoint型萬向節(jié)建模的各菜單項BUTTON3GIBellShell...!用于圓柱槽殼建模NAME=gi_bell_shellHELP=DisplaythedefinitionDBoftheGIJointBellShellCMD=interfacedialog_boxdisplay&dialog_box=.BUTTON3Tripode...!用于三銷架建模NAME=mytripodeHELP=DisplaythedefinitionDBoftheTripodeCMD=interfacedialog_boxdisplay&dialog_box=.BUTTON3BallLoop...!用于球環(huán)建模NAME=ball_loopHELP=DisplaythedefinitionDBoftheBallLoopCMD=interfacedialog_boxdisplay&dialog_box=.SEPARATOR2!分割條!有關用于萬向節(jié)分析計算的各菜單項MENU2StandardAnalysisNAME=analysis_controleBUTTON3DynamicAnalysis...!動力學分析NAME=dynamic_analysisCMD=ifcond=(db_exists(\".\"))CMD=intdiadisdia=.CMD=endCMD=ifcond=(db_exists(\".\"))CMD=intdiadisdia=.CMD=end!其它分析項目菜單項BUTTON3StaticAnalysis...NAME=static_analysisCMD=ifcond=(db_exists(\".\"))CMD=intdiadispdia=.CMD=endCMD=ifcond=(db_exists(\".\"))CMD=intdiadispdia=.CMD=endBUTTON3LashAnalysis...NAME=lash_analysisCMD=ifcond=(db_exists(\".\"))CMD=intdiadispdia=.CMD=endCMD=ifcond=(db_exists(\".\"))CMD=intdiadispdia=.CMD=endSEPARATOR2!分割條!有關用于顯示各種分析結果的菜單項MENU2ResultsNAME=resultsHELP=Showresults...BUTTON3Animation...!用于顯示分析動畫NAME=animationCMD=intdiadispdia=animate_full_panelparam&=(eval(db_default(.system_defaults,"analysis")))BUTTON3Plots...!用于顯示分析分析曲線NAME=plots!顯示ADAMS/PostProcessor界面CMD=interfaceplotwindowopen!關閉ADAMS/View界面CMD=interfacewindowundisplaywindow=.!設置默認曲線線寬為1CMD=defaultsplottingcurve_thickness=1…!如果對萬向節(jié)進行了靜力學分析,則激活相應后處理菜單項CMD=ifcond&=(db_exists(\"\"))CMD=interfacemenumodifymenu_name&=.&enabled=yesCMD=end!如果對萬向節(jié)進行了動力學分析,則激活相應后處理菜單項CMD=ifcond&=(db_exists(\"\"))CMD=interfacemenumodifymenu_name&=.enabled=yesCMD=end!如果對萬向節(jié)進行了靜態(tài)間隙分析,則激活相應后處理菜單項CMD=ifcond=(db_exists(\"\"))CMD=interfacepush_buttonmodifypush_button_name&=.&enabled=yesCMD=end…SEPARATOR2BUTTON2ModelRead...NAME=model_readHELP=ReadexistingmodelfrommodeldatabaseCMD=interfacedialogdisplaydialog=.BUTTON2ModelWrite...NAME=model_writeHELP=WritemodelinmodeldatabaseCMD=interfacedialogdisplaydialog=.分析曲線后處理用戶菜單是在ADAMS/PostProcessor界面菜單條上插入的WX-CVJoint用戶菜單項及其相應下拉菜單。分析曲線后處理用戶菜單如圖11-14所示:圖11-14分析曲線后處理用戶菜單上述用戶菜單的定制是通過讀取CVJ文件夾下的menus文件夾里的文件來實現的,文件的內容是在ADAMS/PostProcessor的原始菜單文件中加入如下程序段:MENU1WX-CVJointNAME=wx_cvjointBUTTON2Createplots...NAME=create_new_plotsSEPARATOR2BUTTON2PlotForLash...NAME=plot_for_lashCMD=ifcond=(db_exists(\".\"))CMD=interfacedialogdisplaydialog=.CMD=endCMD=ifcond=(db_exists(\".\"))CMD=interfacedialogdisplaydialog=.CMD=endMENU2PlotForStat_Dyn!與動力學分析相關的各菜單項NAME=plot_for_stat_dynBUTTON3Displacement...!顯示構件位移的各菜單項NAME=plot_for_displacementCMD=ifcond=(db_exists(\".\"))CMD=interfacedialogdisplaydialog=.CMD=endCMD=ifcond=(db_exists(\".\"))CMD=interfacedialogdisplaydialog=.CMD=endBUTTON3Force...!顯示構件受力的各菜單項NAME=plot_for_forceCMD=ifcond=(db_exists(\".\"))CMD=interfacedialogdisplaydialog=.CMD=endCMD=ifcond=(db_exists(\".\"))CMD=interfacedialogdisplaydialog=.CMD=end!其它曲線項目的菜單項(省略)…SEPARATOR2BUTTON2ResultManagerNAME=result_managerCMD=interfacedialogdisplaydialog=.在圖11-12到圖11-14中,許多菜單項處于未被激活狀態(tài),這是因為程序所需,如果菜單在不適當的時候處于激活狀態(tài),則可能由于錯誤地點擊了某個菜單命令而使程序出錯。因此,本例在對用戶菜單初始化時,強制性使一些菜單處于未被激活狀態(tài),這一功能的實現是通過調用CVJ文件夾下的menus文件夾里的文件來完成的。文件的內容如下:interfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name=&.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacepush_buttonmodifypush_button_name&=.&enabled=nointerfacemenumodifymenu&=.&enabled=no對話框文件和命令文件在建模(前處理)中的應用上一節(jié)介紹了菜單文件在構建整個二次開發(fā)模塊程序流程框架中的應用,從本節(jié)開始,將陸續(xù)介紹對話框文件和ADAMS命令文件在具體建模、分析和結果曲線后處理方面的應用。本節(jié)先介紹以上文件在建模中的應用。為了便于敘述,特將本例萬向節(jié)的建模過程如圖11-15:圖11-15萬向節(jié)的建模過程1.對話框文件在萬向節(jié)選型時的應用當軟件剛啟動時,見上一節(jié)的圖11-12所示,ADAMS/View主界面用戶菜單WX-CVJoint下的菜單項中的建模部分,菜單項GeneralConfiguration是唯一被激活的項,在相應的菜單文件中,其對應的菜單命令是:CMD=interfacedialog_boxdisplaydialog_box=.此命令的作用是調用萬向節(jié)選型對話框.。對話框.見圖11-16所示:圖11-16對話框.此對話框的作用是用來選擇是建立ACJoint型萬向節(jié)的模型還是建立GIJoint型萬向節(jié),如果是對ACJoint型萬向節(jié)進行模型,則繼續(xù)對進一步細節(jié)進行設定。此對話框可以用ADAMS的對話框編輯器來建立,具體建立過程可以參見第12章的相關內容,這里不再贅述,本節(jié)只介紹一些技巧性的細節(jié)。對話框是人機交互的重要形式,因此建立對話框后的首要任務是建立對話框可編輯控件和程序變量之間的關系。為此,須在對話框的execution_commands中加入如下命令:execution_commands=!創(chuàng)建變量.從下拉列表框中讀取萬向節(jié)類型"`varsetvar=.string=\"$f_type\"`",&!創(chuàng)建變量.從編輯框f_or_track中讀取數據"`varsetvar=.string=\"$f_or_track\"`",&!創(chuàng)建變量.從編輯框f_ir_track中讀取數據"`varsetvar=.string=\"$f_ir_track\"`",&!創(chuàng)建變量.從編輯框f_bn中讀取數據"`varsetvar=.integer=$f_bn`"&由于本對話框是用來對萬向節(jié)進行選型的,它確定了建模的最基本參數,因此,一旦選型完成,該對話框的各個可編輯控件必須失效,如圖11-17所示,否則可能在建模過程中出現選型參數的改變,從而造成程序的混亂。圖11-17對話框.的各可編輯控件失效狀態(tài)同時,該對話框還必須具有根據不同的萬向節(jié)選型,激活不同的建模菜單項的功能。如圖11-18所示,當選型為ACJoint時,激活ACBellShell菜單項;當選型為GIJoint時,激活GIBellShell菜單項。圖11-18根據不同的萬向節(jié)選型,對話框.激活不同的菜單項要實現上述功能,則需要在對話框.相應的對話框文件中的“確定”按鈕命令中加入如下代碼:commands=!以下命令使對話框自身被隱藏"interfacedialogexecutedialog=$_parentundisplay=yes",&!如果選型為ACJoint型萬向節(jié),則激活菜單ac_bell_shell"ifcon=((.==\"ACJoint\")",&"interfacepush_buttonmodify&",&"push_button_name=&",&“.&",&"enabled=yes",&!使對話框各可編輯控件失效"interfacefieldmodifyfield_name=.enabled=no",&"interfacefieldmodifyfield_name=.enabled=no",&"interfaceoption_menumodifyoption_menu_name&”,&“=.enabled=no",&"interfaceoption_menumodifyoption_menu_name&”,&“=.enabled=no",&"interfaceoption_menumodifyoption_menu_name&”,&“=.enabled=no",&"else",&!如果選型為GIJoint型萬向節(jié),則激活菜單gi_bell_shell"ifcon=((.==\"ACJoint\")",&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論