FEM: mesh view provider, add property to adjust max faces to show inner mesh data
This commit is contained in:
@@ -194,6 +194,7 @@ ViewProviderFemMesh::ViewProviderFemMesh()
|
||||
ShapeColor.setValue(App::Color(1.0f,0.7f,0.0f));
|
||||
ADD_PROPERTY(BackfaceCulling,(true));
|
||||
ADD_PROPERTY(ShowInner, (false));
|
||||
ADD_PROPERTY(MaxFacesShowInner,(50000));
|
||||
|
||||
onlyEdges = false;
|
||||
|
||||
@@ -368,7 +369,7 @@ void ViewProviderFemMesh::updateData(const App::Property* prop)
|
||||
ViewProviderFEMMeshBuilder builder;
|
||||
resetColorByNodeId();
|
||||
resetDisplacementByNodeId();
|
||||
builder.createMesh(prop, pcCoords, pcFaces, pcLines, vFaceElementIdx, vNodeElementIdx, onlyEdges, ShowInner.getValue());
|
||||
builder.createMesh(prop, pcCoords, pcFaces, pcLines, vFaceElementIdx, vNodeElementIdx, onlyEdges, ShowInner.getValue(), MaxFacesShowInner.getValue());
|
||||
}
|
||||
Gui::ViewProviderGeometryObject::updateData(prop);
|
||||
}
|
||||
@@ -394,7 +395,7 @@ void ViewProviderFemMesh::onChanged(const App::Property* prop)
|
||||
else if (prop == &ShowInner ) {
|
||||
// recalc mesh with new settings
|
||||
ViewProviderFEMMeshBuilder builder;
|
||||
builder.createMesh(&(dynamic_cast<Fem::FemMeshObject*>(this->pcObject)->FemMesh), pcCoords, pcFaces, pcLines, vFaceElementIdx, vNodeElementIdx, onlyEdges, ShowInner.getValue());
|
||||
builder.createMesh(&(dynamic_cast<Fem::FemMeshObject*>(this->pcObject)->FemMesh), pcCoords, pcFaces, pcLines, vFaceElementIdx, vNodeElementIdx, onlyEdges, ShowInner.getValue(), MaxFacesShowInner.getValue());
|
||||
}
|
||||
else if (prop == &LineWidth) {
|
||||
pcDrawStyle->lineWidth = LineWidth.getValue();
|
||||
@@ -689,7 +690,7 @@ void ViewProviderFEMMeshBuilder::buildNodes(const App::Property* prop, std::vect
|
||||
std::vector<unsigned long> vFaceElementIdx;
|
||||
std::vector<unsigned long> vNodeElementIdx;
|
||||
bool onlyEdges;
|
||||
createMesh(prop, pcPointsCoord, pcFaces,pcLines,vFaceElementIdx,vNodeElementIdx,onlyEdges,false);
|
||||
createMesh(prop, pcPointsCoord, pcFaces,pcLines,vFaceElementIdx,vNodeElementIdx,onlyEdges,false,0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -716,7 +717,8 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
|
||||
std::vector<unsigned long> &vFaceElementIdx,
|
||||
std::vector<unsigned long> &vNodeElementIdx,
|
||||
bool &onlyEdges,
|
||||
bool ShowInner) const
|
||||
bool ShowInner,
|
||||
int MaxFacesShowInner) const
|
||||
{
|
||||
|
||||
const Fem::PropertyFemMesh* mesh = static_cast<const Fem::PropertyFemMesh*>(prop);
|
||||
@@ -922,7 +924,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
|
||||
int FaceSize = facesHelper.size();
|
||||
|
||||
|
||||
if( FaceSize < 5000){
|
||||
if( FaceSize < MaxFacesShowInner){
|
||||
Base::Console().Log(" %f: Start eliminate internal faces SIMPLE\n",Base::TimeInfo::diffTimeF(Start,Base::TimeInfo()));
|
||||
|
||||
// search for double (inside) faces and hide them
|
||||
|
||||
@@ -53,7 +53,8 @@ public:
|
||||
std::vector<unsigned long>&,
|
||||
std::vector<unsigned long>&,
|
||||
bool &edgeOnly,
|
||||
bool ShowInner
|
||||
bool ShowInner,
|
||||
int MaxFacesShowInner
|
||||
) const;
|
||||
};
|
||||
|
||||
@@ -74,6 +75,7 @@ public:
|
||||
App::PropertyFloatConstraint LineWidth;
|
||||
App::PropertyBool BackfaceCulling;
|
||||
App::PropertyBool ShowInner;
|
||||
App::PropertyInteger MaxFacesShowInner;
|
||||
|
||||
void attach(App::DocumentObject *pcObject);
|
||||
void setDisplayMode(const char* ModeName);
|
||||
|
||||
Reference in New Issue
Block a user