Пример #1
0
 def __init__(self, elementNode):
     "Set defaults."
     self.bevelOverRadius = evaluate.getEvaluatedFloat(0.2, elementNode, "bevelOverRadius")
     self.boltRadiusOverRadius = evaluate.getEvaluatedFloat(0.0, elementNode, "boltRadiusOverRadius")
     self.columns = evaluate.getEvaluatedInt(2, elementNode, "columns")
     self.elementNode = elementNode
     self.heightOverRadius = evaluate.getEvaluatedFloat(2.0, elementNode, "heightOverRadius")
     self.interiorOverhangRadians = setting.getInteriorOverhangRadians(elementNode)
     self.overhangSpan = setting.getOverhangSpan(elementNode)
     self.pegClearanceOverRadius = evaluate.getEvaluatedFloat(0.0, elementNode, "pegClearanceOverRadius")
     self.pegRadians = math.radians(evaluate.getEvaluatedFloat(2.0, elementNode, "pegAngle"))
     self.pegHeightOverHeight = evaluate.getEvaluatedFloat(0.4, elementNode, "pegHeightOverHeight")
     self.pegRadiusOverRadius = evaluate.getEvaluatedFloat(0.7, elementNode, "pegRadiusOverRadius")
     self.radius = lineation.getFloatByPrefixBeginEnd(elementNode, "radius", "width", 5.0)
     self.rows = evaluate.getEvaluatedInt(1, elementNode, "rows")
     self.topBevelOverRadius = evaluate.getEvaluatedFloat(0.2, elementNode, "topBevelOverRadius")
     # Set derived values.
     self.bevel = evaluate.getEvaluatedFloat(self.bevelOverRadius * self.radius, elementNode, "bevel")
     self.boltRadius = evaluate.getEvaluatedFloat(self.boltRadiusOverRadius * self.radius, elementNode, "boltRadius")
     self.boltSides = evaluate.getSidesMinimumThreeBasedOnPrecision(elementNode, self.boltRadius)
     self.bottomLeftCenter = complex(-float(self.columns - 1), -float(self.rows - 1)) * self.radius
     self.height = evaluate.getEvaluatedFloat(self.heightOverRadius * self.radius, elementNode, "height")
     self.hollowPegSockets = []
     centerY = self.bottomLeftCenter.imag
     diameter = self.radius + self.radius
     self.pegExistence = CellExistence(
         self.columns, self.rows, evaluate.getEvaluatedValue(None, elementNode, "pegs")
     )
     self.socketExistence = CellExistence(
         self.columns, self.rows, evaluate.getEvaluatedValue(None, elementNode, "sockets")
     )
     for rowIndex in xrange(self.rows):
         centerX = self.bottomLeftCenter.real
         for columnIndex in xrange(self.columns):
             hollowPegSocket = HollowPegSocket(complex(centerX, centerY))
             hollowPegSocket.shouldAddPeg = self.pegExistence.getIsInExistence(columnIndex, rowIndex)
             hollowPegSocket.shouldAddSocket = self.socketExistence.getIsInExistence(columnIndex, rowIndex)
             self.hollowPegSockets.append(hollowPegSocket)
             centerX += diameter
         centerY += diameter
     self.pegClearance = evaluate.getEvaluatedFloat(
         self.pegClearanceOverRadius * self.radius, elementNode, "pegClearance"
     )
     halfPegClearance = 0.5 * self.pegClearance
     self.pegHeight = evaluate.getEvaluatedFloat(self.pegHeightOverHeight * self.height, elementNode, "pegHeight")
     self.pegRadius = evaluate.getEvaluatedFloat(self.pegRadiusOverRadius * self.radius, elementNode, "pegRadius")
     sides = 24 * max(1, math.floor(evaluate.getSidesBasedOnPrecision(elementNode, self.pegRadius) / 24))
     self.socketRadius = self.pegRadius + halfPegClearance
     self.pegSides = evaluate.getEvaluatedInt(sides, elementNode, "pegSides")
     self.pegRadius -= halfPegClearance
     self.pegRadiusArealized = evaluate.getRadiusArealizedBasedOnAreaRadius(
         elementNode, self.pegRadius, self.pegSides
     )
     self.socketSides = evaluate.getEvaluatedInt(sides, elementNode, "socketSides")
     self.socketRadiusArealized = evaluate.getRadiusArealizedBasedOnAreaRadius(
         elementNode, self.socketRadius, self.socketSides
     )
     self.topBevel = evaluate.getEvaluatedFloat(self.topBevelOverRadius * self.radius, elementNode, "topBevel")
     self.topBevelPositions = evaluate.getEvaluatedString("nwse", elementNode, "topBevelPositions").lower()
     self.topRight = complex(float(self.columns), float(self.rows)) * self.radius
