ex.lsp

来自「ex.lsp --- 分别或一起或通过层来炸开块、尺寸标注及PLINE线」· LSP 代码 · 共 83 行

LSP
83
字号
;           =======================================
;           |   炸开多个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 + =
减小字号Ctrl + -
显示快捷键?