vormittag 发表于 2012-6-15 16:29:57

图块替换需要那么长的代码么? 我这里有个简单点的,能保留原有块的大小、方向,只是属性块的属性没有考虑。
(defun rpblock(ename blockname / ell)
   (setq ell (entget ename))
   (setq ell (subst (cons 2 blockname) (assoc 2 ell) ell))
   (entmod ell)
   (entupd ename)
)
(defun c:kth( / ss i tename blockname ename)
    (setq ss    (ssget '((0 . "INSERT")))
          i   0
        );setq
        (if ss
                (progn
                        (princ "\n请选择块:")
                        (while (/= "INSERT" (cdr (assoc 0 (entget (setq tename (car (entsel)))))))
                                   (princ "\n请选择块:")
                        )
                        (setq blockname (cdr (assoc 2 (entget tename))))
                        (repeat (sslength ss)
                                        (setq ename (ssname ss i) i (+ 1 i))
                                        (rpblock ename blockname)
                        )
                )
        )
        (princ)
)

yjr111 发表于 2012-6-15 17:23:35

vormittag 发表于 2012-6-15 16:29 static/image/common/back.gif
图块替换需要那么长的代码么? 我这里有个简单点的,能保留原有块的大小、方向,只是属性块的属性没有考虑。

用下面附件试试看有没有区别?

Gu_xl 发表于 2012-6-15 23:52:52

yjr111 发表于 2012-6-15 17:23 static/image/common/back.gif
用下面附件试试看有没有区别?

一般来说,一个程序的核心处理代码,都不会很长!但是为了能处理所有能遇到的各种情况,错误处理代码要比核心处理代码长很多,甚至数十倍都不止!程序设计的难点也在于此!

fdb2007 发表于 2012-6-16 07:18:28

yjr111 发表于 2012-2-21 17:57 static/image/common/back.gif
看来这个需要的人还是蛮多的,现在把源码传上来吧

感谢分享,下载学习了

mp3_2004 发表于 2012-12-2 17:05:26

感谢版主大师的分享

ucuc2003 发表于 2013-6-15 11:26:22

yjr111 发表于 2012-2-22 16:45 static/image/common/back.gif
highflybird、ZZXXQQ、G版、飞版、C版、曹版等等才是大师,我仅仅是玩玩花拳绣腿而已,so,别叫我大师了

你现在已经很厉害了,支持严老大!哈哈

ucuc2003 发表于 2013-6-15 11:32:06

Gu_xl 发表于 2012-6-19 18:52 static/image/common/back.gif
一般来说,一个程序的核心处理代码,都不会很长!但是为了能处理所有能遇到的各种情况,错误处理代码要比 ...

G版点评说的很对

asd19400 发表于 2014-9-2 02:42:42

06cad,全图替换有问题,不是出错,而是点全图替换的时候闪的厉害

烟盒迷唇 发表于 2018-6-13 11:28:28

如果替换后的块能保持原有块的方向和角度就更好了

涛涛_1048 发表于 2018-12-20 14:06:35

要是能把DCL归并到LISP程序里就好了。
页: 1 2 3 [4] 5
查看完整版本: 等答案无聊写一个图块替换