乐筑天下

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

[编程交流] Can#039;t移除#039;用户i

[复制链接]

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-6 22:19:25 | 显示全部楼层 |阅读模式
大家好,
 
我有KEAN WALMSLEY的密码。
 
他的代码将要求用户选择一个块,然后列出所有选定块的属性。然而,我需要稍微调整他的代码,而不是用户交互,块必须通过其名称和我的代码来选择。
 
以下是他的代码(根据我的目的稍作修改):
 
  1. Private Sub ListAttributes()
  2.            Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  3.            Dim db As Database = HostApplicationServices.WorkingDatabase
  4.            Dim tr As Transaction = db.TransactionManager.StartTransaction()
  5.            Try
  6.                Dim filList As TypedValue() = New TypedValue(0) {New TypedValue(CInt(DxfCode.Start), "INSERT")}
  7.                Dim filter As New SelectionFilter(filList)
  8.                Dim opts As New PromptSelectionOptions()
  9.                opts.MessageForAdding = "Select block references: "
  10.                Dim res As PromptSelectionResult = ed.GetSelection(opts, filter)
  11.                If res.Status <> PromptStatus.OK Then
  12.                    Return
  13.                End If
  14.                Dim selSet As SelectionSet = res.Value
  15.                Dim idArray As ObjectId() = selSet.GetObjectIds()
  16.                For Each blkId As ObjectId In idArray
  17.                    Dim blkRef As BlockReference = DirectCast(tr.GetObject(blkId, OpenMode.ForRead), BlockReference)
  18.                    Dim btr As BlockTableRecord = DirectCast(tr.GetObject(blkRef.BlockTableRecord, OpenMode.ForRead), BlockTableRecord)
  19.                    ed.WriteMessage(vbLf & "Block: " + btr.Name)
  20.                    btr.Dispose()
  21.                    Dim attCol As AttributeCollection = blkRef.AttributeCollection
  22.                    For Each attId As ObjectId In attCol
  23.                        Dim attRef As AttributeReference = DirectCast(tr.GetObject(attId, OpenMode.ForRead), AttributeReference)
  24.                        Dim str As String = (vbLf & attRef.Tag + "    " & attRef.TextString)
  25.                        ed.WriteMessage(str)
  26.                    Next
  27.                Next
  28.                tr.Commit()
  29.            Catch ex As Autodesk.AutoCAD.Runtime.Exception
  30.                ed.WriteMessage(("Exception: " + ex.Message))
  31.            Finally
  32.                tr.Dispose()
  33.            End Try
  34.        End Sub

 
现在,我需要将此Sub更改为如下函数:
 
  1. Private Function ListAttributes (blockName As String) As Boolean

 
如果图形中存在“blockName”,则目标是列出所有块属性,然后返回True。相反,如果blockName不存在,它应该返回我False,并且不向编辑器打印任何内容。
 
谁能帮帮我吗?
 
干杯
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 22:40:44 | 显示全部楼层
请停止重复投递
我已经回答了讨论小组的问题
回复

使用道具 举报

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-6 23:18:23 | 显示全部楼层
我的道歉。不知道pro用户同时监视两个CAD论坛,
无论如何,谢谢你。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 23:37:20 | 显示全部楼层
没问题,这只是Acad论坛的常见规则
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 08:43 , Processed in 0.739838 second(s), 60 queries .

© 2020-2025 乐筑天下

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