daiguafan 发表于 2013-7-14 14:56:26

请问如下情形如何设置循环



如上图所示,多段线为基准线
通过不断求大圆和多段线的交点,绘制小圆。
现有代码如下,可是无法实现循环,求大侠指点(defun C:qjd(/ pt);
   (vl-load-com)
   (setq p1 (getpoint "指定起始点")
   d (getint "\n指定小圆直径")
   dis (getint "\n指定大圆直径 ")
   ent2 (entsel"\n选择参照基准线")
   )
   (Setq aobj2 (Vlax-Ename->Vla-Object (car ent2)))
(command ".circle" p1 "d" d "")
   (command ".circle" p1 dis "")
   (setq ent1 (entlast))
    (while (> ipts nil)
   (Setq aobj1 (Vlax-Ename->Vla-Objectent1))
   (Setq IPTS (vla-intersectwith aobj1 aobj2 0 )
             IPTS(vlax-variant-value IPTS))
   (setq IPTS (vlax-safearray->list IPTS))
;(command ".erase" ent1 "")
(command ".circle" IPTS "d" d "")
(command ".circle" IPTS dis "")
   (setq ent1 (entlast))
   
   (princ)
)
)


http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 daiguafan的微博

daiguafan 发表于 2013-7-14 14:57:00

请各位大侠帮帮忙啊

daiguafan 发表于 2013-7-14 15:01:46

帮帮忙啊,各位大侠

nzl1116 发表于 2013-7-14 17:16:35

daiguafan 发表于 2013-7-14 15:01 static/image/common/back.gif
帮帮忙啊,各位大侠

这不是跟画链条的程序一个思路吗?

daiguafan 发表于 2013-7-14 20:05:25

可否给个思路啊

daiguafan 发表于 2013-7-14 21:57:57

nzl1116 发表于 2013-7-14 17:16 static/image/common/back.gif
这不是跟画链条的程序一个思路吗?

能够给个思路么

vectra 发表于 2013-7-14 22:13:45

需要指定一个每次移动的步长值,然后是通过多段线各个顶点和一堆矢量运算来得到下一个大圆心的位置,执行你画小圆的逻辑,直到多段线结束。

nzl1116 发表于 2013-7-15 05:01:10

daiguafan 发表于 2013-7-14 21:57 static/image/common/back.gif
能够给个思路么

绘制链条的,你看看

daiguafan 发表于 2013-7-15 08:50:24

vectra 发表于 2013-7-14 22:13 static/image/common/back.gif
需要指定一个每次移动的步长值,然后是通过多段线各个顶点和一堆矢量运算来得到下一个大圆心的位置,执行你 ...

大圆的直径就是移动的步长

daiguafan 发表于 2013-7-15 08:51:02

nzl1116 发表于 2013-7-15 05:01 static/image/common/back.gif
绘制链条的,你看看

谢谢啊,我先看看
页: [1] 2
查看完整版本: 请问如下情形如何设置循环