如何实现让其中一层的线都设置为指定宽度的多义线?
一一如何实现让其中一层的线都设置为指定宽度的多义线?<BR>如何实现让其中一层的线都设置为指定宽度、颜色、类型的多义线?用CAD的命令是PE,但是只能用手工去选择要定义的线。
我是刚学习的,希望各位大哥帮帮忙? 看了前面的大哥的介绍,我已经完成我要的功能
;将所选择的line或arc串成多义线
(defun c:ddx (/ ssa ssa-ent ent-p i)<BR> (command "undo" "be");设置返回起始点<BR> (command "qselect" "" "")<BR> (setq ssa (ssget))<BR> (setq i 0)<BR> (while (< i (sslength ssa))<BR> (setq ssa-ent (ssname ssa i))<BR> (setq ent-p (cdr(assoc 0 (entget ssa-ent))))<BR> (if (not (null ent-p));判断原图元是否已串入多义线<BR> (if (or (= ent-p "LWPOLYLINE") (= ent-p "POLYLINE"));判断原图元属性<BR> (command "pedit" ssa-ent "w" "5" "j" ssa "" "")<BR> (command "pedit" ssa-ent "y" "w" "0.5" "j" ssa "" "")<BR> ))<BR> (setq i (1+ i))<BR> )<BR> (command "undo" "e");设置返回终止点<BR> (princ)<BR>)
我这样一改就可以实现先选择其中一层的线,实现先选择线后 PE 线了。
但是有个新的问题,现在选择哪一层的线是通过对话框实现的, 我想请教各位大哥,Qselect 后面能带筛选条件吗?就是说通过命令自动完成,不知道这个命令的格式是怎么样的?
还有个问题就是,以上的代码如果用VBA写的话,应该怎么写呀? (setq ssa (ssget '((0 . "line,arc")(8 . "layername")))) 谢谢前面这位大哥的指点,下面的这段代码想实现把ABC这层的line或arc,转换为0.5宽的多段线。不知道哪里出问题?希望大哥继续指点,
(defun c:ddx (/ ssa ssa-ent ent-p i)<BR> (command "undo" "be");设置返回起始点<BR>(setq ssa (ssget '((0 . "line,arc")(8 . "ABC")))) ;主要是这里我不知道如何写?(如何实现选择ABC这层的line或arc)<BR> (setq i 0)<BR> (while (< i (sslength ssa))<BR> (setq ssa-ent (ssname ssa i))<BR> (setq ent-p (cdr(assoc 0 (entget ssa-ent))))<BR> (if (not (null ent-p));判断原图元是否已串入多义线<BR> (if (or (= ent-p "LWPOLYLINE") (= ent-p "POLYLINE"));判断原图元属性<BR> (command "pedit" ssa-ent "w" "0.5" "j" ssa "" "")<BR> (command "pedit" ssa-ent "y" "w" "0.5" "j" ssa "" "")<BR> ))<BR> (setq i (1+ i))<BR> )<BR> (command "undo" "e");设置返回终止点<BR> (princ)<BR>) 你只选择了ABC图层上的直线和圆弧(LINE、ARC),没有选择多义线(LWPOLYLINE、POLYLINE)吧 在运行程序之前ABC图层上只有直线或圆弧,而且用这个程序,还会提示我去选择对象,我想达到的功能就是,打个命令让程序自动的完成,不需要人手工参与。 (defun c:test( / ss i wid)<BR> (setq ss (ssget "x" '((0 . "*POLYLINE"))))<BR> (setq i 0 wid 5);5是宽度,用你自己想要的值修改这里<BR> (repeat (sslength ss)<BR> (command "_.pedit" (ssname ss i) "w" wid "")<BR> (setq i (1+ i))<BR> )<BR> (princ)<BR>) 问题解决,谢谢指点
页:
[1]