liminnet
发表于 2008-7-8 09:26:00
caoyin
发表于 2008-7-8 10:35:00
建议你把文字定义为属性,镜像就没问题了
liminnet
发表于 2008-7-8 12:48:00
caoyin
发表于 2008-7-8 13:03:00
<p>唉,还是要镜像,这么多字,好晕,好多步骤呀,为什么只差一步就没人帮我,我都试了上面程序的效果啦,只差文字再以形心旋转180度就可以啦,都没人帮,真。。。。。。。。。。。。。。。。。。唉。。。人心冷淡呀</p><p>你总是喜欢发出这种声音...</p>
ZZXXQQ
发表于 2008-7-8 20:02:00
liminnet发表于2008-7-7 9:14:00static/image/common/back.gif还是不行呀,老大,我附上DWG给你试一下, 42213
<p>给那么高版本的图!是不是不想让人看呀?</p>
liminnet
发表于 2008-7-8 21:42:00
liminnet
发表于 2008-7-9 11:47:00
ZZXXQQ
发表于 2008-7-9 19:50:00
试试。
(defun c:tt ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq i 0)
(if (setq ss (ssget '((0 . "TEXT"))))
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
temp (cadr(textbox(list(assoc 1 ent))))
pt (cdr(assoc 10 ent))
ang (cdr(assoc 50 ent))
textw (cdr(assoc 41 ent))
tmp_w (* (car temp) textw)
tmp_h (cadr temp)
inv (cdr (assoc 71 ent)))
(cond
((= inv 2)
(setq ptt (polar pt (+ ang pi) tmp_w)
ent (subst (cons 10 ptt) (assoc 10 ent) ent)
ent (subst '(71 . 0) (assoc 71 ent) ent))
(entmod ent)
)
((= inv 4)
(setq ptt (polar pt (- ang (/ pi 2)) tmp_h)
ent (subst (cons 10 ptt) (assoc 10 ent) ent)
ent (subst '(71 . 0) (assoc 71 ent) ent))
(entmod ent)
)
((= inv 6)
(setq ptt (polar (polar pt (+ ang pi) tmp_w) (- ang (/ pi 2)) tmp_h)
ent (subst (cons 10 ptt) (assoc 10 ent) ent)
ent (subst '(71 . 0) (assoc 71 ent) ent))
(entmod ent)
)
)
(setq ent (entget en)
pt (cdr(assoc 10 ent))
ang (cdr(assoc 50 ent)))
(if (> ang (/ pi 2)) (progn
(setq pc (polar (polar pt ang (/ tmp_w 2)) (+ (/ pi 2) ang) (/ tmp_h 2)))
(command ".rotate" en "" pc "180")
))
(setq i (1+ i))
)
)
(setvar "OSMODE" oldos)
(setvar "CMDECHO" 1)
(princ)
)
sailorcwx
发表于 2008-7-10 00:22:00
<p>(defun c:test( / ACADDOC ANG LEFTDOWNPOINT OFFSETLEFTDOWNPOINT USEROS SELECTIONSET)<br/> <br/> ;加载vlisp函数<br/> (vl-load-com)</p><p> ;当前文档<br/> (setq acaddoc (vla-get-activedocument (vlax-get-acad-object)))<br/> <br/> ;选择处理对象<br/> (if (ssget '((0 . "TEXT")))<br/> <br/> (progn<br/> <br/> ;当前选集<br/> (setq selectionset (vla-get-activeselectionset acaddoc))</p><p> ;保存捕捉<br/> (setq useros (getvar "OSMODE"))</p><p> ;遍历选集处理对象<br/> (vlax-for obj selectionset</p><p> ;文字对象外框<br/> (vla-getboundingbox obj 'leftdownpoint 'rightuppoint)</p><p> ;设置颠倒:否<br/> (vla-put-upsidedown obj :vlax-false)</p><p> ;设置反向:否<br/> (vla-put-backward obj :vlax-false)</p><p> ;文字角度<br/> (setq ang (vla-get-rotation obj))</p><p> ;调整角度<br/> (if (and (> ang (* pi 0.5)) (<= ang (* pi 1.5)))<br/> (vla-put-rotation obj (+ ang pi))<br/> )</p><p> ;修改后的文字外框<br/> (vla-getboundingbox obj 'offsetleftdownpoint 'offsetrightuppoint)</p><p> ;文字归位<br/> (vla-move obj offsetleftdownpoint leftdownpoint)</p><p> )</p><p> ;恢复捕捉<br/> (setvar "OSMODE" useros)<br/> <br/> )<br/> )</p><p> ;静默退出<br/> (princ)<br/> <br/> )</p>
liminnet
发表于 2008-7-10 09:25:00