乐筑天下

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

[编程交流] 实体“Layer”属性不存在

[复制链接]

14

主题

42

帖子

28

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 22:37:20 | 显示全部楼层 |阅读模式
嗨,伙计们
 
天气不好,所以回到VBA编程。这是代码,但是是ent。图层不工作。。。大笑!
 
  1. Sub GRA1A()
  2. Dim aLayer As AcadLayer
  3. Dim Ent, EntCopy As AcadEntity
  4. Dim SSet As AcadSelectionSet
  5. Dim aPoly As AcadLWPolyline
  6.   
  7.    Set SSet = ThisDrawing.SelectionSets.Add("sset")
  8.    SSet.SelectOnScreen
  9.    
  10.    Set aLayer = ThisDrawing.Layers.Add("N_GRA1A")
  11.    Set aLayer = ThisDrawing.Layers.Add("N_GRA1GBA")
  12.    For Each Ent In SSet
  13.        If TypeOf Ent Is AcadLWPolyline Then
  14.            Set aPoly = Ent
  15.            aPoly.Closed = True
  16.        End If
  17.        Set EntCopy = Ent.Copy
  18.        If Ent.layer = "N_GVL1" Or "N_GBG1" Or "N_GBG2" Or "N_GBG3" Then
  19.            EntCopy.layer = "N_GRA1A"
  20.        ElseIf Ent.layer = "N_GBA" & "#" Then
  21.            EntCopy.layer = "N_GRA1GBA"
  22.        Else
  23.            EntCopy.layer = "N_GRA1A"
  24.            MsgBox "Blahblah"
  25.        End If
  26.    Next
  27.    ThisDrawing.SelectionSets.Item("sset").Delete
  28.       
  29. End Sub

 
“#”的目标是在1到11岁时扮演一个野生角色。这样可以吗?
 
谢谢
阿诺特
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 22:55:32 | 显示全部楼层
只是第一眼
当你写道:
  1. Dim Ent, EntCopy As AcadEntity

这意味着在VBA术语中:
  1. Dim Ent as [b][color=red]Variant[/color][/b], EntCopy As AcadEntity

尝试对此进行更改:
  1. Dim Ent as AcadEntity, EntCopy As AcadEntity
回复

使用道具 举报

14

主题

42

帖子

28

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 23:03:50 | 显示全部楼层
哎呀。。。这将是初学者的错误。但它似乎并没有解决这个问题。它会导致类型不匹配。可能是一个错误或条款?
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 23:11:11 | 显示全部楼层
对不起,没有测试,只是一个想法,我目前无法联系Acad
尝试在创建选择集之前添加层
回复

使用道具 举报

14

主题

42

帖子

28

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 23:27:08 | 显示全部楼层
好的,开始工作了。显然,您必须重复or子句中的“Ent.layer=”。嗯,哼!有没有办法处理数据层名称中大写字母的差异?
 
谢谢菲索!你又救了我!
 
问候语
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 23:37:03 | 显示全部楼层
不客气
要忽略案例,请使用以下内容:
  1. If UCase(a)=Ucase(b) then
  2. Lucky you
  3. End if

 
干杯
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 23:40:07 | 显示全部楼层
 
只是一个念头,现在很快就被考验了
更改为适合
[code]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”'
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 05:28 , Processed in 0.602924 second(s), 66 queries .

© 2020-2025 乐筑天下

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