乐筑天下

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

[编程交流] 倒角尺寸,有问题

[复制链接]

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-5 23:47:02 | 显示全部楼层 |阅读模式
我的朋友帮我写了一个代码:
  1. (defun c:test (/ x1 x2 y1 y2 points point1 point2 point_1 point_2)
  2.        ;Get PL vertex
  3.        (setq points '())
  4.         (setq entselect (entsel))
  5.        (setq entname (car entselect))
  6.         (setq select_point (cadr entselect))
  7.         (setq x (car select_point) y (cadr select_point))
  8.         (setq ent (entget entname))
  9.        (if (equal  (cdr (assoc 0 ent))  "LINE" )
  10.             (progn
  11.                 (setq point_1 (cdr (assoc 10 ent))   point_2 (cdr (assoc 11 ent))  )
  12.                 (setq x1 (car point_1) y1 (cadr point_1) x2 (car point_2) y2 (cadr point_2))
  13.                 (setq le_point (list (* 0.5 (+ x1 x2)) (* 0.5 (+ y1 y2)) ))
  14.                 )
  15.          
  16.         (progn
  17.         (mapcar '(lambda (x)  (cond
  18.                                      ((= 10 (car x))  (setq points (cons (cdr x) points)) )               
  19.                                  )
  20.                        )
  21.                          ent
  22.         )
  23.     (setq add_point (car points))
  24.         (setq points (reverse points))
  25.         (setq points (cons add_point points))
  26.         (setq points (reverse points))
  27.         (princ 'lyt)
  28.         ;Get chamfer vertex marked
  29.         (setq judgement 1)
  30.         (while judgement
  31.                (setq point1 (car points))
  32.                    (setq point2 (cadr points))
  33.                    (setq x1 (car point1) y1 (cadr point1) x2 (car point2) y2 (cadr point2))
  34.                   
  35.                    (if (and (or (and (< x x1) (> x x2)) (and (< x x2) (> x x1))) (or (and (< y y1) (> y y2)) (and (< y y2) (> y y1))))
  36.                         (progn
  37.                                 (setq point_1 point1 point_2 point2 judgement 'nil)
  38.                                 )
  39.                    )
  40.                   
  41.                    (setq points (cdr points))
  42.         )
  43.         (setq x1 (car point_1) y1 (cadr point_1) x2 (car point_2) y2 (cadr point_2))
  44.         (setq le_point (list (* 0.5 (+ x1 x2)) (* 0.5 (+ y1 y2)) ))
  45.        
  46.         )
  47.         )
  48.        
  49.        
  50.        
  51.         ;Calc & dim
  52.         (setq choice1 (abs (- y1 y2))   )
  53.         (setq choice2 (abs (- x1 x2))   )
  54.         (if (= choice1 choice2)
  55.             (setq choice (strcat "C" (rtos choice1 2 1)))
  56.                 (setq choice (strcat  (rtos choice1 2 1) "x" (rtos choice2 2 1)))
  57.         )
  58.         (setq height 2.5)   ;Change test height
  59.         (command "qleader" le_point pause pause)
  60.         (setq ent (entget (entlast)))
  61.         (setq points '(""))
  62.     (mapcar '(lambda (x)
  63.                        (cond
  64.                                 ((= 10 (car x)) (setq points (cons (cdr x) points)))                                          
  65.                                        )
  66.                )
  67.                    ent
  68.      )
  69.     (setq point_end   (car  points))
  70.     (setq point_start (cadr points))
  71.     (if (> (- (car point_end) (car point_start)) 0)
  72.         (progn
  73.                    (setq point (list (+ (car point_end)  (* 0.7 height)) (- (cadr point_end) (* 0.5 height))))
  74.                (command "text" point height 0 choice )
  75.             )
  76.            (progn
  77.                    (setq point (list (- (car point_end) (* 0.7 height) ) (- (cadr point_end) (* 0.5 height))))
  78.                            (princ point)
  79.                (command "text" point height 0 choice )
  80.                   (setq entname (entlast))
  81.                    (setq ent (entget entname))
  82.                    (entmod
  83.                          (mapcar '(lambda ( x)
  84.                                                (cond
  85.                                                       ((= (car x) 72) (cons (car x)  2))
  86.                                                                               ((= (car x) 11) (cons (car x)  point))
  87.                                                                               (t x)
  88.                                                             )
  89.                                                     )
  90.                                        ent
  91.                               )
  92.                     )          
  93.             )
  94.     )
  95. )

 
