找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1198|回复: 4

[求助] 请高手做个小改动

[复制链接]

已领礼包: 201个

财富等级: 日进斗金

发表于 2015-11-30 17:23:08 | 显示全部楼层 |阅读模式

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

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

×
需要一个文本对齐的功能,也找到了相似功能的代码,见本站Lispboy的这个帖子:
http://www.xdcad.net/forum/forum ... read&tid=669874
但在应用时发现,在一行中有不连续的文本需要居中时,代码所选用的居中参照点应该是本行中第一个文本对象的中点,而我希望以本行所有文字的中点为参照点来对齐。本来想应该是做个小改动就能实现自己所需的,无奈才疏学浅,有些代码看不明白,折腾几天搞不定,特来请高手帮忙。

下面做个两行文本代码对齐实现的效果和想要的效果对比,请参考:
对齐前:
不连续       不连续            不连续
不连续文本   文本2  

居中对齐后:
    不续       不连续            不连续
不连文本   文本2

希望的效果:
不连续       不续            不连续
       不连续文本  文本2


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

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-11-30 20:27:59 来自手机 | 显示全部楼层
行作为一个整体居中对齐?
如果这样,单写更简单
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2015-12-1 09:50:02 | 显示全部楼层
本帖最后由 st788796 于 2015-12-1 09:51 编辑

没有考虑 UCS


  1. (defun c:tt (/ ss lst fuzz basept getrowcenter)
  2.   (defun getRowCenter (elst)
  3.     (xd::pnts:centroid
  4.       (xdrx_points_box
  5.         (apply 'append (mapcar 'xdrx_entity_box elst))
  6.       )
  7.     )
  8.   )
  9.   (if (setq ss (ssget '((0 . "text"))))
  10.     (progn
  11.       (setq lst           (mapcar
  12.                      '(lambda (x)
  13.                         (list (cadr (xdrx_getpropertyvalue x "position")) x)
  14.                       )
  15.                      (xdrx_pickset->ents ss)
  16.                    )
  17.             fuzz   (xdrx_getpropertyvalue (ssname ss 0) "Height")
  18.             lst           (xd::list:groupbyindex lst fuzz) ;_行误差
  19.             lst           (vl-sort lst
  20.                             (function (lambda (x1 x2)
  21.                                         (> (car x1) (car x2))
  22.                                       )
  23.                             )
  24.                    )
  25.             basePt (getRowCenter (cdar lst))
  26.             lst           (mapcar '(lambda (x)
  27.                               (cons (getRowCenter (cdr x)) (cdr x))
  28.                             )
  29.                            (cdr lst)
  30.                    )
  31.       )
  32.       (foreach x lst
  33.         (setq v (list (-  (car basePt)(caar x)) 0.0 0.0))
  34.         (xdrx_entity_move (cdr x) (car x) (mapcar '+ (car x) v))
  35.       )
  36.     )
  37.   )
  38.   (princ)
  39. )

点评

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

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2015-12-1 15:16:26 | 显示全部楼层

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

使用道具 举报

已领礼包: 50个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 02:07 , Processed in 0.375921 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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