Patran二次開發(fā)步驟.doc
1. *在Patran下掛下拉菜單*通常我們不修改init.pcl文件,啟動init.pcl時而會執(zhí)行附帶的啟動文件p3prolog.pcl和p3epilog.pcl。如果這些文件存在,就會在init.pcl啟動前后裝載p3prolog.pcl(啟動前)和p3epilog.pcl(啟動后),所以這兩個文件是我們插入自定義命令的好地方。!PATH !LIBRARY !INPUT 在Patran安裝目錄下修改p3prolog.pcl,加入如下命令,例如:!input mymenu.pcl#裝載菜單文件ui_exec_function("mymenu","init") #當且僅初始化一次!input plateform.pcl #裝載對話框文件2. * 下拉菜單程序編寫*CLASS exerciseFUNCTION init() /*初始化菜單*/WIDGET menubar,menu,item1,item2,item3/*定義控件變量*/menu = uil_primary.get_menubar_id()/*獲取主菜單ID*/menubar=ui_menu_create(menu,"exercise_menu","有限元分析")/*添加菜單*/item1=ui_item_create(menubar,"ex_1","計算",FALSE)/*添加子菜單*/item2=ui_item_create(menubar,"ex_2","導入文件",FALSE)/*添加子菜單*/item3=ui_item_create(menubar,"ex_3","結束",FALSE)/*添加子菜單*/END FUNCTIONFUNCTION exercise_menu(item_name) /*菜單各項的響應函數(shù)*/STRING item_nameSWITCH(item_name) CASE("EX_1")write("Plate with a hole creating function")ui_exec_function("plateform","init")plateform.display() CASE("EX_2")write("cross pipes creating function") CASE("EX_3")write("slot modeling function")END SWITCHEND FUNCTIONEND CLASS3. *彈出對話框程序編寫*#include "appforms.p"CLASS plateForm/*定義控件變量*/ CLASSWIDE WIDGET form_id,dataBox1,dataBox2,dataBox3, apply_button,cancel_button,delete_button/*初始化對話框,必要的函數(shù)*/ FUNCTION init()real x_loc,y_loc/*創(chuàng)建對話框窗體ui_form_create(callback,x,y,position,width,height,label,unused)*/form_id=ui_form_create("",FORM_X_LOC,FORM_Y_LOC,"UL",FORM_WID_SML,FORM_HGT_FULL,"PLATE WITH A HOLE","")/*創(chuàng)建圖標*/x_loc=FRAME_WID_SINGLE/2.-200*PIXEL_WID/2.+FORM_L_MARGINy_loc=FRAME_T_MARGIN+INTER_WIDGET_SPACE/* ui_labelicon_create(parent,callback,x,y,label)*/ui_labelicon_create(form_id,"",x_loc,y_loc,"platehole.icon")y_loc+=200.*PIXEL_HGT+DBOX_HGT_NO_LABOVE+INTER_WIDGET_SPACE/*創(chuàng)建輸入文本框ui_databox_create(parent,callback,x,y,label_length,box_length,width,height,label,value,label_above,datatype,num_vars)*/dataBox1=ui_databox_create(form_id,"",FRAME_L_MARGIN,y_loc,SINGLE_SPACE*5.0,DBOX_WID_SINGLE*0.6,"r=",2.,FALSE,"REAL",1)y_loc+=DBOX_HGT_NO_LABOVE+INTER_WIDGET_SPACEdataBox2=ui_databox_create(form_id,"",FRAME_L_MARGIN,y_loc,SINGLE_SPACE*5.0,DBOX_WID_SINGLE*0.6,"w=",5.,FALSE,"REAL",1)y_loc+=DBOX_HGT_NO_LABOVE+INTER_WIDGET_SPACEdataBox3=ui_databox_create(form_id,"",FRAME_L_MARGIN,y_loc,SINGLE_SPACE*5.0,DBOX_WID_SINGLE*0.6,"h=",5.,FALSE,"REAL",1)y_loc+=DBOX_HGT_NO_LABOVE+INTER_WIDGET_SPACE*2/*創(chuàng)建“應用”按鈕ui_button_create(parent, callback, x, y, width, height, label, unused, highlight)*/apply_button=ui_button_create(form_id,"apply_cb",BUTTON_HALF_X_LOC1,y_loc,BUTTON_WID_HALF,0,"應用",TRUE,TRUE)/*創(chuàng)建“取消”按鈕*/cancel_button=ui_button_create(form_id,"cancel_cb",BUTTON_HALF_X_LOC2,y_loc,BUTTON_WID_HALF,0,"取消",TRUE,FALSE)y_loc+=DBOX_HGT_NO_LABOVE+INTER_WIDGET_SPACE/*創(chuàng)建“刪除”按鈕*/delete_button=ui_button_create(form_id,"delete_cb",BUTTON_HALF_X_LOC1,y_loc,BUTTON_WID_HALF,0,"Delete",TRUE,FALSE)y_loc+=BUTTON_DEFAULT_HGT+FORM_B_MARGIN+INTER_WIDGET_SPACEui_wid_set(form_id,"HEIGHT",y_loc) END FUNCTION/*窗體顯示,必要的函數(shù)*/ FUNCTION display()ui_form_display("plateForm") END FUNCTION/*“應用”按鈕響應處理函數(shù)*/FUNCTION apply_cb() real r,w,h ui_wid_get(databox1,"VALUE",r) ui_wid_get(databox2,"VALUE",w) ui_wid_get(databox3,"VALUE",h) ui_form_hide("plateform") ui_writec("r =%f,w=%f,h=%f",r,w,h) END FUNCTION FUNCTION cancel_cb()ui_form_hide("plateform") END FUNCTION FUNCTION delete_cb() ui_form_delete("plateform") END FUNCTIONEND CLASS4. C文件編譯處理例如:d:mscpatran2001r2bincpp -id:/msc/patran2001r2/customization c:/uillist.pcl c:/uillist.cpp5. 編程格式介紹轉行繼續(xù)符:分號分隔符:同C+:“;”注釋多行:/*/注釋單行:“”或者“$”計算表達式說明:用“”(數(shù)字1鍵左邊的那個鍵)例如:Angle:360/5,或者用WRITE(10+20)變量和常量Integer(整型),Real(實數(shù)),Logical(TRUE和FALSE),String,Widget(控件,有個常量WIDGET_NULL)變量的生命周期Global 全局Local 在函數(shù)內(nèi),本地Static 靜態(tài),patran退出就消失ClassWide 對一組函數(shù)可見,patran退出就消失6. 指令文件管理! input file.pcl #編譯連接file.pcl,并將函數(shù)調入patran!compile file.pcl into xxx.plb #編譯file.pcl,并存入plb庫中!library xxx.plb #將plb文件調入patran!path Directory #指定打開文件的目錄!Trace option pcl #執(zhí)行確認!Debug option #保存注釋!options option #pcl環(huán)境設置!size code newsize #為編譯代碼區(qū)設置大小!clear global name #刪除全局變量定義!clear function name #刪除函數(shù)定義