AutoCAD 中當有物件被炸開之後,該物件選集便消失了,那怎麼取回被炸開後的那些物件呢?
AutoCAD 中當有物件被炸開之後,該物件選集便消失了,那怎麼取回被炸開後的那些物件呢?
找了好多網路文章 ... 想到黑眼圈都跑出來了.... 失敗了N 次,也沒人可問,乾脆寫信給國外的高手 :P 糗~~
他回答我 :

他是這麼說 :
1. 取得圖中所有物件選集 (setq ssuni (ssget "x"))
2. 移除你要炸開的物件 (ssdel eni ss)
3. 炸開該物件 (command "explode" ss )
4. 再選一次所有物件,這次便會包含被炸開的物件 (setq ssuni2 (ssget "x"))
5. (setq ssuni2 (ssget "x")) - [(setq ssuni (ssget "x"))-SS]
6. 這樣就剩下被炸開的物件 exploded


這傻蛋又在陶醉了....
(defun ExplodeAndGetExplodedObject (SS / i n enNameI enNameN ssuni ssuni2 ssExclude ssexploded result ) (if (/= SS nil) (progn (setq ssuni (ssget "x")) (setq i 0) (repeat (sslength SS) (setq enNameI (ssname SS i)) (setq ssExclude (ssdel enNameI ssuni)) (setq i (+ 1 i)) ) ;;repeat (setvar "qaflags" 1) (command "explode" SS "") (setvar "qaflags" 2) (setq ssuni2 (ssget "x")) (setq n 0) (repeat (sslength ssExclude) (setq enNameN (ssname ssExclude n)) (setq ssexploded (ssdel enNameN ssuni2)) (setq n (+ 1 n)) ) ;;repeat ) ;;progn (exit) ) ;;if (setq result ssexploded) ) ;;defun
相關文章
標籤: AutoLisp