设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 125|回复: 1

[字符串] (XD::Text:Adjust)调整文字、属性、块内文字到正确的显示方向

[复制链接]

签到天数: 1192 天

连续签到: 51 天

[LV.10]以坛为家III

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-10-7 15:31:34 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Text:Adjust
调用格式: (XD::Text:Adjust ents)
参数说明: ents ---- 文字、块、或者上面实体组成的表或选择集
返回值: 整数,0---没发现需要调整的
大于0,调整的数量
函数简介: (XD::Text:Adjust)调整文字、属性、块内文字到正确的显示方向
函数来源: 原创
函数作者: newer
适用版本: XDRX API 
最后更新时间: 2018-10-07
备注: -
演示图片:

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

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

x
  1. (defun XD::Text:Adjust (ents   /      9pt1   box    ecs           mat
  2.                         mat0   mat1   mat2   mirrInx           mirrIny
  3.                         p0     p0_1   p1     vx            vy           vz
  4.                         atts txts eblk
  5.                        )
  6.   (defun _tMirr        (e)
  7.     (setq mirrInx (xdrx_text_ismirroredInx e)
  8.           mirrIny (xdrx_text_ismirroredIny e)
  9.     )
  10.     (if        mirrInx
  11.       (xdrx_text_setMirrorInx e nil)
  12.     )
  13.     (if        mirrIny
  14.       (xdrx_text_setMirrorIny e nil)
  15.     )
  16.     (if        (or mirrInx mirrIny)
  17.       (progn (setq box        (XD::Entity:BoxAtEcs e e)
  18.                    9pt1        (XD::Geom:BOX->9PT box)
  19.                    p0_1        (last 9pt1)
  20.              )
  21.              (xdrx_entity_transform
  22.                e
  23.                (xdrx_matrix_setTranslation mat0 (mapcar '- p0 p0_1))
  24.              )
  25.       )
  26.     )
  27.   )
  28.   (cond
  29.     ((xdrx_object_iskindof ents "INSERT")
  30.       (setq atts (xdrx_getpropertyvalue ents "attributeentities"))
  31.       (setq txts (xdrx_block_getentities ents '((0 . "TEXT"))))
  32.       (setq txts (append txts atts))
  33.       (setq eblk ents)
  34.       (setq ents txts)
  35.      )
  36.     ((xdrx_object_iskindof ents "ATT*,TEXT")
  37.      (setq ents (list ents))
  38.     )
  39.     ((= (type ents) 'PICKSET)
  40.      (setq ents (xdrx_pickset->ents ents))
  41.     )
  42.     (t (setq ents nil))
  43.   )
  44.   (setq        i   0)
  45.   (mapcar
  46.     '(lambda (e)
  47.        (setq ecs  (xdrx_entity_getecs e)
  48.              vx          (cadr ecs)
  49.              vy          (caddr ecs)
  50.              vz          (last ecs)
  51.              box  (xdrx_entity_box e vx)
  52.              9pt1 (XD::Geom:BOX->9PT box)
  53.              p1          (car box)
  54.              p0          (last 9pt1)
  55.              mat0 (xdrx_matrix_identity 3)
  56.              mat1 mat0
  57.              mat2 mat0
  58.              p1          (xdrx_getpropertyvalue e "9pt" 5)
  59.        )
  60.        (_tMirr e)
  61.        (if (< (car vx) 0.0)
  62.          (progn (setq mat1 (xdrx_matrix_setrotation mat0 pi vy p0)))
  63.        )
  64.        (if (< (cadr vy) 0.0)
  65.          (progn (setq mat2 (xdrx_matrix_setrotation mat0 pi vx p0)))
  66.        )
  67.        (setq mat (xdrx_matrix_product mat2 mat1))
  68.        (if (not (equal mat mat0))
  69.          (progn        (xdrx_entity_transform e mat)
  70.                 (xdrx_entity_move e (xdrx_getpropertyvalue e "9pt" 5) p1)
  71.                 (setq i (1+ i))
  72.          )
  73.        )
  74.      )
  75.     ents
  76.   )
  77.   (xdrx_object_regen eblk)
  78.   i
  79. )


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

签到天数: 97 天

连续签到: 69 天

[LV.6]常住居民II

已领礼包: 167个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-12-12 10:53 , Processed in 0.137446 second(s), 23 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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