spshchen 发表于 2005-1-12 14:32:00

如何实现让其中一层的线都设置为指定宽度的多义线?

一一如何实现让其中一层的线都设置为指定宽度的多义线?<BR>如何实现让其中一层的线都设置为指定宽度、颜色、类型的多义线?



用CAD的命令是PE,但是只能用手工去选择要定义的线。


我是刚学习的,希望各位大哥帮帮忙?

spshchen 发表于 2005-1-13 01:16:00

看了前面的大哥的介绍,我已经完成我要的功能


;将所选择的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 (&lt; 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写的话,应该怎么写呀?

Ea 发表于 2005-1-13 02:06:00

(setq ssa (ssget '((0 . "line,arc")(8 . "layername"))))

spshchen 发表于 2005-1-13 17:26:00

谢谢前面这位大哥的指点,下面的这段代码想实现把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 (&lt; 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>)

mkhsj928 发表于 2005-1-14 09:46:00

你只选择了ABC图层上的直线和圆弧(LINE、ARC),没有选择多义线(LWPOLYLINE、POLYLINE)吧

spshchen 发表于 2005-1-14 11:37:00

在运行程序之前ABC图层上只有直线或圆弧,而且用这个程序,还会提示我去选择对象,我想达到的功能就是,打个命令让程序自动的完成,不需要人手工参与。

meflying 发表于 2005-1-14 12:55:00

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

spshchen 发表于 2005-1-14 22:32:00

问题解决,谢谢指点
页: [1]
查看完整版本: 如何实现让其中一层的线都设置为指定宽度的多义线?