示例#1
0
文件: arc.py 项目: zaubara/Curation
def getArcPath(elementNode):
    "Get the arc path.rx ry x-axis-rotation large-arc-flag sweep-flag"
    begin = elementNode.getPreviousVertex(Vector3())
    end = evaluate.getVector3FromElementNode(elementNode)
    largeArcFlag = evaluate.getEvaluatedBoolean(True, elementNode,
                                                'largeArcFlag')
    radius = lineation.getComplexByPrefix(elementNode, 'radius',
                                          complex(1.0, 1.0))
    sweepFlag = evaluate.getEvaluatedBoolean(True, elementNode, 'sweepFlag')
    xAxisRotation = math.radians(
        evaluate.getEvaluatedFloat(0.0, elementNode, 'xAxisRotation'))
    arcComplexes = svg_reader.getArcComplexes(begin.dropAxis(), end.dropAxis(),
                                              largeArcFlag, radius, sweepFlag,
                                              xAxisRotation)
    path = []
    if len(arcComplexes) < 1:
        return []
    incrementZ = (end.z - begin.z) / float(len(arcComplexes))
    z = begin.z
    for pointIndex in xrange(len(arcComplexes)):
        pointComplex = arcComplexes[pointIndex]
        z += incrementZ
        path.append(Vector3(pointComplex.real, pointComplex.imag, z))
    if len(path) > 0:
        path[-1] = end
    return path
示例#2
0
def getCubicPath(elementNode):
	"Get the cubic path."
	end = evaluate.getVector3FromElementNode(elementNode)
	previousElementNode = elementNode.getPreviousElementNode()
	if previousElementNode is None:
		print('Warning, can not get previousElementNode in getCubicPath in cubic for:')
		print(elementNode)
		return [end]
	begin = elementNode.getPreviousVertex(Vector3())
	evaluatedControlPoints = evaluate.getTransformedPathByKey([], elementNode, 'controlPoints')
	if len(evaluatedControlPoints) > 1:
		return getCubicPathByBeginEnd(begin, evaluatedControlPoints, elementNode, end)
	controlPoint0 = evaluate.getVector3ByPrefix(None, elementNode, 'controlPoint0')
	controlPoint1 = evaluate.getVector3ByPrefix(None, elementNode, 'controlPoint1')
	if len(evaluatedControlPoints) == 1:
		controlPoint1 = evaluatedControlPoints[0]
	if controlPoint0 is None:
		oldControlPoint = evaluate.getVector3ByPrefixes(previousElementNode, ['controlPoint','controlPoint1'], None)
		if oldControlPoint is None:
			oldControlPoints = evaluate.getTransformedPathByKey([], previousElementNode, 'controlPoints')
			if len(oldControlPoints) > 0:
				oldControlPoint = oldControlPoints[-1]
		if oldControlPoint is None:
			oldControlPoint = end
		controlPoint0 = begin + begin - oldControlPoint
	return getCubicPathByBeginEnd(begin, [controlPoint0, controlPoint1], elementNode, end)
示例#3
0
文件: quadratic.py 项目: 3DNogi/SFACT
def getQuadraticPath(elementNode):
	"Get the quadratic path."
	end = evaluate.getVector3FromElementNode(elementNode)
	previousElementNode = elementNode.getPreviousElementNode()
	if previousElementNode == None:
		print('Warning, can not get previousElementNode in getQuadraticPath in quadratic for:')
		print(elementNode)
		return [end]
	begin = elementNode.getPreviousVertex(Vector3())
	controlPoint = evaluate.getVector3ByPrefix(None, elementNode, 'controlPoint')
	if controlPoint == None:
		oldControlPoint = evaluate.getVector3ByPrefixes(previousElementNode, ['controlPoint','controlPoint1'], None)
		if oldControlPoint == None:
			oldControlPoint = end
		controlPoint = begin + begin - oldControlPoint
		evaluate.addVector3ToElementNode(elementNode, 'controlPoint', controlPoint)
	return svg_reader.getQuadraticPoints(begin, controlPoint, end, lineation.getNumberOfBezierPoints(begin, elementNode, end))
示例#4
0
def getQuadraticPath(elementNode):
	"Get the quadratic path."
	end = evaluate.getVector3FromElementNode(elementNode)
	previousElementNode = elementNode.getPreviousElementNode()
	if previousElementNode == None:
		print('Warning, can not get previousElementNode in getQuadraticPath in quadratic for:')
		print(elementNode)
		return [end]
	begin = elementNode.getPreviousVertex(Vector3())
	controlPoint = evaluate.getVector3ByPrefix(None, elementNode, 'controlPoint')
	if controlPoint == None:
		oldControlPoint = evaluate.getVector3ByPrefixes(previousElementNode, ['controlPoint','controlPoint1'], None)
		if oldControlPoint == None:
			oldControlPoint = end
		controlPoint = begin + begin - oldControlPoint
		evaluate.addVector3ToElementNode(elementNode, 'controlPoint', controlPoint)
	return svg_reader.getQuadraticPoints(begin, controlPoint, end, lineation.getNumberOfBezierPoints(begin, elementNode, end))
示例#5
0
文件: arc.py 项目: Ademan/Cura
def getArcPath(elementNode):
	"Get the arc path.rx ry x-axis-rotation large-arc-flag sweep-flag"
	begin = elementNode.getPreviousVertex(Vector3())
	end = evaluate.getVector3FromElementNode(elementNode)
	largeArcFlag = evaluate.getEvaluatedBoolean(True, elementNode, 'largeArcFlag')
	radius = lineation.getComplexByPrefix(elementNode, 'radius', complex(1.0, 1.0))
	sweepFlag = evaluate.getEvaluatedBoolean(True, elementNode, 'sweepFlag')
	xAxisRotation = math.radians(evaluate.getEvaluatedFloat(0.0, elementNode, 'xAxisRotation'))
	arcComplexes = svg_reader.getArcComplexes(begin.dropAxis(), end.dropAxis(), largeArcFlag, radius, sweepFlag, xAxisRotation)
	path = []
	if len(arcComplexes) < 1:
		return []
	incrementZ = (end.z - begin.z) / float(len(arcComplexes))
	z = begin.z
	for pointIndex in xrange(len(arcComplexes)):
		pointComplex = arcComplexes[pointIndex]
		z += incrementZ
		path.append(Vector3(pointComplex.real, pointComplex.imag, z))
	if len(path) > 0:
		path[-1] = end
	return path
示例#6
0
def processElementNode(elementNode):
	"Process the xml element."
	elementNode.parentNode.xmlObject.vertexes.append(evaluate.getVector3FromElementNode(elementNode))