void CModelReaderNode093_Object::OnNSChildElement(_In_z_ const nfWChar * pChildName, _In_z_ const nfWChar * pNameSpace, _In_ CXmlReader * pXMLReader) { __NMRASSERT(pChildName); __NMRASSERT(pXMLReader); __NMRASSERT(pNameSpace); if ((wcscmp(pNameSpace, XML_3MF_NAMESPACE_CORESPEC093) == 0) || (wcscmp(pNameSpace, L"") == 0)) { // Read a mesh object if (wcscmp(pChildName, XML_3MF_ELEMENT_MESH) == 0) { // If we already have parsed an object, the node is duplicate if (m_pObject.get()) throw CNMRException(NMR_ERROR_AMBIGUOUSOBJECTDEFINITON); // Create Empty Mesh PMesh pMesh = std::make_shared<CMesh>(); // Create Mesh Object m_pObject = std::make_shared<CModelMeshObject>(m_nID, m_pModel, pMesh); // Read Mesh PModelReaderNode pXMLNode = std::make_shared<CModelReaderNode093_Mesh>(m_pModel, pMesh.get(), m_pColorMapping, m_pMaterialResource, m_pWarnings); pXMLNode->parseXML(pXMLReader); // Add Object to Parent m_pModel->addResource(m_pObject); } // Read a component object if (wcscmp(pChildName, XML_3MF_ELEMENT_COMPONENTS) == 0) { // If we already have parsed an object, the node is duplicate if (m_pObject.get()) throw CNMRException(NMR_ERROR_AMBIGUOUSOBJECTDEFINITON); // Create Component List Object PModelComponentsObject pComponentsObject = std::make_shared<CModelComponentsObject>(m_nID, m_pModel); m_pObject = pComponentsObject; // Read Components PModelReaderNode pXMLNode = std::make_shared<CModelReaderNode093_Components>(pComponentsObject.get(), m_pWarnings); pXMLNode->parseXML(pXMLReader); // Add Object to Parent m_pModel->addResource(m_pObject); } } }
void CModelReaderNode093_Resources::OnNSChildElement(_In_z_ const nfWChar * pChildName, _In_z_ const nfWChar * pNameSpace, _In_ CXmlReader * pXMLReader) { __NMRASSERT(pChildName); __NMRASSERT(pXMLReader); __NMRASSERT(pNameSpace); if ((wcscmp(pNameSpace, XML_3MF_NAMESPACE_CORESPEC093) == 0) || (wcscmp(pNameSpace, L"") == 0)) { if (wcscmp(pChildName, XML_3MF_ELEMENT_OBJECT) == 0) { PModelReaderNode pXMLNode = std::make_shared<CModelReaderNode093_Object>(m_pModel, m_pColorMapping, m_pMaterialResource, m_pWarnings); pXMLNode->parseXML(pXMLReader); } if (wcscmp(pChildName, XML_3MF_ELEMENT_COLOR) == 0) { PModelReaderNode093_Color pXMLNode = std::make_shared<CModelReaderNode093_Color>(m_pWarnings); pXMLNode->parseXML(pXMLReader); ModelResourceID nResourceID = pXMLNode->retrieveID(); ModelResourceID nTextureRefID = pXMLNode->retrieveTextureID(); if (nTextureRefID > 0) { m_pColorMapping->registerTextureReference(nResourceID, nTextureRefID); } else { m_pColorMapping->registerColor(pXMLNode->retrieveID(), 0, pXMLNode->retrieveColor()); } } if (wcscmp(pChildName, XML_3MF_ELEMENT_TEXTURE) == 0) { PModelReaderNode093_Texture pXMLNode = std::make_shared<CModelReaderNode093_Texture>(m_pModel, m_pWarnings); pXMLNode->parseXML(pXMLReader); } if (wcscmp(pChildName, XML_3MF_ELEMENT_MATERIAL) == 0) { PModelReaderNode093_Material pXMLNode = std::make_shared<CModelReaderNode093_Material>(m_pWarnings); pXMLNode->parseXML(pXMLReader); if (m_pMaterialResource.get() == nullptr) { m_pMaterialResource = std::make_shared<CModelBaseMaterialResource> (m_pModel->generateResourceID(), m_pModel); m_pModel->addResource(m_pMaterialResource); } nfColor cColor; if (!m_pColorMapping->findColor(pXMLNode->retrieveColorID(), 0, cColor)) { cColor = 0xffffffff; } ModelResourceIndex nMaterialIndex; nMaterialIndex = m_pMaterialResource->addBaseMaterial(pXMLNode->retrieveName(), cColor); m_pColorMapping->registerMaterialReference(pXMLNode->retrieveID(), nMaterialIndex); } } }
void CModelReaderNode_BeamLattice1702_BeamLattice::OnNSChildElement(_In_z_ const nfChar * pChildName, _In_z_ const nfChar * pNameSpace, _In_ CXmlReader * pXMLReader) { __NMRASSERT(pChildName); __NMRASSERT(pXMLReader); __NMRASSERT(pNameSpace); if (strcmp(pNameSpace, XML_3MF_NAMESPACE_BEAMLATTICESPEC) == 0) { if (strcmp(pChildName, XML_3MF_ELEMENT_BEAMS) == 0) { PModelReaderNode pXMLNode = std::make_shared<CModelReaderNode_BeamLattice1702_Beams>(m_pModel, m_pMesh, m_pWarnings); pXMLNode->parseXML(pXMLReader); } else if (strcmp(pChildName, XML_3MF_ELEMENT_BEAMSETS) == 0) { PModelReaderNode pXMLNode = std::make_shared<CModelReaderNode_BeamLattice1702_BeamSets>(m_pMesh, m_pWarnings); pXMLNode->parseXML(pXMLReader); } else m_pWarnings->addException(CNMRException(NMR_ERROR_NAMESPACE_INVALID_ELEMENT), mrwInvalidOptionalValue); } }
void CModelReaderNode093_Build::OnNSChildElement(_In_z_ const nfWChar * pChildName, _In_z_ const nfWChar * pNameSpace, _In_ CXmlReader * pXMLReader) { __NMRASSERT(pChildName); __NMRASSERT(pXMLReader); __NMRASSERT(pNameSpace); if ((wcscmp(pNameSpace, XML_3MF_NAMESPACE_CORESPEC093) == 0 ) || (wcscmp(pNameSpace, L"") == 0)) { if (wcscmp(pChildName, XML_3MF_ELEMENT_ITEM) == 0) { PModelReaderNode pXMLNode = std::make_shared<CModelReaderNode093_BuildItem>(m_pModel, m_pWarnings); pXMLNode->parseXML(pXMLReader); } } }