duotu007 发表于 2010-11-30 14:45:23

插入图块问题,工作中遇到了。

本帖最后由 duotu007 于 2010-11-30 14:50 编辑


图中块A已经存在,块B需按照指定位置关系插入图中,完成后如下图,有这样的LISP么,比较急用?

本来想通过A+B做个新块C来替代块A,然后把C全选炸开,结果不行。


xshrimp 发表于 2010-11-30 15:01:07

不需要编程啊.直接在位编辑块就可以了.
命令:refedit

duotu007 发表于 2010-11-30 15:12:23

你没理解我意思,我的图只有块A和块B,你在位编辑时把AB合并一个块了

Andyhon 发表于 2010-11-30 16:34:05

得知道图块A的插入点与图块B插入点的关系位置才好配对

duotu007 发表于 2010-11-30 16:51:01

插入点可以认为在同一点。

自贡黄明儒 发表于 2010-11-30 19:32:43

本论坛上有的,我就下载了一个
看看我的这个块功能集,也许能满足你的要求http://bbs.mjtd.com/forum.php?mod=viewthread&tid=83421

Andyhon 发表于 2010-11-30 19:54:34

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)
)

lisp2010 发表于 2010-11-30 22:06:20

如果只是解决问题,可以使用CAD默认的用块替换

zhongys 发表于 2010-12-1 01:59:46

直接块替换,简单省事

duotu007 发表于 2010-12-1 11:04:27

谢谢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
查看完整版本: 插入图块问题,工作中遇到了。