AstroNout 发表于 2022-7-6 22:37:20

实体“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岁时扮演一个野生角色。这样可以吗?
 
谢谢
阿诺特

fixo 发表于 2022-7-6 22:55:32

只是第一眼
当你写道:
Dim Ent, EntCopy As AcadEntity
这意味着在VBA术语中:
Dim Ent as Variant, EntCopy As AcadEntity
尝试对此进行更改:
Dim Ent as AcadEntity, EntCopy As AcadEntity

AstroNout 发表于 2022-7-6 23:03:50

哎呀。。。这将是初学者的错误。但它似乎并没有解决这个问题。它会导致类型不匹配。可能是一个错误或条款?

fixo 发表于 2022-7-6 23:11:11

对不起,没有测试,只是一个想法,我目前无法联系Acad
尝试在创建选择集之前添加层

AstroNout 发表于 2022-7-6 23:27:08

好的,开始工作了。显然,您必须重复or子句中的“Ent.layer=”。嗯,哼!有没有办法处理数据层名称中大写字母的差异?
 
谢谢菲索!你又救了我!
 
问候语

fixo 发表于 2022-7-6 23:37:03

不客气
要忽略案例,请使用以下内容:

If UCase(a)=Ucase(b) then
Lucky you
End if

 
干杯

fixo 发表于 2022-7-6 23:40:07

 
只是一个念头,现在很快就被考验了
更改为适合
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]
查看完整版本: 实体“Layer”属性不存在