插入图块问题,工作中遇到了。
本帖最后由 duotu007 于 2010-11-30 14:50 编辑图中块A已经存在,块B需按照指定位置关系插入图中,完成后如下图,有这样的LISP么,比较急用?
本来想通过A+B做个新块C来替代块A,然后把C全选炸开,结果不行。
不需要编程啊.直接在位编辑块就可以了.
命令:refedit
你没理解我意思,我的图只有块A和块B,你在位编辑时把AB合并一个块了 得知道图块A的插入点与图块B插入点的关系位置才好配对 插入点可以认为在同一点。 本论坛上有的,我就下载了一个
看看我的这个块功能集,也许能满足你的要求http://bbs.mjtd.com/forum.php?mod=viewthread&tid=83421 try
(defun C:test ()
(setq ss (ssget '((0 . "INSERT") (2 . "图块A"))) ; "图块A"==> 图块A
I0
)
(while (setq ee (ssname ss i))
(command "Insert" "图块B" (cdr (assoc 10 (entget ee))) 1 1 0)
(setq i (1+ i))
)
(princ)
)
如果只是解决问题,可以使用CAD默认的用块替换 直接块替换,简单省事 谢谢Andyhon提供思路:
下面代码有点问题:
;;;根据基准块插入其它块
(defun C:tt (/ en nm en1 nm1 ss i ee pt1 pt2 pt ang dis)
(setq en (entsel "\n选择基准块: "))
(while (/= (cdr (assoc 0 (entget (car en)))) "INSERT")
(princ "->请选择图块<-")
(setq en (entsel "\n选择基准块: "))
)
(setq nm (cdr (assoc 2 (entget (car en)))))
(setq en1 (entsel "\n选择插入块: "))
(while (/= (cdr (assoc 0 (entget (car en1)))) "INSERT")
(princ "->请选择图块<-")
(setq en1 (entsel "\n选择插入块: "))
)
(setq nm1 (cdr (assoc 2 (entget (car en1)))))
(setq pt (getpoint "\n指定插入块的插入点: "))
(setq pt1 (cdr (assoc 10 (entget (car en)))))
(setq ang (angle pt pt1))
(setq dis (distance pt pt1))
(princ "\n请选择基准块的区域:")
(setq ss (ssget (list '(0 . "INSERT") (cons 2 nm)))
I0
)
(while (setq ee (ssname ss i))
(setq pt2 (polar (cdr (assoc 10 (entget ee))) ang dis))
(command "Insert" nm1 pt2 1 1 0)
(setq i (1+ i))
)
(princ)
)
插入角度总是不对,角度似乎要判断下?
页:
[1]
2