乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 35|回复: 7

[编程交流] -ATTIPEDIT和DDEDIT

[复制链接]

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:50:19 | 显示全部楼层
我在04年没有-attipedit,但如果它有点像ddedit,那么可能:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ed2 [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ent[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect Object: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  3.    [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ent[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"*TEXT"[/color][/b][b][color=RED])[/color][/b]
  4.           [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"DDEDIT"[/color][/b] ent pause[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  5.          [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#ff00ff]"ATTRIB"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ent[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  6.           [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"-ATTIPEDIT"[/color][/b] ent pause[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  7.          [b][color=RED]([/color][/b][b][color=BLUE]T[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\nInvalid Object Type... try again."[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  8. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:06:38 | 显示全部楼层
好了,循环开始工作了。。再次感谢李,你在没有意识到的情况下激励了我。
 
下一个,还有一个。
 
编辑:刚刚选中,(命令“attipedit”(entnext(car(entsel)))不起作用,当我单击具有可编辑属性的块时。事实上,它只是完全零了。我会继续玩的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:14:31 | 显示全部楼层
请记住,我使用了“nentsel”。。。。不是“entsel”-因此可以直接选择属性。
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:26:32 | 显示全部楼层
o、 o“Nentsel”对我来说是一个新的*急着玩它*
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:35:57 | 显示全部楼层
 
神奇的命令-让你更容易直接访问子实体。
 
考虑到这一点,我的功能工作了吗?
 
如果你真的想获取信息,请查看nentselp
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:40:04 | 显示全部楼层
唉,李,当我试图从头开始构建它或修改你的函数时,你的函数不起作用,我的函数也不起作用。DDEDIT和ATTIPEDIT似乎不接受实体。。当你调用这个函数时,不管发生什么,它都会提示你选择一个实体,然后它就会变得一团糟。我甚至不知道出了什么问题,但它一定与这些函数有关,因为其他一切(实体选择、条件语句)都完美地工作了。
 
以下是我的结论:
 
  1. 2

 
我将while循环更改为无论如何都要继续,因为没有设置(grread),这就尽可能接近于实现与DDEDIT相同的功能。我通常只是捣碎ESC无论如何。
 
至于看似无关的(命令),我把它们放在那里,因为这是一种取消命令的有效方式。不确定是否有“更干净”的方式,但这是我的工作方式。事实上,我已经用过好几次了,对我来说是有利的。。。
 
我真的不知道发生了什么事。我似乎无法找出这个错误。
 
有没有办法在DDEDIT之外的命令上打开就地文本编辑器?如果没有,我唯一能想到的就是获取实体并使用虚拟LISP或(entmod)修改文本字符串,在命令行中输入字符串。。我可以做到,但这并不完全是我想要的。^
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 00:18 , Processed in 0.582127 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表