laughingod 发表于 2022-7-6 07:16:09

查找、剪切和粘贴文本字符串

大家好,我对论坛和lisp编程是新手。
 
我需要一些帮助来编写在图形中执行以下操作的lisp:
1) 查找默认文本字符串(在本例中为“/”符号)
2) 剪切“/”符号后的整个文本字符串
3) 将其粘贴到原始文本字符串下方的行中
 
请参阅附图,图中右侧显示了所需结果的阴影区域。
我应该如何解决这个问题?我应该从哪里开始?
 
我正在使用AutoCad Electrical 2012
非常感谢!

Tharwat 发表于 2022-7-6 07:49:00

试试这个。。。。
 

(defun c:Test (/ ss)
;;; Tharwat 16. Nov. 2.12 www.cadTutor.com ;;;
(if (setq ss (ssget '((0 . "*TEXT") (1 . "*/*"))))
   ((lambda (i / e sn e st po p)
      (while (setq sn (ssname ss (setq i (1+ i))))
      (setq po (vl-position
                   47
                   (vl-string->list
                     (setq st (cdr (assoc 1 (setq e (entget sn)))))
                   )
               )
      )
      (setq p (polar (cdr (assoc 10 e))
                     (+ (cdr (assoc 50 e)) (* pi 1.5))
                     (* (cdr (assoc 40 e)) 1.2)
                )
      )
      (if (eq (cdr (assoc 0 e)) "TEXT")
          (entmakex (list (assoc 0 e)
                        (cons 1 (substr st (+ po 2)))
                        (assoc 40 e)
                        (cons 10 p)
                        (cons 11 p)
                        (assoc 50 e)
                  )
          )
          (entmakex (list (assoc 0 e)
                        '(100 . "AcDbEntity")
                        '(100 . "AcDbMText")
                        (cons 1 (substr st (+ po 2)))
                        (assoc 40 e)
                        (cons 10 p)
                        (cons 11 p)
                        (assoc 50 e)
                  )
          )
      )
      (entmod (subst (cons 1 (substr (cdr (assoc 1 e)) 1 po))
                     (assoc 1 e)
                     e
                )
      )
      )
    )
   -1
   )
)
(princ "\n Written by Tharwat")
(princ)
)

laughingod 发表于 2022-7-6 08:38:20

你好Tharwat,
 
感谢您的及时回复,
我忘了提到这是一个与attrib块。文本是块属性的一部分(有没有办法不分解块?新复制的文本不必是块的一部分,它们可以保留为文本)
 
这是一个好的开始,谢谢。
页: [1]
查看完整版本: 查找、剪切和粘贴文本字符串