明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybir

如何在纯CAD中,用lisp程序实现尺寸驱动?

  [复制链接]
 楼主| 发表于 2007-8-20 11:00:00 | 显示全部楼层

这个是我找到的演示,但这个不是CAD画出来的,我是想如果要在CAD这么画,其编程原理和思路该如何?

我觉得这个很难,绝对是一个挑战.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2007-8-20 14:38:00 | 显示全部楼层

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

发表于 2007-8-20 15:07:00 | 显示全部楼层
还看不太明白,特别是点角点再点圆那一段
发表于 2007-8-20 15:44:00 | 显示全部楼层
1、楼主的动画,是在求解:四边形边长给定,那么四个角点都在同一个圆上时,这个圆的半径是多少?
2、对于独立的问题,可以很好的解决。难就难在要找到这些问题的共性,写出通用过程来。
重点在于"约束"。
3、前面我发的动画,在激活运算时是用对象反应器触发的。不使用反应器,手动更新也是可以的。因为所有运算数据均扩展在对象之上。
模拟代码在:http://www.acad.net.cn/viewthread.php?tid=348&page=1&extra=page%3D1
 楼主| 发表于 2007-8-20 16:56:00 | 显示全部楼层

我这个演示的图形是inventor做的,不过pro/e也可以达到.

如果把难度再降低一点,就是这个尺寸驱动的只有line和circle两种图形,不知道会不会好编一些?

因为这类问题的绝大部分是直线和圆。

发表于 2007-8-20 17:09:00 | 显示全部楼层

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

=>角點與圓重合

那是inventor畫草圖的動畫,用lisp寫這種驅動不太實際,我那頭像就是inventor做的!

 楼主| 发表于 2007-8-20 18:09:00 | 显示全部楼层

这里有一篇文章提到了尺寸驱动的原理。但是很难看懂。

(在实际工作中有时候会出现一些求解的问题,用尺寸驱动可以实现)

既然可以用VB和+R14实现尺寸驱动,我想用Lisp一定也可以实现,关键是理解这个原理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2007-8-20 18:52:00 | 显示全部楼层
  1. (defun JS (LST / ANG LST OLD R RI TMP)
  2.     ;;初始化半径
  3.     (setq R  (* 0.25 (apply '+ LST))
  4.    RI (* 0.1 R)
  5.     )
  6.     (setq TMP pi
  7.    OLD 0
  8.     )
  9.     (while (> (abs TMP) 1e-8)
  10. ;;计算圆心角和之半
  11. (setq ANG 0)
  12. (foreach N LST
  13.      (setq N   (* 0.5 N)
  14.     ANG (+ ANG
  15.     (atan
  16.         N
  17.         (sqrt (- (* R R) (* N N)))
  18.     )
  19.         )
  20.      )
  21. )
  22. (setq TMP (- ANG pi))
  23. (if (< (* OLD TMP) 0)
  24.      (setq RI (* 0.5 RI))
  25. )
  26. (if (< TMP 0)
  27.      (setq R (- R RI))
  28.      (setq R (+ R RI))
  29. )
  30. (setq OLD TMP)
  31.     )
  32.     R
  33. )
  34. ;;;=============================
  35. ;;;测试
  36. (setq R (JS '(120 70 130 100)))
  37. (princ "\n半径为: ")
  38. (princ (rtos R 2 6))
  39. (princ)
发表于 2007-8-20 22:22:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-20 22:27:42 编辑

这个问题的实质是几何变量的约束问题,通过逐步增加约束,使问题逐步得到解决。


下面这个演示是用相邻直线间起终点坐标进行相互关联的示意:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2007-8-21 12:00:00 | 显示全部楼层
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)    ) &nb

ZML的方法很好,尽管只适用这一个题目,但方法可以稍加改变就能解决其他相似问题。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-16 10:36 , Processed in 0.167421 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表