freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

利用autolisp語言批量修改cass下高程點的高程(編輯修改稿)

2025-07-25 17:54 本頁面
 

【文章內(nèi)容簡介】 utoCAD為用戶提供的Auto LISP、VBA等開發(fā)工具中,Auto LISP語言是一種簡便易學(xué)的解釋性語言,具有很強的數(shù)據(jù)表處理功能,是一種開發(fā)AutoCAD的重要手段。Auto LISP語言能夠利用PDB函數(shù)驅(qū)動DCL(Dialog Control Language)文件來創(chuàng)建自己的對話框。Auto LISP語言的嵌入,使得僅作為交互式圖形編輯軟件的AutoCAD軟件變成能進行計算機輔助設(shè)計、繪圖的CAD軟件。鑒于LISP語言的靈活多樣且便于學(xué)習(xí)和使用,使得AutoCAD成為功能很強的繪圖工具軟件。 Auto LISP語言的特點Auto LISP具有以下特點:(1)Auto LISP表達(dá)式的形式為前綴式表達(dá)式;(2)Auto LISP中的一切成分都是以函數(shù)的形式給出的,Auto LISP語言沒有語句概念或者其他的語法結(jié)構(gòu)。執(zhí)行Auto LISP程序就是來執(zhí)行一些函數(shù),再去調(diào)用其他函數(shù);(3)Auto LISP把數(shù)據(jù)和程序統(tǒng)一起來表達(dá)為表結(jié)構(gòu),即S表達(dá)式,因此可把程序當(dāng)作數(shù)據(jù)處理,也可把數(shù)據(jù)當(dāng)作程序執(zhí)行;Auto LISP是在普通LISP語言基礎(chǔ)之上,在擴充了許多適用于AutoCAD應(yīng)用的特殊功能之后而形成的一種計算機語言,是一種只能以解釋方式在AutoCAD內(nèi)部運行的程序設(shè)計語言;(4)Auto LISP中的程序運行過程就是對函數(shù)求值的過程,是在對函數(shù)求值的過程中實現(xiàn)函數(shù)的功能;(5)Auto LISP比較典型的程序結(jié)構(gòu)就是遞歸方式,遞歸方式的使用,使得程序設(shè)計簡便易懂。 本次設(shè)計的主要Auto LISP函數(shù)介紹Auto LISP語言主要用到如下數(shù)據(jù)類型:表31 數(shù)據(jù)類型與代碼數(shù)據(jù)類型代碼整型數(shù)(INT)實型數(shù)(REAL)符號(SYM)字符串(STR)表(及用戶定義的函數(shù))(LIST)文件描述符(FILE)Auto LISP的內(nèi)部函數(shù)(SUBR)AutoCAD的選擇集(PICKSET)AutoCAD的實體名(ENAME)函數(shù)分頁表(PAGETB)在本次設(shè)計中,用到很多語句函數(shù),將其中比較重要和比較難掌握的在這里講解一下。 表處理函數(shù)(1)(LIST 表達(dá)式……)該函數(shù)將任意數(shù)目的表達(dá)式的值按順序串聯(lián)在一起,并返回由他們組成的表。(list ‘a(chǎn) ‘b ‘c) 返回(A B C)(list‘a(chǎn)‘(b c)‘d) 返回(A (B C) D)(list ) 返回( )重要應(yīng)用:給點賦值(setq x y );給x,y賦值(setq pt (list x y))等效于(setq pt ‘( ))返回( );賦值給pt命令:!pt 顯示( )(2) (ASSOC 關(guān)鍵字 關(guān)聯(lián)表)關(guān)聯(lián)表又稱A一表,它是以點對或子表為元素組成的表,子表中的第一個元素為“關(guān)鍵字”。ASSOC函數(shù)搜索關(guān)聯(lián)表,以找到此表中關(guān)鍵字,提取包含關(guān)鍵字的一個元素,并返回該子表,若未找到關(guān)鍵字,則返回NIL。例如:(SETQ L ((0 . “CIRCLE”) (8 . “MYLAYER”) (10 ) (40 . )))。給L賦值,一個集合則(ASSOC 0 L) 返回(0 . “CIRCLE”)(ASSOC 40 L) 返回(40 . )(ASSOC 10 L) 返回(10 )例如:(SETQ m ‘((name box)(width 3)(size )(depth )));命令一個圖框則(ASSOC ‘size m) 返回(size )(ASSOC ‘width m) 返回(width 3)例如:(SETQ A ‘((d . 30)(L . 60)(R . 4)));賦值A(chǔ)則(ASSOC‘R A) 返回(R . 4)(ASSOC‘H A) 返回NIL(SETQ F ‘(Q W E T 5 6 7))則 (ASSOC ‘E F) 。錯誤:關(guān)聯(lián)列表錯誤:(Q W E T 5 6 7)(3) (SUBST 新項 舊項 表)該函數(shù)從表中搜索舊項,將表中的每一個舊項用新項替換,并返回替換后的表;如果表中沒找到舊項,則該函數(shù)返回沒有更改的表。例如:(SETQ sample ‘(a b (c d) b))則(SUBST ‘qq ‘b sample) 返回(A (C D)) (SUBST ‘qq ‘(c d) sample) 返回(A B B) (SUBST ‘(qq rr) ‘z sample) 返回(A B(C D)B) 注意:SUBST函數(shù)常常與ASSOC函數(shù)一起使用,方便地替換與關(guān)聯(lián)表中的關(guān)鍵字相對應(yīng)的值。 判斷函數(shù) (1)“條件判斷函數(shù)”的格式為:(if 條件判斷 表達(dá)式1 [表達(dá)式2])函數(shù)用于程序的分支結(jié)構(gòu)。函數(shù)中的“條件判斷”由關(guān)系運算函數(shù)和邏輯運算函數(shù)組成,根據(jù)數(shù)學(xué)關(guān)系進行判斷。函數(shù)的功能為根據(jù)判斷結(jié)果,在程序流程中形成分支,即如果條件表達(dá)式返回判斷結(jié)果為T(真),則執(zhí)行“表達(dá)式1”;如果判斷結(jié)果為nil(假),則執(zhí)行“表達(dá)式2”;如果缺少表達(dá)式2,則表示不執(zhí)行表達(dá)式1,函數(shù)不返回任何值。相當(dāng)于BASIC語言中的“if…then…else”或“if…then”語句。例如:(if ( x 0) (setq a (+ a b)) (setq a ( a b)))──如果關(guān)系函數(shù)x0滿足,返回T,則執(zhí)行表達(dá)式1:a=a+b;如果條件不滿足則返回nil,執(zhí)行表達(dá)式2:a=ab.(if ( dx 0) (setq Azm (+ Azm Pi) (if ( dy 0) (setq Azm (+ Azm Pi Pi)))))──條件判斷函數(shù)的“分層嵌套結(jié)構(gòu)”。外層的條件表達(dá)式的條件dx0如果滿足,則執(zhí)行Azm=Azm+π;否則執(zhí)行內(nèi)層的條件判斷函數(shù),內(nèi)層的條件表達(dá)式的條件dy0如果滿足,則執(zhí)行Azm=Azm+2π。(if (and ( x 0) ( y 0)) (setq a (+ a c)))──通過邏輯和函數(shù)將兩個關(guān)系函數(shù)組成復(fù)合條件:x0且y0,如果條件滿足返回T,則執(zhí)行表達(dá)式1:a=a+c;否則返回nil,不執(zhí)行任何運算。(if (or ( x 0) ( y 0)) (setq a (+ a c)) (setq a (a c)))──通過邏輯或函數(shù)將兩個關(guān)系函數(shù)組成復(fù)合條件:x0或y0,即只要滿足其中一個條件,則返回T,執(zhí)行表達(dá)式1:a=a+c;如果兩個條件都不滿足,則返回nil,執(zhí)行表達(dá)式2:a=ac。 (2)“持續(xù)函數(shù)”的格式為:(prong 表達(dá)式 表達(dá)式 [表達(dá)式] …)函數(shù)的功能為將任意多個表達(dá)式組合起來成為一個表達(dá)式,在程序的流程控制中需要持續(xù)執(zhí)行,其作用相當(dāng)于C語言中的一個大括號,在Auto LISP語言中一般配合條件判斷函數(shù)使用。例如:(if (= x y) (prong (setq a (+ a b)) (print a)))──如果關(guān)系函數(shù)x=y的條件滿足,返回T,則執(zhí)行由progn函數(shù)所組合的兩個需持續(xù)執(zhí)行的表達(dá)式:賦值a=a+b,并且由屏幕輸出a。 (3)“條件循環(huán)函數(shù)”的格式為:(while 條件表達(dá)式 表達(dá)式 [表達(dá)式] …)函數(shù)用于程序中的循環(huán)運算,循環(huán)的次數(shù)取決于函數(shù)中的“條件表達(dá)式”,該式返回T,則執(zhí)行循環(huán)體的運算,包含在函數(shù)括號內(nèi)的“表達(dá)式”的個數(shù)不限。例如:(setq i 0 n 10);給I,n賦值(while (= i 5) (setq i (+ 1 i)) (setq n (* n i)));在i5時,進入循環(huán)(print n);輸出n運算結(jié)束時,輸出函數(shù)使屏幕顯示n的值為7200。 選擇集創(chuàng)建“選擇集創(chuàng)建函數(shù)”的格式為:(ssget [選擇方法] [點1 [點2]] [點表] [過濾表])函數(shù)的功能為用各種方法創(chuàng)建選擇集,所有參數(shù)均為可選參數(shù)。其中“選擇方法”的代碼和內(nèi)涵如下:C(Crossing)──與“點1”、“點2”確定的窗口相交的圖形對象被選中;CP(CPolygon) ──與“點表”確定的多邊形相交的圖形對象被選中;F(Fence) ──與“點表”確定的折線相交的圖形對象被選中;I(Implied) ──處于夾取狀態(tài)的圖形對象被選中;L(Last) ──最后繪制的圖形對象被選中;P(Previous) ──上一次創(chuàng)建的選擇集被選中;W(Window) ──在“點1”、“點2”確定的窗口內(nèi)的圖形對象被選中;WP(WPolygon) ──在“點表”確定的多邊形內(nèi)的圖形對象被選中??蛇x參數(shù)“過濾表”的作用為根據(jù)其描述條件對所選圖形對象進行篩選,只保留滿足條件的對象。過濾表描述的條件為entget函數(shù)返回的圖元表的子表。例如:(0 . “circle”) ──圖元種類為“圓”;(8 . “0”) ──圖層為“0”層。當(dāng)在選擇集函數(shù)中不提供參數(shù)時(ssget),表示以交互方式建立選擇集。執(zhí)行此函數(shù)后系統(tǒng)自動切換到AutoCAD圖形窗口,提示區(qū)出現(xiàn)“Select object:”。用戶可用各種方法在屏幕選擇圖元,直至用空回車(不輸入任何參數(shù)的回車)結(jié)束選擇。選擇集函數(shù)最常用的為“窗口”(“W”)選擇方法,例如:(setq ssl (ssget “w” ‘(20 50) ‘(30 60))) ──選中以平面坐標(biāo)(20,50)和(30,60)為角點的窗口中所包含的圖形對象,并將它賦值給變量ssl。 AutoCAD函數(shù)(1)AutoCAD的所有繪圖命令都可以作為Auto LISP的函數(shù),使Auto LISP程序的運算和AutoCAD的繪圖功能完全結(jié)合起來,使設(shè)計、計算和繪圖融為一體。“AutoCAD命令函數(shù)”的格式為:(mand “AutoCAD命令” 命令所需要的參數(shù) “”)在學(xué)習(xí)Auto LISP之前,一般對于AutoCAD命令屏幕操作的各種菜單、圖標(biāo)快捷鍵和參數(shù)提供的中文提示已應(yīng)有所掌握。但是對于Auto LISP編程,CAD繪圖命令函數(shù)中的“AutoCAD命令”均用英文表示,也沒有“命令所需要的參數(shù)”的提示(按何種次序提供何種參數(shù))。因此,在Auto LISP編程中應(yīng)用CAD命令函數(shù)時,可以先在AutoCAD繪圖屏幕用相應(yīng)的繪圖菜單(包括子菜單)或圖標(biāo)快捷鍵演示一次,可以在屏幕提示區(qū)獲得英文的AutoCAD命令以及命令所需參數(shù)的提供方法和次序。參數(shù)中代表各種意義的規(guī)定字符串應(yīng)包括在引號內(nèi),代表變量的標(biāo)識符則不用引號,函數(shù)中最后的空引號代表“回車”。由于AutoCAD的各種版本(例如AutoCAD2004,2006,2008)的若干繪圖命令中參數(shù)的提供存在微小的差別,因此在寫Auto LISP程序的繪圖函數(shù)時應(yīng)顧及所用AutoCAD的版本。AutoCAD命令函數(shù)十分豐富,下面只介紹本次設(shè)計中所用到的一些:“建立圖層函數(shù)”的格式為:(mand “l(fā)ayer” “m” “圖層名” “” “” “”)函數(shù)的功能為建立并設(shè)定為當(dāng)前層。函數(shù)中的字符“m”表示建立圖層,并設(shè)定為當(dāng)前圖層,“圖層名”為字符串。例如:(mand “l(fā)ayer” “m” “road” “” “” “”);建立命名為road的圖層?!叭忠晥D函數(shù)”的格式為:(mand “zoom” “e”)函數(shù)的功能為將模型空間所畫的圖形對象在屏幕上以最大的視圖全部顯示。 (2)“輸出函數(shù)”的功能為向屏幕或指定的的文件輸出字符和數(shù)值,函數(shù)有下列三種格式:(prinl 表達(dá)式 [文件描述符])(princ 表達(dá)式 [文件描述符])(print 表達(dá)式 [文件描述符])函數(shù)中的表達(dá)式為輸出的內(nèi)容(字符、數(shù)值或表達(dá)式返回的值),“文件描述符”為可選參數(shù),如果輸出至指定的文件則需要文件描述符,在屏幕提示區(qū)輸出則不需要。以上三種輸出格式有較小的差別,對于在屏幕提示區(qū)的輸出,例如:(setq a 123 b “ABC” c “Happy \n New Year”)(prinl a)──不換行輸出數(shù)字123,后面不留空格;(print a)──換行后輸出數(shù)字123,后面加空格;(princ a)──不換行輸出數(shù)字123,后面不留空格。 Auto LISP語言的使用案例 直線畫圓 直線畫圓案例:(defun c:hy()(setvar cmdecho 0) 。指令執(zhí)行過程不響應(yīng)(setq en (entsel 選擇一條直線:)) 。要求碰選一條線(setq en_data (entget (car en))) 。取得元體資料串行(setq pts (assoc 10 en_data)) 。取得群碼10的子串行(setq pt1 (cdr pts)) 。取得起點pt1坐標(biāo)(setq px1 (car pt1)) 。取得pt1坐標(biāo)的x值(setq py1 (cadr pt1)) 。取得pt1坐標(biāo)的y值(setq pta (assoc 11 en_data)) 。取得群碼11的子串行(setq pt2 (cdr pta)) 。取得終點pt2坐標(biāo)(setq px2 (car pt2)) 。取得pt2坐標(biāo)的x值(setq py2 (cadr pt2)) 。取得pt2坐標(biāo)的y值(setq nx (/ (+ px1 px2) 2)) 。求得中點X值(setq ny (/ (+ py1 py2) 2)) 。求得中點Y值(setq npt (list nx
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1