实体“Layer”属性不存在
嗨,伙计们天气不好,所以回到VBA编程。这是代码,但是是ent。图层不工作。。。大笑!
Sub GRA1A()
Dim aLayer As AcadLayer
Dim Ent, EntCopy As AcadEntity
Dim SSet As AcadSelectionSet
Dim aPoly As AcadLWPolyline
Set SSet = ThisDrawing.SelectionSets.Add("sset")
SSet.SelectOnScreen
Set aLayer = ThisDrawing.Layers.Add("N_GRA1A")
Set aLayer = ThisDrawing.Layers.Add("N_GRA1GBA")
For Each Ent In SSet
If TypeOf Ent Is AcadLWPolyline Then
Set aPoly = Ent
aPoly.Closed = True
End If
Set EntCopy = Ent.Copy
If Ent.layer = "N_GVL1" Or "N_GBG1" Or "N_GBG2" Or "N_GBG3" Then
EntCopy.layer = "N_GRA1A"
ElseIf Ent.layer = "N_GBA" & "#" Then
EntCopy.layer = "N_GRA1GBA"
Else
EntCopy.layer = "N_GRA1A"
MsgBox "Blahblah"
End If
Next
ThisDrawing.SelectionSets.Item("sset").Delete
End Sub
“#”的目标是在1到11岁时扮演一个野生角色。这样可以吗?
谢谢
阿诺特 只是第一眼
当你写道:
Dim Ent, EntCopy As AcadEntity
这意味着在VBA术语中:
Dim Ent as Variant, EntCopy As AcadEntity
尝试对此进行更改:
Dim Ent as AcadEntity, EntCopy As AcadEntity 哎呀。。。这将是初学者的错误。但它似乎并没有解决这个问题。它会导致类型不匹配。可能是一个错误或条款? 对不起,没有测试,只是一个想法,我目前无法联系Acad
尝试在创建选择集之前添加层 好的,开始工作了。显然,您必须重复or子句中的“Ent.layer=”。嗯,哼!有没有办法处理数据层名称中大写字母的差异?
谢谢菲索!你又救了我!
问候语 不客气
要忽略案例,请使用以下内容:
If UCase(a)=Ucase(b) then
Lucky you
End if
干杯
只是一个念头,现在很快就被考验了
更改为适合
Option Explicit“在工具->选项->常规选项卡GRA1A()Dim aLayer As AcadLayerDim Ent As AcadIdentityDim EntCopy As AcadIdentityDim oSSets As AcadSelectionSetsDim SSet As AcadSelectionSetDim aPoly As AcadLWPolylineOn Error GoTo Err\u ControlDim layersArr As VariantlayersArr=Array(“N\u GVL1”,“N\u GBG1”,“N\u GBG2”,“N\u GBG3”,“N\u GBG3”,“N\u GB1”,“N\u GBA2”、“N\u GBA3”、“N\u GBA4”、“N\u GBA5”、“N\u GRA1A”)Dim itemOn Error Resume Next for layersArrSet aLayer=ThisDrawing中的每个项目。层(CStr(项目)),如果错误,则为错误。ClearMsgBox“layer”&项目&“不存在”&vbCr&“程序正在退出…”错误转到0时,退出子端ifnextim ftype(1)作为IntegerDim fdata(1)作为Variantftype(0)=0:ftype(1)=2fdata(0)=“lwpolyline”:fdata(1)=“N\u GVL1,N\u GBG1,N\u GBG2,N\u GBG3,N\u GBA*,N\u GRA1A”'
页:
[1]