乐筑天下

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

[编程交流] 绘制刀具退刀槽

[复制链接]

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 22:50:10 | 显示全部楼层 |阅读模式
1、输入值
2、输入B值
3、选择第一行
4、选择第二行
5、选择终点线
 
235012xvipjid4s0pweaij.png
 
结果是这样的
 
235014pbeeqla1ju0jnr3i.png
 
我想可以用lisp来做这个,谢谢你的帮助!
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:13:47 | 显示全部楼层
  1. (vl-load-com)
  2. (defun C:test ( / a b c d e ang p1 cp dp o)
  3. (if
  4. (and
  5.    (setq a (getdist "\nEnter distance or pick points for "A":")
  6.       b (getdist "\nEnter distance or pick points for "B":")
  7.           c (entsel "\nPick first line:")
  8.           d (entsel "\nPick second line:")
  9.           e (car (entsel "\nPick endline line:"))
  10.           cp (vlax-curve-getClosestPointTo (vlax-ename->vla-object (car c)) (cadr c) nil)
  11.          dp (vlax-curve-getClosestPointTo (vlax-ename->vla-object (car d)) (cadr d) nil)
  12.          ang (angle (vlax-curve-getClosestPointTo (vlax-ename->vla-object  e) cp nil) cp)
  13.          cp (vlax-curve-getClosestPointTo         (vlax-ename->vla-object  e) cp)         
  14.          dp (vlax-curve-getClosestPointTo         (vlax-ename->vla-object  e) dp)                          
  15.    )
  16. )
  17. (progn
  18.    
  19. (entmake
  20.   (list
  21.    (cons 0 "LINE")
  22.    (cons 10 (setq p1 (polar dp (angle dp cp) b)))
  23.    (cons 11 (polar p1 ang a))
  24.   )
  25. )
  26. (entmake
  27.   (list
  28.    (cons 0 "LINE")
  29.    (cons 10 (setq p1 (polar cp (angle cp dp) b)))
  30.    (cons 11 (polar p1 ang a))
  31.   )
  32. )
  33. (entmake
  34.   (list
  35.     (cons 0 "LINE")
  36.         (cons 10 (polar cp ang a))
  37.         (cons 11 (polar dp ang a))
  38.   )
  39. )
  40. (setq o (entlast) )
  41. (setvar 'filletrad 0)        
  42. (command ".fillet" (car c) o )
  43. (command ".fillet" (car d) o )
  44. (princ)  
  45. )
  46. ))
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:26:09 | 显示全部楼层
非常感谢你!jdiala。
你的日常生活很好,有一个选择,如下所示
 
有一个“L”值,
235016utoi66wzpv9vso1k.png
 
顺便说一句,当选择行时,第一行和第二行不能是同一行。两条线必须平行。否则,请提示它。
 
再次感谢。jdiala。
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:49:39 | 显示全部楼层
根据您的第二个请求。试试这个。
 
 
  1. (defun C:test ( / a b l d ang e1 e2 e3 a1 a2 a3 p p1 p2 p3 p4 select_e makeline)
  2. ;; JDiala 07-01-14
  3. ;; Cadtutor.net
  4. (defun select_e ( x msg / e sel)
  5. (while
  6.    (not e)
  7.      (progn
  8.        (setq sel (entsel msg))
  9.        (cond
  10.          ( (= nul sel)
  11.            (princ "\nMissed! ")
  12.          )
  13.          ( (/= x (cdr (assoc 0 (entget (car sel)))))
  14.            (princ "\nInvalid selection. " )
  15.          )        
  16.          ( (= x (cdr (assoc 0 (entget (car sel)))))
  17.            (setq e sel))
  18.          (t nil)
  19.        )
  20.      )
  21. )
  22. )
  23. (defun makeline (a b)
  24. (entmake (list (cons 0 "LINE") (cons 10 a)(cons 11 b)))
  25. )
  26. (setq a2 nil )
  27. (if
  28.    (setq a (getdist "\nEnter value for A: ")
  29.          b (getdist "\nEnter value for B: ")
  30.          l (getdist "\nEnter value for L: ")
  31.    )
  32.    (if
  33.      (setq e1 (select_e "LINE" "\nSelect first line : "))
  34.      (progn
  35.        (setq a1 (angle (setq p1 (cdr (assoc 10 (entget (car e1)))))
  36.                        (setq p2 (cdr (assoc 11 (entget (car e1)))))
  37.                 )
  38.              d  (distance p1 p2)   
  39.        )
  40.        (while (not a2)
  41.          (setq e2 (select_e "LINE" "\nSelect second line :"))
  42.            (cond
  43.              ( (equal (car e1) (car e2))
  44.                (princ "\nPicked the same line. Try again!")
  45.              )
  46.              ( (and
  47.                  (not
  48.                    (equal
  49.                      (setq a3
  50.                        (angle
  51.                          (cdr (assoc 10 (entget (car e2))))
  52.                          (cdr (assoc 11 (entget (car e2))))
  53.                        )
  54.                      ) a1 1e-6
  55.                    )
  56.                  )
  57.                  (not (equal (- a3 pi) a1 1e-6))
  58.                  (not (equal (+ a3 pi) a1 1e-6))               
  59.                )
  60.                (princ "\nLines are not parallel. Try again")
  61.              )
  62.              (t (setq a2 a1))
  63.            )
  64.        )
  65.        (setq e3 (select_e "LINE" "\nSelect third line : "))
  66.      )
  67.    )
  68. )
  69. (setq ang
  70.    (angle  
  71.      (setq p
  72.        (vlax-curve-getClosestPointTo
  73.          (setq e
  74.            (vlax-ename->vla-object
  75.              (car e1)
  76.            )
  77.          )
  78.          (cadr e1)
  79.        )
  80.      )
  81.      (setq p1
  82.        (vlax-curve-getClosestPointTo
  83.          (vlax-ename->vla-object
  84.            (car e3)
  85.          ) p
  86.        )
  87.      )
  88.    )
  89. )
  90. (makeline
  91.    (setq p1  (polar (cdr (assoc 10 (entget (car e3)))) (+ pi ang) l))
  92.    (setq p2  (polar (cdr (assoc 11 (entget (car e3)))) (+ pi ang) l))
  93. )
  94. (makeline
  95.    (setq p3  (polar (cdr (assoc 10 (entget (car e3)))) (+ pi ang) (+ l a)))
  96.    (setq p4  (polar (cdr (assoc 11 (entget (car e3)))) (+ pi ang) (+ l a)))
  97. )
  98. (makeline
  99.    (polar p3 (angle p3 p4) b)
  100.    (polar (polar p3 (angle p3 p4) b) ang a)
  101.    
  102. )
  103. (makeline
  104.    (polar p4 (angle p4 p3) b)
  105.    (polar (polar p4 (angle p4 p3) b) ang a)
  106. )
  107. (makeline
  108.    p1
  109.    (polar p1 ang l)
  110. )
  111. (makeline
  112.    p2
  113.    (polar p2 ang l)
  114. )
  115. (makeline
  116.   p3 (polar p3 (+ ang pi) (- d l a))
  117. )
  118. (makeline
  119.   p4 (polar p4 (+ ang pi) (- d l a))
  120. )
  121. (entdel (car e1))(entdel (car e2))
  122. (princ)
  123. )
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-6 00:03:06 | 显示全部楼层
 
非常感谢,jdiala,这套动作非常完美。
 
祝你一切顺利
安迪
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:33 , Processed in 1.703204 second(s), 65 queries .

© 2020-2025 乐筑天下

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