VisualLisp 主程序結(jié)構(gòu)分析_第1頁
VisualLisp 主程序結(jié)構(gòu)分析_第2頁
VisualLisp 主程序結(jié)構(gòu)分析_第3頁
VisualLisp 主程序結(jié)構(gòu)分析_第4頁
VisualLisp 主程序結(jié)構(gòu)分析_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Visual Lisp 主程序結(jié)構(gòu)分析華南理工大學(xué)化學(xué)與化工學(xué)院2016年LGFANGSCUT.EDU.CN方利國開發(fā)的圖形對話框?qū)υ捒虺绦騤xfl:dialog /創(chuàng)建新窗體,代號為jxfl label=甲型法蘭; /窗體名稱:row /全局橫向排列 :boxed_column /框中列,既縱向邊框為全局大行中的第一列 label=法蘭參數(shù); /邊框名稱 :edit_box /編輯框,以下所有的編輯框為全局大行中的第一列中的框中列元素 label=法蘭直徑DN:; /編輯框名稱 key=dn; /編輯框key值 edit_limit=15; /字符數(shù)限定 edit_width=10; /編輯

2、框?qū)挾?value=1000; /缺省值 :edit_box label=D3:; key=db; edit_limit=15; edit_width=10; value=1055; :edit_box label=螺孔心距D1:; key=da; edit_limit=15; edit_width=10; value=1090; :edit_box label=法蘭兩端距離D:; key=ddd; edit_limit=15; edit_width=10; value=1130; :edit_box label=法蘭厚度b:; key=bbb; edit_limit=15; edit_wid

3、th=10; value=48; :edit_box label=螺孔直徑DL:; key=dl; edit_limit=15; edit_width=10; value=23;:edit_box label=h:; key=hhh; edit_limit=15; edit_width=10; value=13;:edit_box label=h1:; key=ha; edit_limit=15; edit_width=10; value=3;:edit_box label=凸臺高度h2:; key=hb; edit_limit=15; edit_width=10; value=3;:edit

4、_box label=倒角1:; key=ja; edit_limit=15; edit_width=10; value=45;:edit_box label=倒角2:; key=jb; edit_limit=15; edit_width=10; value=60;:edit_box label=倒角3:; key=jc; edit_limit=15; edit_width=10; value=30; :column /縱向排列,為全局大行中的第二列 :boxed_column /框中列,為全局大行第二列中的第一個元素 label=繪制法蘭位置(左下角點); :edit_box /為框中列中的

5、各元素。 label=橫坐標(biāo):; key=xxx; edit_limit=15; edit_width=10; value=100; :edit_box label=縱坐標(biāo):; key=yyy; edit_limit=15; edit_width=10; value=100; :boxed_column 框中列,為全局大行第二列中的第二個元素 label=各參數(shù)位置示意圖; :image key=jxfl_image; aspect_ratio=0.75; width=50; color=-2;ok_only; /確定按鈕主程序的組成1、全局調(diào)用程序2、窗體處理子程序3、數(shù)據(jù)讀入子程序、數(shù)據(jù)讀

