乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 25|回复: 0

[编程交流] 分享!沿cur的弧

[复制链接]

26

主题

145

帖子

122

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 22:17:46 | 显示全部楼层 |阅读模式
来源:bbs。xdcad。org/thread-675894-1-1。html
 
 
  1. (defun mkarc (p w f / p1 p2)
  2. (cond
  3. ((= f 3) (setq p1 (mapcar '- p (list (* -0.25 w) (* 0.5 (abs w)) ))
  4. p2 (mapcar '- p (list 0 (abs w) ))
  5. )
  6. (vl-cmdf "arc" p p1 p2)
  7. )
  8. ((= f 2) (setq p1 (mapcar '+ p (list (* 0.25 w) (* -0.5 (abs w)) ))
  9. p2 (mapcar '+ p (list (* 0.25 w) (* 0.5 (abs w)) ))
  10. )
  11. (vl-cmdf "arc" p1 p p2)
  12. )
  13. ((= f 1) (setq p1 (mapcar '+ p (list (* 0.25 w) (* 0.5 (abs w)) ))
  14. p2 (mapcar '+ p (list 0 (abs w) ))
  15. )
  16. (vl-cmdf "arc" p p1 p2)
  17. )
  18. )
  19. (entlast)
  20. )
  21. (defun mat:rotation ( cen ang / c s x y)
  22. (setq c (cos ang) s (sin ang))
  23. (setq x (car cen) y (cadr cen))
  24. (list
  25.    (list c (- s) 0. (- x (- (* c x) (* s y))))
  26.    (list s    c  0. (- y (+ (* s x) (* c y))))
  27.    '(0. 0. 1. 0.)
  28.    '(0. 0. 0. 1.)
  29. )
  30. )
  31. (defun HH:PtFirstAngle (obj pt)
  32. (setq param (vlax-curve-getParamAtPoint obj pt))
  33. (angle pt (mapcar '+ pt (vlax-curve-getFirstDeriv obj param)))
  34. )
  35. (defun c:tt ( / aa a an d d1 d2 e f i l odlst p1 p2 pr q w x y)
  36. (setq odlst (mapcar 'getvar '("cmdecho" "osmode" "peditaccept")))
  37. (mapcar 'setvar '("cmdecho" "osmode") '(0 544))
  38. (setq w (getreal "\nEnter the width of arc :") ;If the value is negative, the direction of the arc is opposite
  39. d (getreal "\nInput arc spacing :")
  40. a (car (entsel "\nSelect the curve :"))
  41. p1 (getpoint "\nStart point:")
  42. p2 (getpoint "\nEnd point:")
  43. l (list p1 p2)
  44. l (vl-sort l '(lambda (x y) (< (vlax-curve-getDistAtPoint a x) (vlax-curve-getDistAtPoint a y)) ) )
  45. p1 (car l)
  46. p2 (cadr l)
  47. d1 (vlax-curve-getDistAtPoint a p1)
  48. d2 (vlax-curve-getDistAtPoint a p2)
  49. i -1
  50. l nil
  51. )
  52. (while (< (setq pr (+ (* (setq i (1+ i)) d) d1)) d2)
  53. (setq l (cons (vlax-curve-getPointAtDist a pr) l))
  54. )
  55. (setq l (reverse l))
  56. (setvar "osmode" 0)
  57. (princ "\n[1-upper,2-middle,3-lower]")
  58. (setq aa (grread))
  59. (cond
  60. ((= (cadr aa) 49) (setq f 1) )
  61. ((= (cadr aa) 50) (setq f 2) )
  62. ((= (cadr aa) 51) (setq f 3) )
  63. )
  64. (mapcar '(lambda(x)
  65. (setq an (HH:PtFirstAngle a x) q (mat:rotation x an) e (mkarc x w f))
  66. (vla-transformby (vlax-ename->vla-object e) (vlax-tmatrix q))
  67. ) l)
  68. (mapcar 'setvar '("cmdecho" "osmode") odlst)
  69. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 06:15 , Processed in 0.418486 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表