乐筑天下

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

[编程交流] 如果您';ve vla put TextStr

[复制链接]

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 14:37:21 | 显示全部楼层 |阅读模式
... 你已经把它们全部用vla-put-TextString'ed了。
 
使用LISP可以编辑嵌套在块中的文本。一旦我对它的功能感到满意,我就会把它贴在这里,但有一个难题我还没有解决。
 
我所掌握的唯一信息是,在AutoCAD 2009中,您可以编辑块内的文字,但仍然允许仅在选定区域内进行编辑。我的LISP将允许您编辑文本,但会对所有块进行更改。现在,最简单的事情就是编辑块名,是吗?这样,只有一个唯一的实体被更改(根据LISP当前具有的单项选择功能)。但是,我想知道,有没有更好的方法不使用块名?某突击队员指出,如果我更改了名称,但必须重新插入块,编辑的块将不会被替换,因为它现在被称为其他东西。
 
底线是,如果一个人要编辑一个块,他会以什么方式编辑它,使该块的所有其他实例都不会被更改?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:42:19 | 显示全部楼层
不能使用Entmod方法更改属性值吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:45:03 | 显示全部楼层
甚至像这样?
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:edAtt  [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]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentsel[/color][/b] [b][color=#ff00ff]"\nSelect Attribute: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  4.       [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]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] ent[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  5.       [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Textstring[/color][/b]
  6.         [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] ent[b][color=RED])[/color][/b] [b][color=#ff00ff]"It Works"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  7. [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 14:50:12 | 显示全部楼层
 
我没有走这条路,因为我觉得我需要Visual LISP的附加功能来完成整个工作,但我会再看一看。
 
另外,当我在做的时候,有没有一种方法可以更新VBA实体,就像使用entupd一样?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:53:47 | 显示全部楼层
 
我对VBA知之甚少。。。其他人必须回答这个问题。。
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 14:57:02 | 显示全部楼层
好的,只要尝试一下,entmod方法就得到了相同的结果:像它应该做的那样进行适当的更改,但实体在刷新图形之前不会更改。
 
以下是我使用的代码,您可以自己查看:
 
  1. (defun c:trr( / )
  2. ;(vla-put-TextString (vlax-ename->vla-object (car (nentsel))) " ")
  3. (setq ent (car (nentsel)))
  4. (setq entlst (entget ent))
  5. (setq entlst (subst (cons 1 " ") (assoc 1 entlst) entlst))
  6. (entmod entlst)
  7. (entupd ent)
  8. )

 
VLA的选择也在那里,刚刚评论道。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:58:13 | 显示全部楼层
引用ACAD帮助:
 
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:02:25 | 显示全部楼层
awww人。。太糟糕了!你知道,我的LISP游戏和GRREAD也有同样的问题。。。我不确定它是什么,但GRREAD返回的东西被保留了下来,我需要重新生成整个图形以清除它,以便它可以接受另一个或零输入。。
 
REGEN确实需要更大的灵活性。看起来要么全有要么全无,这对于AutoCAD来说很奇怪。如果我只是想重新生成积木呢?
 
哦,好吧。。我想现在还可以,直到我找到另一个解决方案。谢谢,李
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:05:29 | 显示全部楼层
(重画)速度更快,但我不确定它是否能像“regenall”一样表现好
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:07:54 | 显示全部楼层
尝试“重画”,没有骰子,没有更新修改后的文本。“Regenall”可以工作,但“regen”会更快。(entmod)/(entupd)不工作。我尝试过使用“刷新”和“重新加载”ActiveX方法,但我以前从未使用过这些方法,因此我在尝试中的失败并没有完全消除这一障碍。“清除”和(gc)不起作用,不知道为什么会起作用,但嘿,值得一试。
 
不过,有一件事确实奏效了,那就是复制和粘贴积木。这是一种黑客方法,但从各方面考虑,都比试图用多个布局选项卡重新生成一个巨大的图形要快,这样你就可以对标题栏进行一次修改。
 
剩下的就是找到一种方法来编辑块内的嵌套文本实体,而不改变所述块的每个实例。老实说,我并不完全反对创建一个唯一的块名。但是,如果我必须这样做,那么AutoCAD是如何做到的呢?假设您复制并粘贴为块,则块具有唯一的名称。AutoCAD使用什么公式来生成这样的名称?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:26 , Processed in 0.378322 second(s), 72 queries .

© 2020-2025 乐筑天下

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