乐筑天下

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

[编程交流] 同时插入dim

[复制链接]

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-6 07:32:13 | 显示全部楼层 |阅读模式
我不确定,但我想我在这里看到过类似于PLEN的惯例。LSP(由Lee Mac大师编写),但能够自动注释多段线所有线段的长度,如我在所附图像中所示。
 
如果有人知道,我很感谢你的帮助。
083215a62h6ywz3r9rrhhl.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:44:22 | 显示全部楼层
我的老朋友。。。
 
  1. (defun c:Test (/ *error* pl i sn)
  2. (vl-load-com)
  3. (defun *error* (msg)
  4.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **")))
  5.    (princ)
  6.    )
  7. (cond ((not acdoc) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))))
  8. (princ "\n select a Polyline :")
  9. (if (setq pl (ssget '((0 . "*POLYLINE"))))
  10.    (progn (vla-StartUndoMark acdoc)
  11.           (repeat (setq i (sslength pl)) (setq sn (ssname pl (setq i (1- i)))) (WriteLengthsForSegments sn))
  12.           (vla-EndUndoMark acdoc)
  13.           )
  14.    (princ)
  15.    )
  16. (princ "\n Written By Tharwat Al Shoufi")
  17. (princ)
  18. )
  19. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  20. (defun WriteLengthsForSegments (sn / j a b sty txt)
  21. (progn (setq j 0)
  22.         (repeat (fix (vlax-curve-getendparam sn))
  23.           (setq a (vlax-curve-getpointatparam sn j))
  24.           (setq b (vlax-curve-getpointatparam sn (setq j (1+ j))))
  25.           (setq
  26.             txt (entmakex
  27.                   (list '(0 . "MTEXT")
  28.                         '(100 . "AcDbEntity")
  29.                         '(100 . "AcDbMText")
  30.                         (assoc 8 (entget sn))
  31.                         (cons 10 (mapcar '(lambda (x y) (/ (+ y x) 2.)) a b))
  32.                         (cons 7 (getvar 'textstyle))
  33.                         (cons 40
  34.                               (if (eq (cdr (assoc 40 (setq sty (entget (tblobjname "style" (getvar 'textstyle)))))) 0.)
  35.                                 (cdr (assoc 42 sty))
  36.                                 (cdr (assoc 40 sty))
  37.                                 )
  38.                               )
  39.                         (cons 1 (rtos (distance a b) 2))
  40.                         (cons 50 (angle a b))
  41.                         '(71 . 5)
  42.                         )
  43.                   )
  44.             )
  45.           (vla-put-BackgroundFill (vlax-ename->vla-object txt) -1)
  46.           )
  47.         )
  48. )
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-6 08:08:10 | 显示全部楼层
塔尔瓦特,
 
就是这样。太棒了。:)但是可以重新编程以允许文本的放置,使用一个选项,可以在外部或内部有一定的偏移?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:12:06 | 显示全部楼层
 
不客气。
 
试试看。
 
  1. (defun c:Test (/ *error* WriteLengthsForSegments pl i dir)
  2. (vl-load-com)
  3. ;;; Tharwat 12. Sep. 2012 ;;;
  4. (if (not acdoc)
  5.    (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  6. )
  7. (defun *error* (msg)
  8.    (vla-EndUndoMark acdoc)
  9.    (princ "\n *Cancel*")
  10.    (princ)
  11. )
  12. (defun WriteLengthsForSegments (sn dir / h j a b sty)
  13.    (progn (setq j 0)
  14.           (repeat (fix (vlax-curve-getendparam sn))
  15.             (setq a (vlax-curve-getpointatparam sn j))
  16.             (setq b (vlax-curve-getpointatparam sn (setq j (1+ j))))
  17.             (entmakex
  18.               (list
  19.                 '(0 . "MTEXT")
  20.                 '(100 . "AcDbEntity")
  21.                 '(100 . "AcDbMText")
  22.                 (assoc 8 (entget sn))
  23.                 (cons 7 (getvar 'textstyle))
  24.                 (cons
  25.                   40
  26.                   (setq h
  27.                          (if
  28.                            (eq (cdr (assoc 40
  29.                                            (setq sty (entget (tblobjname
  30.                                                                "style"
  31.                                                                (getvar 'textstyle)
  32.                                                              )
  33.                                                      )
  34.                                            )
  35.                                     )
  36.                                )
  37.                                0.
  38.                            )
  39.                             (cdr (assoc 42 sty))
  40.                             (cdr (assoc 40 sty))
  41.                          )
  42.                   )
  43.                 )
  44.                 (cons 10
  45.                       (polar (mapcar '(lambda (x y) (/ (+ y x) 2.)) a b)
  46.                              (if (eq dir "Out")
  47.                                (+ (angle a b) (* pi 0.5))
  48.                                (+ (angle b a) (* pi 0.5))
  49.                              )
  50.                              (* h 1.1)
  51.                       )
  52.                 )
  53.                 (cons 1 (rtos (distance a b) 2))
  54.                 (cons 50 (angle a b))
  55.                 '(71 . 5)
  56.               )
  57.             )
  58.           )
  59.    )
  60.    (princ)
  61. )
  62. (princ "\n select a Polyline :")
  63. (if (and (setq pl (ssget '((0 . "*POLYLINE"))))
  64.           (progn (initget "In Out")
  65.                  (setq dir
  66.                         (cond
  67.                           ((getkword "\n Specify Text placement [in/Out] <Out> :")
  68.                           )
  69.                           (t "Out")
  70.                         )
  71.                  )
  72.           )
  73.      )
  74.    (progn (vla-StartUndoMark acdoc)
  75.           (repeat (setq i (sslength pl))
  76.             (WriteLengthsForSegments (ssname pl (setq i (1- i))) dir)
  77.           )
  78.           (vla-EndUndoMark acdoc)
  79.    )
  80.    (princ)
  81. )
  82. (princ "\n Written By Tharwat Al Shoufi")
  83. (princ)
  84. )
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-6 08:23:40 | 显示全部楼层
塔尔瓦特,
 
完美的谢谢你的帮助!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:39:53 | 显示全部楼层
 
随时欢迎你。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:35 , Processed in 0.467617 second(s), 67 queries .

© 2020-2025 乐筑天下

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