找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 君是我的泪

【已解决】cad里面怎么批量标注文字,字符串,例如“DN300,L1=”

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-12-28 12:18:13 | 显示全部楼层



LINE,POLYLINE,LWPOLYLINE,ARC,ELLIPSE,SPLINE,CIRCLE 都支持了。

  1. (defun c:XDTB_PLSegLen (/ _process val)
  2.   (defun _process (e / is2d segs inx g v #angle #length #midpoint p1)
  3.     (if (or (xdrx_object_isa e "AcDbSpline")
  4.             (xdrx_object_isa e "AcDbEllipse")
  5.             (xdrx_object_isa e "AcDbLine")
  6.             (xdrx_object_isa e "AcDbArc")
  7.             (xdrx_object_isa e "AcDbCircle")
  8.         )
  9.       (progn
  10.         (setq #midpoint (xdrx_getpropertyvalue e "midpoint")
  11.               #midpoint (if (xdrx_object_isa e "AcDbCircle")
  12.                           (nth 1 (xdrx_getsamplept e 5))
  13.                           #midpoint)
  14.               #length   (xdrx_getpropertyvalue e "length")
  15.               v         (xdrx_curve_getfirstderiv e #midpoint)
  16.               #angle    (xdrx_vector_angle v)
  17.               #angle    (xd::geom:angleformat #angle)
  18.               p1        (trans (polar #midpoint
  19.                                       (+ #angle (/ pi 2.0))
  20.                                       (/ #txt_height 2.0)
  21.                                )
  22.                                e
  23.                                0
  24.                         )
  25.         )
  26.         (xdrx_text_make p1
  27.                         (strcat "DL300,L1=" (rtos #length 2 #txt_bit))
  28.                         (getvar "textstyle")
  29.                         #txt_height
  30.                         #angle
  31.         )
  32.         (xd::text:setalignment (entlast) p1 "BC")
  33.       )
  34.       (progn
  35.         (if (xdrx_object_isa e "AcDb2dPolyline")
  36.           (progn
  37.             (setq is2d t e (xdrx_entity_copy e))
  38.             (xdrx_polyline_convertfrom e)
  39.           )
  40.         )
  41.         (setq segs (xdrx_polyline_numverts e))
  42.         (setq inx 0)
  43.         (repeat segs
  44.           (if (setq g (xdrx_polyline_getlinesegat e inx t))
  45.             (progn
  46.               (xdge::getpropertyvalue g "length" "midpoint" "angle")
  47.             )
  48.             (progn (setq g (xdrx_polyline_getarcsegat e inx t))
  49.                    (xdge::getpropertyvalue g "length" "midpoint")
  50.                    (setq v      (xdrx_curve_getfirstderiv e #midpoint)
  51.                          #angle (xdrx_vector_angle v)
  52.                    )
  53.             )
  54.           )
  55.           (setq #angle (xd::geom:angleformat #angle)
  56.                 p1     (trans (polar #midpoint
  57.                                      (+ #angle (/ pi 2.0))
  58.                                      (/ #txt_height 2.0)
  59.                               )
  60.                               e
  61.                               0
  62.                        )
  63.           )
  64.           (xdrx_text_make p1
  65.                           (strcat "DL300,L1=" (rtos #length 2 #txt_bit))
  66.                           (getvar "textstyle")
  67.                           #txt_height
  68.                           #angle
  69.           )
  70.           (xd::text:setalignment (entlast) p1 "BC")
  71.           (setq inx (1+ inx))
  72.         )
  73.         (xdge::free g)
  74.         (if is2d
  75.           (xdrx_entity_delete e)
  76.         )
  77.       )
  78.     )
  79.   )
  80.   (if (not #txt_height)
  81.     (setq #txt_height 3.5)
  82.   )
  83.   (if (not #txt_bit)
  84.     (setq #txt_bit 1)
  85.   )
  86.   (if (setq val (getint (xdrx_prompt "\n保留位数<" #txt_bit ">:" t)))
  87.     (setq #txt_bit val)
  88.   )
  89.   (if (setq val (getreal (xdrx_prompt "\n字高<" #txt_height ">:" t)))
  90.     (setq #txt_height val)
  91.   )
  92.   (xdrx_begin)
  93.   (xdrx_sysvar_push '("dimzin" 0))
  94.   (while
  95.     (and (xdrx_initssget "\n选择线、多段线<退出>:")
  96.          (setq ss (xdrx_ssget
  97.                     '((0 . "line,*POLYLINE,ellipse,arc,spline,circle"))
  98.                   )
  99.          )
  100.     )
  101.      (xd::text:init 1)
  102.      (mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
  103.   )
  104.   (xdrx_sysvar_pop)
  105.   (xdrx_end)
  106.   (princ)
  107. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 50个

财富等级: 招财进宝

 楼主| 发表于 2017-12-28 14:20:42 | 显示全部楼层
你好厉害啊= =还有一个问题,样条曲线怎么分段? Unnamed QQ Screenshot20001201141906.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-12-28 15:23:19 | 显示全部楼层
本帖最后由 marting 于 2017-12-28 15:24 编辑
解决了,你去编辑下主题帖子, 在主题 分类 那个下拉列表里面,选择下【已解决】。

新问题,去开新贴吧。并且详细说说分段的规则,就是你想做什么。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 50个

财富等级: 招财进宝

 楼主| 发表于 2017-12-28 16:08:47 | 显示全部楼层

这样吗?主题变不了了,只能手工加上,不会弄,有教程吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

发表于 2024-9-16 10:19:40 | 显示全部楼层
不错,谢谢分享!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 01:27 , Processed in 0.382690 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表