请教如何生成文字居中的属性块
本帖最后由 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)
)
我发了个悬赏贴,请版主将此贴删除吧 DXF组码中:
72和73非常重要,专门用来设定对齐方式
默认是72=0,73=0
需要注意的是,不管72,73如何设置,10和11的组码最好一致,这样生成的文本才受控制。 查下组码,应该不难解决
页:
[1]