有时有效有时无效
本人';我迷惑不解和迷惑…有时这个代码有效…有时不#039;t、 ..如能随时修改代码以实现此功能,我们将不胜感激。TIA:丑陋:私有子CMDChangePortLayer\u Click()
Dim vport As AcadPViewport
Dim oLayout As AcadLayout
Dim newLayer As AcadLayer
Set newLayer=ThisDrawing.Layers.Add(“Viewport”)
本图纸。ActiveLayer=newLayer.ActiveLayer。Plottable=FalseThisDrawing.ActiveLayer。颜色=acGreen。隐藏;出错时,继续此绘图中每个oLayout的下一步。如果oLayout,则布局。名称(<)&燃气轮机&引用;型号;然后针对oLayout中的每个vport。块
&039;将vports更改为驻留在层上;视口“
。层(<)&燃气轮机&引用;视口“;然后输入。层=“”;视口“
如果下一个';扼流圈
有一件事很多人都不知道';我不知道,纸张空间本身就是一个视口。。。 看起来是这样的;“应该”;当然,您也可以枚举PS对象或创建paperspace中所有视口对象的选择集。可能存在争议的一件事是不规则形状的视口。编程上,它们是被闭合多边形或圆遮挡的视口,可能无法识别。 我似乎还记得格伦·布洛克帮我问过同样的问题
纸张空间视口始终在单个VP之前创建,因此您可以使用它';s id.
Public Sub PViewportsLayer(pLayout As AcadLayout)
Dim pEnt As AcadEntity, id As Long
For Each pEnt In pLayout.Block
If TypeOf pEnt Is AcadPViewport Then
If id = 0 Then
id = pEnt.ObjectID
Else
If pEnt.ObjectID > id Then
pEnt.Layer = "Viewport"
End If
End If
End If
Next
Set pEnt = Nothing
Set pLayout = Nothing
End Sub
Sub Thang()
Dim l As AcadLayout
ThisDrawing.LAYERS.Add ("Viewport")
For Each l In ThisDrawing.Layouts
If l.ModelType = False Then
PViewportsLayer l
End If
Next
End Sub
我知道它看起来只会在块中的视口中迭代,但它会迭代块中的每一件事,直线、多段线、块引用,你可以说。如果块中的内容不是AcadPViewport,则可能会出现错误13,类型不匹配。 Bryco,
可以#039;我无法让它工作。我希望它是在命令下(在cmb下)调用的,而不是作为潜艇。你能建议吗
还有谁能进一步说明这一点吗? 不太清楚您的意思,但如果您是从表单运行它,只需将名称从sub-Thang更改为Private-sub-cmdChangeVPortLayer\u Click(),就可以了。由于Public Sub-PViewportsLayer是公共的,因此它可以是表单或模块中的 不。仍然没有';t在ADT2005中工作:realmad: 这会给你一个错误吗
我没有adt,究竟是什么;我希望它能在命令下达后被调用”;意思是
页:
[1]