laptop and a wrench

漏洞

Nodes do not snap when using ce.move() in the CityEngine PyDev window.

上次发布: August 16, 2017 ArcGIS CityEngine
漏洞 ID 编号 BUG-000106176
已提交June 28, 2017
上次修改时间June 5, 2024
适用范围ArcGIS CityEngine
找到的版本2016.1
状态Non-Reproducible

附加信息

When moving a node in python it is not expected, that it snaps to a neighboring node. When snapping is desired, please use the following commands: graphlayer = ce.getObjectsFrom(ce.scene(),ce.withName("Streetnetwork"),ce.isLayer)[0] cleanupSettings = CleanupGraphSettings() cleanupSettings.setSnapNodesToSegments(True) cleanupSettings.setSnappingDist(20) ce.cleanupGraph(graphlayer,cleanupSettings) Known limitation: This is applied to the whole Streetnetwork. To overcome this, I once made as script, that only merges nodes in a selectionfrom scripting import * # get a CityEngine instance ce = CE() def getAdjacentSegments(nodes): segments = [] for n in nodes: seg = ce.getObjectsFrom(n, ce.isGraphSegment) for s in seg: if (s not in segments): segments.append(s) return segments def getCleanupGraphSettings(default = True, dist = 10): cleanupSettings = CleanupGraphSettings() cleanupSettings.setIntersectSegments(default) cleanupSettings.setMergeNodes(default) cleanupSettings.setMergingDist(dist) cleanupSettings.setSnapNodesToSegments(default) cleanupSettings.setSnappingDist(10) cleanupSettings.setResolveConflictShapes(default) return cleanupSettings def mergeNodes(segments): # get graph layer and create tmp layer graphLayer = ce.getLayer(segments[0]) graphLayerTmp = ce.addGraphLayer('tmp_streets') # do merging of segments in tmp layer ce.copy ( ce.getObjectsFrom(ce.selection), True, graphLayerTmp ) cleanupSettings = getCleanupGraphSettings(False) cleanupSettings.setMergeNodes(True) ce.cleanupGraph(graphLayerTmp, cleanupSettings) result = ce.copy (ce.getObjectsFrom(graphLayerTmp), True, graphLayer) # integrate merged segments back into graph cleanupSettings = getCleanupGraphSettings(False) cleanupSettings.setSnapNodesToSegments(True) cleanupSettings.setSnappingDist(0) ce.cleanupGraph(graphLayer, cleanupSettings) # cleanup ce.delete(graphLayerTmp) if __name__ == '__main__': nodes = ce.getObjectsFrom(ce.selection, ce.isGraphNode) segments = getAdjacentSegments(nodes) mergeNodes(segments):

重现步骤

漏洞 ID: BUG-000106176

软件:

  • ArcGIS CityEngine

当漏洞状态发生变化时获得通知

下载 Esri 支持应用程序

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项