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给你试一下,&nbsp;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/>&nbsp; <br/>&nbsp; ;加载vlisp函数<br/>&nbsp; (vl-load-com)</p><p>&nbsp; ;当前文档<br/>&nbsp; (setq acaddoc (vla-get-activedocument (vlax-get-acad-object)))<br/>&nbsp; <br/>&nbsp; ;选择处理对象<br/>&nbsp; (if (ssget '((0 . "TEXT")))<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;当前选集<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq selectionset (vla-get-activeselectionset acaddoc))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;保存捕捉<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq useros (getvar "OSMODE"))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;遍历选集处理对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-for obj selectionset</p><p>&nbsp;;文字对象外框<br/>&nbsp;(vla-getboundingbox obj 'leftdownpoint 'rightuppoint)</p><p>&nbsp;;设置颠倒:否<br/>&nbsp;(vla-put-upsidedown obj :vlax-false)</p><p>&nbsp;;设置反向:否<br/>&nbsp;(vla-put-backward obj :vlax-false)</p><p>&nbsp;;文字角度<br/>&nbsp;(setq ang (vla-get-rotation obj))</p><p>&nbsp;;调整角度<br/>&nbsp;(if (and (&gt; ang (* pi 0.5)) (&lt;= ang (* pi 1.5)))<br/>&nbsp;&nbsp; (vla-put-rotation obj (+ ang pi))<br/>&nbsp;&nbsp; )</p><p>&nbsp;;修改后的文字外框<br/>&nbsp;(vla-getboundingbox obj 'offsetleftdownpoint 'offsetrightuppoint)</p><p>&nbsp;;文字归位<br/>&nbsp;(vla-move obj offsetleftdownpoint leftdownpoint)</p><p>&nbsp;)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;恢复捕捉<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setvar "OSMODE" useros)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )</p><p>&nbsp; ;静默退出<br/>&nbsp; (princ)<br/>&nbsp; <br/>&nbsp; )</p>

liminnet 发表于 2008-7-10 09:25:00

页: 1 2 [3] 4
查看完整版本: 这个程序可以用文字的形心来旋转吗?