CAD多重插入引用分解方法 -工程

工程 时间:2019-01-01 我要投稿
【www.unjs.com - 工程】

    把以下内容保存为lsp文件(如exm.lsp),加载后运行exm既可把“多重插入块”转换为“普通块”,然后既可用“explode”分解,

CAD多重插入引用分解方法

。加载后运行lockb可把“普通块”转换为“多重插入块”

    (DEFUN C:exm ()

    (setvar "cmdecho" 0)

    (SETQ STM (car (ENTSEL "\n点取多重块")))

    (while stm

    (setq e (entget stm))

    (setq stlx (cdr (assoc 0 e)))

    (if (= stlx "INSERT")

    (PROGN

    (setq r_zm70 (assoc 70 e))

    (setq c_zm71 (assoc 71 e))

    (setq r_dist_zm44 (assoc 44 e))

    (setq c_dist_zm45 (assoc 45 e))

    (setq e (subst (cons 44 0) r_dist_zm44 e))

    (setq e (subst (cons 45 0) c_dist_zm45 e))

    (setq e (subst (cons 70 0) r_zm70 e))

    (setq e (subst (cons 71 0) c_zm71 e))

    (setq e (subst (list 100"AcDbBlockReference") (list 100"AcDbMInsertBlock") e))

    (entmake e)

    (entdel stm)

    ))

    (SETQ STM (car (ENTSEL "\n点取下一多重块")))

    )

    (setvar "cmdecho" 1)

    )

    ;;--------------------------------------------------------------------

    ;;转换“普通块”为“多重插入块”

    (DEFUN C:lockb ()

    (setvar "cmdecho" 0)

    (SETQ STM (car (ENTSEL "\n点取块")))

    (while stm

    (setq e (entget stm))

    (setq stlx (cdr (assoc 0 e)))

    (if (= stlx "INSERT")

    (PROGN

    (setq r_zm70 (assoc 70 e))

    (setq c_zm71 (assoc 71 e))

    (setq e (subst (cons 70 1) r_zm70 e))

    (setq e (subst (cons 71 1) c_zm71 e))

    (setq e (subst (list 100"AcDbMInsertBlock") (list 100"AcDbBlockReference") e))

    (entmake e)

    (entdel stm)

    ))

    (SETQ STM (car (ENTSEL "\n点取下一块")))

    )

    (setvar "cmdecho" 1)

    )