Пример #2
0
	def __init__(self, xmlElement):
		'Set defaults.'
		self.bevelOverRadius = evaluate.getEvaluatedFloat(0.2, 'bevelOverRadius', xmlElement)
		self.boltRadiusOverRadius = evaluate.getEvaluatedFloat(0.0, 'boltRadiusOverRadius', xmlElement)
		self.columns = evaluate.getEvaluatedInt(2, 'columns', xmlElement)
		self.heightOverRadius = evaluate.getEvaluatedFloat(2.0, 'heightOverRadius', xmlElement)
		self.interiorOverhangRadians = setting.getInteriorOverhangRadians(xmlElement)
		self.overhangSpan = setting.getOverhangSpan(xmlElement)
		self.pegClearanceOverRadius = evaluate.getEvaluatedFloat(0.0, 'pegClearanceOverRadius', xmlElement)
		self.pegRadians = math.radians(evaluate.getEvaluatedFloat(2.0, 'pegAngle', xmlElement))
		self.pegHeightOverHeight = evaluate.getEvaluatedFloat(0.4, 'pegHeightOverHeight', xmlElement)
		self.pegRadiusOverRadius = evaluate.getEvaluatedFloat(0.7, 'pegRadiusOverRadius', xmlElement)
		self.radius = lineation.getFloatByPrefixBeginEnd('radius', 'width', 5.0, xmlElement)
		self.rows = evaluate.getEvaluatedInt(1, 'rows', xmlElement)
		self.topBevelOverRadius = evaluate.getEvaluatedFloat(0.2, 'topBevelOverRadius', xmlElement)
		self.xmlElement = xmlElement
		# Set derived values.
		self.bevel = evaluate.getEvaluatedFloat(self.bevelOverRadius * self.radius, 'bevel', xmlElement)
		self.boltRadius = evaluate.getEvaluatedFloat(self.boltRadiusOverRadius * self.radius, 'boltRadius', xmlElement)
		self.boltSides = evaluate.getSidesMinimumThreeBasedOnPrecision(self.boltRadius, xmlElement)
		self.bottomLeftCenter = complex(-float(self.columns - 1), -float(self.rows - 1)) * self.radius
		self.height = evaluate.getEvaluatedFloat(self.heightOverRadius * self.radius, 'height', xmlElement)
		self.hollowPegSockets = []
		centerY = self.bottomLeftCenter.imag
		diameter = self.radius + self.radius
		self.pegExistence = CellExistence(self.columns, self.rows, evaluate.getEvaluatedValue(None, 'pegs', xmlElement))
		self.socketExistence = CellExistence(self.columns, self.rows, evaluate.getEvaluatedValue(None, 'sockets', xmlElement))
		for rowIndex in xrange(self.rows):
			centerX = self.bottomLeftCenter.real
			for columnIndex in xrange(self.columns):
				hollowPegSocket = HollowPegSocket(complex(centerX, centerY))
				hollowPegSocket.shouldAddPeg = self.pegExistence.getIsInExistence(columnIndex, rowIndex)
				hollowPegSocket.shouldAddSocket = self.socketExistence.getIsInExistence(columnIndex, rowIndex)
				self.hollowPegSockets.append(hollowPegSocket)
				centerX += diameter
			centerY += diameter
		self.pegClearance = evaluate.getEvaluatedFloat(self.pegClearanceOverRadius * self.radius, 'pegClearance', xmlElement)
		halfPegClearance = 0.5 * self.pegClearance
		self.pegHeight = evaluate.getEvaluatedFloat(self.pegHeightOverHeight * self.height, 'pegHeight', xmlElement)
		self.pegRadius = evaluate.getEvaluatedFloat(self.pegRadiusOverRadius * self.radius, 'pegRadius', xmlElement)
		sides = 24 * max(1, math.floor(evaluate.getSidesBasedOnPrecision(self.pegRadius, xmlElement) / 24))
		self.socketRadius = self.pegRadius + halfPegClearance
		self.pegSides = evaluate.getEvaluatedInt(sides, 'pegSides', xmlElement)
		self.socketSides = evaluate.getEvaluatedInt(sides, 'socketSides', xmlElement)
		self.pegRadius -= halfPegClearance
		self.topBevel = evaluate.getEvaluatedFloat(self.topBevelOverRadius * self.radius, 'topBevel', xmlElement)
		self.topBevelPositions = evaluate.getEvaluatedString('nwse', 'topBevelPositions', xmlElement).lower()
		self.topRight = complex(float(self.columns), float(self.rows)) * self.radius
