Cadologist 发表于 2022-7-5 16:00:05

将多个文本翻转180度

我试图找到一个lisp例程,它可以将文本翻转180度。作为背景信息,我有一个包含大量多行文字项目的图形,所有项目都处于不同角度(用于细分地块布局高程和数据)。我需要将每个多行文字的角度增加180度,以便将其“翻转”到另一个方向以便于查看。
 
我在网上查过,我在各个网站上找到的所有信息都会将所有文本更改为相同的角度,或者对多个实体不全面,只适用于一段多行文字。
 
我也想这样做,用某种形式的LISP例程,而不是说创建一个新的文本样式,设置相反的方向或任何东西。不管怎么说,我已经找了很久了,什么都想不出来。此外,Express工具中包含的工具(即:旋转文本)需要特定角度。目前,我正在通过插入捕捉和典型旋转命令(PITA)手动和单独旋转它们!
 
总之,我试图找到一个LISP,它可以将多个文本或多行文字实体添加180度,并通过插入点旋转它们。
 
有人在旅行中遇到过这样的事情吗?

Lee Mac 发表于 2022-7-5 16:06:37

快速一:
 

(defun c:FlipTxt (/ i ss e eLst)

(if (setq i -1 ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
   (while (setq e (ssname ss (setq i (1+ i))))
   (setq eLst (entget e))
   (entmod (subst (cons 50 (+ pi (cdr (assoc 50 eLst))))
                  (assoc 50 eLst) eLst))))

(princ))

Cadologist 发表于 2022-7-5 16:13:02

非常好用,非常感谢!!这正是我想要的。

Lee Mac 发表于 2022-7-5 16:18:04

不客气

vsheehan 发表于 2022-7-5 16:22:03

这太棒了。是否可以添加用户指定的角度而不是180?
 
谢谢
文斯

Lee Mac 发表于 2022-7-5 16:32:39

欢迎来到CADTutor Vince
 
尝试以下简单程序:
 
(defun c:rt ( / a e i r s )
   (if (and
         (setq a (getangle "\nSpecify Angle: "))
         (setq s (ssget "_:L" '((0 . "TEXT,MTEXT"))))
       )
       (repeat (setq i (sslength s))
         (setq e (entget (ssname s (setq i (1- i))))
               r (assoc 50 e)
         )
         (entmod (subst (cons 50 (+ (cdr r) a)) r e))
       )
   )
   (princ)
)
 
这是一条很旧的线!

vsheehan 发表于 2022-7-5 16:37:31

真管用!是的,我在雅虎搜索中找到了这个线索。
 
谢谢你的代码。
文斯

Lee Mac 发表于 2022-7-5 16:41:52

不客气,文斯

Organic 发表于 2022-7-5 16:48:36

这是一个很好的Lisp程序。我通常使用以下lisp(不是我写的)进行等高线标签定位,尽管它需要更多的步骤。
 
;;SpinText.LSP
;;To Rotate Text and/or Mtext entities by the same amount
;;about each one's individual insertion point.
;;Kent Cooper, November 2008

(defun C:SpinText (/ ttype selmode trotd trotr textset titem tdata)
(initget "Text Mtext Both")
(setq ttype (getkword "Type of text - Text/Mtext/Both (T/M/B) <B>: "))
(if (or (not ttype) (= ttype "Both")) (setq ttype "*TEXT"))
(initget "All User")
(setq
   selmode (getkword "Selection - All in drawing/User selected (A/U) <A>: ")
   trotd (getreal "Rotation (from current) in degrees <180>: ")
   trotr
   (if trotd
       (/ (* trotd pi) 180)
       pi
   ); end if and trotr
); end setq
(if (/= selmode "User")
   (setq textset (ssget "_X" (list (cons 0 ttype))))
   (setq textset (ssget (list (cons 0 ttype))))
); end if
(while (> (sslength textset) 0)
   (setq
   titem (ssname textset 0)
   tdata (entget titem)
   tdata (subst (cons 50 (+ (cdr (assoc 50 tdata)) trotr)) (assoc 50 tdata) tdata)
   ); end setq
   (entmod tdata)
   (entupd titem)
   (ssdel titem textset)
); end while
); end defun
(prompt "Type SpinText to rotate Text and/or Mtext entities about their insertion points.")

amb2301 发表于 2022-7-5 16:51:16

 
您好Lisp Legend,
我是lisp的新手。。。。我需要一个帮助,在创建一个lisp,实际上我有很多(近数千个文本转换为一个单一的绘图文件)的文本从不同角度转换为零角度,并改变其文字高度和字体风格,如附件所示。dwg文件,
另一件重要的事是,我需要删除该文本中的/符号,并重新排列,如附件所示。dwg文件。
请看这一点,并要求为这项工作提供lisp。
我还需要删除P50/(可能是任何PXX/)文本,
我希望你能理解我的要求。。。。。。。请帮忙
文本转换。图纸
页: [1] 2
查看完整版本: 将多个文本翻转180度