请高手编一段LISP代码
恳求哪位高手帮小弟编写一段L ISP代码(CAD2004),需实现功能如下:第一步:将当前选定对象之外的所有元素显示顺序改为后置;
第二步:将名为“线段1”的图层内所有多线段的全局宽度设置为1.0,颜色设置为红色;
第三步:将名为“圆圈1”的图层内所有圆改为直径2.5;
第四步:将名为“块参照1”的图层内所有名为“块1”的块参照改为X、Y、Z比例均为0.5,颜色设置为黄色;
第五步:将名为“注记1”的图层内所有文字的高度设置为10,颜色设置为红色;
谢谢,不胜感激!!!!!!
本帖最后由 夏生生 于 2012-12-20 17:28 编辑
(defun x_ssn (ss / n lst)
(repeat (setq N (sslength ss))
(setq LST (cons (ssname SS (setq N (1- N))) LST))
)
)
(defun ch_dxf (en num ch / old_num new_num ent)
(if (setq ent (entget en)
new_num (cons num ch)
old_num (assoc num ent)
)
(entmod (subst new_num old_num ent))
(entmod (reverse (cons new_num (reverse ent))))
)
)
(defun c:ttt (/ ss ss1 n blk)
(setvar "cmdecho" 0)
(setq ss (ssget "x"))
(setq ss1 (ssget))
(command "select" ss "r" ss1 "")
(command "DRAWORDER" "p" "" "b")
(setq ss (ssget "x" '((0 . "LWPOLYLINE") (8 . "线段1"))))
(foreach n (x_ssn ss)
(command "pedit" n "w" 1 "")
(ch_dxf n 62 1)
)
(setq ss (ssget "x" '((0 . "circle") (8 . "圆圈1"))))
(foreach n (x_ssn ss) (ch_dxf n 40 1.25))
(setq ss (ssget "x" '((0 . "INSERT") (8 . "块参照1") (2 . "块1"))))
(foreach n (x_ssn ss)
(ch_dxf n 41 0.5)
(ch_dxf n 42 0.5)
(ch_dxf n 43 0.5)
)
(setq blk (tblobjname "block" "块1"))
(while (setq blk (entnext blk))
(ch_dxf blk 62 2)
)
(foreach n (x_ssn ss) (entupd n))
(setq ss (ssget "x" '((0 . "text") (8 . "注记1"))))
(foreach n (x_ssn ss) (ch_dxf n 62 1) (ch_dxf n 40 10))
(princ)
)
第二三五步中的图元有无在块内的? 只会伸手,是不行的。、
看看组码, 还有chprop 这个命令
ssget函数 谢谢夏生生的回复,等会我试试,再和您交流,非常感谢
页:
[1]