void CMesh::addToMesh(_In_opt_ CMesh * pMesh) { if (!pMesh) throw CNMRException(NMR_ERROR_INVALIDPARAM); pMesh->mergeMesh(this, fnMATRIX3_identity()); }
LIB3MFMETHODIMP CCOMModelBuildItem::SetObjectTransform(_In_ MODELTRANSFORM * pmTransform) { try { if (!pmTransform) throw CNMRException(NMR_ERROR_INVALIDPOINTER); if (!m_pModelBuildItem.get()) throw CNMRException(NMR_ERROR_INVALIDBUILDITEM); NMATRIX3 mMatrix = fnMATRIX3_identity (); int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { mMatrix.m_fields[i][j] = pmTransform->m_fFields[i][j]; } } m_pModelBuildItem->setTransform(mMatrix); return handleSuccess(); } catch (CNMRException & Exception) { return handleNMRException(&Exception); } catch (...) { return handleGenericException(); } }
LIB3MFMETHODIMP CCOMModelComponentsObject::AddComponent(_In_ ILib3MFModelObjectResource * pObject, _In_opt_ MODELTRANSFORM * pmTransform, _Outptr_ ILib3MFModelComponent ** ppComponent) { try { if (!pObject) throw CNMRException (NMR_ERROR_INVALIDPOINTER); CModelComponentsObject * pComponentsObject = getComponentsObject(); CModel * pModel = pComponentsObject->getModel(); __NMRASSERT(pModel); // Get Resource ID ModelResourceID nObjectID; HRESULT hResult = pObject->GetResourceID(&nObjectID); if (hResult != LIB3MF_OK) return hResult; // Find class instance CModelObject * pObject = pModel->findObject(nObjectID); if (pObject == nullptr) throw CNMRException(NMR_ERROR_RESOURCENOTFOUND); // Convert Transform, if given NMATRIX3 mMatrix = fnMATRIX3_identity(); if (pmTransform) { int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { mMatrix.m_fields[i][j] = pmTransform->m_fFields[i][j]; } } } // Create Model component PModelComponent pNewComponent = std::make_shared<CModelComponent>(pObject, mMatrix); pComponentsObject->addComponent(pNewComponent); // Create Component COM Wrapper if (ppComponent) { CCOMObject<CCOMModelComponent> * pResult = new CCOMObject<CCOMModelComponent>(); pResult->AddRef(); pResult->setComponent(pNewComponent); *ppComponent = pResult; } return handleSuccess(); } catch (CNMRException & Exception) { return handleNMRException(&Exception); } catch (...) { return handleGenericException(); } }
void CMesh::mergeMesh(_In_opt_ CMesh * pMesh) { mergeMesh(pMesh, fnMATRIX3_identity()); }
void CModelObject::mergeToMesh(_In_ CMesh * pMesh) { mergeToMesh(pMesh, fnMATRIX3_identity()); }