求助,entmake制作属性块,怎么水平对齐?
本帖最后由 6224jjyy 于 2022-5-24 09:00 编辑entmake制作属性块,属性文字无法对齐圆心。纯小白,被折腾一天了,求帮助。
'(72 . 1),用来水平居中对齐,貌似没作用,不知道错在哪里了。
(setq zz (getstring "请输入圆的高度(m): "))
(while (setq pt (getpoint "\n指定圆心位置: "))
(setq name (getvar "clayer"))
(entmake (list '(0 . "BLOCK") '(70 . 2) '(10 0.0 0.0 0.0) (cons 2 name)))
(entmake '((0 . "CIRCLE") (10 0.0 0.0 0.0) (40 . 80) (370 . 30)))
(entmake '((0 . "ENDBLK")))
(entmake (list '(0 . "INSERT") '(66 . 1) (cons 2 name) (cons 10 pt)))
(entmake (list '(0 . "ATTRIB") '(100 . "AcDbEntity") '(100 . "AcDbText") (cons 10 pt) (cons 11 pt) (cons 40 48) (cons 1 zz) '(100 . "AcDbAttribute") (cons 2 "A") '(70 . 0) '(72 . 1) '(74 . 2)))
(entmake '((0 . "SEQEND")))
)
建普通块跟属性块不要自己去写代码建,
手动建好块之后,用程序把它转成代码
(defun c:tt(/ zz pt name zr)
(setq zr (getstring "请输入圆的高度(m): "))
(while (setq pt (getpoint "\n指定圆心位置: "))
(setq name (getvar "clayer"))
(entmake (list '(0 . "BLOCK") '(70 . 2) '(10 0.0 0.0 0.0) (cons 2 name)))
(entmake '((0 . "CIRCLE") (10 0.0 0.0 0.0) (40 . 80) (370 . 30)))
(entmake '((0 . "ENDBLK")))
(entmake (list '(0 . "INSERT") '(66 . 1) (cons 2 name) (cons 10 pt)))
(entmake (list '(0 . "ATTRIB") '(100 . "AcDbEntity") '(100 . "AcDbText") (cons 10 pt) (cons 11 pt) (cons 40 48) (cons 1 zr)'(71 . 0)'(72 . 1)'(100 . "AcDbAttribute") (cons 2 "A") '(70 . 0)'(73 . 2)'(74 . 2)))
(entmake '((0 . "SEQEND"))))
(princ)
) 考虑过用polar函数,把属性基准点左移,但属性数字的长度不一致。
数值可能是4.5,可能是450.55,所以希望居中对齐,看起来更美观。
求大神帮忙 edata 发表于 2022-5-23 20:37
非常感谢! 感谢大神的回答 非常感谢! 感谢高手的分享 谢谢高手的提点