userzhl 发表于 2009-1-15 22:20:00

[求助]哪位高手知道如何获取多义线的顶点列表?并转换成坐标,我想把某一物体复制到

[求助]哪位高手知道如何获取多义线的顶点列表?并转换成坐标,我想把某一物体复制到多义线的各个顶点上[求助]哪位高手知道如何获取多义线的顶点列表?并转换成坐标,我想把某一物体复制到多义线的各个顶点上。

userzhl 发表于 2009-1-15 22:41:00

(defun vertexs (ename / plist pp n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp; (setq obj (vlax-ename-&gt;vla-object ename))<br/>&nbsp; (setq plist (vlax-safearray-&gt;list<br/>&nbsp; (vlax-variant-value<br/>&nbsp;&nbsp;&nbsp; (vla-get-coordinates obj))))<br/>&nbsp; (setq n 0)<br/>&nbsp; (repeat (/ (length plist) 2)<br/>&nbsp;&nbsp;&nbsp; (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))<br/>&nbsp;&nbsp;&nbsp; (setq n (+ n 2))<br/>&nbsp; )<br/>&nbsp; pp<br/>)<br/>(setq ss (car (entsel "\n请选取要复制的物体:")))<br/>(if ss<br/>(setq SE (car (entsel "\n请选取多义线:")))<br/>(command "copy" ss (vertexs SE))<br/>;在这里怎么复制到各个顶点?

userzhl 发表于 2009-1-15 23:04:00

本帖最后由 作者 于 2009-1-15 23:08:00 编辑 <br /><br /> <p>我要达到的结果是:</p><p>&nbsp;</p><p></p><p>&nbsp;</p>

nonsmall 发表于 2009-1-16 11:02:00

<p>一句话取多线顶点:</p><p>(vl-remove-if 'not (mapcar '(lambda (x) (if (= (car x) 10) (cdr x))) (entget(car(entsel)))))</p><p>文字可以用textbox 或 getboundingbox 取其范围</p><p>多线的右上角可以根据四个坐标点判断最大值</p><p>计算下就可以了</p>

luowy 发表于 2009-1-16 11:02:00

<p>思路简单,但过程会繁琐,pp是点集合,要从集合里面拿点出来就要循环控制,这是第一个问题,第二个问题就是移动实体了,多线段的顶点个数如果跟实体数量不一致,需要做一个判断,或者强制执行某代码</p><p>如果按提供的图,只移动文字,可以用vla-PUT-INSERTPOINT来操作</p>

userzhl 发表于 2009-1-16 13:25:00

谢谢大家的关注,问题已经解决。感谢肖楚
页: [1]
查看完整版本: [求助]哪位高手知道如何获取多义线的顶点列表?并转换成坐标,我想把某一物体复制到