乐筑天下

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

[编程交流] 如何设置所有嵌套实体

[复制链接]

1

主题

8

帖子

18

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 17:27:20 | 显示全部楼层 |阅读模式
你好
 
这在不重新编辑外部参照的情况下是否可行????
 
谢谢Serge
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:35:54 | 显示全部楼层
是的
使用代码时,必须按块定义获取实体,然后将其颜色特性更改为按层。
 
您是指特定的块参照,还是指外部参照,还是希望将图形中的所有上述图元更改为“按图层”?
 
Serge,我只能用VBA提供答案,可以吗?
 
毫升
回复

使用道具 举报

1

主题

8

帖子

18

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 17:38:27 | 显示全部楼层
你好
 
VBA正常。我想将图形中上述所有外部参照实体更改为“按图层”。
 
谢谢
 
哔叽
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:45:28 | 显示全部楼层
嘿Serge,
对不起,花了这么长时间,我一直很忙。
回答您的问题,是的,我们可以在不使用外部参照的情况下实现这一点;我们必须编辑块定义表,这就是我们在下面的代码中所做的。
 
我们必须首先检查块是否实际上是外部参照;
如果是,请检查该特定外部参照名称。
如果名称匹配,则将该外部参照的所有图元更改为“Bylayer”
 
至于昏暗的风格,这将不得不单独处理,但我认为所有其他可以更改的对象都在下面处理。
 
它似乎对我很有效。
让我知道你过得怎么样
 
毫升
 
  1. Sub XrefEntsToByLayer()
  2. Dim Blk As AcadBlock
  3. Dim xrEnt As AcadEntity
  4. For Each Blk In ThisDrawing.Blocks
  5. If Not Blk.IsLayout Then
  6.   If Blk.IsXRef Then
  7.    If Blk.Name = "xrefname" Then 'Replace xrefname with the name of your xref
  8.     'MsgBox Blk.Name
  9.     For Each xrEnt In Blk
  10.      'xrEnt.Layer = "0" 'If you want to change the xref layer.
  11.      xrEnt.color = acByLayer
  12.      xrEnt.LinetypeScale = acByLayer
  13.      xrEnt.Lineweight = acLnWtByLayer
  14.      xrEnt.Update
  15.     Next xrEnt
  16.    End If
  17.   End If
  18. End If
  19. Next Blk
  20. ThisDrawing.Regen acActiveViewport
  21. End Sub
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 17:50:31 | 显示全部楼层
哇,谢尔盖
这段代码的工作原理很奇怪。
 
我认为,这正是你要求的。
 
它使用外部参照的源bylayer特性将所有图元放置在外部参照bylayer中,但它似乎仅在当前图形中更新,而不影响源文件。
 
我不确定这是不是你的意图?
 
让我知道
毫升
回复

使用道具 举报

1

主题

8

帖子

18

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 17:55:58 | 显示全部楼层
,这正是我想要的。我明天试试看,这个星期五告诉你。(如果你觉得可以的话)。
 
当这一切顺利时,我将能够结合我在另一个线程中提到的lisp以及我从Jason Piercy那里获得的lisp,为外部参照的所有层提供一种特定的颜色。(见下文)你能帮我测试一下吗?
 
  1. (defun c:adjustXref (/ lst ename object name)
  2. (setvar "errno" 0)
  3. (while (/= 52 (getvar "errno"))
  4. (setq lst (entsel "\nselect an xref : "))
  5. (cond
  6. ((= 7 (getvar "errno"))
  7. (princ "\nMiss pick")
  8. (setvar "errno" 0) )
  9. ((and
  10. lst
  11. (setq ename (car lst))
  12. (setq object (vlax-ename->vla-object ename))
  13. (vlax-property-available-p object 'path)
  14. )
  15. (setq name (vla-get-name object))
  16. (command "layer" "c" 252 (strcat name "|*") "" "")
  17. (command "draworder" ename "" "back")
  18. )
  19. (lst (princ "\nselection was not an xref"))
  20. (t (setvar "errno" 52))
  21. )
  22. )
  23. (princ)
  24. )

 
我希望这将是仅以一种特定颜色(在本例中为color252)绘制外部参照的突破。
 
提前谢谢。
 
哔叽
回复

使用道具 举报

1

主题

8

帖子

18

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 18:00:31 | 显示全部楼层
哦,是的,我忘了,
 
你能演示一下如何处理尺寸吗。
 
然后我想它会解决的。
 
哔叽
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 18:06:48 | 显示全部楼层
 
嗨,谢尔盖,
我很高兴这就是你需要的。
 
那么,您确定源外部参照没有受到影响吗?
至少昨晚没有,我可以再测试一次。
这很有意义,因为我们抓取的是块,而不是实际的外部参照本身。
 
在你的文章中,你提到了Refedit;如果小心和明智地使用,Refedit是很棒的。Refedit实际上会影响源文件,而我提供的代码使用的是源文件中的信息,但不会影响源文件。
 
所以,如果这真的是你需要的,那就太好了:)
 
我相信我们也可以像Refedit那样获取实际的源外部参照文件;有一个acadexternalreference对象,我只需要进一步研究它。
 
Serge,我对LISP不太在行,但如果你想给我发送一个文件样本,我会尝试LISP例程,我真的无法帮你调整它。我对LISP知之甚少。
 
当然,我们可能会将您想要的暗淡样式设置为活动。
请告诉我您正在使用的dim样式名称。
 
还有,最后一件事,我试图将线型设置为bylayer,但我一直得到,key not found。
 
我的猜测是,问题是不同的实体可以位于不同的层上,每个层可以有自己的指定线型。
 
因此,如果我们将所有外部参照实体放在一个图层上(我在代码中提供了该功能),那么我们可能会根据需要将该图层的线型更改为“bylayer”。
 
毫升
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 18:08:27 | 显示全部楼层
哇!
我刚刚意识到
 
如果出于某种原因,您希望使源外部参照中的所有实体都具有不同的颜色、线宽等以进行显示,那么我提供给您的代码将非常有用。然而,当它实际上是外部参照到另一个图形中时,您希望出于任何原因(我认为在您的示例中)使用初始的“bylayer”设置进行打印。
 
我猜,这就是你在做的?
 
毫升
回复

使用道具 举报

1

主题

8

帖子

18

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 18:13:32 | 显示全部楼层
 
是的,确实不能影响外部参照。
 
 
只需将lisp复制到命令行中,并使用adjustxref加载lisp。
 
谢谢Serge
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:23 , Processed in 0.695036 second(s), 72 queries .

© 2020-2025 乐筑天下

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