fire9527 发表于 2015-6-6 22:50:18

如何批量改变直线角度?

本帖最后由 fire9527 于 2015-6-7 19:51 编辑

制作带文字的线型一个不好的地方就是如果线段是反向的,比如180度,270度,则线型上的文字也会反向,能否批量选中这些文字反向的直线,然后将直线以中心点旋转180度(或者采用reverse命令)来解决这个问题?

edata 发表于 2015-6-6 22:50:19

fire9527 发表于 2015-6-10 21:09 static/image/common/back.gif
关键就是不会改那判断条件啊

;直线90-270度反向
(defun c:tt (/ ss i en ent p1 p2 ang )
(if (and (princ "\n选择直线: ")
          (setq ss (ssget '((0 . "LINE")))))
(repeat (setq i (sslength ss))
   (setq en (ssname ss (setq i (1- i))))
   (setq ent (entget en))
   (setq p1 (cdr(assoc 10 ent)))
   (setq p2 (cdr(assoc 11 ent)))
   (setq ang (angle p1 p2))
   (if (and (> ang (* pi 0.5))(<= ang (* pi 1.5))) (progn
    (setq ent (subst (cons 10 p2) (assoc 10 ent) ent))
    (entmod (subst (cons 11 p1) (assoc 11 ent) ent))
   ))
)
)
(princ)
)
;直线90-270度全部反向
(defun c:tt2 (/ ss i en ent p1 p2 ang )
(if (and (princ "\n选择直线: ")
          (setq ss (ssget "x" '((0 . "LINE")))))
(repeat (setq i (sslength ss))
   (setq en (ssname ss (setq i (1- i))))
   (setq ent (entget en))
   (setq p1 (cdr(assoc 10 ent)))
   (setq p2 (cdr(assoc 11 ent)))
   (setq ang (angle p1 p2))
   (if (and (> ang (* pi 0.5))(<= ang (* pi 1.5))) (progn
    (setq ent (subst (cons 10 p2) (assoc 10 ent) ent))
    (entmod (subst (cons 11 p1) (assoc 11 ent) ent))
   ))
)
)
(princ)
)

Andyhon 发表于 2015-6-7 09:17:43

请给个调试用的样本Dwg供验证...

ZZXXQQ 发表于 2015-6-7 10:31:46

本帖最后由 ZZXXQQ 于 2015-6-11 08:17 编辑

;直线转180度
(defun c:tt ()
(if (and (princ "\n选择直线: ")
          (setq ss (ssget '((0 . "LINE")))))
(repeat (setq i (sslength ss))
   (setq en (ssname ss (setq i (1- i))))
   (setq ent (entget en))
   (setq p1 (cdr(assoc 10 ent)))
   (setq p2 (cdr(assoc 11 ent)))
   (setq ang (angle p1 p2))
   (if (< (* pi 0.5) ang (* pi 1.6)) (progn
    (setq ent (subst (cons 10 p2) (assoc 10 ent) ent))
    (entmod (subst (cons 11 p1) (assoc 11 ent) ent))
   ))
)
)
(princ)
)

fire9527 发表于 2015-6-7 10:59:53

ZZXXQQ 发表于 2015-6-7 10:31 static/image/common/back.gif


刚上传了附件,我想要的效果并不是所有直线旋转180度,而是满足一定角度的直线,请看一下

fire9527 发表于 2015-6-7 11:05:23

Andyhon 发表于 2015-6-7 09:17 static/image/common/back.gif
请给个调试用的样本Dwg供验证...

附件已上传

fire9527 发表于 2015-6-7 11:59:40

ZZXXQQ 发表于 2015-6-7 10:31 static/image/common/back.gif


刚是了下,没反应哦,还有就是并不是所有直线都要旋转180度,而是在一定角度范围内的直线才需要旋转,解决带字线型字体反转的问题

ivde 发表于 2015-6-7 12:15:23

reverse 曲线反向

自贡黄明儒 发表于 2015-6-7 12:35:09

ivde 发表于 2015-6-7 12:15 static/image/common/back.gif
reverse 曲线反向

高版本才有这个命令,不知从哪一版开始

fire9527 发表于 2015-6-7 19:50:17

ZZXXQQ 发表于 2015-6-7 10:31 static/image/common/back.gif


老大,试试reverse这个命令呢,还有就是麻烦看看附件,需要程序构建特定角度的选择集,而不是手动去选择
页: [1] 2
查看完整版本: 如何批量改变直线角度?