FEM: z88 some small code improvements
This commit is contained in:
@@ -30,9 +30,12 @@ __url__ = "http://www.freecadweb.org"
|
||||
# \brief FreeCAD Z88 Mesh reader and writer for FEM workbench
|
||||
|
||||
import os
|
||||
|
||||
import FreeCAD
|
||||
from FreeCAD import Console
|
||||
|
||||
from femmesh import meshtools
|
||||
|
||||
# ************************************************************************************************
|
||||
# ********* generic FreeCAD import and export methods ********************************************
|
||||
# names are fix given from FreeCAD, these methods are called from FreeCAD
|
||||
@@ -86,8 +89,7 @@ def export(
|
||||
Console.PrintError("No FEM mesh object selected.\n")
|
||||
return
|
||||
femnodes_mesh = obj.FemMesh.Nodes
|
||||
import femmesh.meshtools as FemMeshTools
|
||||
femelement_table = FemMeshTools.get_femelement_table(obj.FemMesh)
|
||||
femelement_table = meshtools.get_femelement_table(obj.FemMesh)
|
||||
z88_element_type = get_z88_element_type(obj.FemMesh, femelement_table)
|
||||
f = pyopen(filename, "wb")
|
||||
write_z88_mesh_to_file(femnodes_mesh, femelement_table, z88_element_type, f)
|
||||
@@ -429,8 +431,7 @@ def write(
|
||||
Console.PrintError("Not a FemMesh was given as parameter.\n")
|
||||
return
|
||||
femnodes_mesh = fem_mesh.Nodes
|
||||
import femmesh.meshtools as FemMeshTools
|
||||
femelement_table = FemMeshTools.get_femelement_table(fem_mesh)
|
||||
femelement_table = meshtools.get_femelement_table(fem_mesh)
|
||||
z88_element_type = get_z88_element_type(fem_mesh, femelement_table)
|
||||
f = pyopen(filename, "w")
|
||||
write_z88_mesh_to_file(femnodes_mesh, femelement_table, z88_element_type, f)
|
||||
@@ -554,18 +555,17 @@ def get_z88_element_type(
|
||||
femmesh,
|
||||
femelement_table=None
|
||||
):
|
||||
import femmesh.meshtools as FemMeshTools
|
||||
if not femmesh:
|
||||
Console.PrintError("Error: No femmesh.\n")
|
||||
if not femelement_table:
|
||||
Console.PrintError("The femelement_table need to be calculated.\n")
|
||||
femelement_table = FemMeshTools.get_femelement_table(femmesh)
|
||||
femelement_table = meshtools.get_femelement_table(femmesh)
|
||||
# in some cases lowest key in femelement_table is not [1]
|
||||
for elem in sorted(femelement_table):
|
||||
elem_length = len(femelement_table[elem])
|
||||
Console.PrintLog("Node count of first element: {}\n".format(elem_length))
|
||||
break # break after the first elem
|
||||
if FemMeshTools.is_solid_femmesh(femmesh):
|
||||
if meshtools.is_solid_femmesh(femmesh):
|
||||
if femmesh.TetraCount == femmesh.VolumeCount:
|
||||
if elem_length == 4:
|
||||
return 17
|
||||
@@ -583,7 +583,7 @@ def get_z88_element_type(
|
||||
return 0
|
||||
else:
|
||||
Console.PrintError("no tetra, no hexa or Mixed Volume Elements.\n")
|
||||
elif FemMeshTools.is_face_femmesh(femmesh):
|
||||
elif meshtools.is_face_femmesh(femmesh):
|
||||
if femmesh.TriangleCount == femmesh.FaceCount:
|
||||
if elem_length == 3:
|
||||
Console.PrintError("tria3mesh, not supported by Z88.\n")
|
||||
@@ -605,7 +605,7 @@ def get_z88_element_type(
|
||||
else:
|
||||
Console.PrintError("no tria, no quad\n")
|
||||
return 0
|
||||
elif FemMeshTools.is_edge_femmesh(femmesh):
|
||||
elif meshtools.is_edge_femmesh(femmesh):
|
||||
Console.PrintMessage("Edge femmesh will be exported as 3D truss element nr 4.\n")
|
||||
return 4
|
||||
else:
|
||||
|
||||
@@ -32,12 +32,12 @@ import time
|
||||
|
||||
import FreeCAD
|
||||
|
||||
from .. import writerbase as FemInputWriter
|
||||
from .. import writerbase
|
||||
from feminout import importZ88Mesh
|
||||
from femmesh import meshtools as FemMeshTools
|
||||
from femmesh import meshtools
|
||||
|
||||
|
||||
class FemInputWriterZ88(FemInputWriter.FemInputWriter):
|
||||
class FemInputWriterZ88(writerbase.FemInputWriter):
|
||||
def __init__(
|
||||
self,
|
||||
analysis_obj,
|
||||
@@ -46,7 +46,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
|
||||
member,
|
||||
dir_name=None
|
||||
):
|
||||
FemInputWriter.FemInputWriter.__init__(
|
||||
writerbase.FemInputWriter.__init__(
|
||||
self,
|
||||
analysis_obj,
|
||||
solver_obj,
|
||||
@@ -68,7 +68,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
|
||||
if not self.femnodes_mesh:
|
||||
self.femnodes_mesh = self.femmesh.Nodes
|
||||
if not self.femelement_table:
|
||||
self.femelement_table = FemMeshTools.get_femelement_table(self.femmesh)
|
||||
self.femelement_table = meshtools.get_femelement_table(self.femmesh)
|
||||
self.element_count = len(self.femelement_table)
|
||||
self.set_z88_elparam()
|
||||
self.write_z88_mesh()
|
||||
@@ -193,7 +193,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
|
||||
def write_z88_elements_properties(self):
|
||||
element_properties_file_path = self.file_name + "elp.txt"
|
||||
elements_data = []
|
||||
if FemMeshTools.is_edge_femmesh(self.femmesh):
|
||||
if meshtools.is_edge_femmesh(self.femmesh):
|
||||
if len(self.beamsection_objects) == 1:
|
||||
beam_obj = self.beamsection_objects[0]["Object"]
|
||||
width = beam_obj.RectWidth.getValueAs("mm")
|
||||
@@ -207,7 +207,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
|
||||
)
|
||||
else:
|
||||
FreeCAD.Console.PrintError("Multiple beamsections for Z88 not yet supported!\n")
|
||||
elif FemMeshTools.is_face_femmesh(self.femmesh):
|
||||
elif meshtools.is_face_femmesh(self.femmesh):
|
||||
if len(self.shellthickness_objects) == 1:
|
||||
thick_obj = self.shellthickness_objects[0]["Object"]
|
||||
thickness = str(thick_obj.Thickness.getValueAs("mm"))
|
||||
@@ -218,7 +218,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
|
||||
FreeCAD.Console.PrintError(
|
||||
"Multiple thicknesses for Z88 not yet supported!\n"
|
||||
)
|
||||
elif FemMeshTools.is_solid_femmesh(self.femmesh):
|
||||
elif meshtools.is_solid_femmesh(self.femmesh):
|
||||
elements_data.append("1 " + str(self.element_count) + " 0 0 0 0 0 0 0")
|
||||
else:
|
||||
FreeCAD.Console.PrintError("Error!\n")
|
||||
|
||||
Reference in New Issue
Block a user