ADAMS二次開發(fā).doc
《ADAMS二次開發(fā).doc》由會員分享,可在線閱讀,更多相關(guān)《ADAMS二次開發(fā).doc(6頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
ADAMS二次開發(fā)的筆記 一、定制用戶界面 1、首先要知道,再ADAMS/VIEW中,所有的界面對象都是以“層次結(jié)構(gòu)”出現(xiàn)的,并且保存在特定的模型數(shù)據(jù)庫中,在用戶制定自己的用戶界面的時(shí)候,最好將界面對象 保存在一個(gè)你自己的數(shù)據(jù)庫中,創(chuàng)建數(shù)據(jù)庫的方法是:在command navigator—library—create. 如果不建立自己的數(shù)據(jù)庫,則所有的界面對象都默認(rèn)的 保存在GUI數(shù)據(jù)庫下。 2、要正確理解“窗口”“對話框”的概念,他們是不同的一個(gè)概念。 3、我們這里講的制定用戶界面,是指制作自己的菜單和對話框,通常使用菜單編輯器和對話框編輯器來完成。 4、制定自己的菜單,你要明確的是:你在制定自己的菜單的時(shí)候,菜單上出現(xiàn)的button的先后順序以及menu的先后順序是與你寫菜單命令的先后順序一致的。即:是以大綱形式來表示 二、菜單語法的解釋: 1、菜單對象:菜單、按鈕(圖表按鈕、toggle button)分割線(separator)分別用關(guān)鍵詞:menu \button\toggle\separator.定義 例子: MENU1 &my_menu2003 NAME=my_menu2003 HELP=A Menu Test BUTTON2 &My_button1 NAME=my_button_1 HELP=test of my_button_1 CMD=Adams Command of my_button_1 Separator2 BUTTON 2 &My_button2 NAME=my_button_1 HELP=test of my_button_1 CMD=Adams Command of my_button_1 Separator2 MENU2 &son menu_1 BUTTON3 &Son Button_1 NAME=Son_Button_1 CMD=Adams Command of Son Button_1 BUTTON3 &Son Button_2 NAME=Son_Button_2 CMD=Adams Command of Son Button_2 在編寫這些命令的時(shí)候要注意 MENU BUTTON SEPARATOR TOGGLE這些關(guān)鍵字要大寫, 另外在MENUn其中的n與MENU中間不允許有空格。 所制定的菜單按鈕,都會執(zhí)行某些命令,而這些命令是靠CMD=來確定的。如果沒有命令,則這個(gè)按鈕就不會執(zhí)行命令。 2、制定對話框 1)首先你要確定在adams對話框中可以創(chuàng)建的界面對象包括那些,一共16種,不含默認(rèn)的話有12種。 2)創(chuàng)造對話框的方法:可以利用對話框編輯器(tools—dialog box—create) 3)之后,可以在新創(chuàng)建的對話框添加各種不同的界面對象,進(jìn)行設(shè)計(jì)布局,外觀、對話框?qū)ο蟮拇笮≌{(diào)整以及需要執(zhí)行的命令的錄入。只有輸入命令,才可以點(diǎn)擊對話框中的相應(yīng)的按鈕來執(zhí)行對應(yīng)的操作。(這是在先創(chuàng)建對話框的條件下需要這樣操作,如果是先創(chuàng)建一個(gè)macro之后通過修改macro的對話框就不要這樣了) 4)下面對利用“dialog box”來創(chuàng)建的對話框中包含的界面對象進(jìn)行一個(gè)簡要地介紹: Label---在對話框中可以顯示文字或試圖像(但要注意圖像的格式) Field---作用是在創(chuàng)建完對話框之后,希望操作者在其中輸入的文字或是數(shù)值。 Button---激活操作;并且可以在按鈕上面書寫文字或是添加圖像。 Toggle button---開關(guān)按鈕(也可以理解成是:勾選按鈕) Separator---畫一個(gè)水平線 Slider---滑動條 Option menu---從多個(gè)選項(xiàng)中選擇一個(gè) Button stack---包含多個(gè)按鈕,可以通過右鍵彈出所有按鈕。 Radio box---狀態(tài)按鈕 Container---可添加信息。 5)在對話框中使用command 當(dāng)你創(chuàng)建完一個(gè)對話框的時(shí)候,大多數(shù)的界面對象都對應(yīng)著一個(gè)adms/view命令,這些命令是為了完成用戶所希望的一些功能(或改變模型、或改變用戶輸入數(shù)據(jù)、或作出選擇) 為了使對話框中的某些界面對象與adams/view中的命令相對應(yīng),我們可以用兩種方法來得到:可以用cmd給對象創(chuàng)建命令;可以通過命令導(dǎo)向來找到所需要的命令,一旦找到這個(gè)命令你就可以在log 或是命令窗口中將他們拷貝到命令編輯框。 ?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。? Adams/view的對話框在執(zhí)行命令前,是要進(jìn)行一些“文本”的替代操作。此處的文本指的是:我們在創(chuàng)建對話框的時(shí)候所添加的文本。而在執(zhí)行命令的時(shí)候,adams/view用界面對象的自身屬性值來替代“文本”,并形成一個(gè)含有對話框自身屬性(不含有文本)的命令。其實(shí),可以簡單的理解成,用我們輸入的文本去替換那些相應(yīng)的對象來執(zhí)行命令。 保存對話框:在用戶制定好自己的對話框之后,必須要保存對話框。點(diǎn)擊—dialog box—export—command file.方便下次調(diào)用。 打開一個(gè)自己定義的對話框:tools—dialog box—dispay. Or adams/view—file—import—command file. 宏命令的使用: 1、 要理解macro命令本質(zhì)也是一個(gè)命令(集)。 2、 創(chuàng)建macro的時(shí)候,首先要按“順序”列出想要執(zhí)行得adams/view命令的清單(這一點(diǎn)與創(chuàng)建菜單類似),然后按著這個(gè)順序?qū)⒚顚懗蒻acro的形式。 3、 創(chuàng)建macro的時(shí)候,macro中也可以帶有參數(shù)的——參數(shù)macro。所以,每次使用macro command的時(shí)候,都可以人為的輸入?yún)?shù)進(jìn)而將數(shù)據(jù)傳遞給macro。 4、 Macro command 和其他adams/view命令一樣,可以在命令窗口中輸入(F3)也可以通過命令導(dǎo)航選擇。(注:所有的命令都可以有命令窗口輸入或是從命令導(dǎo)航中選擇) 重點(diǎn)講解利用macro edit來創(chuàng)建macro: 在宏編輯器中的command編輯框中, 輸入的是一后執(zhí)行該macro的一個(gè)命令標(biāo)識,如果使用macro的名字為命令標(biāo)示,則需要選擇User Macro Name這個(gè)選項(xiàng)。要注意的是,命令標(biāo)示必須是唯一的,數(shù)據(jù)庫中沒有的表示。 宏命令中的參數(shù): 1、 是以$開頭,后面這個(gè)參數(shù)的名字,可以定義多個(gè)參數(shù),也可以將一個(gè)參數(shù)定義多次。 2、 在執(zhí)行macro command的時(shí)候,首先在macro 參數(shù)出現(xiàn)的地方用,參數(shù)值去替代,然后執(zhí)行命令。 3、 例子:用macro來改變力的大小的圖標(biāo),而要改變力的大小的數(shù)值,需要定義變量。 Constraint attributes constraint_name=___ .*size_of_icon=$size Force attributes force_name=___ .*size_of_icon=$size 以上是改變力的圖標(biāo)的大小的macro command下面介紹一個(gè)改變力的大小的macro command。 首先:你要用一個(gè)設(shè)計(jì)變量來表示力的大小 DV_1 !$size:t=real Variable modify variable_name=___ real_value=$size 擴(kuò)展參數(shù)值: 1、 何為擴(kuò)展參數(shù)值? 2、 參數(shù)限定詞及其格式: 1) 限定詞只能出現(xiàn)在“macro參數(shù)第一次出現(xiàn)的地方”。是對參數(shù)的屬性進(jìn)行控制的。 2) 參數(shù)的限定詞包括:type range count default。其中type是用戶必須輸入的 type包含: basic type \database object type\database object class type\ 其中:basic type中 real\integer\location\orientation\string\function\list(str1,str2,…)\file(path wildacard) Database object type:用戶所輸入的必須是數(shù)據(jù)庫已經(jīng)存在的該類型對象的名字,而數(shù)據(jù)庫中該類型對象的名字如果沒有存在,則必須用new_ 來表示。 注:一個(gè)宏參數(shù)如果他沒有限定詞qualifier,也沒有出現(xiàn)在命令行=后,則她的缺省值默認(rèn)為“字符”,當(dāng)沒有限定詞但是出現(xiàn)在=后,則該參數(shù)的類型與前面命令參數(shù)的類型相同。 循環(huán)命令和條件循環(huán): 當(dāng)for--end循環(huán)語句,使表示對象的時(shí)候,要注意:此時(shí)的循環(huán)變量值的是 boject中所有的type類型的對象,也就是說object中類型位type的對象作為循環(huán)語句的變量。他和for--end表示數(shù)值循環(huán)是不同的。 二次開發(fā)實(shí)例 1、二次開發(fā)通常需要三種程序文件:菜單文件、對話框文件、adams命令文件,并且除了這三個(gè)文件以外還需要一個(gè)模塊的啟動文件和一個(gè)adams環(huán)境的初始化文件。 (如何將菜單與用macro命令對話框有機(jī)的聯(lián)系起來) MENU1 &location BUTTON2 &LOCATION CMD=interface dialog_box display dialog_box=MACRO_1 因?yàn)槟阋唤⒁粋€(gè)macro后,就會自動生成一個(gè)對話框,所以,你只要做的事情只有一個(gè):就是用菜單來顯示這個(gè)對話框就可以了。 設(shè)定二次開發(fā)模塊的運(yùn)行路徑,啟動adams/view,并調(diào)用cvmain.com文件對adams環(huán)境進(jìn)行二次開發(fā)相關(guān)的初始化。 Set MDI_VCJ=d:\cvj-----------------------!設(shè)定二次開發(fā)模塊的運(yùn)行路徑(在d盤的cvj文件夾下) Set MDI_CMD=mdi------------------------!啟動adams/view cd %MDI_CVJ% copy cvmain.cmd aview.cmd-------------!調(diào)用cvmain.cmd文件 del aview.cmd 通過以上代碼寫成的命令cv_strat.bat的作用是:通過運(yùn)行該文件來啟動本二次開發(fā)的模塊。 對adams/view進(jìn)行初始化的命令 cvmain.cmd的代碼: If cond=(!db_exists(“.MDI.cvj_dir”)) Variable create variable_name=.MDI.cvj_dir string_name=(eval(“d:”//”\\”//”cvj”)) Defaults units length=mm angle=deg force=newton mass=kg time=sec Default units coordinate_type=cartesian orientation_type=body313 Macro read file_name=(eval((.MDI.cvj_dir)//”\\”//”macros”//”\\”mygibell”))& Macro=mygibell Macro read file_name=(eval((.MDI.cvj_dir)//”\\”//”macros”//”\\”tripodemac”))& Macro=tripodemac Macro read file_name=(eval((.MDI.cvj_dir)//”\\”//”macros”//”\\”ballloopmac”))& Macro=ballloopmac … Macro read file_name=(eval((.MDI.cvj_dir)//”\\”//”macros”//”\\”//”gelash”))& Macro=gilash Macro read file_name=(eval((.MDI.cvj_dir)//”\\”//”macros”//”\\”//”didyn”))& Macro=gidyn … Macro read file_name=(eval((.MDI.cvj_dir)//”\\”//”macros”//”\\”//”gireqlash”))& Macro=gireqlash Macro read file_name=(eval((.MDI.cvj_dir)//”\\”//”macros”//”\\”//”gireqcust”))& Macro=gireqcust … 讀入菜單命令:interface menbar… 讀入對話框的命令:file (command) read file_name… 思考:讀入的命令如何與讀入的對話框聯(lián)系起來。 要注意default里面有哪些常用的命令可以用,并且還要與一些其他相似的命令進(jìn)行對比分析 ,分析出有哪些差異以及各自用在什么環(huán)境下。 還有一點(diǎn)需要注意的是:在第11章的事例中,前面已經(jīng)定義了缺省單位和缺省坐標(biāo)系為什么還要在第29頁建立模型的時(shí)候還要設(shè)置單位和坐標(biāo)系? 這里需要指出的是,前面的缺省單位和坐標(biāo)系相當(dāng)于我們在打開adams/view時(shí),如果不進(jìn)行任何操作系統(tǒng)默認(rèn)的單位和坐標(biāo)系,而后面的是相當(dāng)于我們在進(jìn)行建模的時(shí)候,建模的基準(zhǔn)參考坐標(biāo)系,而在這里只需要定義建模的缺省坐標(biāo)系而不需要定義單位。 制定菜單的時(shí)候:要注意順序 先建立菜單(主菜單、下拉菜單)然后再建立與這個(gè)下拉菜單對應(yīng)的按鈕,之后再建立在主菜單下的另一個(gè)下拉菜單,并建立與該下拉菜單對應(yīng)的按鈕,要注意這個(gè)順序,不要一開始把所有下拉菜單建立完之后然后再建立按鈕。換句話說,對應(yīng)的按鈕應(yīng)該在對應(yīng)的下拉菜單下建立,而不能把順序搞錯(cuò)。另外一個(gè)需要注意的是:你在建立下拉菜單和對應(yīng)的按鈕的時(shí)候,出現(xiàn)在界面上的順序是與你寫的命令的順序是一致的。 在制定菜單或是按鈕的時(shí)候,當(dāng)需要輸入該按鈕所要執(zhí)行的命令的時(shí)候,要CMD大寫,如果命令十多行的,在每一行前面都得又CMD。 下面具體介紹用對話框和adams command來進(jìn)行建模的方法: 等速萬向節(jié)動力學(xué)模型的建立,是該系統(tǒng)的技術(shù)關(guān)鍵之一。在進(jìn)行建模的時(shí)候,為了保證仿真分析的真實(shí)性,萬向節(jié)的動力學(xué)模型的各構(gòu)建之間的相互約束沒有被定義成理想的幾何約束關(guān)系,而是被定義為基于接觸碰撞的力約束關(guān)系,即構(gòu)件之間通過接觸碰撞力和摩擦力相互約束,而不存在其它的相互關(guān)系。 問題:在對話框中出現(xiàn)了,下拉按鈕或是多選、單選按鈕的時(shí)候,如何與宏命令的參數(shù)相聯(lián)系起來? 當(dāng)一個(gè)對話框建立完成之后,如何將對話框的可編輯的控件與程序變量聯(lián)系起來。 我們可以在對話框的execution中,編輯命令來使選項(xiàng)按鈕所對應(yīng)的值來與變量對應(yīng)起來,option button他有一個(gè)默認(rèn)的變量名位$option_i(i是按鈕的序號) 在編輯macro命令的時(shí)候,我們可以在command區(qū)域中,右擊---references可以選擇一些可以替換對象的文本$xxx.所謂替換對象的文本可以理解稱: 用$xxx所可以取的值去替換$xxx。 在adams/view中,所有的界面對象多是默認(rèn)存儲在.gui庫中。 建議:當(dāng)用戶進(jìn)行一個(gè)二次開發(fā)或者是制定自己的界面的時(shí)候,我們最好是建立一個(gè)屬于自己的數(shù)據(jù)庫來存放新的界面對象。 注意;在macro編輯對話框中書寫的command當(dāng)在修改宏的對話框的時(shí)候,可以看到 此時(shí)在宏對話框修改得command區(qū)域 命令的書寫會有些不同。最明顯的就是 宏參數(shù)的書寫。 替換文本的理解: 1)替換文本的作用是:在執(zhí)行命令的時(shí)候,以$為標(biāo)示的替換文本 只是起到指明位置的作用。 在真正執(zhí)行命令的時(shí)候,替換文本竟會被替換,也就是說用于替換文本相對應(yīng)的具體的“值”來替代替換文本。 2)替換文本的類型: $object_name-----表示的是界面對象的當(dāng)前值,也可以理解成是用于當(dāng)前界面對象所對應(yīng)的替換文本的屬性值來替換該文本。 Field----當(dāng)前的數(shù)據(jù)區(qū)內(nèi)的內(nèi)容 Option—menu -----當(dāng)前選定的數(shù)據(jù)或數(shù)值 Radio—box------當(dāng)前選定的數(shù)值或數(shù)據(jù) Toggle buuton-----當(dāng)簽訂一個(gè)開關(guān)值 Slider----當(dāng)前的滑動的整數(shù)值 在option menu和radio box的數(shù)值框中可用“|”來定義多個(gè)選項(xiàng)值。 注意:當(dāng)我要返回一個(gè)表達(dá)式的值或是數(shù)據(jù)的時(shí)候要用到eval( ) 簡單的用表達(dá)式來賦值一般是不允許的。variable modify variable_name=.model.DV_P1_x real_value=(eval(DV_P1_x+2)) 但是如果純粹是數(shù)學(xué)表達(dá)是倒是可以的。 像這個(gè)例子variable modify variable_name=.model.DV_P1_x real_value=(DV_P1_x+2) 效果相當(dāng)。 問題:在寫命令的時(shí)候有的時(shí)候會用到set 這個(gè)的具體的功能和用法!! 在adams/macro命令中,創(chuàng)建的對話框中的對象每一個(gè)對象都有一個(gè)對應(yīng)的替換文本($xxx),我們要理解的就是 這些替換文本是如何參與到我們的命令程序中的,是如何與參數(shù)結(jié)合在一起的。其中界面對象field在編輯狀態(tài)的時(shí)候,它是可以在文本框中輸入數(shù)據(jù)的,而非編輯狀態(tài)的時(shí)候他只能顯示數(shù)據(jù)(通過特定的命令執(zhí)行),還有一點(diǎn)的就是 界面對象數(shù)據(jù)在默認(rèn)的狀態(tài)是:string.例如field. 這個(gè)里面需要注意的是:在利用界面區(qū)域這個(gè)對話框?qū)ο蟮臅r(shí)候要注意 建立各個(gè)界面對象的時(shí)候,你要十分清楚你所建立的界面對象是屬于哪個(gè)層次的,不要建錯(cuò)在其他的層次,具體的是你要確定是要建立在對話框?qū)哟芜€是在界面對象區(qū)域?qū)哟?。此外還要注意在用到 option-menu?。铮颉。颍幔洌椋铮猓铮臅r(shí)候多用到if-elseif-else-end條件語句。此外還要注意:"elseif"不要分家。- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- ADAMS 二次開發(fā)
鏈接地址:http://m.jqnhouse.com/p-6594574.html