Пример #3
0
	def __init__(self, xmlElement):
		"""Set defaults."""
		self.bevelOverRadius = evaluate.getEvaluatedFloat(0.2, 'bevelOverRadius', xmlElement)
		self.boltRadiusOverRadius = evaluate.getEvaluatedFloat(0.0, 'boltRadiusOverRadius', xmlElement)
		self.columns = evaluate.getEvaluatedInt(2, 'columns', xmlElement)
		self.heightOverRadius = evaluate.getEvaluatedFloat(2.0, 'heightOverRadius', xmlElement)
		self.interiorOverhangRadians = setting.getInteriorOverhangRadians(xmlElement)
		self.overhangSpan = setting.getOverhangSpan(xmlElement)
		self.pegClearanceOverRadius = evaluate.getEvaluatedFloat(0.0, 'pegClearanceOverRadius', xmlElement)
		self.pegRadians = math.radians(evaluate.getEvaluatedFloat(2.0, 'pegAngle', xmlElement))
		self.pegHeightOverHeight = evaluate.getEvaluatedFloat(0.4, 'pegHeightOverHeight', xmlElement)
		self.pegRadiusOverRadius = evaluate.getEvaluatedFloat(0.7, 'pegRadiusOverRadius', xmlElement)
		self.radius = lineation.getFloatByPrefixBeginEnd('radius', 'width', 5.0, xmlElement)
		self.rows = evaluate.getEvaluatedInt(1, 'rows', xmlElement)
		self.topBevelOverRadius = evaluate.getEvaluatedFloat(0.2, 'topBevelOverRadius', xmlElement)
		self.xmlElement = xmlElement
		# Set derived values.
		self.bevel = evaluate.getEvaluatedFloat(self.bevelOverRadius * self.radius, 'bevel', xmlElement)
		self.boltRadius = evaluate.getEvaluatedFloat(self.boltRadiusOverRadius * self.radius, 'boltRadius', xmlElement)
		self.boltSides = evaluate.getSidesMinimumThreeBasedOnPrecision(self.boltRadius, xmlElement)
		self.bottomLeftCenter = complex(-float(self.columns - 1), -float(self.rows - 1)) * self.radius
		self.height = evaluate.getEvaluatedFloat(self.heightOverRadius * self.radius, 'height', xmlElement)
		self.hollowPegSockets = []
		centerY = self.bottomLeftCenter.imag
		diameter = self.radius + self.radius
		self.pegExistence = CellExistence(self.columns, self.rows, evaluate.getEvaluatedValue(None, 'pegs', xmlElement))
		self.socketExistence = CellExistence(self.columns, self.rows, evaluate.getEvaluatedValue(None, 'sockets', xmlElement))
		for rowIndex in xrange(self.rows):
			centerX = self.bottomLeftCenter.real
			for columnIndex in xrange(self.columns):
				hollowPegSocket = HollowPegSocket(complex(centerX, centerY))
				hollowPegSocket.shouldAddPeg = self.pegExistence.getIsInExistence(columnIndex, rowIndex)
				hollowPegSocket.shouldAddSocket = self.socketExistence.getIsInExistence(columnIndex, rowIndex)
				self.hollowPegSockets.append(hollowPegSocket)
				centerX += diameter
			centerY += diameter
		self.pegClearance = evaluate.getEvaluatedFloat(self.pegClearanceOverRadius * self.radius, 'pegClearance', xmlElement)
		halfPegClearance = 0.5 * self.pegClearance
		self.pegHeight = evaluate.getEvaluatedFloat(self.pegHeightOverHeight * self.height, 'pegHeight', xmlElement)
		self.pegRadius = evaluate.getEvaluatedFloat(self.pegRadiusOverRadius * self.radius, 'pegRadius', xmlElement)
		sides = 24 * max(1, math.floor(evaluate.getSidesBasedOnPrecision(self.pegRadius, xmlElement) / 24))
		self.socketRadius = self.pegRadius + halfPegClearance
		self.pegSides = evaluate.getEvaluatedInt(sides, 'pegSides', xmlElement)
		self.socketSides = evaluate.getEvaluatedInt(sides, 'socketSides', xmlElement)
		self.pegRadius -= halfPegClearance
		self.topBevel = evaluate.getEvaluatedFloat(self.topBevelOverRadius * self.radius, 'topBevel', xmlElement)
		self.topBevelPositions = evaluate.getEvaluatedString('nwse', 'topBevelPositions', xmlElement).lower()
		self.topRight = complex(float(self.columns), float(self.rows)) * self.radius
