CAD做一个LISP程序,实现按属性块图框里的一个图号按从左到右排列?

CAD做一个LISP程序,实现按属性块图框里的一个图号按从左到右排列?,第1张

在这里说一下编程思路:

1、用过滤法,做一个大历唯选择集,选中图中所有的TK块

2、遍历这个选择集,得到每个图框的左下角坐标与右上角坐标,以及它里边的图号属性

----同时得到坐标的滚培最大Y值(用来找空的地方)

3、按属性值进行排序,将每个TK的坐标,排好顺序后,按先后次序,移动到“空”的地方

从左到右放置 ,间隔就是你所说的200

4、第3步中,要根据每个TK的坐标,选中TK内的烂老所有实体,然后一起移动

5、唔。。。。差不多就是以上几步

我个人的体会,程序不要写得太复杂。尽可能简化一些。

比如上面这个例子。

如果只是要更改某些对象的线型比例,可以在创建那些对象之前,加一句代码,设置相应的线型比例。创建完成后,马上改回来。就可以了。我平激裂迅常就是这样做的。

另外,读了上面明此的程序,源陵entsel读取的是一个单一对象的值,楼主提供的程序里,好像是选择了一个块吧?

试用以下程序

(defun c:kjxwk()

(vl-load-com)

(setq cm (getvar "cmdecho") os (getvar "osmode"樱祥消))

(setvar "cmdecho" 0) (setvar "osmode" 0)

(command "_undo" "be")

(while (setq ssa (ssget ":S" '((0 . "INSERT"))))

(setq ent (ssname ssa 0)

obj (vlax-ename->vla-object ent)

)

(vla-GetBoundingBox obj 'p1 'p2)

(setq p1 (vlax-safearray->list p1)

p2 (vlax-safearray->list p2)

)

(command "_rectang" p1 p2)

(command "_chprop" (entlast) "" "c" 1 ""脊知)

)

(command "宴兄_undo" "e")

(setvar "osmode" os) (setvar "cmdecho" cm)

(princ)

)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12421018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存