几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » 数据库ObjectDBX
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-28, 10:25 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】visual lisp开发三维圆柱螺旋线程序

visual lisp开发三维圆柱螺旋线程序
www.dimcax.com
visual lisp开发三维圆柱螺旋线程序
管理提醒: 本帖被 tandongchi 从 autodesk技术、教程、资料交流区 移动到本区(2007-07-08)   摘 要  本文介绍了用autocad 2000 中的visual lisp开发工具开发三维圆柱螺旋线程序,给出了开发程序代码和运行结果,以及三维弹簧、螺纹绘制实例。
  关键词  visual lisp 三维 圆柱螺旋线  
  1、 引言
  在众多的autocad开发工具中,autolisp是使用最简单、应用最广泛、使用者最多的一种开发工具。但是,autolisp只是一种解释型语言,且不能加密。为了解决这个问题,autodesk公司在autocad r14中推出了visual lisp的测试版,随后在autocad 2000中推出了visual lisp的正式版本。visual lisp完全兼容以前的autolisp,同时应用了autocad的另一个开发工具-----objectarx面向对象技术和activex技术,使visual lisp开发的应用程序功能更强大,运行速度更快,从而真正成为一个能开发商业软件的开发平台。本文作者采用autocad 2000 中的visual lisp进行了三维圆柱螺旋线程序开发,并与autocad 2000交互绘图结合,快速绘制三维螺纹和弹簧。
  2、 问题的提出
  笔者在用autocad 2000绘制三维工程图时,经常遇到绘制螺纹、弹簧这类三维圆柱螺旋线的问题。在autocad中,绘制三维线的命令有很多,如line、3dpoly、spline等命令,而可以作为三维拉伸路径的线只有3dpoly命令绘出的线可以胜任,而且不能使用其中的拟合项。因此,为了保证绘制的三维圆柱螺旋线尺寸精确,就必须输入大量精确数据,才能一点一点地画出所需的螺旋线,这样做起来非常麻烦。有关资料介绍采用圆弧近似构成螺旋线[1],但是这样画出的螺纹不能通过装配干涉检查。由于在autocad中不方便绘制螺旋线,为了解决这个问题,笔者采用编制一个lisp程序来实现。该程序可以实现圆柱螺旋线自动绘图,不仅可以用于绘制弹簧螺旋线和螺纹的螺纹线。还可以进行参数化绘图。
  3、 圆柱螺旋线的绘制
  3.1 圆柱螺旋线数学模型
  * 圆柱螺旋线的形成
  圆柱螺旋线是技术上应用最广的空间曲线,其形成如图1所示。一动点m沿圆柱的母线ab作等速直线运动,而该母线又绕圆柱的轴线作等角速旋转时,点m的运动轨迹即为圆柱螺旋线。
  * 数学模型
  当圆柱螺旋线的轴线与坐标系的z轴重合时,    
  圆柱螺旋线上动点m(x,y,z)的参数方程如下:   
  x=rcosα                 
  y=rsinα
  z=±t1*α/(2π)           
  在参数方程中:r为圆柱面的半径,α为螺旋线升角,t1为导程(即母线ab旋转一周时,动点m沿轴线方向上升的距离),右旋取正号,左旋取负号。
  3.2 程序框图
  开始
  参数r、t1、k赋值    
  给出基点坐标
  计算x, y, z各点坐标
  绘制螺旋线
  结 束
  3.3 程序代码
  打开autocad2000进入visual lisp开发环境,新建一个文件,在visual lisp文本编辑器窗口进行程序代码编制。   
  绘制圆柱螺旋线的autolisp程序代码如下:
  ; this program is using for drawing a helix
  (setq b1 (getpoint "请输入基点:"))   
  (setq r (getreal "半径 r=:"))
  (setq t1 (getreal "节距 t1=:"))
  (setq k (getint "段数 k=:"))
  (setq n (getint "圈数 n=:")) 
  (setq ta (/ (* 2 3.14159) k))
  (setq j1 (/ t1 k))
  (setq a 0)
  (setq jj 0)
  (setq ii 0)
  (command "ucs" "o" b1)
  (command "3dpoly" (list r 0 0))
  (repeat n
  (repeat k
  (setq jj (+ jj 1))
  (setq a (+ ta a))
  (setq x (* r (cos a)))
  (setq y (* r (sin a)))
  (setq z (* j1 jj))
  (setq p2 (list x y z))
  (command p2)
  )
  (setq ii (+ ii 1))
  (setq z (* t1 ii))
  )
  (command "" )
  段数k 最好为36或36的倍数(72)。绘弹簧时,n为弹簧的总圈数;绘螺纹时,若螺纹的长度为l,则n=l / t1。将这个lisp程序保存为“helix.lsp"。
  在编写lisp程序时,应注意输入一定要正确,括号和空格都必不可少,否则会影响到螺旋线的轨迹。
  3.4 程序运行结果
  加载并运行 "helix.lsp" 程序,首先在autocad2000绘图窗口命令行出现提示,按提示输入参数r、t1、k、n值后,螺旋线即画好。
  4、 应用
  * 绘制弹簧
  在autocad2000 绘图窗口改变坐标系,用“画圆”的命令绘制弹簧截面,再将螺旋线作为弹簧拉伸路径拉伸,进行适当剖切绘制支承段即画好如图5所示弹簧。
  我们绘制的弹簧参数如下:
  外径d=14mm,d=1mm,节距t=4mm,有效圈数n1=10,支承圈数n2=2.5,右旋。
  * 绘制螺纹
  如果用“画多边形”的命令绘制三角形或矩形截面,再将螺旋线作为螺纹拉伸路径拉伸。然后进行适当修整,我们可以得到如图6 所示螺纹。
  5、 结论
  (1) 在visual lisp开发环境加载并运行圆柱螺旋线autolisp程序,在autocad2000绘图窗口命令行后,按提示输入不同的参数,即可绘制所需要的三维圆柱螺旋线。故此,可以参数化快速绘制各种三维螺纹和弹簧。
  (2)以前autolisp应用程序要另找文本编辑器编写源代码,然后回到autocad中加载运行,不便于程序的调试。用visual lisp 集成开发环境,我们可以在一个单独的环境中执行文本编辑、程序调试、与autocad及其他应用程序的交互等操作,极大地方便了autocad的二次开发,满足技术人员autocad的二次开发需要。
[p:3]

如果大家觉得好用就支持一下...

alfkdjlaskdjflak

还是不行啊

zhichi

这样的实例更容易学习

不知原来的ads现在是用什么替代了?我上学时因为lisp运算效率差,所有数据处理都是通过ads环境用c开发的。

这样的实例更容易学习
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 07:50 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多