6、入子程序4、圖形繪制子程序1、全局調(diào)用程序源程序:(defun c:jxflhz();定義命令 (setq dcl_id(load_dialog jxfl.dcl);加載窗體 (if ( dcl_id 0) (exit) ) (if (not (new_dialog jxfl dcl_id) (exit) (image1 “jxfl_image” “jxflsl”);定義圖形函數(shù),“jxfl_image”在dcl文件中 (action_tile accept (data_set) (start_dialog) (unload_dialog dcl_id) (draw_jxfl);執(zhí)行繪圖程序)

7、全局程序解釋(defun c:jxflhz();定義全局程序名稱為jxflhz /以下語句用于窗體調(diào)用和程序處理(setq dcl_id(load_dialog jxfl.dcl) /其中l(wèi)oad_dialog表示加載窗體,jxfl.dcl為窗體文件,獲取加載窗體文件的句柄,用于下面的判斷。 (if ( dcl_id 0) (exit) ) (if (not (new_dialog jxfl dcl_id) (exit) /以上兩句為判斷窗體文件是否存在,若不存在即退出。 (image1 jxfl_image jxflsl) /定義圖形函數(shù),其中jxfl_image為前面圖象控件中的Key值,

8、jxflsl為幻燈片名稱,在程序調(diào)用中用到,并已在相同目錄下存盤。 (action_tile accept (data_set)/當(dāng)按下確定鍵時,執(zhí)行數(shù)據(jù)處理子程序data_set,將該子程序直接添加到本主程序后面,減少調(diào)用麻煩。 (start_dialog) /加載窗體,對話框中開始輸入數(shù)據(jù) (unload_dialog dcl_id) /卸載窗體 (draw_jxfl) /執(zhí)行繪圖子程序,將前面調(diào)通的子程序直接添加到本主程序后面)2、窗體處理子程序/以下語句是對圖像框的處理子程序(defun image1(key image_name / x x);/加載圖形,其中key為前面圖象控件中的

9、Key值,所調(diào)用的image_name為前面幻燈片名稱,這里是形參,無需具體名稱。 (start_image key) /開始圖像 (setq x (dimx_tile key) /獲取圖形控件寬度 y (dimy_tile key) /獲取圖形控件長度 ) (fill_image 0 0 x y 250) /圖向從(0,0)點開始,到(x,y)結(jié)束,以250號顏色即黑色為背景填充圖形控件 (slide_image 0 0 x y image_name) /加載圖形,為完全布滿 (end_image) /結(jié)束圖象 )添加數(shù)據(jù)處理及繪圖子程序和前面主程序合并成一個程序文件,取名為jxflhz.l

10、sp保存在以下目錄: AutoCAD 2008Support3、數(shù)據(jù)讀入子程序、數(shù)據(jù)讀入子程序(defun data_set() /數(shù)據(jù)從窗體傳入和處理,程序取名為data_set(setq dn (atof (get_tile dn) /從窗體獲取數(shù)據(jù)實現(xiàn)交互,其中g(shù)et_tile為獲取窗體中 (setq db (atof (get_tile db) /控件關(guān)鍵字Key為dn當(dāng)前值,atof是將字符串轉(zhuǎn)化為 (setq da (atof (get_tile da) /數(shù)值的函數(shù),通過setq將數(shù)值賦值給dn,其它語句道 (setq d (atof (get_tile ddd) /理相同/ (

11、setq b (atof (get_tile bbb) (setq dl (atof (get_tile dl) (setq h (atof (get_tile hhh) (setq ha (atof (get_tile ha) (setq hb (atof (get_tile hb) (setq ja (atof (get_tile ja) (setq jb (atof (get_tile jb) (setq jc (atof (get_tile jc) (setq x (atof (get_tile xxx) (setq y (atof (get_tile yyy) (setq fa (*

12、 pi (/ ja 180) /角度和弧度的轉(zhuǎn)換 (setq fb (* pi (/ jb 180) (setq fc (* pi (/ jc 180)標(biāo)注點坐標(biāo)設(shè)置(setq bz1 (list (- x 10) y);定義點為標(biāo)注尺寸用 (setq bz2 (list (+ x (/ (- d dn) 2) 10) (+ y h) (setq bz3 (list (+ x (/ (- d da) 2) da) (+ y (- b hb) 20) (setq bz4 (list (+ x (/ (- d db) 2) db) (+ y b) (setq bz5 (list (+ x (/ (

13、- d dn) 2) dn) (+ y b) (setq bz6 (list (+ x d) (- (+ y b) hb)標(biāo)注圖繪制點賦值(setq p1 (list x y);定義關(guān)鍵點為作圖用 (setq p2 (list (+ x (/ (- d da dl) 2) y) (setq p3 (list (+ x (/ (+ (- d da) dl) 2) y) (setq p4 (list (+ x (- (/ (- d dn) 2) (* ha (+ (/ (sin fb) (cos fb) (/ (cos fc) (sin fc) y) (setq p5 (list (+ x (-

14、(/ (- d dn) 2) (* ha (/ (cos fc) (sin fc) (+ y ha) (setq p6 (list (+ x (- (/ (- d dn) 2) (* ha (/ (cos fc) (sin fc) (+ y h) (setq p7 (list (+ x (/ (- d dn) 2) (+ y h ha) (setq p8 (list (+ x (/ (- d dn) 2) (+ y b) (setq p9 (list (+ x (/ (- d db) 2) (+ y b) (setq p10 (list (+ x (/ (+ (- d da) dl) 2) (

15、- (+ y b) hb) (setq p11 (list (+ x (/ (- d da dl) 2) (- (+ y b) hb) (setq p12 (list x (- (+ y b) hb) (setq p13 (list (+ x (/ d 2) (+ y b) (setq p14 (list (+ x (/ d 2) (+ y h ha) (setq p15 (list (+ x (/ d 2) (+ y h) (setq p16 (list (+ x (/ d 2) (+ y ha) (setq p17 (list (+ x (/ d 2) y) (setq p18 (list

16、 (+ x (/ (- d da) 2) (- y 20) (setq p19 (list (+ x (/ (- d da) 2) (+ y (- b hb) 20) (setq p20 (list (+ x (/ d 2) (+ y b 20) (setq p21 (list (+ x (/ d 2) (- y 20)圖形繪制子程序(defun draw_jxfl(); /法蘭繪制程序, 取程序名為draw_jxfl,讀者可自己選定 (command layer n jxfl c 1 jxfl lw 0.5 jxfl s jxfl ); /新建圖層畫法蘭, “n”為新建圖層,“jxfl”為新

17、建圖層名;“c”為設(shè)置圖層顏色,“1”表示圖層顏色為“1”號色;“l(fā)w”為設(shè)置圖層線寬,“0.5”表示線寬為0.5,“s”,表示設(shè)置為當(dāng)前圖層,圖層名為“jxfl”,以下所具有該圖層性質(zhì),直至有新圖層設(shè)置為止。以后碰到類似情況不在解釋. (command pline p1 p2 p11 p12 p1 ); /繪制左邊矩形 (command mirror (entlast) p20 p21 ) / 通過鏡像生成右邊矩形 (command layer n tc c 7 tc lw 0.15 tc s tc ); /新建填充圖層 (command layer m tc ); (command hat

18、ch ansi31 0 all ) /填充左右兩個矩形 (command layer m jxfl ); (command pline p3 p4 p5 p6 p7 p8 p9 p10 p3 ) /繪制由命令中各點所構(gòu)成的圖形(command mirror (entlast) p20 p21 )/ 通過鏡像在右邊生成剛才所謂的圖形 (command layer n tc c 7 tc lw 0.15 tc s tc );新建填充圖層 (command layer m tc );(2) (command hatch ansi31 0 all ) /填充最后所繪的所有圖形 (setq ss (ss

19、add) / 設(shè)置ss為空實體集 (command layer m jxfl );(1) (command line p11 p10 )(ssadd (entlast) ss) /將剛所繪內(nèi)容加入ss (command line p2 p3 )(ssadd (entlast) ss) /將剛所繪內(nèi)容加入ss (command line p8 p13 )(ssadd (entlast) ss) (command line p7 p14 )(ssadd (entlast) ss) (command line p6 p15 )(ssadd (entlast) ss) (command line p5 p16 )(ssadd (entlast) ss) (command line p4 p17 )(ssadd (entlast) ss) (command layer n zz c 6 zz l ACAD_ISO04w100 zz

溫馨提示

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

最新文檔

評論

0/150

提交評論