itacad 发表于 2022-7-5 15:20:55

如何处理各种类型的

您好,当我在寻找抄写文本的方法时,我遇到了这个话题
http://www.cadtutor.net/forum/showthread.php?87782-Are-there-a-way-copy-and-paste-via-clipboard-by-lisp
在那里我找到了“demopaste”lisp。
lisp适用于单行文本。。。我做了一个简单的修改(我添加了一个星号)
(if(setq string(ssget“_:S”'((0“*TEXT”)))
现在lisp可以处理单行和多行文本。
嗯,有很多lisp可以处理文本,但通常它们仅限于某些类型的文本。。。编程处理所有类型的文本可能非常困难,但不能处理属性也是非常有限的。
对于有多种文本类型的作品,你有什么一般性的建议吗?
提前谢谢你

hanhphuc 发表于 2022-7-5 15:27:52

 


(ssget "_:S" '((1 . "*")))

它包括所有字符串。。即:属性、维度文本、多行文字、文本等。。

itacad 发表于 2022-7-5 15:33:20

非常感谢。抱歉,即使进行了此更改,它也不会粘贴到属性上。。。

mostafa badran 发表于 2022-7-5 15:38:06

仅用于属性。
(ssget "_:S" '((0 . "INSERT")(66 . 1)))

itacad 发表于 2022-7-5 15:40:37

再次抱歉。。。但即使有了这个变化,lisp也不会将剪贴板中的文本粘贴到属性上。。。或者我不明白这些建议。。。

BIGAL 发表于 2022-7-5 15:43:08

如果你有多个属性,你怎么知道要更改哪一个?
 
你需要多解释一下你想做什么。
 
手动版本按住Ctrl键双击属性,然后按住Ctrl+v键将粘贴到现有属性值上。

itacad 发表于 2022-7-5 15:50:19

同时,我为自己的坚持道歉,并努力更好地解释自己。
如前所述,我连续使用lisps在各种文本对象上复制和粘贴文本。。。我必须使用的大多数文本对象都是属性。
幸运的是,有很多程序允许你在一次操作中选择文本并将其粘贴到某个位置,而无需打开编辑器。。。如果你必须多次这样做,你会节省很多时间,这就是为什么我反对“ctrl+c/ctrl+v”解决方案。
不幸的是,我经常处理冻结层,一个将文本从可见层带到冻结层的系统是将其临时保存在剪贴板中。。。
有许多LISP可以将选定的文本保存在剪贴板中,但我很难找到一个LISP来执行我必须执行的第二部分操作:将保存在剪贴板中的文本粘贴到选定的文本对象(包括属性)上。
当我尝试lisp“demopaste”时,我看到它完全满足了我的需要,具有无法粘贴到属性上的严重限制,它从剪贴板中获取的文本。。。所以我问了一些问题试图纠正它!
最终有很多Lisp可以捕捉选定文本对象的文本并将其粘贴到任何其他类型的文本对象上。。。我想找到一个lisp,它跳过文本选择的第一部分,直接从剪贴板中获取文本,并将其粘贴到任何类型的文本对象(包括属性)上。。。
我希望你已经理解了(对不起我的英语)!当做

BIGAL 发表于 2022-7-5 15:52:49

看看这两行代码,选择一个属性是有效的。
 

(setq obj (vlax-ename->vla-object (car (nentsel "\nPick "))))
(vla-put-textstring obj "ZZZZ")

 
需要使用PBE代码以上将有一个发挥

(setq ans pasted text)
(setq obj (vlax-ename->vla-object (car (nentsel "\nPick "))))
(vla-put-textstring obj ans)

itacad 发表于 2022-7-5 15:59:23

非常感谢。对不起,我不能使用你的建议。。。也许解决方法很简单,但我的麻烦是由于缺乏两种语言的知识:英语和Lisp!
同时,谢谢你,我们看看我能不能解决!

ronjonp 发表于 2022-7-5 16:01:02

也许这就是你想要的。尽管如Al所述,您通常如何确定哪些属性发生了更改?
(defun c:foo (/ _puttext _getclipboardtext s txt)
;; RJP - 04.12.2018
;; Copies clipboard text to selected objects
(defun _puttext (o s)
   (cond ((vlax-property-available-p o 'textstring) (vla-put-textstring o s))
((vlax-property-available-p o 'textoverride) (vla-put-textoverride o s))
((vlax-property-available-p o 'hasattributes)
   (foreach a (vlax-invoke o 'getattributes) (vla-put-textstring a s))
)
   )
)
;; http://www.theswamp.org/index.php?topic=35577.msg408049#msg408049
(defun _getclipboardtext (/ htmlfile result)
   (setq
   result (vlax-invoke
       (vlax-get (vlax-get (setq htmlfile (vlax-create-object "htmlfile")) 'parentwindow)
               'clipboarddata
       )
       'getdata
       "Text"
   )
   )
   (vlax-release-object htmlfile)
   result
)
(cond
   ((null (setq txt (_getclipboardtext))) (print "Nothing in clipboard"))
   ((null (setq s (ssget ":L" '((0 . "insert,*text,multileader,dimension"))))) (print "Bye.."))
   ((foreach a        (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
      (_puttext a txt)
    )
   )
)
(princ)
)
(vl-load-com)
页: [1] 2
查看完整版本: 如何处理各种类型的