Пример #4
0
def processXMLElement( xmlElement, xmlProcessor ):
	"Process the xml element."
	fileName = evaluate.getEvaluatedValue('file', xmlElement )
	if fileName == None:
		return
	parserFileName = xmlElement.getRoot().parser.fileName
	absoluteFileName = gcodec.getAbsoluteFolderPath( parserFileName, fileName )
	xmlText = ''
	if fileName.endswith('.xml'):
		xmlText = gcodec.getFileText( absoluteFileName )
	else:
		xmlText = getXMLFromCarvingFileName( absoluteFileName )
	if xmlText == '':
		print('The file %s could not be found in the folder which the fabmetheus xml file is in.' % fileName )
		return
	if '_importname' in xmlElement.attributeDictionary:
		xmlElement.importName = xmlElement.attributeDictionary['_importname']
	else:
		xmlElement.importName = gcodec.getUntilDot( fileName )
		xmlElement.attributeDictionary['_importname'] = xmlElement.importName
	XMLSimpleReader( parserFileName, xmlElement, xmlText )
	originalChildren = xmlElement.children[ : ]
	xmlElement.children = []
	for child in originalChildren:
		for subchild in child.children:
			subchild.setParentAddToChildren(xmlElement)
		for attributeDictionaryKey in child.attributeDictionary.keys():
			if attributeDictionaryKey != 'version':
				xmlElement.attributeDictionary[ attributeDictionaryKey ] = child.attributeDictionary[ attributeDictionaryKey ]
	group.processShape( group.Group, xmlElement, xmlProcessor )
	root = xmlElement.getRoot()
	root.idDictionary[ xmlElement.importName ] = evaluate.ElementID(xmlElement)
	root.nameDictionary[ xmlElement.importName ] = evaluate.ElementName(xmlElement)
