implement Hex8 and change temporarily the line show
This commit is contained in:
parent
bbac07e846
commit
c66b7d7ff2
|
@ -330,6 +330,11 @@ PyObject* FemMeshPy::addVolume(PyObject *args)
|
|||
if (!vol)
|
||||
throw std::runtime_error("Failed to add Tet4 volume");
|
||||
break;
|
||||
case 8:
|
||||
vol = meshDS->AddVolume(Nodes[0],Nodes[1],Nodes[2],Nodes[3],Nodes[4],Nodes[5],Nodes[6],Nodes[7]);
|
||||
if (!vol)
|
||||
throw std::runtime_error("Failed to add Tet10 volume");
|
||||
break;
|
||||
case 10:
|
||||
vol = meshDS->AddVolume(Nodes[0],Nodes[1],Nodes[2],Nodes[3],Nodes[4],Nodes[5],Nodes[6],Nodes[7],Nodes[8],Nodes[9]);
|
||||
if (!vol)
|
||||
|
|
|
@ -251,16 +251,6 @@ void ViewProviderFemMesh::attach(App::DocumentObject *pcObj)
|
|||
pcWireRoot->addChild(pcHighlight);
|
||||
addDisplayMaskMode(pcWireRoot, "Wireframe");
|
||||
|
||||
// flat+line
|
||||
SoPolygonOffset* offset = new SoPolygonOffset();
|
||||
offset->styles = SoPolygonOffset::LINES;
|
||||
offset->factor = -2.0f;
|
||||
offset->units = 1.0f;
|
||||
SoGroup* pcFlatWireRoot = new SoSeparator();
|
||||
pcFlatWireRoot->addChild(pcFlatRoot);
|
||||
pcFlatWireRoot->addChild(offset);
|
||||
pcFlatWireRoot->addChild(pcWireRoot);
|
||||
addDisplayMaskMode(pcFlatWireRoot, "Flat Lines");
|
||||
|
||||
// Points
|
||||
SoGroup* pcPointsRoot = new SoSeparator();
|
||||
|
@ -271,6 +261,17 @@ void ViewProviderFemMesh::attach(App::DocumentObject *pcObj)
|
|||
pcPointsRoot->addChild(pointset);
|
||||
addDisplayMaskMode(pcPointsRoot, "Points");
|
||||
|
||||
// flat+line
|
||||
//SoPolygonOffset* offset = new SoPolygonOffset();
|
||||
//offset->styles = SoPolygonOffset::LINES;
|
||||
//offset->factor = -2.0f;
|
||||
//offset->units = 1.0f;
|
||||
SoGroup* pcFlatWireRoot = new SoSeparator();
|
||||
pcFlatWireRoot->addChild(pcFlatRoot);
|
||||
//pcFlatWireRoot->addChild(offset);
|
||||
pcFlatWireRoot->addChild(pcPointsRoot);
|
||||
addDisplayMaskMode(pcFlatWireRoot, "Flat Lines");
|
||||
|
||||
pcHighlight->addChild(pcCoords);
|
||||
pcHighlight->addChild(pcFaces);
|
||||
}
|
||||
|
@ -421,15 +422,30 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, SoCoordin
|
|||
facesHelper[i++].set(3,aVol,aVol->GetID(),4,aVol->GetNode(2),aVol->GetNode(3),aVol->GetNode(0));
|
||||
break;
|
||||
//unknown case
|
||||
case 8:
|
||||
// face 1
|
||||
facesHelper[i++].set(4,aVol,aVol->GetID(),1,aVol->GetNode(0),aVol->GetNode(1),aVol->GetNode(2),aVol->GetNode(3));
|
||||
// face 2
|
||||
facesHelper[i++].set(4,aVol,aVol->GetID(),2,aVol->GetNode(4),aVol->GetNode(5),aVol->GetNode(6),aVol->GetNode(7));
|
||||
// face 3
|
||||
facesHelper[i++].set(4,aVol,aVol->GetID(),3,aVol->GetNode(0),aVol->GetNode(1),aVol->GetNode(4),aVol->GetNode(5));
|
||||
// face 4
|
||||
facesHelper[i++].set(4,aVol,aVol->GetID(),4,aVol->GetNode(1),aVol->GetNode(2),aVol->GetNode(5),aVol->GetNode(6));
|
||||
// face 5
|
||||
facesHelper[i++].set(4,aVol,aVol->GetID(),5,aVol->GetNode(2),aVol->GetNode(3),aVol->GetNode(6),aVol->GetNode(7));
|
||||
// face 6
|
||||
facesHelper[i++].set(4,aVol,aVol->GetID(),6,aVol->GetNode(0),aVol->GetNode(3),aVol->GetNode(4),aVol->GetNode(7));
|
||||
break;
|
||||
//unknown case
|
||||
case 10:
|
||||
// face 1
|
||||
facesHelper[i++].set(6,aVol,aVol->GetID(),1,aVol->GetNode(0),aVol->GetNode(1),aVol->GetNode(2),aVol->GetNode(4),aVol->GetNode(5),aVol->GetNode(6));
|
||||
// face 2
|
||||
facesHelper[i++].set(6,aVol,aVol->GetID(),2,aVol->GetNode(0),aVol->GetNode(3),aVol->GetNode(7),aVol->GetNode(1),aVol->GetNode(8),aVol->GetNode(4));
|
||||
facesHelper[i++].set(6,aVol,aVol->GetID(),2,aVol->GetNode(0),aVol->GetNode(3),aVol->GetNode(1),aVol->GetNode(7),aVol->GetNode(8),aVol->GetNode(4));
|
||||
// face 3
|
||||
facesHelper[i++].set(6,aVol,aVol->GetID(),3,aVol->GetNode(1),aVol->GetNode(3),aVol->GetNode(8),aVol->GetNode(2),aVol->GetNode(9),aVol->GetNode(5));
|
||||
facesHelper[i++].set(6,aVol,aVol->GetID(),3,aVol->GetNode(1),aVol->GetNode(3),aVol->GetNode(2),aVol->GetNode(8),aVol->GetNode(9),aVol->GetNode(5));
|
||||
// face 4
|
||||
facesHelper[i++].set(6,aVol,aVol->GetID(),4,aVol->GetNode(2),aVol->GetNode(3),aVol->GetNode(9),aVol->GetNode(0),aVol->GetNode(7),aVol->GetNode(6));
|
||||
facesHelper[i++].set(6,aVol,aVol->GetID(),4,aVol->GetNode(2),aVol->GetNode(3),aVol->GetNode(0),aVol->GetNode(9),aVol->GetNode(7),aVol->GetNode(6));
|
||||
break;
|
||||
//unknown case
|
||||
default: assert(0);
|
||||
|
@ -479,6 +495,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, SoCoordin
|
|||
if(! facesHelper[l].hide)
|
||||
switch(facesHelper[l].Size){
|
||||
case 3:triangleCount++ ;break;
|
||||
case 4:triangleCount+=2 ;break;
|
||||
case 6:triangleCount+=4 ;break;
|
||||
default: assert(0);
|
||||
}
|
||||
|
@ -521,6 +538,70 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, SoCoordin
|
|||
|
||||
}
|
||||
break;
|
||||
case 8: // Hex 8
|
||||
switch(facesHelper[l].FaceNo){
|
||||
case 1: {
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(1)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(0)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(3)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(3)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(2)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(1)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
break; }
|
||||
case 2: {
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(4)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(5)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(7)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(5)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(6)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(7)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
break; }
|
||||
case 3: {
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(0)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(1)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(5)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(0)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(5)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(4)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
break; }
|
||||
case 4: {
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(5)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(1)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(2)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(5)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(2)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(6)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
break; }
|
||||
case 5: {
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(2)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(3)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(7)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(2)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(7)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(6)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
break; }
|
||||
case 6: {
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(3)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(0)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(4)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(3)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(4)];
|
||||
indices[index++] = mapNodeIndex[facesHelper[l].Element->GetNode(7)];
|
||||
indices[index++] = SO_END_FACE_INDEX;
|
||||
break; }
|
||||
}
|
||||
break;
|
||||
case 10: // Tet 10
|
||||
switch(facesHelper[l].FaceNo){
|
||||
case 1: {
|
||||
|
|
Loading…
Reference in New Issue
Block a user