Freerefill 发表于 2022-7-6 14:39:41

-ATTIPEDIT和DDEDIT

我喜欢键入“ED”来激活DDEDIT功能,因为这样可以节省双击的时间,而且我通常可以在光标指向需要编辑的文本时键入命令。我制作了一个LISP(是的,我知道,我可以更改acad.pgp文件或制作一个宏…)基本上是:
 
(defun c:at()(命令“attipedit”))
 
因此,我可以键入“AT”以执行与DDEDIT相同的操作,仅针对块属性。
 
这个问题有两个方面。DDEDIT以某种循环方式执行,一旦您编辑完一个,它就允许您编辑另一个。阿提佩迪特不允许这样做。是否有任何方法将其放入循环以匹配功能?
 
另一方面,我偶尔会键入“AT”,然后单击一个常规文本对象,这会让AutoCAD认为我是个该死的白痴,并立即提醒我这一事实。那么,有没有办法将这两者结合成一个单一的命令?我相信如果我有地方开始的话,我可以自己做,但我不知道阿提佩迪特有什么样的选择。。不知何故,它可以激活属性,而无需打开对话框。而且,我确实试着把它放入一个循环中,但再一次,我不知道怎么做。
 
有什么想法吗?

Lee Mac 发表于 2022-7-6 14:50:19

我在04年没有-attipedit,但如果它有点像ddedit,那么可能:
 

(defun c:ed2 (/ ent)
(while (setq ent (nentsel "\nSelect Object: "))
   (cond ((wcmatch (cdadr (entget (car ent))) "*TEXT")
          (command "DDEDIT" ent pause))
         ((eq "ATTRIB" (cdadr (entget (car ent))))
          (command "-ATTIPEDIT" ent pause))
         (T (princ "\nInvalid Object Type... try again."))))
(princ))

Freerefill 发表于 2022-7-6 15:01:09

不幸的是,这行不通。我认为您无法将实体传递给ATTIPEDIT(但我会检查它)。事实上,我不知道如何选择工作。为了让您了解情况,当您运行命令时,它会要求您选择一个实体,就像DDEDIT一样。单击块属性,将显示在位文字编辑器,就像刚刚双击文字图元一样。然后,您可以键入您想要的内容,就像您正在编辑常规文本一样,当您单击“关”或单击“回车”时,属性会更改。。但与DDEDIT不同的是,您返回到命令提示符,它不会要求您选择另一个。
 
单击块会选择块,而不是属性。因此,我不知道如何将单个属性传递给ATTIPEDIT,除了获取块的所有属性,并以某种方式找到每段文本的范围,并检查单击点是否在其中一个范围内。。。但这对我来说似乎是一项艰巨的工作。
 
我想如果必须的话,我会做的。似乎有更好的方法。。。

Freerefill 发表于 2022-7-6 15:06:38

好了,循环开始工作了。。再次感谢李,你在没有意识到的情况下激励了我。
 
下一个,还有一个。
 
编辑:刚刚选中,(命令“attipedit”(entnext(car(entsel)))不起作用,当我单击具有可编辑属性的块时。事实上,它只是完全零了。我会继续玩的。

Lee Mac 发表于 2022-7-6 15:14:31

请记住,我使用了“nentsel”。。。。不是“entsel”-因此可以直接选择属性。

Freerefill 发表于 2022-7-6 15:26:32

o、 o“Nentsel”对我来说是一个新的*急着玩它*

Lee Mac 发表于 2022-7-6 15:35:57

 
神奇的命令-让你更容易直接访问子实体。
 
考虑到这一点,我的功能工作了吗?
 
如果你真的想获取信息,请查看nentselp

Freerefill 发表于 2022-7-6 15:40:04

唉,李,当我试图从头开始构建它或修改你的函数时,你的函数不起作用,我的函数也不起作用。DDEDIT和ATTIPEDIT似乎不接受实体。。当你调用这个函数时,不管发生什么,它都会提示你选择一个实体,然后它就会变得一团糟。我甚至不知道出了什么问题,但它一定与这些函数有关,因为其他一切(实体选择、条件语句)都完美地工作了。
 
以下是我的结论:
 
2
 
我将while循环更改为无论如何都要继续,因为没有设置(grread),这就尽可能接近于实现与DDEDIT相同的功能。我通常只是捣碎ESC无论如何。
 
至于看似无关的(命令),我把它们放在那里,因为这是一种取消命令的有效方式。不确定是否有“更干净”的方式,但这是我的工作方式。事实上,我已经用过好几次了,对我来说是有利的。。。
 
我真的不知道发生了什么事。我似乎无法找出这个错误。
 
有没有办法在DDEDIT之外的命令上打开就地文本编辑器?如果没有,我唯一能想到的就是获取实体并使用虚拟LISP或(entmod)修改文本字符串,在命令行中输入字符串。。我可以做到,但这并不完全是我想要的。^
页: [1]
查看完整版本: -ATTIPEDIT和DDEDIT