Пример #5
0
def processXMLElement(xmlElement):
    "Process the xml element."
    fileName = evaluate.getEvaluatedValue("file", xmlElement)
    if fileName == None:
        return
    parserFileName = xmlElement.getRoot().parser.fileName
    absoluteFileName = gcodec.getAbsoluteFolderPath(parserFileName, fileName)
    xmlText = ""
    if fileName.endswith(".xml"):
        xmlText = gcodec.getFileText(absoluteFileName)
    else:
        xmlText = getXMLFromCarvingFileName(absoluteFileName)
    if xmlText == "":
        print("The file %s could not be found in the folder which the fabmetheus xml file is in." % fileName)
        return
    if "_importname" in xmlElement.attributeDictionary:
        xmlElement.importName = xmlElement.attributeDictionary["_importname"]
    else:
        xmlElement.importName = gcodec.getUntilDot(fileName)
        xmlElement.attributeDictionary["_importname"] = xmlElement.importName
    XMLSimpleReader(parserFileName, xmlElement, xmlText)
    originalChildren = xmlElement.children[:]
    xmlElement.children = []
    for child in originalChildren:
        for subchild in child.children:
            subchild.setParentAddToChildren(xmlElement)
        for attributeDictionaryKey in child.attributeDictionary.keys():
            if attributeDictionaryKey != "version":
                xmlElement.attributeDictionary[attributeDictionaryKey] = child.attributeDictionary[
                    attributeDictionaryKey
                ]
    group.processShape(group.Group, xmlElement)
	def __init__(self, xmlElement):
		'Set defaults.'
		self.fileName = evaluate.getEvaluatedString('', 'file', xmlElement)
		self.heightGrid = evaluate.getEvaluatedValue([], 'heightGrid', xmlElement)
		self.inradius = evaluate.getVector3ByPrefixes(['demisize', 'inradius'], Vector3(10.0, 10.0, 5.0), xmlElement)
		self.inradius = evaluate.getVector3ByMultiplierPrefix(2.0, 'size', self.inradius, xmlElement)
		self.start = evaluate.getEvaluatedFloat(0.0, 'start', xmlElement)
Пример #7
0
	def __init__(self, elementNode):
		'Set defaults.'
		self.fileName = evaluate.getEvaluatedString('', elementNode, 'file')
		self.heightGrid = evaluate.getEvaluatedValue([], elementNode, 'heightGrid')
		self.inradius = evaluate.getVector3ByPrefixes(elementNode, ['demisize', 'inradius'], Vector3(10.0, 10.0, 5.0))
		self.inradius = evaluate.getVector3ByMultiplierPrefix(elementNode, 2.0, 'size', self.inradius)
		self.start = evaluate.getEvaluatedFloat(0.0, elementNode, 'start')
Пример #8
0
def processXMLElement(xmlElement):
    "Process the xml element."
    fileName = evaluate.getEvaluatedValue('file', xmlElement)
    if fileName == None:
        return
    parserFileName = xmlElement.getRoot().parser.fileName
    absoluteFileName = archive.getAbsoluteFolderPath(parserFileName, fileName)
    xmlText = ''
    if fileName.endswith('.xml'):
        xmlText = archive.getFileText(absoluteFileName)
    else:
        xmlText = getXMLFromCarvingFileName(absoluteFileName)
    if xmlText == '':
        print(
            'The file %s could not be found in the folder which the fabmetheus xml file is in.'
            % fileName)
        return
    if '_importname' in xmlElement.attributeDictionary:
        xmlElement.importName = xmlElement.attributeDictionary['_importname']
    else:
        xmlElement.importName = archive.getUntilDot(fileName)
        xmlElement.attributeDictionary['_importname'] = xmlElement.importName
    XMLSimpleReader(parserFileName, xmlElement, xmlText)
    originalChildren = xmlElement.children[:]
    xmlElement.children = []
    for child in originalChildren:
        for subchild in child.children:
            subchild.setParentAddToChildren(xmlElement)
        for attributeDictionaryKey in child.attributeDictionary.keys():
            if attributeDictionaryKey != 'version':
                xmlElement.attributeDictionary[
                    attributeDictionaryKey] = child.attributeDictionary[
                        attributeDictionaryKey]
    group.processShape(group.Group, xmlElement)
