コード例 #1
0
ファイル: widen.py プロジェクト: weeberp/MakerDroid
 def addWiden(self, rotatedBoundaryLayer):
     "Add widen to the layer."
     loops = triangle_mesh.getLoopsInOrderOfArea(
         triangle_mesh.compareAreaAscending, rotatedBoundaryLayer.loops)
     widdershinsLoops = []
     clockwiseInsetLoops = []
     for loopIndex in xrange(len(loops)):
         loop = loops[loopIndex]
         if euclidean.isWiddershins(loop):
             otherLoops = loops[:loopIndex] + loops[loopIndex + 1:]
             leftPoint = euclidean.getLeftPoint(loop)
             if euclidean.isPointInsideLoops(otherLoops, leftPoint):
                 self.distanceFeedRate.addGcodeFromLoop(
                     loop, rotatedBoundaryLayer.z)
             else:
                 widdershinsLoops.append(loop)
         else:
             clockwiseInsetLoops += intercircle.getInsetLoopsFromLoop(
                 self.doublePerimeterWidth, loop)
             self.distanceFeedRate.addGcodeFromLoop(loop,
                                                    rotatedBoundaryLayer.z)
     for widdershinsLoop in widdershinsLoops:
         outsetLoop = intercircle.getLargestInsetLoopFromLoop(
             widdershinsLoop, -self.doublePerimeterWidth)
         widenedLoop = getWidenedLoop(widdershinsLoop, clockwiseInsetLoops,
                                      outsetLoop, self.perimeterWidth,
                                      self.tinyRadius)
         self.distanceFeedRate.addGcodeFromLoop(widenedLoop,
                                                rotatedBoundaryLayer.z)
コード例 #2
0
 def addWiden(self, rotatedLoopLayer):
     "Add widen to the layer."
     trianglemesh.sortLoopsInOrderOfArea(False, rotatedLoopLayer.loops)
     widdershinsLoops = []
     clockwiseInsetLoops = []
     for loopIndex in xrange(len(rotatedLoopLayer.loops)):
         loop = rotatedLoopLayer.loops[loopIndex]
         if euclidean.isWiddershins(loop):
             otherLoops = rotatedLoopLayer.loops[:
                                                 loopIndex] + rotatedLoopLayer.loops[
                                                     loopIndex + 1:]
             leftPoint = euclidean.getLeftPoint(loop)
             if getIsPointInsideALoop(otherLoops, leftPoint):
                 self.distanceFeedRate.addGcodeFromLoop(
                     loop, rotatedLoopLayer.z)
             else:
                 widdershinsLoops.append(loop)
         else:
             #				clockwiseInsetLoop = intercircle.getLargestInsetLoopFromLoop(loop, self.doublePerimeterWidth)
             #				clockwiseInsetLoop.reverse()
             #				clockwiseInsetLoops.append(clockwiseInsetLoop)
             clockwiseInsetLoops += intercircle.getInsetLoopsFromLoop(
                 loop, self.doublePerimeterWidth)
             self.distanceFeedRate.addGcodeFromLoop(loop,
                                                    rotatedLoopLayer.z)
     for widdershinsLoop in widdershinsLoops:
         outsetLoop = intercircle.getLargestInsetLoopFromLoop(
             widdershinsLoop, -self.doublePerimeterWidth)
         widenedLoop = getWidenedLoop(widdershinsLoop, clockwiseInsetLoops,
                                      outsetLoop, self.perimeterWidth)
         self.distanceFeedRate.addGcodeFromLoop(widenedLoop,
                                                rotatedLoopLayer.z)
コード例 #3
0
ファイル: comb.py プロジェクト: AKAMEDIASYSTEM/ReplicatorG
	def getBetweens(self):
		'Get betweens for the layer.'
		if not self.layerZ in self.betweenTable:
			self.betweenTable[self.layerZ] = []
			for boundary in self.getBoundaries():
				self.betweenTable[self.layerZ] += intercircle.getInsetLoopsFromLoop(boundary, self.betweenInset)
		return self.betweenTable[self.layerZ]
