def addTowers( self ): "Add towers." bottomLayerIndex = self.getBottomLayerIndex() if bottomLayerIndex == None: return self.addLayerLinesIfDifferent( bottomLayerIndex ) removedIsland = euclidean.getTransferClosestSurroundingLoop( self.oldOrderedLocation, self.islandLayers[ bottomLayerIndex ], self ) while 1: self.climbTower( removedIsland ) bottomLayerIndex = self.getBottomLayerIndex() if bottomLayerIndex == None: return self.addLayerLinesIfDifferent( bottomLayerIndex ) removedIsland = euclidean.getTransferClosestSurroundingLoop( self.oldOrderedLocation, self.islandLayers[ bottomLayerIndex ], self )
def addTowers(self): "Add towers." bottomLayerIndex = self.getBottomLayerIndex() if bottomLayerIndex == None: return self.addLayerLinesIfDifferent(bottomLayerIndex) removedIsland = euclidean.getTransferClosestSurroundingLoop( self.oldOrderedLocation, self.islandLayers[bottomLayerIndex], self) while 1: self.climbTower(removedIsland) bottomLayerIndex = self.getBottomLayerIndex() if bottomLayerIndex == None: return self.addLayerLinesIfDifferent(bottomLayerIndex) removedIsland = euclidean.getTransferClosestSurroundingLoop( self.oldOrderedLocation, self.islandLayers[bottomLayerIndex], self)
def climbTower( self, removedIsland ): "Climb up the island to any islands directly above." outsetDistance = 1.5 * self.extrusionWidth for step in range( self.towerPreferences.maximumTowerHeight.value ): aboveIndex = self.oldLayerIndex + 1 if aboveIndex >= len( self.islandLayers ): return outsetRemovedLoop = removedIsland.boundingLoop.getOutsetBoundingLoop( outsetDistance ) islandsWithin = [] for island in self.islandLayers[ aboveIndex ]: if self.isInsideRemovedOutsideCone( island, outsetRemovedLoop, aboveIndex ): islandsWithin.append( island ) if len( islandsWithin ) < 1: return self.addLayerLinesIfDifferent( aboveIndex ) removedIsland = euclidean.getTransferClosestSurroundingLoop( self.oldOrderedLocation, islandsWithin, self ) self.islandLayers[ aboveIndex ].remove( removedIsland )
def climbTower(self, removedIsland): "Climb up the island to any islands directly above." outsetDistance = 1.5 * self.extrusionWidth for step in range(self.towerPreferences.maximumTowerHeight.value): aboveIndex = self.oldLayerIndex + 1 if aboveIndex >= len(self.islandLayers): return outsetRemovedLoop = removedIsland.boundingLoop.getOutsetBoundingLoop( outsetDistance) islandsWithin = [] for island in self.islandLayers[aboveIndex]: if self.isInsideRemovedOutsideCone(island, outsetRemovedLoop, aboveIndex): islandsWithin.append(island) if len(islandsWithin) < 1: return self.addLayerLinesIfDifferent(aboveIndex) removedIsland = euclidean.getTransferClosestSurroundingLoop( self.oldOrderedLocation, islandsWithin, self) self.islandLayers[aboveIndex].remove(removedIsland)