Пример #9
0
	def __init__(self, elementNode):
		'Set defaults.'
		self.fileName = evaluate.getEvaluatedString('', elementNode, 'file')
		self.heightGrid = evaluate.getEvaluatedValue([], elementNode, 'heightGrid')
		self.inradius = evaluate.getVector3ByPrefixes(elementNode, ['demisize', 'inradius'], Vector3(10.0, 10.0, 5.0))
		self.inradius = evaluate.getVector3ByMultiplierPrefix(elementNode, 2.0, 'size', self.inradius)
		self.start = evaluate.getEvaluatedFloat(0.0, elementNode, 'start')
Пример #10
0
 def __init__(self, xmlElement):
     'Set defaults.'
     self.fileName = evaluate.getEvaluatedString('', 'file', xmlElement)
     self.heightGrid = evaluate.getEvaluatedValue([], 'heightGrid',
                                                  xmlElement)
     self.inradius = evaluate.getVector3ByPrefixes(['demisize', 'inradius'],
                                                   Vector3(10.0, 10.0, 5.0),
                                                   xmlElement)
     self.inradius = evaluate.getVector3ByMultiplierPrefix(
         2.0, 'size', self.inradius, xmlElement)
     self.start = evaluate.getEvaluatedFloat(0.0, 'start', xmlElement)
Пример #11
0
def processXMLElement(xmlElement):
    'Process the xml element.'
    fileName = evaluate.getEvaluatedValue('file', xmlElement)
    if fileName == None:
        return
    parserFileName = xmlElement.getRoot().parser.fileName
    absoluteFileName = archive.getAbsoluteFolderPath(parserFileName, fileName)
    absoluteFileName = os.path.abspath(absoluteFileName)
    if 'models/' not in absoluteFileName:
        print(
            'Warning, models/ was not in the absolute file path, so for security nothing will be done for:'
        )
        print(xmlElement)
        print('For which the absolute file path is:')
        print(absoluteFileName)
        print(
            'The import tool can only read a file which has models/ in the file path.'
        )
        print(
            'To import the file, move the file into a folder called model/ or a subfolder which is inside the model folder tree.'
        )
        return
    xmlText = ''
    if fileName.endswith('.xml'):
        xmlText = archive.getFileText(absoluteFileName)
    else:
        xmlText = getXMLFromCarvingFileName(absoluteFileName)
    print('The import tool is opening the file:')
    print(absoluteFileName)
    if xmlText == '':
        print(
            'The file %s could not be found by processXMLElement in import.' %
            fileName)
        return
    if '_importName' in xmlElement.attributeDictionary:
        xmlElement.importName = xmlElement.attributeDictionary['_importName']
    else:
        xmlElement.importName = archive.getUntilDot(fileName)
        if evaluate.getEvaluatedBooleanDefault(True, 'basename', xmlElement):
            xmlElement.importName = os.path.basename(xmlElement.importName)
        xmlElement.attributeDictionary['_importName'] = xmlElement.importName
    importXMLElement = xml_simple_reader.XMLElement()
    xml_simple_reader.XMLSimpleReader(parserFileName, importXMLElement,
                                      xmlText)
    for child in importXMLElement.children:
        child.copyXMLChildren('', xmlElement)
        euclidean.removeElementsFromDictionary(child.attributeDictionary,
                                               ['id', 'name'])
        xmlElement.attributeDictionary.update(child.attributeDictionary)
        if evaluate.getEvaluatedBooleanDefault(False, 'overwriteRoot',
                                               xmlElement):
            xmlElement.getRoot().attributeDictionary.update(
                child.attributeDictionary)
    group.processShape(group.Group, xmlElement)
