userzhl 发表于 2009-7-15 10:26:00

[求助]请教高手,如何能把属性块中的文字(其对齐方式为调整)与当前坐标对齐?

<p>请教高手,如何用LSP能把属性块中的文字(其对齐方式为调整)与当前坐标对齐?</p><p>ET工具中就有这样一个功能:TORIENT,但调整不了对齐方式为“调整”的字。</p><p>&nbsp;</p>

userzhl 发表于 2009-7-15 10:32:00

<p>附上文件:</p><p></p>

mmmmmm 发表于 2009-7-16 16:54:00


;;; ATT=ATTRIB ENAME
(Defun align-att-ucs (att / D10 D11 LL NEW OLD UR X11)
(vla-getboundingbox (vlax-ename->vla-object att) 'll 'ur)
(setq d10 (cdr (assoc 10 (entget att)))
d11 (cdr (assoc 11 (entget att)))
ll(vlax-safearray->list ll)
ur(vlax-safearray->list ur)
old (vlax-3d-point
       (polar ll (angle ll ur) (* 0.5 (distance ll ur)))
   )
x11 (polar d10
   (angle (getvar "UCSORG") (getvar "UCSXDIR"))
   (distance d10 d11)
   )
att (entget att)
att (subst (cons 11 x11) (assoc 11 att) att)
att (entmod att)
att (vlax-ename->vla-object (cdr (assoc -1 att)))
x11 (vla-getboundingbox att 'll 'ur)
ll(vlax-safearray->list ll)
ur(vlax-safearray->list ur)
new (vlax-3d-point
       (polar ll (angle ll ur) (* 0.5 (distance ll ur)))
   )
att (vla-move att new old)
)
(princ)
)

userzhl 发表于 2009-7-16 19:01:00

<p>( align-att-ucs "aabb"); </p><p><strong><font face="Verdana" color="#61b713">mmmmmm大哥</font></strong>,我对图中块名为"aabb"进行修改,怎么出错了呢?</p><p></p><p>错误: 参数类型错误: lentityp <br/>"aabb"</p>

mmmmmm 发表于 2009-7-17 09:25:00

<p>1:参数是属性实体,不是块的名字。</p><p>2:只对调整对齐的属性有效,其他的对齐类型会出错。</p><p>我写的仅是针对处理对齐属性的代码。你需要自己去完善其他的如搜索块内属性和判断对齐是否为调整等代码。</p>

userzhl 发表于 2009-7-17 17:14:00

哦,谢谢<strong><font face="Verdana" color="#61b713">mmmmmm</font></strong>

qazwsx0o0 发表于 2010-12-29 11:57:22

学习了,感谢楼上的高手!
页: [1]
查看完整版本: [求助]请教高手,如何能把属性块中的文字(其对齐方式为调整)与当前坐标对齐?