使用曲面的奇怪民用 3D API 行为
嗨,大家好在通过API处理Civil 3D表面时我有一些奇怪的行为,我有一个表面和在该表面内绘制的各种多边形。在下面的屏幕截图中,黄线是表面边界。我为自己创建一个新表面,然后“粘贴”这个现有表面,最终得到它的副本。然后,我在新曲面周围绘制一个大框,并将其设置为隐藏边界,以便所有内容都消失。然后,我将每个多边形设置为显示边界。如果我在Civil3D中手动执行此操作,它将按预期工作,结果类似于下面的第一个屏幕截图(surf1):但是,当我尝试通过API执行相同的过程时,我最终会得到您在第二个屏幕截图(surf2)中看到的内容。它最终显示了整个表面,下面是代码的相关部分,它采用我的表面,并将隐藏和显示边界添加到我的表面。我已经检查了我的代码,它肯定选择了与我手动执行此操作时相同的多边形,因此它不是导致问题的额外多边形。我不知道可能的原因是什么,谁能弄清楚它为什么要这样做?' 创建一个新曲面。Dim PaveSurfaceId As ObjectId = TinSurface.Create(layerName, trianSurfaceStyleID)。
。
' 将曲面添加到曲面集合,以便当我们想要删除它们时,我们可以轻松地在脚本末尾找到它们。
surfacesCollection.Add(PaveSurfaceId)。
。
' 打开曲面进行编辑。
Dim PaveSurfaceObject As Autodesk.Civil.DatabaseServices.TinSurface = trans.GetObject(PaveSurfaceId, OpenMode.ForWrite)。
。
' 粘贴在原始表面。
PaveSurfaceObject.PasteSurface(GetSurfaceResult.ObjectId)。
。
' AddBoundaries 函数需要将边界作为 objectIDCollection 传入,因此将边界添加到集合中,然后。
' 添加到表面。
Dim hideBoundaryCollection As ObjectIdCollection = New ObjectIdCollection。
hideBoundaryCollection.Add(hideBoundary.ObjectId)。
PaveSurfaceObject.BordersDefinition.AddBoundaries(hideBoundaryCollection, 0.1, Autodesk.Civil.SurfaceBoundaryType.Hide, True)。
。
' 现在将所有用户选择的折线添加为“显示”边界。
。
对于每个 showBoundId As ObjectId In boundaryDict(layerName)。
。
Dim showBoundIdColl as ObjectIdCollection = New ObjectIdCollection。
showBoundIdColl.Add(showBoundId)。
PaveSurfaceObject.BordersDefinition.AddBoundaries(showBoundIdColl, 0.1, Autodesk.Civil.SurfaceBoundaryType.Show, True)。
。
下一个。
。
。
**** Hidden Message ***** 如果检查 Surface 的构建属性,与手动创建的 Surface 是否有区别?
页:
[1]