明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1282|回复: 1

[讨论] 圆弧取点问题

  [复制链接]
发表于 2014-8-6 18:29 | 显示全部楼层 |阅读模式
本帖最后由 流_星 于 2014-8-6 18:30 编辑

(while
         (= nil
          (setq pnt1 (getpoint "\nPick point to place angle: "))
         )
          (alert "\nPlease pick a point")
        )
(setq a 40 b 40 c 5)
        (setq r c)
     (setq d (/ c 2))
     (setq e (/ a 2))
     (setq f (/ b 2))
     (setq r1 (sqrt (/ (expt r 2) 2)))
     (setq r2 (sqrt (/ (expt d 2) 2)))
     (setq pnt2 (list (+(car pnt1)f) (-(cadr pnt1)e) (caddr pnt1)))
     (setq pnt3 (list (+(car pnt1)f) (+(cadr pnt1)e) (caddr pnt1)))
     (setq pnt4 (list (-(+(car pnt1)f)d) (+(cadr pnt1)e) (caddr pnt1)))
     (setq pnt5 (list (-(-(+(car pnt1)f)d)r2) (+(-(+(cadr pnt1)e)d)r2) (caddr pnt1)))
     (setq pnt6 (list (-(+(car pnt1)f)c) (-(+(cadr pnt1)e)d) (caddr pnt1)))
     (setq pnt7 (list (-(+(car pnt1)f)c) (+(+(-(cadr pnt1)e)c)r)(caddr pnt1)))
     (setq pnt8 (list (+(-(-(+(car pnt1)f)c)r)r1)(-(+(+(-(cadr pnt1)e)c)r)r1)(caddr pnt1)))
     (setq pnt9 (list (-(-(+(car pnt1)f)c)r) (+(-(cadr pnt1)e)c) (caddr pnt1)))
     (setq pnt10 (list (+(-(car pnt1)f)d) (+(-(cadr pnt1)e)c) (caddr pnt1)))
     (setq pnt11 (list (-(+(-(car pnt1)f)d)r2)(+(+(-(cadr pnt1)e)d)r2)(caddr pnt1)))
     (setq pnt12 (list (-(car pnt1)f) (+(-(cadr pnt1)e)d) (caddr pnt1)))
     (setq pnt13 (list (-(car pnt1)f) (-(cadr pnt1)e) (caddr pnt1)))
     (setvar "osmode" 0)
     (command "._pline" pnt2 pnt3 pnt4 "_a" "_s" pnt5 pnt6 "_l" pnt7 "_a" "_s" pnt8 pnt9 "_l" pnt10
      "_a" "_s" pnt11 pnt12 "_l" pnt13 "_c")

这是一段画角钢的程序,是老外的

请教大家,r1,r2,与PNT5点,Pnt8点,PNt11点,啥关系,原来是啥
我想了半天没有想明白,请高手指点一下
发表于 2014-8-7 15:15 | 显示全部楼层
r1,r2是用沟股定理计算的圆弧中间点坐标值(半径/根号2)
pnt5,pnt8,pnt11是圆弧中间点。
下面是压缩过的程序:
  1. (defun c:tt ()
  2. (while (= nil (setq pt1 (getpoint "\nPick point to place angle: ")))
  3. (alert "\nPlease pick a point")
  4. )
  5. (setq a 40.0 b 40.0 c 5.0)
  6. (setq r c)
  7. (setq d (/ c 2))
  8. (setq e (/ a 2))
  9. (setq f (/ b 2))
  10. (setq x (car pt1) y (cadr pt1) z (caddr pt1))
  11. (setq r1 (sqrt (/ (expt r 2) 2)))
  12. (setq r2 (sqrt (/ (expt d 2) 2)))
  13. (setq pt2 (list (+ x f) (- y e) z))
  14. (setq pt3 (list (+ x f) (+ y e) z))
  15. (setq pt4 (list (-(+ x f)d) (+ y e) z))
  16. (setq pt5 (list (-(+ x f)d r2) (-(+ y e r2)d) z))
  17. (setq pt6 (list (-(+ x f)c) (-(+ y e)d) z))
  18. (setq pt7 (list (-(+ x f)c) (+(- y e)c r) z))
  19. (setq pt8 (list (-(+ x f r1)c r) (+(- y e r1)c r) z))
  20. (setq pt9 (list (-(+ x f)c r) (+(- y e)c) z))
  21. (setq pt10 (list (+(- x f)d) (+(- y e)c) z))
  22. (setq pt11 (list (+(- x f r2)d) (+(- y e)d r2) z))
  23. (setq pt12 (list (- x f) (+(- y e)d) z))
  24. (setq pt13 (list (- x f) (- y e) z)))
  25. (setvar "osmode" 0)
  26. (command "._pline" pt2 pt3 pt4 "_a" "_s" pt5 pt6 "_l" pt7 "_a" "_s" pt8 pt9 "_l" pt10
  27.       "_a" "_s" pt11 pt12 "_l" pt13 "_c")
  28. (princ)
  29. )
还可以这样写:
  1. (defun c:tt ()
  2. (while (= nil (setq pt1 (getpoint "\nPick point to place angle: ")))
  3. (alert "\nPlease pick a point")
  4. )
  5. (setq a 40.0 b 40.0 c 5.0)
  6. (setq r c)
  7. (setq d (/ c 2))
  8. (setq e (/ a 2))
  9. (setq f (/ b 2))
  10. (setq x (car pt1) y (cadr pt1) z (caddr pt1))
  11. (setq r1 (sqrt (/ (expt r 2) 2)))
  12. (setq r2 (sqrt (/ (expt d 2) 2)))
  13. (setq pt0 (list (- x f) (- y e) z)))
  14. (setq pt2 (list (+ x f) (- y e) z))
  15. (setq pt3 (list (+ x f) (+ y e) z))
  16. (setq pt4 (list (-(+ x f)d) (+ y e) z))
  17. (setq pt5 (list (-(+ x f)c) (-(+ y e)d) z))
  18. (setq pt6 (list (-(+ x f)c) (+(- y e)c r) z))
  19. (setq pt7 (list (-(+ x f)c r) (+(- y e)c) z))
  20. (setq pt8 (list (+(- x f)d) (+(- y e)c) z))
  21. (setq pt9 (list (- x f) (+(- y e)d) z))
  22. (setvar "osmode" 0)
  23. (command "._pline" pt2 pt3 pt4 "_a" pt5 "_l" pt6 "_a" pt7 "_l" pt8 "_a" pt9 "_l" pt0 "_c")
  24. (princ)
  25. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 21:53 , Processed in 0.352926 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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