乐筑天下

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

使用AcadRegion。复制

[复制链接]

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2018-12-11 09:00:57 | 显示全部楼层 |阅读模式
我有一个例程,计算一个区域对象中最长直线的长度 我希望下面的代码在特定层上创建区域对象的副本,分解副本,然后在完成后删除副本,但它没有#039;t、 ..当我再次运行它时,它会同时删除副本和原始区域对象:
  1.     Public Function GetInsituConcretePolyInsertCount(ByRef myDocuments As AcadDocumentManagerExample) As Integer
  2.         Dim polyInsertCount As Integer = 0
  3.         Dim filterType(1) As Short
  4.         Dim filterData(1) As Object
  5.         Dim selectionSet As AcadSelectionSet
  6.         Dim i As Integer
  7.         Dim inSituConcreteRegion As AcadRegion
  8.         Dim copyOfInSituConcreteRegion As AcadRegion
  9.         Dim insituLength As Double
  10.         Dim explodedRegion As Object
  11.         Dim j As Integer
  12.         Dim line As AcadLine
  13.         Dim regionLength As Double
  14.         Try
  15.             insituLength = 0
  16.             selectionSet = CreateSelSet(myDocuments.ThisDrawing, "INSITUCONCRETE")
  17.             filterType(0) = 0
  18.             filterType(1) = 8
  19.             filterData(0) = "REGION"
  20.             filterData(1) = EASICAD_LAYERS.INSITU_INFILL
  21.             selectionSet.Clear()
  22.             selectionSet.Select(AcSelect.acSelectionSetAll, , , filterType, filterData)
  23.             For i = 0 To selectionSet.Count - 1
  24.                 inSituConcreteRegion = TryCast(selectionSet.Item(i), AcadRegion)
  25.                 If Not IsNothing(inSituConcreteRegion) Then
  26.                     'regionLength = GetLengthOfRegion(inSituConcreteRegion, myDocuments)
  27.                     regionLength = 0
  28.                     copyOfInSituConcreteRegion = TryCast(inSituConcreteRegion.Copy, AcadRegion)
  29.                     If IsNothing(copyOfInSituConcreteRegion) Then
  30.                         Continue For
  31.                     End If
  32.                     explodedRegion = copyOfInSituConcreteRegion.Explode
  33.                     For j = 0 To UBound(explodedRegion)
  34.                         Try
  35.                             line = TryCast(explodedRegion(j), AcadLine)
  36.                             If Not IsNothing(line) Then
  37.                                 If line.Length > regionLength Then
  38.                                     regionLength = line.Length
  39.                                 End If
  40.                                 line.Delete()
  41.                             End If
  42.                         Catch ex As Exception
  43.                             'Do nothing it's not a line
  44.                         End Try
  45.                     Next
  46.                     copyOfInSituConcreteRegion.Delete()
  47.                     inSituConcreteRegion.Update()
  48.                     insituLength += regionLength
  49.                 End If
  50.             Next
  51.             If insituLength > 0 Then
  52.                 polyInsertCount = Math.Round(insituLength / 1200, 0, MidpointRounding.AwayFromZero)
  53.             End If
  54.         Catch ex As System.Exception
  55.             MsgBox("Reusable.GetInsituConcretePolyInsertCount : " & ex.Message, MsgBoxStyle.OkOnly, EasiCADException.EasiCADErrorTitle)
  56.         End Try
  57.         Return polyInsertCount
  58.     End Function

我第一次运行此例程时,它处理得很好,图形包含原始区域 但是,如果我再次运行该例程,它会删除副本和原件 如果我使用一次例程,保存图形,关闭它,重新打开它,然后再次运行例程,它就可以正常工作 It#039;s仅当例程在同一会话中背靠背运行时,无论是否保存
I'我相信有人会告诉我使用另一个人工制品,比如折线 我可以,但这需要在其他地方做大量的工作……我管理的系统的大部分都使用了埋在块中的区域,这些区域一直在爆炸(也不使用副本),这些区域是don 35; 039;不要被移除 我想我可以把这些区域埋在块里,但我'我回到了其他地方大量的工作 我只是不'不理解为什么Copy命令不#039;我不会再工作了
myDocuments对象本质上是一个AcadDocumentManager对象
保罗,你好
回复

使用道具 举报

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2018-12-11 11:31:18 | 显示全部楼层
假警报 问题是由顶部的CreateSelSet过程调用导致的,该调用错误地擦除了选择集内容,而不是清除(ed)它们。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 02:09 , Processed in 0.724452 second(s), 56 queries .

© 2020-2025 乐筑天下

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