📄 ex.lsp
字号:
; =======================================
; | 炸开多个BLOCK,PLINE,DIMENSION |
; | Ver: 1.2 作者: 迟俊岭 |
; =======================================
(defun C:ex( / ss en1 len n test tt nn)
(setvar "cmdecho" 0)
(setq test T nn 0)
(initget "P B D L A")
(setq tt (getkword "\nLayer/Block/Dimension/Polyline/<Select>: "))
(if (or (= tt "B")
(= tt "D")
(= tt "P")
(= tt "A")
(= tt nil))
(progn
(while test
(setq ss (ssadd))
(setq ss (ssget))
(if (= nil ss)
(setq test nil)
(progn
(setq len (sslength ss))
(setq n 1)
(while (<= n len)
(setq en1 (ssname ss (1- n)))
(setq a (entget en1))
(setq a (cdr (assoc 0 a)))
(if (and (= "POLYLINE" a)
(or (= tt "P") (= tt "A") (= tt nil)))
(progn
(command "explode" en1)
(setq nn (1+ nn))
)
)
(if (and (= "INSERT" a)
(or (= tt "B") (= tt "A") (= tt nil)))
(progn
(command "explode" en1)
(setq nn (1+ nn))
)
)
(if (and (= "DIMENSION" a)
(or (= tt "D") (= tt "A") (= tt nil)))
(progn
(command "explode" en1)
(setq nn (1+ nn))
)
)
(setq n (1+ n))
)
)
)
)
)
(progn
(setq en (car (entsel "\nPick a object on layer :")))
(if (/= nil en)
(progn
(setq la (assoc 8 (entget en)))
(setq ss (ssget "X" (list la)))
(setq len (sslength ss))
(setq n 1)
(while (<= n len)
(setq en1 (ssname ss (1- n)))
(setq a (entget en1))
(setq a (cdr (assoc 0 a)))
(if (= "POLYLINE" a)
(progn
(command "explode" en1)
(setq nn (1+ nn))
)
)
(setq n (1+ n))
)
)
)
)
)
(princ (strcat (itoa nn) " exploded !"))
(redraw)(princ)
)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -