zara 发表于 2006-3-12 10:42:00

直接做到这样是不能的, 因为, ACAD 不支持360° 的圆弧, 所以, 第一次打断就不能实现. 比较简单的可能还是先切断成一个 1/n 圆弧, 然后再圆形阵列

ljpnb 发表于 2006-3-12 19:42:00

本帖最后由 作者 于 2006-3-13 7:53:43 编辑

(defun c:test (/ ent old-num num p0 p1 param div-param i point)
(setq ent (car (entsel "\n选择需要等分的圆:")))
(if (null old-num)
    (setq old-num 2)
)
(if (setq num (getint (strcat "\n输入等分数量<" (rtos old-num) ">:")))
    (setq old-num num)
    (setq num old-num)
)
(setq obj (vlax-ename->vla-object ent))
(setq p0   (vlax-curve-getStartPoint obj)
param   (vlax-curve-getEndParam obj)
div-param (/ param num)
)
(setq p1 (vlax-curve-getPointAtParam obj -0.1))
(command "break" ent "none" p1 "none" p0)
(setq i 1)
(repeat (1- num)
    (setq point (vlax-curve-getPointAtParam obj (* i div-param)))
    (command "break" ent "none" point "none" point)
    (setq ent (entlast))
    (setq obj (vlax-ename->vla-object ent))
    (setq i (1+ i))
)
(vla-put-endangle obj 0.0)
(princ)
)

xyp1964 发表于 2006-3-12 22:42:00

<P>(setq p1 (vlax-curve-getPointAtParam obj -0.1))</P>
<P>是一招,不错!</P>

chinadawei 发表于 2006-3-13 15:18:00

<P>也是,想也不能一步做到位吧,大不了,多做几步啊,反正要的结果是一样的就可以了,</P>
<P>&nbsp;</P>

hecsxl 发表于 2006-3-13 15:52:00

break

sony-lin 发表于 2006-3-13 19:36:00

<P><BR>命令: test<BR>选择需要等分的圆:<BR>输入等分数量&lt;2&gt;:8 ; 错误: no function definition: VLAX-ENAME-&gt;VLA-OBJECT<BR></P>
<P>这个是什么错误?&gt;?</P>

ljpnb 发表于 2006-3-13 20:17:00

sony-lin发表于2006-3-13 19:36:00static/image/common/back.gif
命令: test选择需要等分的圆:输入等分数量&lt;2&gt;:8 ; 错误: no function definition: VLAX-ENAME-&gt;VLA-OBJECT
这个是...

<BR>在程序前面加一句(vl-load-com)

柯梦楠 发表于 2006-3-14 10:30:00

用四楼的方法,如果四等分,画出四分之一,以圆心为中心环形阵列,多数等分时,只要由圆心连接相邻两个等分点,再修剪、环形阵列就可以了!

ljpnb 发表于 2006-3-14 11:54:00

18楼说是一般作图方法,那需要很多步操作,不觉得吗,为什么不用程序来实现呢。

柯梦楠 发表于 2006-3-15 10:14:00

<P>不是所有和事都要用程序才好吧?</P>
<P>如果是一个反复用到的命令或操作,用程序做出来当然是好,如果只是一次或很少使用,有编程时间还不如直接去做了!再说程序也不是所有人都会编写的,至少我是不会!</P>
页: 1 [2]
查看完整版本: 怎么切割等分圆??