找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2268|回复: 5

[教学] 用API创建一个属性标题

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-15 11:52:35 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 st788796 于 2013-10-15 11:56 编辑

  1. ;;sty -- textstyle
  2. ;;str -- string
  3. ;;h   -- height
  4. (defun XD::String:Len (sty str h)
  5.   (and (or (not sty)
  6.     (= sty "")
  7.     (not (tblsearch "style" sty))
  8.        )
  9.        (setq sty (getvar "textstyle"))
  10.   )
  11.   (abs
  12.     (car
  13.       (apply 'mapcar
  14.       (cons '-
  15.      (textbox (list (cons 1 str) (cons 7 sty) (cons 40 h)))
  16.       )
  17.       )
  18.     )
  19.   )
  20. )
  21. (defun mkblkdef (bn string / len pl txt ss)
  22.   (setq len (* 0.5 (xd::string:len "" string 4.)))
  23.   (setq pl (xdrx_polyline_make
  24.       (list (- (1+ len)) 0. 0.)
  25.       (list (1+ len) 0. 0.)
  26.     )
  27.   )
  28.   (xdrx_setpropertyvalue pl "ConstantWidth" 0.5)
  29.   (setq txt (xdrx_text_make '(0. 1. 0.) string 4. 0.))
  30.   (setpropertyvalue txt "Justify" 13);_2011+ api暂不支持
  31.   (setq att (xdrx_attributedef_make txt t)
  32. ss  (ssadd)
  33.   )
  34.   (ssadd att ss)
  35.   (ssadd pl ss)
  36.   (or (and (or (not bn)
  37.         (= bn "")
  38.         (wcmatch bn "`**")
  39.     )
  40.     (setq bn (xdrx_block_make ss '(0. 0. 0.) t))
  41.       )
  42.       (xdrx_block_make bn ss '(0. 0. 0.) t)
  43.   )
  44.   (entdel (entlast))
  45.   bn
  46. )

调用方法
命令: (mkblkdef "*" "钢筋统计表")
"*U6"
命令: (mkblkdef "Title" "钢筋统计表")
"Title"
mkblkdef.jpg

本帖被以下淘专辑推荐:

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-15 14:56:25 | 显示全部楼层
API对文字对齐方式设置是支持的

(xdrx_setpropertyvalue e)

Class AcDbText:

  ├─AlignmentPoint(Point)
  ├─Rotation(Real)
  ├─HorizontalMode(T or Nil)
  ├─Normal(Point)
  ├─Oblique(Real)
  ├─Position(Point)
  ├─TextStyle(STR or Ename)
  ├─TextString(STR)
  ├─Thickness(Real or Int)
  ├─VerticalMode(T or Nil)
  ├─WidthFactor(Real or Int)


另外通用LISP函数库里面有个现成的函数,调整文字的对齐方式而位置保持不变,可以拿来直接使用。

(XD::Text:AdjustAlignMent e hmode vmode)
e --- 文字实体名
hmode-水平对齐方式 0-5
vmode-竖向对齐方式0-3

点评

对文字修改必须先修改对齐方式然后才可以修改对齐点,单独修改对齐点对左对齐无效  详情 回复 发表于 2013-10-15 15:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-10-15 15:00:31 | 显示全部楼层
本帖最后由 st788796 于 2013-10-15 15:06 编辑
newer 发表于 2013-10-15 14:56
API对文字对齐方式设置是支持的

(xdrx_setpropertyvalue e)

对文字修改必须先修改对齐方式然后才可以修改对齐点,单独修改对齐点对左对齐无效

这个应用中我希望插入点已知,修改对齐方式后文字是居中的,不管文字多长,文字位置不变的话还要预先计算左边点,反而麻烦

XD::String:Len 可以用于制造 Table 时程序确定列宽


点评

XD::Stringen 还应该再加个宽度比例参数,更通用。  详情 回复 发表于 2013-10-15 15:18
左对齐,和插入点是一个了,修改插入点就行了。  详情 回复 发表于 2013-10-15 15:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-15 15:11:32 | 显示全部楼层
st788796 发表于 2013-10-15 15:00
对文字修改必须先修改对齐方式然后才可以修改对齐点,单独修改对齐点对左对齐无效

这个应用中我希望插 ...

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-15 15:18:04 | 显示全部楼层
st788796 发表于 2013-10-15 15:00
对文字修改必须先修改对齐方式然后才可以修改对齐点,单独修改对齐点对左对齐无效

这个应用中我希望插 ...

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

使用道具 举报

已领礼包: 1310个

财富等级: 财源广进

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 13:42 , Processed in 0.441499 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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