明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 668|回复: 3

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

[复制链接]
发表于 2022-11-14 14:00 | 显示全部楼层 |阅读模式
本帖最后由 20060510412 于 2022-11-14 14:01 编辑

目前有一个生成属性块的子函数,可以正常运行,但是只能生成左对齐的文字。
现在想增加一个文字对齐的参数,从而可以生成各种对齐方式。
目前对于文字对齐一头雾水,请高手帮忙指点一二。
  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.      )
  49.     list_tagstring
  50.     list_textstring
  51.   )
  52.   
  53.   (entmake '((0 . "SEQEND")))
  54.   (entlast)
  55. )


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2022-11-14 14:05 | 显示全部楼层
我发了个悬赏贴,请版主将此贴删除吧
发表于 2022-11-15 15:24 | 显示全部楼层
DXF组码中:
72和73非常重要,专门用来设定对齐方式
默认是72=0,73=0
需要注意的是,不管72,73如何设置,10和11的组码最好一致,这样生成的文本才受控制。
发表于 2022-11-15 22:58 | 显示全部楼层
查下组码,应该不难解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 12:49 , Processed in 0.286447 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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