コード例 #4
0
ファイル: widen.py プロジェクト: maestroflema/asimov
 def addWiden(self, loopLayer):
     'Add widen to the layer.'
     triangle_mesh.sortLoopsInOrderOfArea(False, loopLayer.loops)
     widdershinsLoops = []
     clockwiseInsetLoops = []
     for loopIndex in xrange(len(loopLayer.loops)):
         loop = loopLayer.loops[loopIndex]
         if euclidean.isWiddershins(loop):
             otherLoops = loopLayer.loops[:loopIndex] + loopLayer.loops[
                 loopIndex + 1:]
             leftPoint = euclidean.getLeftPoint(loop)
             if getIsPointInsideALoop(otherLoops, leftPoint):
                 self.distanceFeedRate.addGcodeFromLoop(loop, loopLayer.z)
             else:
                 widdershinsLoops.append(loop)
         else:
             #				clockwiseInsetLoop = intercircle.getLargestInsetLoopFromLoop(loop, self.widenEdgeWidth)
             #				clockwiseInsetLoop.reverse()
             #				clockwiseInsetLoops.append(clockwiseInsetLoop)
             clockwiseInsetLoops += intercircle.getInsetLoopsFromLoop(
                 loop, self.widenEdgeWidth)
             self.distanceFeedRate.addGcodeFromLoop(loop, loopLayer.z)
     for widdershinsLoop in widdershinsLoops:
         outsetLoop = intercircle.getLargestInsetLoopFromLoop(
             widdershinsLoop, -self.widenEdgeWidth)
         for widenedLoop in getWidenedLoops(widdershinsLoop,
                                            clockwiseInsetLoops, outsetLoop,
                                            self.lessThanHalfEdgeWidth):
             self.distanceFeedRate.addGcodeFromLoop(widenedLoop,
                                                    loopLayer.z)
コード例 #5
0
 def getBetweens(self):
     'Get betweens for the layer.'
     if not self.layerZ in self.betweenTable:
         self.betweenTable[self.layerZ] = []
         for boundary in self.getBoundaries():
             self.betweenTable[
                 self.layerZ] += intercircle.getInsetLoopsFromLoop(
                     boundary, self.betweenInset)
     return self.betweenTable[self.layerZ]
コード例 #6
0
ファイル: comb.py プロジェクト: Sciumo/SFACT
	def getBetweens(self):
		"""Set betweens for the layer."""
		if self.layerZ in self.betweenTable:
			return self.betweenTable[ self.layerZ ]
		if self.layerZ not in self.layerTable:
			return []
		self.betweenTable[ self.layerZ ] = []
		for boundaryLoop in self.layerTable[ self.layerZ ]:
			self.betweenTable[ self.layerZ ] += intercircle.getInsetLoopsFromLoop(boundaryLoop, self.betweenInset)
		return self.betweenTable[ self.layerZ ]
コード例 #7
0
ファイル: comb.py プロジェクト: miso-/SkeinforgeEngine
 def getBetweens(self):
     "Set betweens for the layer."
     if self.z in self.betweenTable:
         return self.betweenTable[ self.z ]
     if len(self.boundaries) == 0:
         return []
     self.betweenTable[ self.z ] = []
     for boundaryLoop in self.boundaries:
         self.betweenTable[ self.z ] += intercircle.getInsetLoopsFromLoop(boundaryLoop, self.betweenInset)
     return self.betweenTable[ self.z ]
コード例 #8
0
	def getBetweens(self):
		"Set betweens for the layer."
		if self.layerZ in self.betweenTable:
			return self.betweenTable[ self.layerZ ]
		if self.layerZ not in self.layerTable:
			return []
		self.betweenTable[ self.layerZ ] = []
		for boundaryLoop in self.layerTable[ self.layerZ ]:
			self.betweenTable[ self.layerZ ] += intercircle.getInsetLoopsFromLoop( self.betweenInset, boundaryLoop )
		return self.betweenTable[ self.layerZ ]
