def isAddedPointOnPathFree(path, pixelTable, point, pointIndex, width):
    'Determine if the point added to a path is intersecting the pixel table or the path.'
    if pointIndex > 0 and pointIndex < len(path):
        if isSharpCorner((path[pointIndex - 1]), point, (path[pointIndex])):
            return False
    pointIndexMinusOne = pointIndex - 1
    if pointIndexMinusOne >= 0:
        maskTable = {}
        begin = path[ pointIndexMinusOne ]
        if pointIndex < len(path):
            end = path[pointIndex]
            euclidean.addValueSegmentToPixelTable(begin, end, maskTable, None, width)
        segmentTable = {}
        euclidean.addSegmentToPixelTable(point, begin, segmentTable, 0.0, 2.0, width)
        if euclidean.isPixelTableIntersecting(pixelTable, segmentTable, maskTable):
            return False
        if isAddedPointOnPathIntersectingPath(begin, path, point, pointIndexMinusOne):
            return False
    if pointIndex < len(path):
        maskTable = {}
        begin = path[pointIndex]
        if pointIndexMinusOne >= 0:
            end = path[ pointIndexMinusOne ]
            euclidean.addValueSegmentToPixelTable(begin, end, maskTable, None, width)
        segmentTable = {}
        euclidean.addSegmentToPixelTable(point, begin, segmentTable, 0.0, 2.0, width)
        if euclidean.isPixelTableIntersecting(pixelTable, segmentTable, maskTable):
            return False
        if isAddedPointOnPathIntersectingPath(begin, path, point, pointIndex):
            return False
    return True
Example #2
0
	def getConnectionIsCloseWithoutOverlap( self, location, path ):
		"Determine if the connection is close enough and does not overlap another thread."
		if len( path ) < 1:
			return False
		locationComplex = location.dropAxis( 2 )
		segment = locationComplex - path[ - 1 ]
		segmentLength = abs( segment )
		if segmentLength <= 0.0:
			return True
		segment /= segmentLength
		distance = self.connectingStepLength
		segmentEndLength = segmentLength - self.connectingStepLength
		while distance < segmentEndLength:
			alongPoint = distance * segment + path[ - 1 ]
			if not euclidean.isPointInsideLoops( self.boundaryLoops, alongPoint ):
				return False
			distance += self.connectingStepLength
#		removedLayerPixelTable = self.layerPixelTable.copy()
#		if self.oldLocation in self.maskPixelTableTable:
#			euclidean.removePixelTableFromPixelTable( self.maskPixelTableTable[ self.oldLocation ], removedLayerPixelTable )
#		euclidean.addPathToPixelTable( path[ : - 2 ], removedLayerPixelTable, None, self.layerPixelWidth )
		segmentTable = {}
		euclidean.addSegmentToPixelTable( path[ - 1 ], locationComplex, segmentTable, 2.0, 2.0, self.layerPixelWidth )
#		euclidean.addValueSegmentToPixelTable( path[ - 1 ], locationComplex, segmentTable, None, self.layerPixelWidth )
#		euclidean.addValueSegmentToPixelTable( path[ - 1 ], locationComplex, segmentTable, None, self.layerPixelWidth )
#		maskPixelTable = {}
#		if location in self.maskPixelTableTable:
#			maskPixelTable = self.maskPixelTableTable[ location ]
		if euclidean.isPixelTableIntersecting( self.layerPixelTable, segmentTable, {} ):
#		if euclidean.isPixelTableIntersecting( removedLayerPixelTable, segmentTable, {} ):
			return False
		euclidean.addValueSegmentToPixelTable( path[ - 1 ], locationComplex, self.layerPixelTable, None, self.layerPixelWidth )
#		euclidean.addPixelTableToPixelTable( segmentTable, self.layerPixelTable )
		return True
Example #3
0
File: clip.py Project: Ademan/Cura
	def getConnectionIsCloseWithoutOverlap( self, location, path ):
		"Determine if the connection is close enough and does not overlap another thread."
		if len(path) < 1:
			return False
		locationComplex = location.dropAxis()
		segment = locationComplex - path[-1]
		segmentLength = abs(segment)
		if segmentLength <= 0.0:
			return True
		if segmentLength > self.maximumConnectionDistance:
			return False
		segmentTable = {}
		euclidean.addSegmentToPixelTable( path[-1], locationComplex, segmentTable, 2.0, 2.0, self.layerPixelWidth )
		if euclidean.isPixelTableIntersecting( self.layerPixelTable, segmentTable, {} ):
			return False
		euclidean.addValueSegmentToPixelTable( path[-1], locationComplex, self.layerPixelTable, None, self.layerPixelWidth )
		return True
