szx025 发表于 2015-9-29 14:56:11

文字原位转180度的程序。改为90度

(defun c:gfz (/cmn osnss i n ssn ssndata ssnsty pt ptmin ptmax cenpt
      *error* msg)
(defun *error* (msg)
    (if
      (wcmatch msg "; 错误:,函数被取消")
       (progn
   (setvar 'cmdecho cmn)
   (setvar 'osmode osn)
   (princ)
       )
       (princ msg)
    )
)
(setq cmn (getvar 'cmdecho))
(setq osn (getvar 'osmode))
(setvar 'cmdecho 0)
(setvar 'osmode 0)
(princ"\n选择要原地反转的对象:")
(setq ss (ssget ))
(setq i 0)
(setq n (sslength ss))
(repeat n
    (setq ssn (vlax-ename->vla-object (ssname ss i)))
    (vla-GetBoundingBox ssn 'ptmax 'ptmin)
    (setq pt (mapcar '(lambda (a b) (/ (+ a b) 2))
         (vlax-safearray->list ptmax)
         (vlax-safearray->list ptmin)
       )
    )
    (vlax-invoke-method
      ssn
      'rotate
      (vlax-3d-point pt)
      pi
    )
    (setq i (1+ i))
)
(command "ucs" "")
(setvar 'cmdecho cmn)
(setvar 'osmode osn)
(princ "\n命令:GFZ")
(princ)
)

这是一个可以把文字原位转180度的程序,我想改为转90度,把pi改为(* pi 0.5)不行,请高手帮帮忙

masterlong 发表于 2015-9-29 15:06:44

可以转
1
检查修改后有没有重加载
2
检查原文字是否本身是90度
因为程序不是原角度+90
而是强制角度=90
3
(ssget)加对象过滤

szx025 发表于 2015-9-29 15:22:16

masterlong 发表于 2015-9-29 15:06 static/image/common/back.gif
可以转
1
检查修改后有没有重加载


1,2都查了。没有问题,程序执行后的提示是:实参太多
3,不会,麻烦详细说说

masterlong 发表于 2015-9-29 15:39:20

(ssget '((0 . "text")))
ssget函数更多的用法
需要你自己学习
建议下个《AutoLisp Vlisp 函数.chm》
实参太多的错误
没办法帮你
因为我这里运行没问题

xyp1964 发表于 2015-9-29 21:27:35

(defun c:tt ()
(setvar 'osmode 0)
(princ "\n选择要原地反转的对象: ")
(setq ss (ssget '((0 . "text")))
        i-1
)
(repeat (sslength ss)
    (setq ob (vlax-ename->vla-object (ssname ss (setq i (1+ i)))))
    (vla-GetBoundingBox ob 'ptmax 'ptmin)
    (setq pt (mapcar '(lambda (a b) (/ (+ a b) 2))
                     (vlax-safearray->list ptmax)
                     (vlax-safearray->list ptmin)
             )
          pt (vlax-3d-point pt)
    )
    (vlax-invoke-method ob 'rotate pt (* pi 0.5))
)
(princ)
)

香田里浪人 发表于 2015-9-30 07:35:46

;;;旋转文字图块
(defun c:xzwz(/ x k s n m en r)
(vl-load-com)
(setq x(getangle"\n输入需要旋转的角度<归0>:"))
(if(null x)(setq x 0 k nil) (setq k t))
(while
(setq s(ssget'((0 . "INSERT,text,mtext"))))
(if s
    (progn
      (setq n(sslength s)m 0)
      (while(< m n)
      (setq en(ssname s m)
            m(1+ m))
      (if k(setq r (+ (cdr(assoc 50 (entget en))) x))(setq r x))
      (vla-put-Rotation (vlax-ename->vla-object en) r)
      )))
)
(princ)
)

szx025 发表于 2015-9-30 08:00:27

谢谢楼上的朋友。

szx025 发表于 2015-9-30 09:39:48

香田里浪人 发表于 2015-9-30 07:35 static/image/common/back.gif
;;;旋转文字图块
(defun c:xzwz(/ x k s n m en r)
(vl-load-com)


这个程序再完善一下跟好,就是自动记住上次确定的转动角度,这样就不用每次都要再输入转动角度了
页: [1]
查看完整版本: 文字原位转180度的程序。改为90度