乐筑天下

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

[编程交流] 倒角程序,需要hel

[复制链接]
pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:08:31 | 显示全部楼层
演示代码。
 
  1. (defun c:demo (/ chfd data p1 p2 gr)
  2. ;;;        Demo for pBe Jan 2014                ;;;
  3. (defun *error* (msg)
  4.    (command "._undo" "_end")
  5.    (setvar 'cmdecho cmo)(setvar "dimtad" tad) (setvar "dimgap" gap)(setvar "Dimtxt" dtxt)
  6. ) ;_ end_defun
  7. (defun chfd (/ _dxf _para _valid a typ obj p1 p2 intrpt P3 P4)
  8. (Defun _dxf (e dx) (cdr (assoc dx (entget e))))
  9. (defun _valid   (e typ / e)
  10.      (if (wcmatch (Setq v (_dxf e 0)) typ)
  11.            v))
  12. (setq cmo (getvar 'cmdecho))
  13. (setvar 'cmdecho 0)  
  14. (command "._undo" "_begin")  
  15.      (if (and (setq a (entsel "\nSelect Chamfered segment: "))
  16.               (Setq typ (_valid (setq obj (car a))
  17.                                 "LWPOLYLINE,LINE")))
  18.         (if (eq typ "LINE")
  19.                    (progn
  20.                          (while (not (And
  21.                                            (setq obj2 (car  (entsel  "\nSelect another segment: ")))
  22.                                            (setq obj3 (car  (entsel  "\nAnd another: ")))
  23.                                            (_valid obj2 "LINE")
  24.                                            (_valid obj3 "LINE"))
  25.                                      )
  26.                           )
  27.                          (setq intrpt (inters (_dxf obj2 10)
  28.                                               (_dxf obj2 11)
  29.                                               (_dxf obj3 10)
  30.                                               (_dxf obj3 11)
  31.                                               nil))
  32.                         (Setq p3 (_dxf obj 10) p4 (_dxf obj 11)))
  33.           (progn
  34. ;;;         Kent Cooper                                                        ;;;
  35. ;;;        http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General        ;;;
  36. ;;;        /Find-segments-of-polyline/td-p/4785889                                    ;;;
  37.             (defun ptpar (par)
  38.               (reverse
  39.                 (cdr
  40.                   (reverse (vlax-curve-getPointAtParam plent par)
  41.                   )
  42.                 )
  43.               )
  44.             )
  45.             (setvar "osmode" 0)
  46.             (setq
  47.               plent  (car a)        ; the PolyLine ENTity name
  48.               verts  (cdr (assoc 90 (entget plent)))
  49.                                 ; number of VERTiceS
  50.               prepar (fix (vlax-curve-getParamAtPoint
  51.                             plent
  52.                             (osnap (cadr a) "_nea")
  53.                           )
  54.                      )
  55.                                 ; PREceding-pick-point vertex's PARameter value
  56.               p1     (ptpar (rem (1- (+ prepar verts)) verts))
  57.               p4     (ptpar prepar)
  58.               p3     (ptpar (rem (1+ prepar) verts))
  59.               p2     (ptpar (rem (+ 2 prepar) verts))
  60.             )                        ; setq
  61.             (setq intrpt (inters p1 p4 p2 p3 nil))
  62.           )
  63.                       )(princ "\nNull/Invalid selection")
  64.          
  65.          )
  66.      (list  P3 P4
  67.          (if intrpt
  68.                 (strcat "<<< "
  69.                          (rtos (distance p3 intrpt) 2 2)
  70.                          "x"
  71.                          (rtos (distance p4 intrpt) 2 2)
  72.                          " >>>"
  73.                  )
  74.            "Invalid data"
  75.              )
  76.          )
  77. )
  78. (setq tad (Getvar "dimtad") dtxt (getvar "Dimtxt")
  79. gap (getvar "dimgap"))
  80. (if (not height) (setq height 1.00))
  81. (setq height (cond
  82.                       ((getreal
  83.                              (strcat "\nEnter text height <"
  84.                                      (rtos height 2 2)
  85.                                      ">: ")))
  86.                       (height)))
  87.        
  88. (if (eq (last (setq data (chfd))) "Invalid data")
  89.            (princ "\nNo Data to process")
  90.               (progn
  91.                (setvar "dimtad" 0)(setvar "dimgap" -1)(setvar "Dimtxt" height)(setvar "cmdecho" 0)
  92.                (setq el (entlast) ss2 (ssadd))
  93.         (setq p2 (getpoint (setq p1 (mapcar (function (lambda (a b) (/ (+ a b) 2.))) (car data) (cadr data)))  
  94.                               "\n Place annotation: "))
  95.              (setvar 'nomutt 1)
  96.         (command "leader" "_non" p1 "_non" p2 "" (last data) "" ^c)
  97.         (setvar 'nomutt 0)
  98.                (While (setq el (entnext el)) (ssadd el ss2))
  99.                (setq bridge (entmakex (list (cons 0 "LINE") (cons 10 (car data)) (cons 11 (cadr data)))))
  100.         (while (eq 5 (car (setq gr (grread T 15 0))))
  101.                 (redraw)
  102.                   (setq p2 (vlax-curve-getClosestPointTo bridge (cadr gr)))
  103.                     (repeat (setq n (sslength ss2))
  104.                             (vla-move (vlax-ename->vla-object (ssname ss2 (setq ent (setq n (1- n)))))
  105.                                   (vlax-3d-point p1)(vlax-3d-point p2))
  106.                           )
  107.                     
  108.                         
  109.                                (setq p1 p2)
  110.                      )
  111.                (entdel bridge)
  112.                   )                                 
  113.     )
  114. (*error* "")
  115.      (princ)
  116.      )
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 00:09:56 | 显示全部楼层
很酷,伙计
在我的代码存储中抓取。
当做
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:14:14 | 显示全部楼层
 
谢谢你,我的朋友
 
希望flyfox能够修改演示代码,并自行解决如何整合发布代码中显示的方法。
回复

使用道具 举报

34

主题

174

帖子

60

银币

后起之秀

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

铜币
257
发表于 2022-7-6 00:19:13 | 显示全部楼层
 
pBe,谢谢!我会的。
回复

使用道具 举报

34

主题

174

帖子

60

银币

后起之秀

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

铜币
257
发表于 2022-7-6 00:20:08 | 显示全部楼层
lucas3代码。
 
  1. (defun c:demo (/ chfd data p1 p2 gr)
  2. ;;;Demo for pBe Jan 2014;;;
  3. (if (not (tblsearch "LAYER" "dim"))
  4.    (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (370 . 18) (2 . "dim") (70 . 0) (62 . 3) (6 . "Continuous")))
  5.   
  6.    (prompt "\nLayer : "dim" already exist - setting it to current and proceeding with routine...")
  7. )
  8. (setvar 'clayer "dim")
  9. (vl-load-com)       
  10. (defun chfd (/ _dxf _para _valid a typ obj p1 p2 intrpt P3 P4)
  11. (defun _dxf (e dx) (cdr (assoc dx (entget e))))
  12. (defun _valid   (e typ / e)
  13.      (if (wcmatch (Setq v (_dxf e 0)) typ)
  14.            v))
  15.      (if (and (setq a (entsel "\nSelect Chamfered segment: "))
  16.               (Setq typ (_valid (setq obj (car a))
  17.                                 "LWPOLYLINE,LINE")))
  18.         (if (eq typ "LINE")
  19.                    (progn
  20.                          (while (not (And
  21.                                            (setq obj2 (car  (entsel  "\nSelect another segment: ")))
  22.                                            (setq obj3 (car  (entsel  "\nAnd another: ")))
  23.                                            (_valid obj2 "LINE")
  24.                                            (_valid obj3 "LINE"))
  25.                                      )
  26.                           )
  27.                          (setq intrpt (inters (_dxf obj2 10)
  28.                                               (_dxf obj2 11)
  29.                                               (_dxf obj3 10)
  30.                                               (_dxf obj3 11)
  31.                                               nil))
  32.                         (Setq p3 (_dxf obj 10) p4 (_dxf obj 11)))
  33.           (progn
  34. ;;;         Kent Cooper                                                        ;;;
  35. ;;;        http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General        ;;;
  36. ;;;        /Find-segments-of-polyline/td-p/4785889                                    ;;;
  37.             (defun ptpar (par)
  38.               (reverse
  39.                 (cdr
  40.                   (reverse (vlax-curve-getPointAtParam plent par)
  41.                   )
  42.                 )
  43.               )
  44.             )
  45.             (setvar "osmode" 0)
  46.             (setq
  47.               plent  (car a)        ; the PolyLine ENTity name
  48.               verts  (cdr (assoc 90 (entget plent)))
  49.                                 ; number of VERTiceS
  50.               prepar (fix (vlax-curve-getParamAtPoint
  51.                             plent
  52.                             (osnap (cadr a) "_nea")
  53.                           )
  54.                      )
  55.                                 ; PREceding-pick-point vertex's PARameter value
  56.               p1     (ptpar (rem (1- (+ prepar verts)) verts))
  57.               p4     (ptpar prepar)
  58.               p3     (ptpar (rem (1+ prepar) verts))
  59.               p2     (ptpar (rem (+ 2 prepar) verts))
  60.             )                        ; setq
  61.             (setq intrpt (inters p1 p4 p2 p3 nil))
  62.           )
  63.                       )(princ "\nNull/Invalid selection")
  64.          
  65.          )
  66.      (list  P3 P4
  67.          (if intrpt
  68.             (progn
  69.                     (if (eq (rtos (distance p3 intrpt) 2 1) (rtos (distance p4 intrpt) 2 1))
  70.                            (strcat "C"(rtos (distance p3 intrpt) 2 1))
  71.                        (strcat
  72.                                   "C"
  73.                                   (rtos (distance p3 intrpt) 2 1)
  74.                                     "x"
  75.                                   (rtos (distance p4 intrpt) 2 1)
  76.                        
  77.                         )
  78.                     )
  79.                  )
  80.            "Invalid data"
  81.              )
  82.          )
  83. )
  84. (defun leader_final_point (p1 p2)
  85.   (setq ty (getvar "TEXTSTYLE") kd3 0)
  86.   (setq txt_long (* 1.3 (caadr (textbox (list '(0 . "text")(cons 1 (last data))(cons 40 height)(cons 41 0.7)(cons 7 ty))))))
  87.   (if (< (car p1) (car p2))
  88.        (setq p3 (polar p2 0 txt_long))
  89.         (setq p3 (polar p2 (angtof "180") txt_long))
  90.   )   
  91. )
  92. (setq tad (Getvar "dimtad") dtxt (getvar "Dimtxt")
  93.      ech (getvar "cmdecho") gap (getvar "dimgap"))
  94. (setq height 2.5)
  95.         (if (setq judge (getreal "Input text height(Default 2.5)"))
  96.              (setq height judge)               
  97.         )
  98. (if (eq (last (setq data (chfd))) "Invalid data")
  99.            (princ "\nNo Data to process")
  100.               (progn
  101.                (setvar "dimtad" 0)(setvar "dimgap" -1)(setvar "Dimtxt" height)(setvar "cmdecho" 0)
  102.                (setq el (entlast) ss2 (ssadd))
  103.                         (princ (entget el))
  104.         (setq p2 (getpoint (setq p1 (mapcar (function (lambda (a b) (/ (+ a b) 2.))) (car data) (cadr data)))  
  105.                               "\n Place annotation: "))
  106.                                                   
  107.         (setq p3 (leader_final_point p1 p2) p_modify (list 0 height 0))
  108.        
  109.         (command "leader" "_non" p1 "_non" p2 p3 "" "" "n")
  110.         (command "text" "j" "c" (mapcar '(lambda (a b c) (+ (/ (+ a b) 2.) (* c 0.2)))  p2 p3 p_modify)  height "" (last data) "")
  111.        
  112.                (While (setq el (entnext el)) (ssadd el ss2))
  113.                (setq bridge (entmakex (list (cons 0 "LINE") (cons 10 (car data)) (cons 11 (cadr data)))))
  114.         (while (eq 5 (car (setq gr (grread T 15 0))))
  115.                 (redraw)
  116.                          (command "_move" ss2 "" "_non" p1 "_non" (setq p2 (vlax-curve-getClosestPointTo bridge (cadr gr))))
  117.                                (setq p1 p2)
  118.                      )
  119.                (entdel bridge)
  120.            )                                 
  121. )
  122.         (setvar "dimtad" tad) (setvar "dimgap" gap)(setvar "Dimtxt" dtxt)(setvar "cmdecho" ech)
  123. )
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:23:11 | 显示全部楼层
 
飞,非常感谢!我刚刚测试过,不错,但命令栏显示:“放置注释:未知命令”演示。按F1键获取帮助为什么?
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:28:10 | 显示全部楼层
有一点要求:
1、更改文字高度,箭头大小不相应更改
2、文字高度无法记忆,需要每次使用时设置。
我想用“gbeitc.shx”来标注尺寸
pBe、Tharwat、flyfox1047,请帮帮我!
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:31:00 | 显示全部楼层
 
“gbeitc.shx”表示维度文本?这取决于你的维度风格lucas
 
默认设置很简单。我会在11号帖子中更新代码[无论如何我都想修改“移动”部分)
 
顺便说一句:想知道Flyfox修改了代码的哪一部分?您是否希望从post#11的原始代码中添加内容?
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:32:24 | 显示全部楼层
 
谢谢pBe,我的意思是创建一个新的文本样式,然后使用这个文本样式维度,但我不能。
箭头大小仍然无法调整。
pBe,代码在#15,dim风格正是我需要的,我希望你和flyfox1047可以帮助我修改代码在#15,非常感谢!
顺便说一句,在#16有一个问题
回复

使用道具 举报

19

主题

124

帖子

105

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 00:35:51 | 显示全部楼层
等待!我认为箭头的大小应该单独设置等得不耐烦
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:22 , Processed in 0.352954 second(s), 70 queries .

© 2020-2025 乐筑天下

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