乐筑天下

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

财产行为领域

[复制链接]

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2017-11-17 07:48:42 | 显示全部楼层 |阅读模式
我有以下代码来标识块中多段线的面积(混凝土板的轮廓)和用于标识其中一个块/板中孔的多段线累积面积:
  1.     Public Sub GetSlabAndHoleAreas(ByVal slabBlock As AcadBlock, ByRef slabArea As Double, ByRef holeArea As Double)
  2.         Dim entity As AcadEntity
  3.         Try
  4.             'Extract the slab outline area and hole areas in mm2
  5.             slabArea = 0
  6.             holeArea = 0
  7.             For Each entity In slabBlock
  8.                 'Find the largest outline i.e. the slab outline
  9.                 If entity.ObjectName = "AcDbRegion" Then
  10.                     If entity.Area > slabArea Then
  11.                         slabArea = entity.Area
  12.                     End If
  13.                 End If
  14.                 'Find the holes
  15.                 If entity.Layer = EASICAD_LAYERS.HOLE_SYMBOL Or entity.Layer = EASICAD_LAYERS.COLUMN_CUTOUT_SYMBOL Then
  16.                     holeArea += entity.Area
  17.                 End If
  18.             Next
  19.         Catch ex As Exception
  20.             MsgBox("Reusable.GetSlabAndHoleAreas : " & ex.Message, MsgBoxStyle.OkOnly, EasiCADException.EasiCADErrorTitle)
  21.         End Try
  22.     End Sub

我继承了逻辑,它确实有效,并将其重构为此例程,以标准化输出…这使我询问生成的数字。这些对我来说没有意义。Slabera变量报告的是板的面积减去孔洞的累积面积。
此属性的帮助https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-ActiveX/files/GUID-2D31D8C1-9BEC-48CF-8B73-E2AD38A08D74-htm.html没有说任何关于这种行为的事情,这不是我所期望的。但软件正在运行
有人能给我解释一下为什么从主轮廓多段线的总面积中删除这些闭合多段线区域吗<向你问好,保罗

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2017-11-19 03:09:41 | 显示全部楼层
您的代码不是VBA的,但您的问题是与代码无关
的slabArea
被评估为从您编写的内容中找到的块中找到的所有
区域
对象中最大的区域
,这些区域(或者至少是具有最大面积的区域)很可能是对两个或多个原始区域进行某些前减法布尔运算的结果,因此“
面积等于地区

虽然
holeArea
被评估为属于两个特定图层的所有图元的总和,这两个图元可能只承载“简单”折线或区域(但圆弧、圆、椭圆、剖面线和样条也有资格获得面积属性),
您可能希望发布 dwg 以查看其中
的内容
回复

使用道具 举报

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2017-11-21 11:39:40 | 显示全部楼层
谢谢。 我一直在使用论坛的这一部分,因为尽管基于.NET的大多数代码都是基于ActiveX / COM的,而不是真正的.NET。 但是,如果我应该使用.NET部分来回答这类问题,我将来会这样做。
因此,块中的每个区域都将区域存储为属性,而不是在运行时进行计算? 这对我来说似乎有点奇怪,但这不是AutoCAD第一次对我来说有点奇怪。 你所说的正是似乎发生的事情。 在某一点上向地板区域或单个楼板添加一个孔的代码是这样做的:
  1.          .....
  2.                 explodedRegion = holeRegion.Explode
  3.                 'Subtract the hole from the slab outline
  4.                 'This actually changes the outline of the slab!
  5.                 floorOutlineRegion.Boolean(AcBooleanType.acSubtraction, holeRegion)
  6.          .....

其中 floorOutlineRegion 是每个楼板最终铺设的整个地板区域(有些包含孔,或者孔成为缺口,有些根本不是)。
谢谢,现在这是有道理的。 我会知道将来要寻找什么。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-19 21:51 , Processed in 0.322259 second(s), 58 queries .

© 2020-2025 乐筑天下

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