編寫lisp程序多條多段線連接成一條多段線?
命令HB合并多段線(defunc:hb(/@myL@lpNum@etLst@@ent@ptLst)(setq@myL(ssgeti'((0.LINE,LWPOLYLINE)))) ;將創(chuàng)建已經(jīng)選擇的線(多段線或者直線)的選擇集(setq@lpNum0) ;為循環(huán)計(jì)數(shù)參數(shù)賦值(repeat(sslength@myL) ;選擇集包含幾個(gè)對(duì)象就循環(huán)幾次(setq@etLst(append@etLst(list(ssname@myL@lpNum))) ;逐個(gè)提取選擇集中的圖元名并儲(chǔ)存到表@etLst中 @lpNum(1+@lpNum) ;每循環(huán)一次循環(huán)計(jì)數(shù)參數(shù)+1))(foreach@@lpet@etLst ;歷遍表@etLst中每一個(gè)原子,以@@lpet代替原子(progn(setq@@ent(entget@@lpet)) ;將每個(gè)圖元的詳細(xì)列表賦值到@@ent中(foreach@@2lpe@@ent (if(=(car@@2lpe)10) ;如果子表中第一個(gè)原子為10 (setq@ptLst(append@ptLst(list@@2lpe)));將子表列入@ptLst ))(entdel@@lpet) ;刪除已提取過點(diǎn)的對(duì)象))(entmake(append(list ;通過點(diǎn)表創(chuàng)建新的多段線 '(0.LWPOLYLINE) '(100.AcDbEntity) '(100.AcDbPolyline) (cons90(length@ptLst)) ) @ptLst ))(princ))=====分割線========================================順帶一說。。。你為何不用CAD自帶的pedit命令?pedit(使用CAD原生的ACAD.PGP可簡(jiǎn)化為PE命令)→M→選擇所有需要合并的線→(若有不含多段線的元素)按Y轉(zhuǎn)換所有選擇對(duì)象為多段線→J合并→空格或者回車或者ESC退出