版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
5.1選擇集的處理所謂選擇集是指圖形中選定的部分圖元或所有圖元的集合。
AutoLISP提供了選擇以下六種有關(guān)選擇集的處理函數(shù):1)ssget-----創(chuàng)建選擇集2)ssadd-----把圖元加到選擇集中3)ssdel-----從選擇集中刪除圖元4)sslength—測定選擇集中的圖元數(shù)5)ssname----從選擇集中獲取圖元名6)ssmemb----測試圖元是否為選擇集成員5.1.1創(chuàng)建選擇集調(diào)用格式1:(ssget[方式][點(diǎn)1][點(diǎn)2])有如下形式:1)(ssget)不帶任何參數(shù),請(qǐng)求進(jìn)行一般圖元選擇。2)(ssget‘(2035))----選擇通過點(diǎn)“20,35”的圖元。3)(ssget“L”)----選擇最新加入數(shù)據(jù)庫的圖元。4)(ssget“P”)----選擇前一次已選擇過的圖元。5)(ssget“W”‘(00)‘(55))----選擇窗口內(nèi)的圖元。6)(ssget“C”‘(00)‘(55))----選擇窗口涉及的圖元。7)(ssget“wp”[點(diǎn)1][點(diǎn)2]…)----多邊形窗口方式選擇。8)(ssget“cp”[點(diǎn)1][點(diǎn)2]…)----多邊形窗叉方式選擇。9)(ssget“F”[點(diǎn)1][點(diǎn)2]…)----折線方式選擇。10)(ssget“X”)----選擇全部圖元。調(diào)用格式2:(ssget“X”[過濾表])例如:(ssget“x”‘((0.“CIRCLE”)))---選擇所有的圓。(ssget“x”‘((8.“3”)))----選擇層3上的所有圖元。(ssget“x”‘((0.“CIRCLE”)(8.“3”)(62.1)))----選擇層3上紅顏色的圓。說明:1)用ssget函數(shù)只能選擇主圖元,而不能選擇子圖元。2)選擇集可以保存于AutoLISP變量中。如:(setqs1(ssget“x”‘((0.“LINE”)(8.“3”))))3)選擇集中的圖元是唯一的。4)當(dāng)前圖形中建立的選擇集數(shù)量不能多于128個(gè),如果超過這個(gè)極限,則ssget函數(shù)將返回nil。過濾DXF碼組碼意義數(shù)據(jù)類型應(yīng)用0圖元類型字符串(0.“CIRCLE”)2插入塊名字符串(2.“BLOCK”)3尺寸圖元方式字符串(3.“TOLERANCE”)6線形名字符串(6.“CONTINUOUS”)7字型名字符串(7.“STANDARD”)8層名字符串(8.“BLOCK”)38標(biāo)高實(shí)型(38.5.0)39厚度實(shí)型(39.8.0)62顏色號(hào)整型(62.1)
構(gòu)造選擇集舉例:(setqa1(ssget‘((0.“TEXT”))));選擇文本加入選擇集(setqa2(ssget‘((0.“LINE”))));選擇線圖元加入選擇集(setqa3(ssget“L”‘((0.“CIRCLE”))));選擇最近畫的一個(gè)圓(setqa4(ssget“P”‘((8.“1”))));選擇前一個(gè)選擇集中1層上的圖元(setqa5(ssget“X”‘((62.3))));選擇綠色圖元加入選擇集(setqa6(ssget“X”‘((0.“CIRCLE”)(8.“2”)(62.1))))
;選擇2層上紅色圓加入選擇集(1)通配符模式過濾器序列中指定的符號(hào)名稱可包含通配符模式,常用的通配符如下:?匹配任何單個(gè)字符匹配任何單個(gè)字母#匹配任何單個(gè)數(shù)字.匹配除字母和數(shù)字之外的任何單個(gè)字符*匹配任何字符串,包括null串[-]匹配連字符范圍內(nèi)的字符,如[1-5]通配符可單獨(dú)使用,也可組合使用,其中最常用的是“*”和“?”。例如:(setqs(ssget“X”‘((8.“A*”))));表示層名第一個(gè)子母為A的所有層均被加入選擇集。(2)關(guān)系測試=等于!=/=<>不等于<小于>大于<=小于等于>=大于等于*恒為真&位與&=位屏蔽例如:(setqs(ssget“X”‘((0.“CIRCLE”)(-4.”>”)(40.20.0))));所有半徑大于20的圓加入選擇集。(3)邏輯分組通過應(yīng)用邏輯分組運(yùn)算符,可以創(chuàng)建更為復(fù)雜的多層嵌套關(guān)系測試。邏輯分組運(yùn)算符如下:<ANDAND>與運(yùn)算,測試一個(gè)或多個(gè)DXF組<OROR>或運(yùn)算,測試一個(gè)或多個(gè)DXF組<XORXOR>異或運(yùn)算,測試兩個(gè)DXF組<NOTNOT>非運(yùn)算,測試一個(gè)DXF組例如:(setqs(ssget“X”‘((-4.“<OR”)(8.“1”)(8.“2”)(-4.“OR>”))))表示創(chuàng)建由1層或2層上的圖元組成的選擇集。5.1.2操作選擇集1)(ssadd[圖元名][選擇集]);向選擇集中加入圖元建立空集---(setqs1(ssadd))建立只有一個(gè)圖元的選擇集---
(setqs2(ssadd[圖元名]))2)(ssdel[圖元名][選擇集]);從選擇集中刪除圖元3)(sslength[選擇集]);獲取選擇集中圖元個(gè)數(shù)(說明:使用sslength應(yīng)保證所構(gòu)造的選擇集不為nil.)4)(ssname[選擇集][序號(hào)]);獲取選擇集中圖元名5)(ssmemb[圖元名][選擇集]);測試指定圖元是否為選擇集中成員。是則返回該圖元名,否則返回nil.若要釋放選擇集s,可執(zhí)行:(setqsnil)5.1.3選擇集操作函數(shù)實(shí)例例1:選擇屏幕上要保留的圖形,刪除其它為被選種的圖形。(defunc:remainder(/s1s2s3nent)(setqs1(ssget)s2(ssget“x”))(if(nots1)(command“erase”s2“”)(progn(setqs3(ssadd)n0)(repeat(sslengths2)(setqent(ssnames2n))(if(not(ssmembents1))(ssaddents3))(setqn(1+n)));repeat(command“erase”s3“”“redraw”));progn);if);end例2:改變現(xiàn)行圖形中所有文本的尺寸大小(defunc:chtxt(/atsnindexb1bcdb2)(setqa(ssget“X”‘((0.“TEXT”))))(setqts(getdist“\nEnternewtextsize:”))(setqn(sslengtha))(setqindex0)(repeatn(setqb1(entget(ssnameaindex)))(setqindex(+index1))(setqc(assoc40b1))(setqd(cons(carc)ts)))(setqb2(substdcb1))(entmodb2));repeat);end5.2處理圖元對(duì)象AutoLISP提供了下列用于圖元對(duì)象處理的函數(shù):Entlast獲取圖形數(shù)據(jù)庫中最后一個(gè)圖元名Entnext獲取圖形數(shù)據(jù)庫中下一個(gè)圖元名Entsel選擇圖元并獲取圖元名Handent獲取帶有指定句柄的圖元名稱Nentsel選擇圖元并獲取子圖元名Nentselp獲取子圖元名Entget獲取圖元數(shù)據(jù)表Entmod更新圖元數(shù)據(jù)Entupd更新復(fù)雜圖元的屏幕顯示Entmake創(chuàng)建圖元Entdel刪除指定圖元5.2.1獲取圖元名稱圖元名是一個(gè)指向AutoCAD圖形編輯程序的文件指針,只有通過圖元名,才能對(duì)圖形數(shù)據(jù)庫中圖元進(jìn)行訪問、編輯和修改。因此,在對(duì)圖元進(jìn)行編輯修改之前,獲取圖元名是非常重要的。1.按圖元順序獲取圖元名稱(entnext)---獲取圖形數(shù)據(jù)庫中第一個(gè)圖元名稱(entnext[圖元名])---獲取該圖元之后的圖元名(entlast)---獲取最后一個(gè)圖元的名稱例如:(setqe1(entnext))返回:<Entityname:[第一個(gè)圖元名編碼]>(setqe2(entnexte1))返回:第二個(gè)圖元名(setqe(entlast))返回:最后一個(gè)圖元名2.按圖元位置獲取圖元名稱(entsel[提示串])---返回:([圖元名][坐標(biāo)點(diǎn)表])(entsel)---提示串缺省將出現(xiàn):Selectobjects:例:編程在屏幕上畫一條線和一個(gè)圓,并過圓心向直線作垂線。(defunc:ents()(command"line"'(1010)'(8080)"")(command"circle""30,100"40)(setqpt1(cadr(entsel"selectaline:")))(setqpt2(cadr(entsel"setlectacircle:")))(setqpt3(osnappt2"cen"))(command"line"pt3(osnappt1"per")""));end程序運(yùn)行結(jié)果:3.圖元句柄及其用法由于在每次繪圖時(shí)圖元名都可能變化,這使得在某些場合應(yīng)用圖元名不方便。而圖元句柄在圖形整個(gè)生命周期中都是不變的,因此,如果應(yīng)用程序在不同時(shí)刻必須引用同一圖形中的同一對(duì)象時(shí),最好使用圖元句柄。調(diào)用格式:(handent[圖元句柄])功能:返回當(dāng)前編輯期間使用的與圖元句柄對(duì)應(yīng)的圖元名。例:(handent“5A2”)返回:<Entityname:60004722>4.獲取子圖元名(nentsel[提示串]);返回復(fù)雜圖元的子圖元名(nentselp[圖元上指定點(diǎn)]);同上5.2.2修改圖元數(shù)據(jù)1)獲取圖元數(shù)據(jù)表調(diào)用格式:(entget[圖元名])功能:返回一個(gè)該圖元名定義的圖元的數(shù)據(jù)表。例如:在屏幕上用“CIRCLE”命令畫了一個(gè)圓,其中圓心坐標(biāo)點(diǎn)為“200,200”,半徑為50。為了在屏幕上以縮進(jìn)形式顯示該圖元數(shù)據(jù)表的內(nèi)容,變成如下:(defunc:pe()(setqa(entlast)aa(entgeta)c0)(textscr)(princ"\nDataoflastentity:")(repeat(lengthaa)(terpri)(princ(nthcaa))(setqc(1+c)));repeat(princ));end程序運(yùn)行后,圖元數(shù)據(jù)表顯示如下:Dataoflastentity:(-1.<Entityname:147dd68>)(0.CIRCLE)(330.<Entityname:147dcf8>)(5.2D)(100.AcDbEntity)(67.0)(410.Model)(8.0)(100.AcDbCircle)(10200.0200.00.0)(40.50.0)(2100.00.01.0)2)修改、更新圖元數(shù)據(jù)a)接受修改的圖元數(shù)據(jù)表---entmod調(diào)用格式:(entmod[圖元數(shù)據(jù)表])例如:在屏幕上用“LINE”命令畫一直線,已知起點(diǎn)坐標(biāo)為“2,2”,終點(diǎn)坐標(biāo)為“8,8”。編程修改端點(diǎn)的數(shù)據(jù):(setqe(entlast));獲取圖元名(setqel(entgete));獲取該圖元的數(shù)據(jù)表(setqel(subst‘(1120.09.0)(assoc11el)el));修改(entmodel);接受新的數(shù)據(jù)表說明:entmod不能更改圖元的類型和圖元句柄;圖元數(shù)據(jù)表中須修改的數(shù)據(jù)在執(zhí)行entmod之前必須存在。b)更新復(fù)雜圖元屏幕圖象---entupd調(diào)用格式:(entupd[圖元名])功能:使修改了圖元數(shù)據(jù)的圖形在屏幕上更新顯示。主要用于復(fù)雜圖元的更新,對(duì)于簡單圖元用entmot函數(shù)即可更新。注意:在執(zhí)行entupd函數(shù)之前,必須先執(zhí)行entmod。例如:設(shè)圖中最后一個(gè)圖元是一條有若干頂點(diǎn)的多義線,若要修改多義線的第一個(gè)頂點(diǎn),可編程如下:(setqe1(entlast));置e1為多義線的圖元名(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 珠海市2025年度廣告發(fā)布合同3篇
- 2025版美容院美容養(yǎng)生課程設(shè)計(jì)與培訓(xùn)協(xié)議4篇
- 2025年度鍋爐房消防安全管理與培訓(xùn)合同4篇
- 2025版企業(yè)行政部全面合同管理規(guī)范與實(shí)施辦法3篇
- 2025版房產(chǎn)買賣雙方委托代理服務(wù)協(xié)議3篇
- 二零二五年食品超市生鮮區(qū)營業(yè)員食品安全合同范本3篇
- 二零二五年度現(xiàn)代智能家居租賃服務(wù)合同4篇
- 鐵礦粉購銷合同樣本2025版5篇
- 二零二五年度工地食堂員工宿舍配套合同3篇
- 凈身出戶離婚協(xié)議書二零二五版:2025年度版編寫指南6篇
- 簡易勞務(wù)承包合同范本
- 檢驗(yàn)員績效考核
- 農(nóng)藥合成研發(fā)項(xiàng)目流程
- 機(jī)電安裝工程安全管理
- 2024年上海市第二十七屆初中物理競賽初賽試題及答案
- 信息技術(shù)部年終述職報(bào)告總結(jié)
- 理光投影機(jī)pj k360功能介紹
- 六年級(jí)數(shù)學(xué)上冊(cè)100道口算題(全冊(cè)完整版)
- 八年級(jí)數(shù)學(xué)下冊(cè)《第十九章 一次函數(shù)》單元檢測卷帶答案-人教版
- 帕薩特B5維修手冊(cè)及帕薩特B5全車電路圖
- 小學(xué)五年級(jí)解方程應(yīng)用題6
評(píng)論
0/150
提交評(píng)論