明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2020|回复: 7

[源码] 使用lisp实现在cass中绘制缓和曲线子函数

[复制链接]
发表于 2011-5-11 15:21 | 显示全部楼层 |阅读模式
本帖最后由 fxj0927 于 2011-7-25 13:34 编辑

(defun hz_hhqx ()
  (setq x0 nil)
  (setq y0 nil)
  (setq x0 (nth 0 p0))
  (setq y0 (nth 1 p0))
  (setq L3 0.0)
  (setq ang3 (rem (- (/ (* pi 5) 2) ang0) (* pi 2)))
  (setq bln (/ 1.0 ra))
  (setq blm (/ (- ra rb) 2.0 Ls ra rb))
  (setq sj1 '(0.1739274226 0.3260725774 0.3260725774 0.1739274226))
  (setq sj2 '(0.0694318442 0.3300094782 0.6699905218 0.9305681558))

  (setvar "osmode" 0)
  (command "pline" (list x0 y0 0) "w" "0" ""
    (while (< L3 Ls)
      (cond

( (>= (- Ls L3) 0.5)

  (setq kk 0)

  (setq xi3 0 yi3 0)

  (setq L3 (+ L3 0.5))

  (repeat 4

    (setq sj1i (nth kk sj1))

    (setq sj2i (* (nth kk sj2) L3))
            (setq angii3 (+ ang3 (* zx sj2i (+ bln (* sj2i blm)))))
            (setq xi3 (+ xi3 (* sj1i (cos angii3))))
            (setq yi3 (+ yi3 (* sj1i (sin angii3))))
            (setq kk  (1+ kk))
          );repeat
          (setq angi3 (+ ang3 (* zx L3 (+ bln (* L3 blm))) (* 0.5 pi)))
          (setq xi3 (+ x0 (* L3 xi3)))
          (setq yi3 (+ y0 (* L3 yi3)))

  (command (list xi3 (- (* 2 y0) yi3) 0))

);画0.5

( (and (> (- Ls L3) 0) (< (- Ls L3) 0.5))

  (setq kk 0)

  (setq xi3 0 yi3 0)

  (setq L3 Ls)

  (repeat 4

    (setq sj1i (nth kk sj1))

    (setq sj2i (* (nth kk sj2) L3))
            (setq angii3 (+ ang3 (* zx sj2i (+ bln (* sj2i blm)))))
            (setq xi3 (+ xi3 (* sj1i (cos angii3))))
            (setq yi3 (+ yi3 (* sj1i (sin angii3))))
            (setq kk  (+ kk 1))
          );repeat
          (setq angi3 (+ ang3 (* zx L3 (+ bln (* L3 blm))) (* 0.5 pi)))
          (setq xi3 (+ x0 (* L3 xi3)))
          (setq yi3 (+ y0 (* L3 yi3)))

  (command (list xi3 (- (* 2 y0) yi3) 0))

);画剩余
      );cond
    );while
  );command
  (setvar "osmode" 1)
  (princ)
);hz_hhqx

我自己写的。需要的 拿去用。
发表于 2013-3-16 22:05 | 显示全部楼层
谢谢!!!很有用的东西
发表于 2013-3-17 17:23 | 显示全部楼层
这样不是很精确啦
 楼主| 发表于 2013-3-25 10:46 | 显示全部楼层
panzhongw 发表于 2013-3-17 17:23
这样不是很精确啦

很久之前写的东西了,短距离适用,长距离绘制有误差。绘制一段长度的曲线后终止命令,再启用继续绘制,这样要相对精确点。
发表于 2013-3-26 10:25 | 显示全部楼层
本帖最后由 zml84 于 2013-3-26 10:26 编辑



缓和曲线较精确计算lisp源码,参见 http://zml84.blog.sohu.com/85831383.html

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-3-26 13:54 | 显示全部楼层
zml84 发表于 2013-3-26 10:25
缓和曲线较精确计算lisp源码,参见 http://zml84.blog.sohu.com/85831383.html

嗯   好东西~
发表于 2013-6-4 11:29 | 显示全部楼层
楼主,我对这个不懂 ,能不能教下在CAD中加载后 ,怎么用呢
发表于 2013-6-5 11:26 | 显示全部楼层
zml84 发表于 2013-3-26 10:25
缓和曲线较精确计算lisp源码,参见 http://zml84.blog.sohu.com/85831383.html

这代码怎么用啊 也没有新的命令 加载后什么东西都不跳出来 新手请原谅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 05:26 , Processed in 0.231163 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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