File tree 4 files changed +22
-19
lines changed
4 files changed +22
-19
lines changed Original file line number Diff line number Diff line change @@ -49,6 +49,9 @@ GMultiBox::GMultiBox(GObject *po) : GObject(GMULTI_BLOCK)
49
49
// copy the name
50
50
SetName (po->GetName ());
51
51
52
+ // copy the transform
53
+ GetTransform () = po->GetTransform ();
54
+
52
55
// creating a new object has increased the object counter
53
56
// so we need to decrease it again
54
57
GItem_T<GBaseObject>::DecreaseCounter ();
@@ -64,7 +67,7 @@ GMultiBox::GMultiBox(GObject *po) : GObject(GMULTI_BLOCK)
64
67
bool b = mb->BuildMultiBlock (); assert (b);
65
68
66
69
// copy it to the multiblock mesh
67
- mbMesher->SetMultiBlockMesh (*mb);
70
+ mbMesher->CopyFrom (*mb);
68
71
69
72
// next, we pull the geometry info from the multiblock
70
73
// --- Nodes ---
@@ -306,11 +309,16 @@ bool GMultiBox::DeletePart(GPart* pg)
306
309
FEMultiBlockMesher* mbMesher = dynamic_cast <FEMultiBlockMesher*>(GetFEMesher ()); assert (mbMesher);
307
310
308
311
// Get the multiblock mesh
309
- FEMultiBlockMesh& mb = mbMesher->GetMultiBlockMesh ();
310
- mb.DeleteBlock (lid);
312
+ mbMesher->DeleteBlock (lid);
311
313
312
314
// rebuild the GMesh
313
315
BuildGMesh ();
314
316
315
317
return true ;
316
318
}
319
+
320
+ GObject* GMultiBox::Clone ()
321
+ {
322
+ GMultiBox* clone = new GMultiBox (this );
323
+ return clone;
324
+ }
Original file line number Diff line number Diff line change @@ -43,4 +43,5 @@ class GMultiBox : public GObject
43
43
44
44
FEMeshBase* GetEditableMesh () override ;
45
45
46
+ GObject* Clone () override ;
46
47
};
Original file line number Diff line number Diff line change @@ -79,7 +79,7 @@ void FEMultiBlockMesh::operator = (const FEMultiBlockMesh& mb)
79
79
// -----------------------------------------------------------------------------
80
80
void FEMultiBlockMesh::CopyFrom (const FEMultiBlockMesh& mb)
81
81
{
82
- Clear ();
82
+ ClearMB ();
83
83
m_MBNode = mb.m_MBNode ;
84
84
m_MBEdge = mb.m_MBEdge ;
85
85
m_MBFace = mb.m_MBFace ;
@@ -1747,22 +1747,18 @@ FEMultiBlockMesher::FEMultiBlockMesher(GMultiBox* po) : m_po(po)
1747
1747
AddIntParam (0 , " elem" , " Element Type" )->SetEnumNames (" Hex8\0 Hex20\0 Hex27\0 " );
1748
1748
}
1749
1749
1750
- void FEMultiBlockMesher::SetMultiBlockMesh ( const FEMultiBlockMesh& mb )
1750
+ bool FEMultiBlockMesher::BuildMultiBlock ( )
1751
1751
{
1752
- m_mb = mb;
1753
- }
1754
-
1755
- FEMultiBlockMesh& FEMultiBlockMesher::GetMultiBlockMesh ()
1756
- {
1757
- return m_mb;
1752
+ // we assume that the MB is valid
1753
+ return true ;
1758
1754
}
1759
1755
1760
1756
FEMesh* FEMultiBlockMesher::BuildMesh ()
1761
1757
{
1762
1758
if (m_po == nullptr ) return nullptr ;
1763
1759
GMultiBox& o = *m_po;
1764
1760
1765
- FEMultiBlockMesh& mb = m_mb ;
1761
+ FEMultiBlockMesh& mb = * this ;
1766
1762
int nd = GetIntValue (DIVS);
1767
1763
for (int i = 0 ; i < mb.Blocks (); ++i)
1768
1764
{
@@ -1787,5 +1783,5 @@ FEMesh* FEMultiBlockMesher::BuildMesh()
1787
1783
assert (false );
1788
1784
}
1789
1785
1790
- return m_mb. BuildMesh ();
1786
+ return FEMultiBlockMesh:: BuildMesh ();
1791
1787
}
Original file line number Diff line number Diff line change @@ -395,19 +395,17 @@ class Sampler1D
395
395
396
396
class GMultiBox ;
397
397
398
- class FEMultiBlockMesher : public FEMesher
398
+ class FEMultiBlockMesher : public FEMultiBlockMesh
399
399
{
400
400
enum { DIVS, ELEM_TYPE };
401
401
402
402
public:
403
403
FEMultiBlockMesher (GMultiBox* po);
404
404
405
- void SetMultiBlockMesh (const FEMultiBlockMesh& mb);
406
-
407
- FEMultiBlockMesh& GetMultiBlockMesh ();
408
-
409
405
// build the mesh
410
- FEMesh* BuildMesh ();
406
+ FEMesh* BuildMesh () override ;
407
+
408
+ bool BuildMultiBlock () override ;
411
409
412
410
private:
413
411
GMultiBox* m_po;
You can’t perform that action at this time.
0 commit comments