找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 538|回复: 1

[LISP程序]:贴个以前在001写的动态fillet倒角程序

[复制链接]
发表于 2002-11-27 02:12:20 | 显示全部楼层 |阅读模式

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

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

×

  1.   [FONT=courier new]
  2. (princ "\n fd=======动态fillet 倒圆角------------lxx.2001.5ok")
  3. (princ "\n支持line,arc,*polyline,circle--除了*polyline+*polyline ")
  4. ;;用了grread;*error*
  5. ;;esc中断处理;undo-mark /back恢复;支持键盘输入
  6. ;;=============================================================
  7. (defun c:fd (/ opdmode ep1 ep2 pt1 opt roop cenpt fr gr pt2 n na)
  8. (princ "\n fd=======动态fillet 倒圆角-----undo/b-------雄啸lxx.2001.5ok")
  9. (princ "\n支持line,arc,*polyline,circle--除了*polyline+*polyline ")
  10. (setq opdmode (getvar "pdmode"))
  11. (command "undo" "m" "cmdecho" "0" "blipmode" "off" "pdmode" "2")
  12. (while (not(setq ep1 (entsel "\n点取第一条线:"))))
  13. (while (not(setq ep2 (entsel "\n点取第二条线:"))))
  14. (setq pt1 (cadr ep2)
  15.       ;pt1 (getpoint "\nfillet 半径第一点:")
  16.       opt pt1
  17.       roop "true"
  18.       fr (getvar "filletrad")
  19. )
  20. (princ "\n当前filletrad=")(princ fr)
  21. (command "point" pt1 "filletrad" "");;; for undo
  22. (setq cenpt (entlast))
  23. (princ "\nfillet 半径第二点:")
  24. (while roop
  25.   (defun *error* (msg)(command "undo" "1" "erase" cenpt "")(princ "\n错误:")(princ msg)(setq *error* nil))
  26.   (setq gr (grread t 7 0))
  27.   (if (/= (car gr) 5)
  28.     (setq roop nil)
  29.     (if (not(equal (cadr gr) opt));;;else
  30.      (progn
  31.       (command "undo" "1")
  32.       (setq pt2 (cadr gr)
  33.             fr (distance pt1 pt2)
  34.             opt pt2)
  35.       (princ "\n当前filletrad=")(princ fr)
  36.       (setvar "filletrad" fr)
  37.       (command "fillet" ep1 ep2 ^c)
  38.      );end progn
  39.     );end if
  40.   );end if
  41. );end while
  42. (setq *error* nil)
  43. (if (= (car gr) 3);;;;;;;左键定filletrad
  44.   (setq  pt2 (cadr gr)
  45.          fr (distance pt1 pt2))
  46. )
  47. (if (and (= (car gr) 2)
  48.          (and(< 47 (cadr gr))
  49.              (> 58 (cadr gr))
  50.     )    );;;0~9 ascii 码值48~57
  51.     (setq n (chr(cadr gr))
  52.           na (getstring (strcat "\n键盘输入:filletrad=" n))
  53.           fr (atof (strcat n na))
  54.     )
  55. )
  56. (princ "\n当前filletrad=")(princ fr)
  57. (command "undo" "1")
  58. (setvar "filletrad" fr)
  59. (command "fillet" ep1 ep2 ^c "erase" cenpt "")
  60. (setvar "pdmode" opdmode)
  61. (princ)
  62. )
  63.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2002-11-27 02:22:05 | 显示全部楼层
演示
抱歉,动态过程无法捕捉
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 23:38 , Processed in 0.255872 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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