コード例 #9
0
 def getBetweens(self):
     "Set betweens for the layer."
     if self.z in self.betweenTable:
         return self.betweenTable[self.z]
     if len(self.boundaries) == 0:
         return []
     self.betweenTable[self.z] = []
     for boundaryLoop in self.boundaries:
         self.betweenTable[self.z] += intercircle.getInsetLoopsFromLoop(
             boundaryLoop, self.betweenInset)
     return self.betweenTable[self.z]
コード例 #10
0
ファイル: widen.py プロジェクト: chriskyfung/MakerDroid
	def addWiden( self, rotatedBoundaryLayer ):
		"Add widen to the layer."
		loops = triangle_mesh.getLoopsInOrderOfArea( triangle_mesh.compareAreaAscending, rotatedBoundaryLayer.loops )
		widdershinsLoops = []
		clockwiseInsetLoops = []
		for loopIndex in xrange( len( loops ) ):
			loop = loops[ loopIndex ]
			if euclidean.isWiddershins( loop ):
				otherLoops = loops[ : loopIndex ] + loops[ loopIndex + 1 : ]
				leftPoint = euclidean.getLeftPoint( loop )
				if euclidean.isPointInsideLoops( otherLoops, leftPoint ):
					self.distanceFeedRate.addGcodeFromLoop( loop, rotatedBoundaryLayer.z )
				else:
					widdershinsLoops.append( loop )
			else:
				clockwiseInsetLoops += intercircle.getInsetLoopsFromLoop( self.doublePerimeterWidth, loop )
				self.distanceFeedRate.addGcodeFromLoop( loop, rotatedBoundaryLayer.z )
		for widdershinsLoop in widdershinsLoops:
			outsetLoop = intercircle.getLargestInsetLoopFromLoop( widdershinsLoop, - self.doublePerimeterWidth )
			widenedLoop = getWidenedLoop( widdershinsLoop, clockwiseInsetLoops, outsetLoop, self.perimeterWidth, self.tinyRadius )
			self.distanceFeedRate.addGcodeFromLoop( widenedLoop, rotatedBoundaryLayer.z )
コード例 #11
0
ファイル: widen.py プロジェクト: Spacexula/SFACT
	def addWiden(self, rotatedLoopLayer):
		'Add widen to the layer.'
		triangle_mesh.sortLoopsInOrderOfArea(False, rotatedLoopLayer.loops)
		widdershinsLoops = []
		clockwiseInsetLoops = []
		for loopIndex in xrange(len(rotatedLoopLayer.loops)):
			loop = rotatedLoopLayer.loops[loopIndex]
			if euclidean.isWiddershins(loop):
				otherLoops = rotatedLoopLayer.loops[: loopIndex] + rotatedLoopLayer.loops[loopIndex + 1 :]
				leftPoint = euclidean.getLeftPoint(loop)
				if getIsPointInsideALoop(otherLoops, leftPoint):
					self.distanceFeedRate.addGcodeFromLoop(loop, rotatedLoopLayer.z)
				else:
					widdershinsLoops.append(loop)
			else:
#				clockwiseInsetLoop = intercircle.getLargestInsetLoopFromLoop(loop, self.doublePerimeterWidth)
#				clockwiseInsetLoop.reverse()
#				clockwiseInsetLoops.append(clockwiseInsetLoop)
				clockwiseInsetLoops += intercircle.getInsetLoopsFromLoop(loop, self.doublePerimeterWidth)
				self.distanceFeedRate.addGcodeFromLoop(loop, rotatedLoopLayer.z)
		for widdershinsLoop in widdershinsLoops:
			outsetLoop = intercircle.getLargestInsetLoopFromLoop(widdershinsLoop, -self.doublePerimeterWidth)
			widenedLoop = getWidenedLoop(widdershinsLoop, clockwiseInsetLoops, outsetLoop, self.perimeterWidth)
			self.distanceFeedRate.addGcodeFromLoop(widenedLoop, rotatedLoopLayer.z)