Example #4
0
	def getConnectionIsCloseWithoutOverlap( self, location, path ):
		"Determine if the connection is close enough and does not overlap another thread."
		if len(path) < 1:
			return False
		locationComplex = location.dropAxis()
		segment = locationComplex - path[-1]
		segmentLength = abs(segment)
		if segmentLength <= 0.0:
			return True
		if segmentLength > self.maximumConnectionDistance:
			return False
		segmentTable = {}
		euclidean.addSegmentToPixelTable( path[-1], locationComplex, segmentTable, 2.0, 2.0, self.layerPixelWidth )
		if euclidean.isPixelTableIntersecting( self.layerPixelTable, segmentTable, {} ):
			return False
		euclidean.addValueSegmentToPixelTable( path[-1], locationComplex, self.layerPixelTable, None, self.layerPixelWidth )
		return True
Example #5
0
    def getConnectionIsCloseWithoutOverlap(self, location, path):
        "Determine if the connection is close enough and does not overlap another thread."
        if len(path) < 1:
            return False
        locationComplex = location.dropAxis(2)
        segment = locationComplex - path[-1]
        segmentLength = abs(segment)
        if segmentLength <= 0.0:
            return True
        if segmentLength > self.maximumConnectionDistance:
            return False
        segment /= segmentLength
        distance = self.connectingStepLength
        segmentEndLength = segmentLength - self.connectingStepLength
        while distance < segmentEndLength:
            alongPoint = distance * segment + path[-1]
            if not euclidean.getIsInFilledRegion(self.boundaryLoops,
                                                 alongPoint):
                return False
            distance += self.connectingStepLength


#		removedLayerPixelTable = self.layerPixelTable.copy()
#		if self.oldLocation in self.maskPixelTableTable:
#			euclidean.removePixelTableFromPixelTable( self.maskPixelTableTable[ self.oldLocation ], removedLayerPixelTable )
#		euclidean.addPathToPixelTable( path[ : - 2 ], removedLayerPixelTable, None, self.layerPixelWidth )
        segmentTable = {}
        euclidean.addSegmentToPixelTable(path[-1], locationComplex,
                                         segmentTable, 2.0, 2.0,
                                         self.layerPixelWidth)
        #		euclidean.addValueSegmentToPixelTable( path[-1], locationComplex, segmentTable, None, self.layerPixelWidth )
        #		euclidean.addValueSegmentToPixelTable( path[-1], locationComplex, segmentTable, None, self.layerPixelWidth )
        #		maskPixelTable = {}
        #		if location in self.maskPixelTableTable:
        #			maskPixelTable = self.maskPixelTableTable[ location ]
        if euclidean.isPixelTableIntersecting(self.layerPixelTable,
                                              segmentTable, {}):
            #		if euclidean.isPixelTableIntersecting( removedLayerPixelTable, segmentTable, {} ):
            return False
        euclidean.addValueSegmentToPixelTable(path[-1], locationComplex,
                                              self.layerPixelTable, None,
                                              self.layerPixelWidth)
        #		euclidean.addPixelTableToPixelTable( segmentTable, self.layerPixelTable )
        return True
def isAddedPointOnPathFree(path, pixelTable, point, pointIndex, width):
    'Determine if the point added to a path is intersecting the pixel table or the path.'
    if pointIndex > 0 and pointIndex < len(path):
        if isSharpCorner((path[pointIndex - 1]), point, (path[pointIndex])):
            return False
    pointIndexMinusOne = pointIndex - 1
    if pointIndexMinusOne >= 0:
        maskTable = {}
        begin = path[pointIndexMinusOne]
        if pointIndex < len(path):
            end = path[pointIndex]
            euclidean.addValueSegmentToPixelTable(begin, end, maskTable, None,
                                                  width)
        segmentTable = {}
        euclidean.addSegmentToPixelTable(point, begin, segmentTable, 0.0, 2.0,
                                         width)
        if euclidean.isPixelTableIntersecting(pixelTable, segmentTable,
                                              maskTable):
            return False
        if isAddedPointOnPathIntersectingPath(begin, path, point,
                                              pointIndexMinusOne):
            return False
    if pointIndex < len(path):
        maskTable = {}
        begin = path[pointIndex]
        if pointIndexMinusOne >= 0:
            end = path[pointIndexMinusOne]
            euclidean.addValueSegmentToPixelTable(begin, end, maskTable, None,
                                                  width)
        segmentTable = {}
        euclidean.addSegmentToPixelTable(point, begin, segmentTable, 0.0, 2.0,
                                         width)
        if euclidean.isPixelTableIntersecting(pixelTable, segmentTable,
                                              maskTable):
            return False
        if isAddedPointOnPathIntersectingPath(begin, path, point, pointIndex):
            return False
    return True