明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 957|回复: 13

[提问] 请教如何生成文字居中的属性块

[复制链接]
发表于 2022-11-14 14:04 | 显示全部楼层 |阅读模式
5明经币
目前有一个生成属性块的子函数,可以正常运行,但是只能生成左对齐的文字。
现在想增加一个文字对齐的参数,从而可以生成各种对齐方式。
目前对于文字对齐一头雾水,请高手帮忙指点一二。

  1. ;;说明:制作并插入属性块
  2. ;;参数:name_block:块对象名称
  3. ;;参数:list_tagstring:属性块标签文本,可以支持多个,如(list "tagstring1" "tagstring2")
  4. ;;参数:list_textstring:属性块标签值,可以支持多个,与tagstring相对应,如(list "textstring2" "textstring2"),默认显示的是最后一个string。
  5. ;;参数:list_coordinate:块引用坐标,例如(list 0 0 0)
  6. ;;参数:textHeight:字体高度,如2.5
  7. ;;参数:TextStyle:字体样式,如"FSDB"
  8. ;;参数:TextWidthScale:字体的宽度因子,如0.75
  9. ;;返回:生成的属性块引用图元名
  10. ;;示例:(block_att_make "name" (list "name" "name1") (list "构造图" "构造图2") (list 0 0 0) 2.5 "FSDB" 0.75)
  11. (defun block_att_make(name_block list_tagstring list_textstring list_coordinate textHeight TextStyle TextWidthScale )
  12.   (entmake (list
  13.              '(0 . "block")           
  14.              (cons 2 name_block)       ;图块名
  15.              '(70 . 2)                 ;块具有非固定属性定义
  16.              '(10 0.0 0.0 0.0))        ;基点
  17.   );block定义
  18.   (entmake '((0 . "ENDBLK")));结束标志
  19.   
  20.   (entmake (list '(0 . "INSERT")            
  21.              '(66 . 1)
  22.              (cons 2 name_block)
  23.              (append (list 10) list_coordinate)  ;插入点
  24.              '(41 . 500.0)
  25.              '(42 . 500.0)
  26.              '(43 . 500.0)
  27.            )  
  28.   )
  29.   (mapcar
  30.     '(lambda(a b)
  31.        (entmake
  32.          (list
  33.            '(0 . "ATTRIB")
  34.            '(100 . "AcDbEntity")
  35.            '(100 . "AcDbText")
  36.            (append (list 10) list_coordinate)    ;插入点
  37.            ;'(10 0.0 0.0 0.0)
  38.            (cons 40 textHeight)      ;字体高度
  39.            (cons 7 TextStyle)        ;字体样式
  40.            (cons 41 TextWidthScale)      ;字体宽度因子
  41.            (cons 1 b)    ;tagValue
  42.            '(100 . "AcDbAttribute")
  43.            (cons 2 a)    ;tagstring
  44.            '(70 . 0);(70 . 1)属性字不可见  (70 . 0)属性字可见

  45.          )
  46.        )
  47.      )
  48.     list_tagstring
  49.     list_textstring
  50.   )
  51.   
  52.   (entmake '((0 . "SEQEND")))
  53.   (entlast)
  54. )


最佳答案

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-11-14 14:04 | 显示全部楼层
20060510412 发表于 2022-11-14 15:56
恕我愚钝,我根本就没用到组码73啊。
如何更改为74呢


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2022-11-14 15:15 | 显示全部楼层

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2022-11-14 15:18 | 显示全部楼层

这个资料我也看到了,但是摸索半天,发现生成的属性块一直都是左对齐……
回复

使用道具 举报

发表于 2022-11-14 15:52 | 显示全部楼层
20060510412 发表于 2022-11-14 15:18
这个资料我也看到了,但是摸索半天,发现生成的属性块一直都是左对齐……

在ATTRIB,组码73需更改为74
回复

使用道具 举报

 楼主| 发表于 2022-11-14 15:56 | 显示全部楼层
xtjd 发表于 2022-11-14 15:52
在ATTRIB,组码73需更改为74

恕我愚钝,我根本就没用到组码73啊。
如何更改为74呢
回复

使用道具 举报

 楼主| 发表于 2022-11-14 16:19 | 显示全部楼层

多谢指点,问题已经解决!

关于文本的对齐方式,始终有点摸不着头脑,先这样用着,后期再慢慢琢磨吧。

其实vlisp关于这个对齐方式就很简单,直接一个vla-put-align就搞定了。

不明白alisp为什么要搞得这么繁琐。
回复

使用道具 举报

发表于 2022-11-14 17:59 | 显示全部楼层
跟你这个类似的帖子找不到了,再回复一下。

属性块不要用代码去创建,而是先做好属性块,再去转换成代码,再下次用代码生成。

本帖子中包含更多资源

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

x

点评

大神啊,好用  发表于 2022-11-14 21:38
很好用的程序,感谢大神分享!  发表于 2022-11-14 20:55
回复

使用道具 举报

发表于 2022-11-14 19:43 | 显示全部楼层
  1. ;command方式多简单
  2. (defun AttBlock        (name bj ts sxz th / s0 pt)
  3.   ;; bj属性标记名 ts输入属性提示 sxz默认属性值 th文本高度
  4.   ;; (AttBlock "$abc" "A" "标高值" "±0.000" 300)
  5.   (setq s0 (entlast)
  6.         pt '(0 0)
  7.   )
  8.   (command "-attdef" "" bj ts sxz "j" "mc" "non" pt th 0)
  9.   (command "-block" name "non" pt (entlast) "")
  10. )
回复

使用道具 举报

 楼主| 发表于 2022-11-14 21:38 | 显示全部楼层
菜卷鱼 发表于 2022-11-14 17:59
跟你这个类似的帖子找不到了,再回复一下。

属性块不要用代码去创建,而是先做好属性块,再去转换成代码 ...

谢谢分享,不过我是直接用来生成图框标题的属性块,文本内容都是不同的,只能通过代码去新建属性块了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 21:55 , Processed in 1.053566 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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