Пример #12
0
def getComplexByPrefix(elementNode, prefix, valueComplex):
    'Get complex from prefix and xml element.'
    value = evaluate.getEvaluatedValue(None, elementNode, prefix)
    if value != None:
        valueComplex = getComplexByDictionaryListValue(value, valueComplex)
    x = evaluate.getEvaluatedFloat(None, elementNode, prefix + '.x')
    if x != None:
        valueComplex = complex(x, getComplexIfNone(valueComplex).imag)
    y = evaluate.getEvaluatedFloat(None, elementNode, prefix + '.y')
    if y != None:
        valueComplex = complex(getComplexIfNone(valueComplex).real, y)
    return valueComplex
Пример #13
0
def getComplexByPrefix(prefix, valueComplex, xmlElement):
    "Get complex from prefix and xml element."
    value = evaluate.getEvaluatedValue(prefix, xmlElement)
    if value != None:
        valueComplex = getComplexByDictionaryListValue(value, valueComplex)
    x = evaluate.getEvaluatedFloat(prefix + '.x', xmlElement)
    if x != None:
        valueComplex = complex(x, getComplexIfNone(valueComplex).imag)
    y = evaluate.getEvaluatedFloat(prefix + '.y', xmlElement)
    if y != None:
        valueComplex = complex(getComplexIfNone(valueComplex).real, y)
    return valueComplex
Пример #14
0
def getComplexByPrefix(elementNode, prefix, valueComplex):
	'Get complex from prefix and xml element.'
	value = evaluate.getEvaluatedValue(None, elementNode, prefix)
	if value != None:
		valueComplex = getComplexByDictionaryListValue(value, valueComplex)
	x = evaluate.getEvaluatedFloat(None, elementNode, prefix + '.x')
	if x != None:
		valueComplex = complex( x, getComplexIfNone( valueComplex ).imag )
	y = evaluate.getEvaluatedFloat(None, elementNode, prefix + '.y')
	if y != None:
		valueComplex = complex( getComplexIfNone( valueComplex ).real, y )
	return valueComplex
Пример #15
0
def getComplexByPrefix( prefix, valueComplex, xmlElement ):
	"Get complex from prefix and xml element."
	value = evaluate.getEvaluatedValue(prefix, xmlElement)
	if value != None:
		valueComplex = getComplexByDictionaryListValue(value, valueComplex)
	x = evaluate.getEvaluatedFloat(prefix + '.x', xmlElement)
	if x != None:
		valueComplex = complex( x, getComplexIfNone( valueComplex ).imag )
	y = evaluate.getEvaluatedFloat(prefix + '.y', xmlElement)
	if y != None:
		valueComplex = complex( getComplexIfNone( valueComplex ).real, y )
	return valueComplex
