如何设置所有嵌套实体
你好这在不重新编辑外部参照的情况下是否可行????
谢谢Serge 是的
使用代码时,必须按块定义获取实体,然后将其颜色特性更改为按层。
您是指特定的块参照,还是指外部参照,还是希望将图形中的所有上述图元更改为“按图层”?
Serge,我只能用VBA提供答案,可以吗?
毫升 你好
VBA正常。我想将图形中上述所有外部参照实体更改为“按图层”。
谢谢
哔叽 嘿Serge,
对不起,花了这么长时间,我一直很忙。
回答您的问题,是的,我们可以在不使用外部参照的情况下实现这一点;我们必须编辑块定义表,这就是我们在下面的代码中所做的。
我们必须首先检查块是否实际上是外部参照;
如果是,请检查该特定外部参照名称。
如果名称匹配,则将该外部参照的所有图元更改为“Bylayer”
至于昏暗的风格,这将不得不单独处理,但我认为所有其他可以更改的对象都在下面处理。
它似乎对我很有效。
让我知道你过得怎么样
毫升
Sub XrefEntsToByLayer()
Dim Blk As AcadBlock
Dim xrEnt As AcadEntity
For Each Blk In ThisDrawing.Blocks
If Not Blk.IsLayout Then
If Blk.IsXRef Then
If Blk.Name = "xrefname" Then 'Replace xrefname with the name of your xref
'MsgBox Blk.Name
For Each xrEnt In Blk
'xrEnt.Layer = "0" 'If you want to change the xref layer.
xrEnt.color = acByLayer
xrEnt.LinetypeScale = acByLayer
xrEnt.Lineweight = acLnWtByLayer
xrEnt.Update
Next xrEnt
End If
End If
End If
Next Blk
ThisDrawing.Regen acActiveViewport
End Sub
哇,谢尔盖
这段代码的工作原理很奇怪。
我认为,这正是你要求的。
它使用外部参照的源bylayer特性将所有图元放置在外部参照bylayer中,但它似乎仅在当前图形中更新,而不影响源文件。
我不确定这是不是你的意图?
让我知道
毫升 ,这正是我想要的。我明天试试看,这个星期五告诉你。(如果你觉得可以的话)。
当这一切顺利时,我将能够结合我在另一个线程中提到的lisp以及我从Jason Piercy那里获得的lisp,为外部参照的所有层提供一种特定的颜色。(见下文)你能帮我测试一下吗?
(defun c:adjustXref (/ lst ename object name)
(setvar "errno" 0)
(while (/= 52 (getvar "errno"))
(setq lst (entsel "\nselect an xref : "))
(cond
((= 7 (getvar "errno"))
(princ "\nMiss pick")
(setvar "errno" 0) )
((and
lst
(setq ename (car lst))
(setq object (vlax-ename->vla-object ename))
(vlax-property-available-p object 'path)
)
(setq name (vla-get-name object))
(command "layer" "c" 252 (strcat name "|*") "" "")
(command "draworder" ename "" "back")
)
(lst (princ "\nselection was not an xref"))
(t (setvar "errno" 52))
)
)
(princ)
)
我希望这将是仅以一种特定颜色(在本例中为color252)绘制外部参照的突破。
提前谢谢。
哔叽 哦,是的,我忘了,
你能演示一下如何处理尺寸吗。
然后我想它会解决的。
哔叽
嗨,谢尔盖,
我很高兴这就是你需要的。
那么,您确定源外部参照没有受到影响吗?
至少昨晚没有,我可以再测试一次。
这很有意义,因为我们抓取的是块,而不是实际的外部参照本身。
在你的文章中,你提到了Refedit;如果小心和明智地使用,Refedit是很棒的。Refedit实际上会影响源文件,而我提供的代码使用的是源文件中的信息,但不会影响源文件。
所以,如果这真的是你需要的,那就太好了:)
我相信我们也可以像Refedit那样获取实际的源外部参照文件;有一个acadexternalreference对象,我只需要进一步研究它。
Serge,我对LISP不太在行,但如果你想给我发送一个文件样本,我会尝试LISP例程,我真的无法帮你调整它。我对LISP知之甚少。
当然,我们可能会将您想要的暗淡样式设置为活动。
请告诉我您正在使用的dim样式名称。
还有,最后一件事,我试图将线型设置为bylayer,但我一直得到,key not found。
我的猜测是,问题是不同的实体可以位于不同的层上,每个层可以有自己的指定线型。
因此,如果我们将所有外部参照实体放在一个图层上(我在代码中提供了该功能),那么我们可能会根据需要将该图层的线型更改为“bylayer”。
毫升 哇!
我刚刚意识到
如果出于某种原因,您希望使源外部参照中的所有实体都具有不同的颜色、线宽等以进行显示,那么我提供给您的代码将非常有用。然而,当它实际上是外部参照到另一个图形中时,您希望出于任何原因(我认为在您的示例中)使用初始的“bylayer”设置进行打印。
我猜,这就是你在做的?
毫升
是的,确实不能影响外部参照。
只需将lisp复制到命令行中,并使用adjustxref加载lisp。
谢谢Serge
页:
[1]
2