找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 573|回复: 2

[教学]:请各位大虾帮我看一哈摆线轮的这个程序

[复制链接]
发表于 2005-5-8 15:25:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
老师最近要我用AutoLISP编写一个摆线方程的程序,进行摆线轮的绘制:下面的程序尚未编辑,请各位仁兄帮我检查,修改,先行谢过,
;角度与弧度转换函数
(defun C:dtr(a)                                                      
        (* pi (/ a 180.0))
         )
;主函数
(defun C:main()
;系统准备                                                   
        (setq sblip ( getvar "blipmode" ) )
        (setq scmde ( getvar "cmdecho" ) )
        (setvar "blipmode" 0 )
        (setvar "cmdecho" 0 )                                            
;参数输入
        (setq r2 ( getreal "\n输入针轮半径:"))
        (setq r3 ( getreal "\n输入摆线轮半径:"))
        (setq k ( getreal "\n输入短幅系数:"))
        (setq zb ( getreal "\n输入针轮齿数:"))
        (setq zg ( getreal "\n输入摆线轮齿数:"))
        (setq d ( getreal "\n输入计算步长:"))  
;参数转化
        (setq s 0.0)
        (setq s ( dtr s ))
        (setq d (dtr d ))                                                
;寻找摆线上东方零度起点
        (setq  l (* r3 (- (sin s ) (* (/ k zb )(sin (* zb s))))))
        (setq  m (* r3 (- (cos s ) (* (/ k zb )(cos (* zb s))))))
        (setq  w (sqrt ( - (+ (expt k 2) 1) (* k 2 (cos(* zg s ))))))
        (setq  o (/ (- (* k (sin (* zb s))) (sin s)) w))
        (setq  p (/ (- (* -1 k (cos(* zb s ))) (sin s )) w))
        (setq  x (+ l (* r2 o)))
        (setq  y (- m (* r2 p)))
        (setq  u (list x y ))                                             
;迭代循环绘制摆线轮廓上的点
        (command "pline" u)
        (while (< s (+ pi 0.001))
                (setq  l (* r3 (- (sin s ) (* (/ k zb )(sin (* zb s))))))
                (setq  m (* r3 (- (cos s ) (* (/ k zb )(cos (* zb s))))))
                (setq  w (sqrt ( - (+ (expt k 2) 1) (* k 2 (cos(* zg s ))))))
                (setq  o (/ (- (* k (sin (* zb s))) (sin s)) w))
                (setq  p (/ (- (* -1 k (cos(* zb s ))) (sin s )) w))
                (setq  x (+ l (* r2 o)))
                (setq  y (- m (* r2 p)))
                (setq  u (list x y ))
                (setq  s (+ s d))
                (command u)
        )                                                               
;两维面内的曲线光滑拟合
        (command " " "pedit" "last" "f" " ")                             
; 恢复系统原来状态                  
        (setvar "blipmode" sblip)
        (setvar "cmdecho" scmde)                                       
        (princ)
  )                                                                     
;程序结束
   
;加载操作:
command:(load "dtr(a))
command:(load "main")
command:main
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11305个

财富等级: 富甲天下

发表于 2005-5-8 21:33:05 | 显示全部楼层
函数:
(defun C:dtr(a)
(* pi (/ a 180.0))
)
应定义成:
(defun dtr(a)
(* pi (/ a 180.0))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-8 23:09:38 | 显示全部楼层
谢过二楼楼主,我还有一个问题,也是这个程序的关键就是,寻找摆线轮上的起点的问题,不知道我的编写是否有误,关于这条曲线的方程我上传了一下但是,传不上来,下面是我的联系方式:song.cs2001@163.com  QQ:276048553
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 05:26 , Processed in 0.162482 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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