Пример #16
0
def processXMLElement(xmlElement):
	'Process the xml element.'
	fileName = evaluate.getEvaluatedValue('file', xmlElement )
	if fileName == None:
		return
	parserFileName = xmlElement.getRoot().parser.fileName
	absoluteFileName = archive.getAbsoluteFolderPath(parserFileName, fileName)
	absoluteFileName = os.path.abspath(absoluteFileName)
	if 'models/' not in absoluteFileName:
		print('Warning, models/ was not in the absolute file path, so for security nothing will be done for:')
		print(xmlElement)
		print('For which the absolute file path is:')
		print(absoluteFileName)
		print('The import tool can only read a file which has models/ in the file path.')
		print('To import the file, move the file into a folder called model/ or a subfolder which is inside the model folder tree.')
		return
	xmlText = ''
	if fileName.endswith('.xml'):
		xmlText = archive.getFileText(absoluteFileName)
	else:
		xmlText = getXMLFromCarvingFileName(absoluteFileName)
	print('The import tool is opening the file:')
	print(absoluteFileName)
	if xmlText == '':
		print('The file %s could not be found by processXMLElement in import.' % fileName)
		return
	if '_importName' in xmlElement.attributeDictionary:
		xmlElement.importName = xmlElement.attributeDictionary['_importName']
	else:
		xmlElement.importName = archive.getUntilDot(fileName)
		if evaluate.getEvaluatedBooleanDefault(True, 'basename', xmlElement):
			xmlElement.importName = os.path.basename(xmlElement.importName)
		xmlElement.attributeDictionary['_importName'] = xmlElement.importName
	importXMLElement = xml_simple_reader.XMLElement()
	xml_simple_reader.XMLSimpleReader(parserFileName, importXMLElement, xmlText)
	for child in importXMLElement.children:
		child.copyXMLChildren('', xmlElement)
		euclidean.removeElementsFromDictionary(child.attributeDictionary, ['id', 'name'])
		xmlElement.attributeDictionary.update(child.attributeDictionary)
		if evaluate.getEvaluatedBooleanDefault(False, 'overwriteRoot', xmlElement):
			xmlElement.getRoot().attributeDictionary.update(child.attributeDictionary)
	group.processShape(group.Group, xmlElement)
Пример #17
0
def processXMLElement( xmlElement, xmlProcessor ):
	"Process the xml element."
	fileName = evaluate.getEvaluatedValue( 'file', xmlElement )
	if fileName == None:
		return
	parserFileName = xmlElement.getRoot().parser.fileName
	absoluteFileName = gcodec.getAbsoluteFolderPath( parserFileName, fileName )
	xmlText = getXMLFromFileName( absoluteFileName )
	if xmlText == '':
		print( 'The file %s could not be found in the folder which the fabmetheus xml file is in.' % fileName )
		return
	if '_importname' in xmlElement.attributeDictionary:
		xmlElement.importName = xmlElement.attributeDictionary[ '_importname' ]
	else:
		xmlElement.importName = gcodec.getUntilDot( fileName )
		xmlElement.attributeDictionary[ '_importname' ] = xmlElement.importName
	XMLSimpleParser( parserFileName, xmlElement, xmlText )
	group.processShape( group.Group, xmlElement, xmlProcessor )
	root = xmlElement.getRoot()
	root.idDictionary[ xmlElement.importName ] = evaluate.ElementID( xmlElement )
	root.nameDictionary[ xmlElement.importName ] = evaluate.ElementName( xmlElement )
Пример #18
0
def processXMLElement(xmlElement, xmlProcessor):
    "Process the xml element."
    fileName = evaluate.getEvaluatedValue('file', xmlElement)
    if fileName == None:
        return
    parserFileName = xmlElement.getRoot().parser.fileName
    absoluteFileName = gcodec.getAbsoluteFolderPath(parserFileName, fileName)
    xmlText = getXMLFromFileName(absoluteFileName)
    if xmlText == '':
        print(
            'The file %s could not be found in the folder which the fabmetheus xml file is in.'
            % fileName)
        return
    if '_importname' in xmlElement.attributeDictionary:
        xmlElement.importName = xmlElement.attributeDictionary['_importname']
    else:
        xmlElement.importName = gcodec.getUntilDot(fileName)
        xmlElement.attributeDictionary['_importname'] = xmlElement.importName
    XMLSimpleParser(parserFileName, xmlElement, xmlText)
    group.processShape(group.Group, xmlElement, xmlProcessor)
    root = xmlElement.getRoot()
    root.idDictionary[xmlElement.importName] = evaluate.ElementID(xmlElement)
    root.nameDictionary[xmlElement.importName] = evaluate.ElementName(
        xmlElement)