




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、在AutoCAD里把圖元Z軸歸零 在AutoCAD里把圖元Z軸歸零我們在使用SketchUp的時候,為了提高工作效率經常得需要把從AutoCAD產生的DWG格式圖形載入SketchUp做為創建模型的底稿。如果使用的是既有的圖形,根據以往的經驗,有時會遇到圖形里的一部份或全部圖元(Entity)不在X-Y平面(Z=0高程)上,這樣的圖形載入SketchUp以后,可想而知會給在SketchUp里建模工作帶來許多麻煩或錯誤。為了避免這種情況發生,在使用DWG圖形之前如果發現了圖形里有些圖元不共面(X-Y平面)的情形,就可以在AutoCAD里利用這個AutoLISP程式把圖元的(x,y,z)
2、里面的Z值改為0,使得所有的圖元都包含在X-Y平面上,我把這個程序稱為Flatten(壓平)。這個應用AutoLISP程式語言所寫的FLATTEN.LSP,其原作者為Daedalus Consulting的Mark Middlebrook,版權宣告時限為從1990至1999年。其后于2005年9月5日國內有一位邱楓先生對程式進行修正并把程式操作中的提示語漢化成簡體中文,并且把程式名稱改成FLT.LSP。數碼阿叔在這里把提示語再改成英文,程式的名稱也改回原先的FLATTEN.LSP,這樣跟邱楓先生的FLT.LSP簡體中文版有所區別。使得在英文和繁體中文Windows作業系統環境下使用的朋友也可以
3、順利操作這個FLATTEN.LSP,不至于因為提示語出現亂碼而妨礙使用。數碼阿叔把改回英文的FLATTEN.LSP原始碼附在本文后面,需要使用英文版的朋友請把原始碼復制到一個純文字模式的文字編輯器(例如NotePad記事本,不可以使用Word)里面,然后把它儲存為FLATTEN.LSP就行了。看完本文想要使用FLT.LSP簡體中文版的朋友,請到下面地址直接下載:FLATTEN(壓平)的應用范圍FLATTEN可以在AutoCAD的世界座標系統(WCS)里把下列各型式圖元的Z座標值設置為0。"3DFACE","ARC","ATTDEF",
4、"CIRCLE","DIMENSION","ELLIPSE","HATCH","INSERT","LINE","LWPOLYLINE","MTEXT","POINT","POLYLINE","SOLID","TEXT"使用FLATTEN的時機FLATTEN至少在下面兩種情況下很有用:你收到從別的CAD應用程式所產生的DXF圖形文檔,并且發現圖形中所有的Z座標
5、值可能是由于四舍五入導致的誤差,這種對X-Y平面Z不等于0的誤差可能會導致你無法抓住(Snap)圖元交叉點的問題,使得你在后續制圖和編輯作業中感覺很困擾。在一個推想是二維圖形的作業中,你一不小心畫了一條線(或別的新圖元),這條線的起點Z elevation高程不等于0,而線的終點連到另一個在X-Y平面上Z=0的圖元上,這就產生了一條不在X-Y平面上的線段。由于這種問題會使得運用抓點或其他程序發生困難和誤差。警告:FLATTEN無法壓平經由諸如ADT應用程式產生的訂制型圖元物件。ADT以及類似的應用程式所創建的"由程式定義的物件"(Application-Defined Ob
6、jects),只有該程式才真正知道怎么控制這些圖元。FLATTEN弄不清楚該如何去控制這種特殊的"由程式定義的物件",所以會丟下它們不管。如何使用FLATTEN這個FLATTEN版本用于AutoCAD R12到AutoCAD 2000。(數碼阿叔注解:基于軟件向上相容的原理,這個AutoLisp命令同樣適用于AutoCAD 2000以后的新版本AutoCAD。)要執行FLATTEN命令,運用AutoCAD的APPLOAD命令載入,或者在命令提示語Command:后面鍵入:(load"FLATTEN")一旦你載入了FLATTEN.LSP之后,就可以鍵入執行
7、它命令:FLATTEN執行過程中,FLATTEN將告訴你它會做什么,以及要求你確認你是否真的要把圖形中的物件(圖元)壓平。如果你選擇繼續進行,FLATTEN會提示你選取想要壓平的物件(如果不做選取而直接按Enter鍵會把圖形中全部物件都壓平)。在你選取了物件并且按Enter鍵之后,FLATTEN就開始工作。它會報告已經壓平的物件數目以及壓平不了而保留原樣的物件數目(壓平不了是由于FLATTEN命令無法辨認這些物件,參閱上面列示FLATTEN所支持的圖元清單)。假如你對FLATTEN后的結果不滿意,只要按U鍵或點擊Undo命令就能撤銷前面FLATTEN所做的內容,回復原先的圖形模樣。已知的限制F
8、LATTEN并不支持全部的AutoCAD物件(圖元)型式,見上面所列示它能壓平的物件型式。FLATTEN無法壓平圖塊(Block)內部的圖元。(你可以在執行FLATTEN之前先把BLOCK炸開。還有一個替代的方法,運用WBLOCK命令分別把這些Block寫出去成為單獨的DWG圖形檔,在各個DWG里分別執行FLATTEN把圖元壓平以后,再運用插入INSERT命令插回原先的圖形里,更新圖塊的定義。除了這兩個方法沒有其他方法可以壓平圖塊里的圖元)FLATTEN得在AutoCAD的"世界座標系統"(World Coordinate System,WCS)里把圖元壓平到X-Y平面的Z
9、=0高程。它目前并不支持在其他"使用者自定義座標系統"(UCS)里執行壓平的工作。FLATTEN.LSP原始碼;FLATTEN.LSP version 2k.1,14-Aug-2009;Edit by Digital;Translate prompt messege to english for English and traditional chinese user.;FLATTEN sets the Z-coordinates of these types of objects to 0;in the World Coordinate System:;"3DF
10、ACE""ARC""ATTDEF""CIRCLE""DIMENSION";"ELLIPSE""HATCH""INSERT""LINE""LWPOLYLINE";"MTEXT""POINT""POLYLINE""SOLID""TEXT";-;copyright 1990-1999 by Mark Middleb
11、rook;Daedalus Consulting;You are free to distribute FLATTEN.LSP to others so long as you do not;charge for it.;=(defun C:FLATTEN(/olderr oldcmd zeroz ss1 ss1len inumchg numnot numno0 ssno0 ename elist etype yorn vrt crz);Error handler(setq olderr*error*)(defun*error*(msg)(if(=msg"quit/exit abor
12、t")(princ)(princ(strcat"error:"msg)(setq*error*olderr)(command"._UCS""_Restore""$FLATTEN-TEMP$""._UCS""_Delete""$FLATTEN-TEMP$")(command"._UNDO""_End")(setvar"CMDECHO"oldcmd)(princ);Function to c
13、hange Zcoordinate to 0(defun zeroz(key zelist/oplist nplist)(setq oplist(assoc key zelist)nplist(reverse(append'(0.0)(cdr(reverse oplist)zelist(subst nplist oplist zelist)(entmod zelist);Setup(setq oldcmd(getvar"CMDECHO")(setvar"CMDECHO"0)(command"._UNDO""_Grou
14、p")(command"._UCS""_Delete""$FLATTEN-TEMP$""._UCS""_Save""$FLATTEN-TEMP$""._UCS""World");set World UCS;Get input(prompt(strcat"nFunction to change Zcoordinate to 0.")(initget"Yes No")(setq yorn(g
15、etkword"nGo ahead?Y:")(cond(/=yorn"No")(graphscr)(prompt"nSelect objects to flatten:")(prompt"Press Enter to select all objects.")(setq ss1(ssget)(if(null ss1);if enter.(setq ss1(ssget"X");select all entities in database);*initialize variables(setq s
16、s1len(sslength ss1);length of selection set i0;loop counter numchg 0;number changed counter numnot 0;number not changed counter numno0 0;number not changed and Z/=0 counter ssno0(ssadd);selection set of unchanged entities);setq;Set all Thickness to 0at first;By QiuFeng(princ"nSet Thickness to 0
17、.")(command"_.chprop"ss1"""_Thickness"0"");*do the work(prompt"nZ-coordinate processing.")(while(i ss1len);while more members in the SS(if(=0(rem i10)(princ(strcat"rZ-coordinate processing."(itoa i)(setq ename(ssname ss1 i);entity name
18、 elist(entget ename);entity data list etype(cdr(assoc 0elist);entity type);*Keep track of entities not flattened(if(not(member etype'("3DFACE""ARC""ATTDEF""CIRCLE""DIMENSION""ELLIPSE""HATCH""INSERT""LINE"&q
19、uot;LWPOLYLINE""MTEXT""POINT""POLYLINE""SOLID""TEXT")(progn;leave others alone(setq numnot(1+numnot)(if(/=0.0(car(reverse(assoc 10 elist)(progn;add it to special list if Z/=0(setq numno0(1+numno0)(ssadd ename ssno0);Change group 10 Zcoordinate t
20、o 0for listed entity types.(if(member etype'("3DFACE""ARC""ATTDEF""CIRCLE""DIMENSION""ELLIPSE""HATCH""INSERT""LINE""MTEXT""POINT""POLYLINE""SOLID""TEXT")(se
21、tq elist(zeroz 10 elist);change entities in list above numchg(1+numchg);Change group 11 Zcoordinate to 0for listed entity types.(if(member etype'("3DFACE""ATTDEF""DIMENSION""LINE""TEXT""SOLID")(setq elist(zeroz 11 elist);Change groups 1
22、2 and 13 Zcoordinate to 0for SOLIDs and 3DFACEs.(if(member etype'("3DFACE""SOLID")(progn(setq elist(zeroz 12 elist)(setq elist(zeroz 13 elist);Change groups 13,14,15,and 16;Z coordinate to 0for DIMENSIONs.(if(member etype'("DIMENSION")(progn(setq elist(zeroz 13
23、elist)(setq elist(zeroz 14 elist)(setq elist(zeroz 15 elist)(setq elist(zeroz 16 elist);Change each polyline vertex Zcoordinate to 0.;Code provided by Vladimir Livshiz,09-Oct-1998(if(=etype"POLYLINE")(progn(setq vrt ename)(while(not(equal(cdr(assoc 0(entget vrt)"SEQEND")(setq eli
24、st(entget(entnext vrt)(setq crz(cadddr(assoc 10 elist)(if(/=crz 0)(progn(zeroz 10 elist)(entupd ename)(setq vrt(cdr(assoc-1 elist);Special handling for LWPOLYLINEs(if(member etype'("LWPOLYLINE")(progn(setq elist(subst(cons 38 0.0)(assoc 38 elist)elist)numchg(1+numchg)(entmod elist)(setq i(1+i);next entity)(prompt"Done.");Prin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在實踐中領悟“先學后教當堂訓練”教學模式
- 2025年煙草山東公司筆試試題(含答案)
- 航空安全課件教學
- 2024伊春職業學院輔導員招聘筆試真題
- 2024云南農業大學輔導員招聘筆試真題
- 2024北京電影學院輔導員招聘筆試真題
- 自身安全培訓課件
- 培訓機構公司級印章使用范圍明細制度
- 自我認識心理健康課課件
- 論箏曲《定風波》的音樂特色與情感的演奏詮釋
- 海洋通信網絡完善
- 《湖南省房屋建筑和市政工程消防質量控制技術標準》
- 2024年北京市東城區中考生物試題
- 初高中物理銜接課件
- 江西省中考語文備考及答題技巧——語文考點及答題策略-人教版初中九年級全冊語文素材
- 成立生物安全委員會及工作制度管理辦法和職責
- 內科護理學消化系統試習題及答案
- 華北電力大學-任建文-電力系統PPT(第1章)
- 與食品安全相關的組織機構設置、部門職能和崗位職責
- 完整解讀2022年《關于加強關心下一代工作委員會工作的意見》實用課件PPT授課
- 油漆工三級安全教育試卷(附答案 )
評論
0/150
提交評論