明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1949|回复: 4

[求助]直线上的文字自动居中,并且与直线有指定的间隔

[复制链接]
发表于 2007-1-29 03:32:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-1-29 3:32:34 编辑

大虾们,如题,帮帮忙!

用到的地方,比如梁的编号与梁线

发表于 2007-1-29 08:17:00 | 显示全部楼层
用标注,改标注样式,不用箭头、不用界线、不用标注线,就OK了。不用编程
发表于 2012-11-7 17:01:26 | 显示全部楼层
我也需要这个功能的代码
发表于 2013-1-14 17:01:02 | 显示全部楼层
“mccad”  的方法问题是怎样有与直线固定的间隙呢
发表于 2013-1-14 22:50:57 | 显示全部楼层
写了一个,感觉不完善
用了grread,距离就不知道怎么用键盘输入
期待高人完善

  1. (vl-load-com)
  2. (setvar "cmdecho" 0)
  3. (setq *AcadDoc* (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  4. (setq *MoSpace* (vla-get-ModelSpace *AcadDoc*))

  5. (defun c:tt (/ ent stpt enpt midpt lineang txt grpt pt templine)
  6.   (if (not *txth*)
  7.     (setq *txth* (cond ((getreal "\n输入标注文字高度:"))
  8.            (2.0)
  9.      )
  10.     )
  11.   )
  12.   (if (and (setq ent (car (entsel "\n选择直线:")))
  13.      (setq elst (entget ent))
  14.      (equal (cdr (assoc 0 elst)) "LINE")
  15.       )
  16.     (progn
  17.       (if (setq txt (getstring "\n输入标注文字:"))
  18.   (progn
  19.     (setq  stpt  (cdr (assoc 10 elst))
  20.     enpt  (cdr (assoc 11 elst))
  21.     midpt  (mapcar '(lambda (x y) (/ (+ x y) 2.)) stpt enpt)
  22.     lineang  (angle stpt enpt)
  23.     )
  24.     (setq grpt (cadr (grread 5)))
  25.     (setq
  26.       grdist (distance (vlax-curve-getclosestpointto ent grpt)
  27.            grpt
  28.        )
  29.     )
  30.     (if (LM:Clockwise-p stpt enpt grpt)
  31.       (setq temppt (polar midpt (- lineang (* pi 0.5)) grdist)
  32.       txtang (+ lineang pi)
  33.       )
  34.       (setq temppt (polar midpt (+ lineang (* pi 0.5)) grdist)
  35.       txtang lineang
  36.       )
  37.     )
  38.     (setq txtobj (Xr:drawtext txt temppt *txth*))
  39.     (vla-put-rotation txtobj txtang)
  40.     (prompt "\n选择方向和距离:")
  41.     (while (and (setq gr (grread 5))
  42.           (= (car gr) 5)
  43.      )
  44.       (setq grpt (cadr gr))
  45.       (setq
  46.         grdist (distance (vlax-curve-getclosestpointto ent grpt)
  47.              grpt
  48.          )
  49.       )
  50.       (if  (LM:Clockwise-p stpt enpt grpt)
  51.         (setq temppt (polar midpt (- lineang (* pi 0.5)) grdist)
  52.         txtang (+ lineang pi)
  53.         )
  54.         (setq temppt (polar midpt (+ lineang (* pi 0.5)) grdist)
  55.         txtang lineang
  56.         )
  57.       )
  58.       (vlax-put-property
  59.         txtobj
  60.         'TextAlignmentPoint
  61.         (vlax-3d-point temppt)
  62.       )
  63.       (vla-put-rotation txtobj txtang)
  64.       (redraw)
  65.     ) ;_  while
  66.   )
  67.       )
  68.     )
  69.     (progn
  70.       (princ "\n选择的不是直线或者取消选择")
  71.       (princ)
  72.     )
  73.   )
  74. )

  75. (defun LM:Clockwise-p (p1 p2 p3)
  76.   ((lambda (n) (< (car (trans p2 0 n)) (car (trans p1 0 n))))
  77.     (mapcar '- p1 p3)
  78.   )
  79. )


  80. ;;;绘制文字
  81. (defun Xr:Drawtext (txtstring txtpt txtheight / otext textpt)
  82.   (setq textpt (vlax-3d-point txtpt))
  83.   (setq
  84.     otext (vla-addtext *MoSpace* txtstring textpt txtheight)
  85.   )
  86.   (vlax-put-property otext 'Alignment 10)
  87.   (vlax-put-property otext 'TextAlignmentPoint textpt)
  88.   otext
  89. )






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-1 23:41 , Processed in 0.197967 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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