该代码有以下问题:
1.必须运行“qleader”,将“comment type”设置为“none”
2.dim值位于导线后面,而不是导线顶部
3.应添加“设置文字高度”并使tim层变暗
4.如果图形不是水平或垂直的,那么dim将是错误的,请查看照片
004707s2nihzaicx0acn0p.jpg
正确的方法是:1选择倒角边,2选择一个参考,3选择另一个参考边,看照片:
004709v5g27o6l5ajhak5w.jpg
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-5 23:54:02 | 显示全部楼层
大家好,回答一下,好吗谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 00:01:36 | 显示全部楼层
有趣的
 
  1. .[b][color="#006400"]..... moved to post #6 ...[/color][/b]
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:07:36 | 显示全部楼层
 
这种做法不支持线路,只支持pl
回复

使用道具 举报

4

主题

35

帖子

33

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 00:13:17 | 显示全部楼层
该代码有以下问题:
1.必须运行“qleader”,将“comment type”设置为“none”
解决方案:将qleader更改为leader(命令“leader”le\u point pause pause“”“n”)
#2和#3我不清楚
#4.这是一个乏味的编码。。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 00:17:21 | 显示全部楼层
 
线实体更容易编码。
 
代码已更新
 
  1. (defun c:chfd (/ _dxf _para _valid a typ obj p1 p2 intrpt)
  2. (Defun _dxf (e dx) (cdr (assoc dx (entget e))))
  3. (defun _para (o p)
  4.    (vlax-curve-getparamatpoint
  5.      o
  6.      (vlax-curve-getClosestPointTo o p)
  7.    )
  8. )
  9. (defun _valid   (e typ / e)
  10.      (if (wcmatch (Setq v (_dxf e 0)) typ)
  11.            v))
  12.      (if (and (setq a (entsel "\nSelect Chamfered segment: "))
  13.               (Setq typ (_valid (setq obj (car a))
  14.                                 "LWPOLYLINE,LINE")))
  15.         (if (eq typ "LINE")
  16.                    (progn
  17.                          (while (not (And
  18.                                            (setq obj2 (car  (entsel  "\nSelect another segment: ")))
  19.                                            (setq obj3 (car  (entsel  "\nAnd another: ")))
  20.                                            (_valid obj2 "LINE")
  21.                                            (_valid obj3 "LINE"))
  22.                                      )
  23.                           )
  24.                          (setq intrpt (inters (_dxf obj2 10)
  25.                                               (_dxf obj2 11)
  26.                                               (_dxf obj3 10)
  27.                                               (_dxf obj3 11)
  28.                                               nil))
  29.                          (Setq p1 (_dxf obj 10) p2 (_dxf obj 11))
  30.                          )
  31.                 (progn
  32.                              (setq prm1 (_para obj (cadr a)))
  33.                         (setq pts (mapcar 'cdr
  34.                                           (vl-remove-if-not
  35.                                                 '(lambda (k)
  36.                                                        (= (car k) 10)
  37.                                                        )
  38.                                                 (entget obj)
  39.                                                 )
  40.                                           )
  41.                               )
  42.                   (setq inbetween (vl-some '(lambda        (j k)
  43.                                           (if (< (_para obj j) prm1 (_para obj k))
  44.                                             (list j k)
  45.                                           )
  46.                                         )
  47.                                        pts
  48.                                        (cdr pts)
  49.                               )
  50.                   )
  51.                        (and
  52.                         (setq p1 (cadr (member (car inbetween) (reverse pts))))
  53.                         (setq p2 (cadr (member (Cadr inbetween) pts)))
  54.                         (setq intrpt (inters p1  (Car inbetween)
  55.                                p2  (cadr inbetween) nil)
  56.                                 )
  57.                                (setq p1 (Car inbetween) p2 (cadr inbetween))
  58.                         )
  59.                    )
  60.                    )(princ "\nNull/Invalid selection")
  61.          
  62.          )
  63.          (if intrpt
  64.                  (print (strcat "<<< "
  65.                          (rtos (distance p1 intrpt) 2 2)
  66.                          "x"
  67.                          (rtos (distance p2 intrpt) 2 2)
  68.                          " >>>"
  69.                  )
  70.           )(princ "\nInvalid data")
  71.              )(princ)
  72.          )

 
是否希望代码同时适用于PLINE和LINE图元?
代码已更新
 
 
 
嗯,不是真的
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:22:14 | 显示全部楼层
 
很好!但我两者都想要!,非常感谢pBe!我真的很感谢你的帮助
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:25:59 | 显示全部楼层
主人在哪里?请帮帮我!
回复

使用道具 举报

4

主题

35

帖子

33

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 00:33:35 | 显示全部楼层
 
我只是想让每个人都充满动力。
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:40:20 | 显示全部楼层
 
哈!你是对的!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:29 , Processed in 1.172804 second(s), 86 queries .

© 2020-2025 乐筑天下

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