根据一个多边形选取里面所有元素
本帖最后由 tryhi 于 2011-8-7 18:14 编辑学了两天,这个整了一天
(defun c:xq(/ lss en enlist i len xuanze)
(setq lss nil)
(setq en (car (entsel)))
(setq enlist (entget en));联合
(setq i 0
len (length enlist);返回列表的数目
)
(repeat len
(if (= (car (nth i enlist)) 10)
(setq lss (cons (cdr (nth i enlist)) lss))
)
(setq i (1+ i))
)
(Setq xuanze (ssget "WP" lss))
(sssetfirst xuanze xuanze)
)
非常感谢群里面几位朋友的指导。
续:
经zhynt指点之后修改如下
(defun c:xq(/ lss en enlist)
(setq en (car (entsel)))
(setq enlist (entget en));联合
(setq lss (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlist)))
(Setq xuanze (ssget "WP" lss))
(sssetfirst xuanze xuanze)
)
另外想请教一下各位,怎样才能使它支持曲线的呢?
采用Andyhon的方法,可以支持曲线,也就是任何封闭图形
http://bbs.mjtd.com/thread-88451-1-1.html
使它支持曲线的呢?
偏方
Divide 曲线
取出 Points 串成 PtList
本帖最后由 tryhi 于 2011-7-27 15:18 编辑
Andyhon 发表于 2011-7-27 15:13 http://space.mjtd.com/static/image/common/back.gif
使它支持曲线的呢?
偏方
学习研究下 多边形顶点列表可以用:
(setq lss (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlist))) Andyhon 发表于 2011-7-27 15:13 static/image/common/back.gif
使它支持曲线的呢?
偏方
只知道(setq zx(ssget "l"))取出最后一个点,可是怎么取出全部点呢? Command: div
DIVIDE
Select object to divide:
Enter the number of segments or : 32
Command: (setq ss (ssget"P"))
<Selection set: 4a>
Command: (sslength ss)
31 我有用到过,要支持曲线,我用模拟的方式
比如查找到第4个点有凸度时,测量一下第5个点 减 去第4个点的距离,得到弧的长度
当弧的长度大到你需要考虑的程度时,开始按你的精度获取节点的坐标加入到你的表中
具体是用vlax-curve相关函数,不断获取弧线上距离为第4个点+[模拟精度(比如0.03) x i]
好像是这样 ....................
页:
[1]