设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1743|回复: 3

[文字] 文字齐线中点并设置间距

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-9-3 21:20:08 | 显示全部楼层 |阅读模式
  • 插件名称 : 齐线中点
  • 作  者 : newer
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2018-09-03
  • 命令名称 :xdtb_txtalignatln
  • 插件介绍 :文字齐线中点并设置间距
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
根据网友要求,工作中有时候绘制很多文字和线,彼此没有联系,虽然这样的习惯不好,但也
有很多这样的图纸,本插件就是把选择的文字按照最近的和文字方向相同的LINE对齐,文字的中点
对齐到直线的中点,并可以设置文字到直线的间距。


  1. (defun c:xdtb_txtalignatln (/ #angle #getfirstderiv #midpoint box e elst height mat mid mid1 ml p1
  2.                             p2  position rot ss ss1 text-vec tf tol v x y
  3.                            )
  4.   (if (and (setq tol (getdist "\n输入字线间距<退出>:"))
  5.            (xdrx_initssget "\n选取要调整的文字<退出>:")
  6.            (setq ss (xdrx_ssget '((0 . "*text"))))
  7.       )
  8.     (progn
  9.       (xdrx_begin)
  10.       (setq tf (xd::doc:safezoom ss))
  11.       (mapcar
  12.         '(lambda (e)
  13.            (setq box      (xdrx_text_box e)
  14.                  text-vec (cadr (xdrx_entity_getecs e))
  15.                  rot      (xdrx_getpropertyvalue e "rotation")
  16.                  box      (XD::Geom:Box->9PT box)
  17.                  position (nth 1 box)
  18.                  p1       (nth 0 box)
  19.                  p2       (nth 2 box)
  20.                  height   (xdrx_getpropertyvalue e "Height")
  21.                  ss1      (xdrx_pickset_GetAtPoint position height 2 '((0 . "LINE")))
  22.            )
  23.            (if ss1
  24.              (progn (setq elst nil)
  25.                     (mapcar '(lambda (x)
  26.                                (xdrx_getpropertyvalue
  27.                                  x "angle" "MidPoint" "startpoint" "endpoint" "getfirstderiv"
  28.                                  #midpoint
  29.                                 )
  30.                                (if (or (xdrx_vector_iscodirectional
  31.                                          text-vec
  32.                                          #getfirstderiv
  33.                                          (/ pi 5.0)
  34.                                        )
  35.                                        (xdrx_vector_iscodirectional
  36.                                          text-vec
  37.                                          (xdrx_vector_negate #getfirstderiv)
  38.                                          (/ pi 5.0)
  39.                                        )
  40.                                    )
  41.                                  (progn
  42.                                    (setq elst (cons (list (xd::geom:angleformat (- #angle rot)) x) elst))
  43.                                  )
  44.                                )
  45.                              )
  46.                             (xdrx_pickset->ents ss1)
  47.                     )
  48.                     (if elst
  49.                       (progn (setq elst (vl-sort elst '(lambda (x y) (< (car x) (car y))))
  50.                                    ml   (nth 1 (car elst))
  51.                              )
  52.                              (setq mid  (xdrx_getpropertyvalue mL "MidPoint")
  53.                                    v    (xdrx_getpropertyvalue ml "getfirstderiv" mid)
  54.                                    v    (if (xdrx_vector_iscodirectional text-vec v)
  55.                                           v
  56.                                           (xdrx_vector_negate v)
  57.                                         )
  58.                                    mid1 (mapcar '+
  59.                                                 mid
  60.                                                 (xdrx_vector_product (xdrx_vector_perpvector v) tol)
  61.                                         )
  62.                                    mat  (xdrx_matrix_align position p2 mid1 (mapcar '+ mid1 v))
  63.                              )
  64.                              (xdrx_entity_transform e mat)
  65.                       )
  66.                     )
  67.              )
  68.            )
  69.          )
  70.         (xdrx_pickset->ents ss)
  71.       )
  72.       (and tf (xdrx_document_zoomprevious))
  73.       (xdrx_end)
  74.     )
  75.   )
  76.   (princ)
  77. )


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

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2020-7-26 13:31:17 | 显示全部楼层
试了下,大部分都是可以实现的
极个别会出现“当前类不支持getfirstderiv属性查询,或参数不对.”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-9-21 15:22 , Processed in 0.772096 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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