乐筑天下

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

动态块Vis状态

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-12-4 10:22:57 | 显示全部楼层 |阅读模式
是否可以使用VBA更改动态块的可见性状态 我可以'似乎找不到可见性状态的任何属性。谢谢。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-12-4 12:35:24 | 显示全部楼层
马特-
您可以使用以下内容:
  1. Sub SetDynBlockToElevation()
  2.   Dim ent As AcadEntity
  3.   Dim oSSet As AcadSelectionSet
  4.   Dim oBlkRef As IAcadBlockReference2
  5.   Dim vDynProps As Variant
  6.   Dim oDynProp As AcadDynamicBlockReferenceProperty
  7.   Dim iCnt As Long
  8.   
  9.   Set oSSet = vbdPowerSet("DynBlock")
  10.   oSSet.Select acSelectionSetLast
  11.    
  12.   Set oBlkRef = oSSet.Item(0)
  13.   vDynProps = oBlkRef.GetDynamicBlockProperties
  14.   For iCnt = LBound(vDynProps) To UBound(vDynProps)
  15.     Set oDynProp = vDynProps(iCnt)
  16.     If oDynProp.PropertyName = "Visibility" Then
  17.       If oDynProp.Value = "Plan" Then
  18.          oDynProp.Value = "Elevation"
  19.       End If
  20.     End If
  21.   Next iCnt
  22. End Sub
  23. Public Function vbdPowerSet(strName As String) As AcadSelectionSet
  24.   Dim objSelSet As AcadSelectionSet
  25.   Dim objSelCol As AcadSelectionSets
  26.   Set objSelCol = ThisDrawing.SelectionSets
  27.     For Each objSelSet In objSelCol
  28.       If objSelSet.Name = strName Then
  29.         objSelCol.Item(strName).Delete
  30.         Exit For
  31.       End If
  32.     Next
  33.   Set objSelSet = objSelCol.Add(strName)
  34.   Set vbdPowerSet = objSelSet
  35. End Function

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-12-4 13:32:13 | 显示全部楼层
谢谢,但是…..Dim oBlkRef As IAcadBlockReference2 本人'我使用2007(因为它的价值)
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-12-4 17:21:44 | 显示全部楼层
据我所知,Dim oBlkRef作为IAcadBlockReference2来获取intellisense,但在此之后,您可以将其更改为Dim oBlkRef作为acadblockreforence
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-12-4 18:27:20 | 显示全部楼层
这在2007年对我有效,但正如Bryco指出的那样,使用这种方法没有Intellisense
  1. Sub test()
  2. Dim oBlkRef As AcadBlockReference
  3. Dim oEnt As AcadEntity
  4. Dim vPick As Variant
  5. Dim vDynProps As Variant
  6. Dim oDynProp As AcadDynamicBlockReferenceProperty
  7. Dim i As Long
  8. ThisDrawing.Utility.GetEntity oEnt, vPick, "select block: "
  9. If TypeOf oEnt Is AcadBlockReference Then
  10.     Set oBlkRef = oEnt
  11.     If oBlkRef.IsDynamicBlock = True Then
  12.         vDynProps = oBlkRef.GetDynamicBlockProperties
  13.         For i = 0 To UBound(vDynProps)
  14.             Set oDynProp = vDynProps(i)
  15.             If oDynProp.PropertyName = "Visibility" Then
  16.                 Debug.Print oDynProp.Value
  17.             End If
  18.         Next
  19.     End If
  20. End If
  21. End Sub
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-12-5 07:54:04 | 显示全部楼层
马特-I'我用的是2006年。2007年可能有点不同
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-12-5 07:55:30 | 显示全部楼层
Bryco-
在AutoCAD 2006中,必须使用IAcadBlockReference2才能访问GetDynamicBlockProperties方法。2007年的情况可能有所改变
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-12-5 08:53:07 | 显示全部楼层
谢谢大家的帮助/信息!
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-12-5 10:10:45 | 显示全部楼层
它在2006年对我有效,你试过了吗,戴夫?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-12-5 13:16:22 | 显示全部楼层
还没有,但我会的
马特,你成功了吗
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 00:38 , Processed in 0.304148 second(s), 73 queries .

© 2020-2025 乐筑天下

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