// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void GenerateNodeTriangleConnectivity::dataCheck() { setErrorCondition(0); SurfaceMeshDataContainer* sm = getSurfaceMeshDataContainer(); if(NULL == sm) { setErrorCondition(-384); notifyErrorMessage(getHumanLabel(), "SurfaceMeshDataContainer is missing", getErrorCondition()); } else { // We MUST have Nodes if(sm->getVertices().get() == NULL) { setErrorCondition(-384); notifyErrorMessage(getHumanLabel(), "SurfaceMesh DataContainer missing Nodes", getErrorCondition()); } // We MUST have Triangles defined also. if(sm->getFaces().get() == NULL) { setErrorCondition(-384); notifyErrorMessage(getHumanLabel(), "SurfaceMesh DataContainer missing Triangles", getErrorCondition()); } else { // This depends on the triangles array already being created int size = sm->getFaces()->GetNumberOfTuples(); m_SurfaceMeshTriangleEdgesPtr = sattrMat->createNonPrereqArray<DataArray<int32_t>, AbstractFilter, int32_t>(this, m_CellAttributeMatrixName, m_SurfaceMeshTriangleEdgesArrayName, 0, size, 3); /* Assigns the shared_ptr<> to an instance variable that is a weak_ptr<> */ if( NULL != m_SurfaceMeshTriangleEdgesPtr.lock().get() ) /* Validate the Weak Pointer wraps a non-NULL pointer to a DataArray<T> object */ { m_SurfaceMeshTriangleEdges = m_SurfaceMeshTriangleEdgesPtr.lock()->getPointer(0); } /* Now assign the raw pointer to data from the DataArray<T> object */ } // We do not know the size of the array so we can not use the macro so we just manually call // the needed methods that will propagate these array additions to the pipeline DataArray<int>::Pointer uniqueEdgesArray = DataArray<int>::CreateArray(1, 2, SIMPL::CellData::SurfaceMeshUniqueEdges); sm->getAttributeMatrix(getCellAttributeMatrixName())->addAttributeArray(SIMPL::CellData::SurfaceMeshUniqueEdges, uniqueEdgesArray); // This is just for tracking what Arrays are being created by this filter. Normally the macro // would do this for us. addCreatedCellData(SIMPL::CellData::SurfaceMeshUniqueEdges); } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void GenerateNodeTriangleConnectivity::dataCheck(bool preflight, size_t voxels, size_t fields, size_t ensembles) { setErrorCondition(0); std::stringstream ss; SurfaceMeshDataContainer* sm = getSurfaceMeshDataContainer(); if(NULL == sm) { addErrorMessage(getHumanLabel(), "SurfaceMeshDataContainer is missing", -383); setErrorCondition(-384); } else { // We MUST have Nodes if(sm->getVertices().get() == NULL) { addErrorMessage(getHumanLabel(), "SurfaceMesh DataContainer missing Nodes", -384); setErrorCondition(-384); } // We MUST have Triangles defined also. if(sm->getFaces().get() == NULL) { addErrorMessage(getHumanLabel(), "SurfaceMesh DataContainer missing Triangles", -383); setErrorCondition(-384); } else { // This depends on the triangles array already being created int size = sm->getFaces()->GetNumberOfTuples(); CREATE_NON_PREREQ_DATA(sm, DREAM3D, CellData, SurfaceMeshTriangleEdges, ss, int32_t, Int32ArrayType, 0, size, 3) } // We do not know the size of the array so we can not use the macro so we just manually call // the needed methods that will propagate these array additions to the pipeline DataArray<int>::Pointer uniqueEdgesArray = DataArray<int>::CreateArray(1, 2, DREAM3D::CellData::SurfaceMeshUniqueEdges); sm->addCellData(DREAM3D::CellData::SurfaceMeshUniqueEdges, uniqueEdgesArray); // This is just for tracking what Arrays are being created by this filter. Normally the macro // would do this for us. addCreatedCellData(DREAM3D::CellData::SurfaceMeshUniqueEdges); } }