请教如何生成文字居中的属性块
目前有一个生成属性块的子函数,可以正常运行,但是只能生成左对齐的文字。现在想增加一个文字对齐的参数,从而可以生成各种对齐方式。
目前对于文字对齐一头雾水,请高手帮忙指点一二。
;;说明:制作并插入属性块
;;参数: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 15:56
恕我愚钝,我根本就没用到组码73啊。
如何更改为74呢
xtjd 发表于 2022-11-14 15:15
这个资料我也看到了,但是摸索半天,发现生成的属性块一直都是左对齐……
20060510412 发表于 2022-11-14 15:18
这个资料我也看到了,但是摸索半天,发现生成的属性块一直都是左对齐……
在ATTRIB,组码73需更改为74 xtjd 发表于 2022-11-14 15:52
在ATTRIB,组码73需更改为74
恕我愚钝,我根本就没用到组码73啊。
如何更改为74呢 xtjd 发表于 2022-11-14 16:04
多谢指点,问题已经解决!{:1_1:}
关于文本的对齐方式,始终有点摸不着头脑,先这样用着,后期再慢慢琢磨吧。
其实vlisp关于这个对齐方式就很简单,直接一个vla-put-align就搞定了。
不明白alisp为什么要搞得这么繁琐。 跟你这个类似的帖子找不到了,再回复一下。
属性块不要用代码去创建,而是先做好属性块,再去转换成代码,再下次用代码生成。 ;command方式多简单
(defun AttBlock (name bj ts sxz th / s0 pt)
;; bj属性标记名 ts输入属性提示 sxz默认属性值 th文本高度
;; (AttBlock "$abc" "A" "标高值" "±0.000" 300)
(setq s0 (entlast)
pt '(0 0)
)
(command "-attdef" "" bj ts sxz "j" "mc" "non" pt th 0)
(command "-block" name "non" pt (entlast) "")
) 菜卷鱼 发表于 2022-11-14 17:59
跟你这个类似的帖子找不到了,再回复一下。
属性块不要用代码去创建,而是先做好属性块,再去转换成代码 ...
谢谢分享,不过我是直接用来生成图框标题的属性块,文本内容都是不同的,只能通过代码去新建属性块了。
页:
[1]
2