20060510412 发表于 2022-11-14 14:00:23

请教如何生成文字居中的属性块

本帖最后由 20060510412 于 2022-11-14 14:01 编辑

目前有一个生成属性块的子函数,可以正常运行,但是只能生成左对齐的文字。
现在想增加一个文字对齐的参数,从而可以生成各种对齐方式。
目前对于文字对齐一头雾水,请高手帮忙指点一二。
;;说明:制作并插入属性块
;;参数:name_block:块对象名称
;;参数:list_tagstring:属性块标签文本,可以支持多个,如(list "tagstring1" "tagstring2")
;;参数:list_textstring:属性块标签值,可以支持多个,与tagstring相对应,如(list "textstring2" "textstring2"),默认显示的是最后一个string。
;;参数:list_coordinate:块引用坐标,例如(list 0 0 0)
;;参数:textHeight:字体高度,如2.5
;;参数:TextStyle:字体样式,如"FSDB"
;;参数:TextWidthScale:字体的宽度因子,如0.75
;;返回:生成的属性块引用图元名
;;示例:(block_att_make "name" (list "name" "name1") (list "构造图" "构造图2") (list 0 0 0) 2.5 "FSDB" 0.75)
(defun block_att_make(name_block list_tagstring list_textstring list_coordinate textHeight TextStyle TextWidthScale )
(entmake (list
             '(0 . "block")         
             (cons 2 name_block)       ;图块名
             '(70 . 2)               ;块具有非固定属性定义
             '(10 0.0 0.0 0.0))      ;基点
);block定义
(entmake '((0 . "ENDBLK")));结束标志

(entmake (list '(0 . "INSERT")            
             '(66 . 1)
             (cons 2 name_block)
             (append (list 10) list_coordinate);插入点
             '(41 . 500.0)
             '(42 . 500.0)
             '(43 . 500.0)
         )
)
(mapcar
    '(lambda(a b)
       (entmake
         (list
         '(0 . "ATTRIB")
         '(100 . "AcDbEntity")
         '(100 . "AcDbText")
         (append (list 10) list_coordinate)    ;插入点
         ;'(10 0.0 0.0 0.0)
         (cons 40 textHeight)      ;字体高度
         (cons 7 TextStyle)      ;字体样式
         (cons 41 TextWidthScale)      ;字体宽度因子
         (cons 1 b)    ;tagValue
         '(100 . "AcDbAttribute")
         (cons 2 a)    ;tagstring
         '(70 . 0);(70 . 1)属性字不可见(70 . 0)属性字可见
         
         )
       )
   )
    list_tagstring
    list_textstring
)

(entmake '((0 . "SEQEND")))
(entlast)
)

20060510412 发表于 2022-11-14 14:05:40

我发了个悬赏贴,请版主将此贴删除吧

sto111 发表于 2022-11-15 15:24:35

DXF组码中:
72和73非常重要,专门用来设定对齐方式
默认是72=0,73=0
需要注意的是,不管72,73如何设置,10和11的组码最好一致,这样生成的文本才受控制。

myhomer 发表于 2022-11-15 22:58:58

查下组码,应该不难解决
页: [1]
查看完整版本: 请教如何生成文字居中的属性块