highflybir 发表于 2007-8-20 11:00:00

<p></p><p>这个是我找到的演示,但这个不是CAD画出来的,我是想如果要在CAD这么画,其编程原理和思路该如何?</p><p>我觉得这个很难,绝对是一个挑战.</p>

ZZXXQQ 发表于 2007-8-20 14:38:00

<p>难度忒大!这是PRO/E画的吧?</p>

无痕 发表于 2007-8-20 15:07:00

还看不太明白,特别是点角点再点圆那一段

zml84 发表于 2007-8-20 15:44:00

1、楼主的动画,是在求解:四边形边长给定,那么四个角点都在同一个圆上时,这个圆的半径是多少?<br/>2、对于独立的问题,可以很好的解决。难就难在要找到这些问题的共性,写出通用过程来。<br/>重点在于"约束"。<br/>3、前面我发的动画,在激活运算时是用对象反应器触发的。不使用反应器,手动更新也是可以的。因为所有运算数据均扩展在对象之上。<br/>模拟代码在:http://www.acad.net.cn/viewthread.php?tid=348&amp;page=1&amp;extra=page%3D1<br/>

highflybir 发表于 2007-8-20 16:56:00

<p>我这个演示的图形是inventor做的,不过pro/e也可以达到.</p><p>如果把难度再降低一点,就是这个尺寸驱动的只有line和circle两种图形,不知道会不会好编一些? </p><p>因为这类问题的绝大部分是直线和圆。</p>

龙龙仔 发表于 2007-8-20 17:09:00

<p>还看不太明白,特别是点角点再点圆那一段</p><p>=&gt;角點與圓重合</p><p>那是inventor畫草圖的動畫,用lisp寫這種驅動不太實際,我那頭像就是inventor做的!</p>

highflybir 发表于 2007-8-20 18:09:00

<p>这里有一篇文章提到了尺寸驱动的原理。但是很难看懂。</p><p>(在实际工作中有时候会出现一些求解的问题,用尺寸驱动可以实现)</p><p>既然可以用VB和+R14实现尺寸驱动,我想用Lisp一定也可以实现,关键是理解这个原理。</p>

zml84 发表于 2007-8-20 18:52:00


(defun JS (LST / ANG LST OLD R RI TMP)
    ;;初始化半径
    (setq R(* 0.25 (apply '+ LST))
   RI (* 0.1 R)
    )
    (setq TMP pi
   OLD 0
    )
    (while (> (abs TMP) 1e-8)
;;计算圆心角和之半
(setq ANG 0)
(foreach N LST
   (setq N   (* 0.5 N)
    ANG (+ ANG
    (atan
      N
      (sqrt (- (* R R) (* N N)))
    )
      )
   )
)
(setq TMP (- ANG pi))
(if (< (* OLD TMP) 0)
   (setq RI (* 0.5 RI))
)
(if (< TMP 0)
   (setq R (- R RI))
   (setq R (+ R RI))
)
(setq OLD TMP)
    )
    R
)
;;;=============================
;;;测试
(setq R (JS '(120 70 130 100)))
(princ "\n半径为: ")
(princ (rtos R 2 6))
(princ)

zml84 发表于 2007-8-20 22:22:00

本帖最后由 作者 于 2007-8-20 22:27:42 编辑 <br /><br /> <p>这个问题的实质是几何变量的约束问题,通过逐步增加约束,使问题逐步得到解决。</p><p><br/>下面这个演示是用相邻直线间起终点坐标进行相互关联的示意:<br/></p>

highflybir 发表于 2007-8-21 12:00:00

zml84发表于2007-8-20 18:52:00static/image/common/back.gif(defun JS (LST / ANG LST OLD R RI TMP)&nbsp;&nbsp;&nbsp; ;;初始化半径&nbsp;&nbsp;&nbsp; (setq R&nbsp; (* 0.25 (apply '+ LST))&nbsp;&nbsp; RI (* 0.1 R)&nbsp;&nbsp;&nbsp; )&nbsp;&nb

<p>ZML的方法很好,尽管只适用这一个题目,但方法可以稍加改变就能解决其他相似问题。</p>
页: 1 [2] 3 4 5 6 7
查看完整版本: 如何在纯CAD中,用lisp程序实现尺寸驱动?