Skip to content

Commit

Permalink
export to STL format capability added
Browse files Browse the repository at this point in the history
  • Loading branch information
David Sosa sanchez committed Nov 8, 2024
1 parent 00b0d2c commit b8d21a2
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 2 deletions.
17 changes: 17 additions & 0 deletions parastell/invessel_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,23 @@ def export_step(self, export_dir=""):
)
cq.exporters.export(component, str(export_path))

def export_stl(self, export_dir=""):
"""Export CAD solids as STL files via CadQuery.
Arguments:
export_dir (str): directory to which to export the STL output files
(optional, defaults to empty string).
"""
self._logger.info("Exporting STL files for in-vessel components...")

self.export_dir = export_dir

for name, component in self.Components.items():
export_path = Path(self.export_dir) / Path(name).with_suffix(
".stl"
)
cq.exporters.export(component, str(export_path))

def export_cad_to_dagmc(self, dagmc_filename="dagmc", export_dir=""):
"""Exports DAGMC neutronics H5M file of ParaStell in-vessel components
via CAD-to-DAGMC.
Expand Down
23 changes: 23 additions & 0 deletions parastell/magnet_coils.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,29 @@ def export_step(self, step_filename="magnet_set", export_dir=""):
)
cq.exporters.export(coil_set, str(export_path))

def export_stl(self, stl_filename="magnet_set", export_dir=""):
"""Export CAD solids as a STL file via CadQuery.
Arguments:
stl_filename (str): name of STL output file, excluding '.stl'
extension (optional, defaults to 'magnet_set').
export_dir (str): directory to which to export the STL output file
(optional, defaults to empty string).
"""
self._logger.info("Exporting STL file for magnet coils...")

self.export_dir = export_dir
self.stl_filename = stl_filename

export_path = Path(self.export_dir) / Path(
self.stl_filename
).with_suffix(".stl")

coil_set = cq.Compound.makeCompound(
[coil.solid for coil in self.magnet_coils]
)
cq.exporters.export(coil_set, str(export_path))

def mesh_magnets(self):
"""Creates tetrahedral mesh of magnet volumes via Coreform Cubit."""
self._logger.info("Generating tetrahedral mesh of magnet coils...")
Expand Down
17 changes: 15 additions & 2 deletions parastell/parastell.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,12 +171,14 @@ def construct_invessel_build(
self.invessel_build.generate_components()

def export_invessel_build(
self, export_cad_to_dagmc=False, dagmc_filename="dagmc", export_dir=""
self, export_to_stl=False, export_cad_to_dagmc=False, dagmc_filename="dagmc", export_dir=""
):
"""Exports InVesselBuild component STEP files and, optionally, a DAGMC
"""Exports InVesselBuild component STEP files and, optionally, to STL files and a DAGMC
neutronics H5M file of in-vessel components via CAD-to-DAGMC.
Arguments:
export_to_stl (bool): export in-vessel components to STL format
(optional, defaults to False)
export_cad_to_dagmc (bool): export DAGMC neutronics H5M file of
in-vessel components via CAD-to-DAGMC (optional, defaults to
False).
Expand All @@ -187,6 +189,9 @@ def export_invessel_build(
"""
self.invessel_build.export_step(export_dir=export_dir)

if export_to_stl:
self.invessel_build.export_stl(export_dir=export_dir)

if export_cad_to_dagmc:
self.invessel_build.export_cad_to_dagmc(
dagmc_filename=dagmc_filename, export_dir=export_dir
Expand Down Expand Up @@ -230,6 +235,7 @@ def construct_magnets(
def export_magnets(
self,
step_filename="magnet_set",
export_stl=False,
export_mesh=False,
mesh_filename="magnet_mesh",
export_dir="",
Expand All @@ -240,6 +246,8 @@ def export_magnets(
step_filename (str): name of STEP export output file, excluding
'.step' extension (optional, optional, defaults to
'magnet_set').
export_stl (bool): export magnet components in STL format. File name
is the same as step_filename (optional, defaults to False)
export_mesh (bool): flag to indicate tetrahedral mesh generation
for magnet volumes (optional, defaults to False).
mesh_filename (str): name of tetrahedral mesh H5M file, excluding
Expand All @@ -251,6 +259,11 @@ def export_magnets(
step_filename=step_filename, export_dir=export_dir
)

if export_stl:
self.magnet_set.export_stl(
stl_filename=step_filename, export_dir=export_dir
)

if export_mesh:
self.magnet_set.mesh_magnets()
self.magnet_set.export_mesh(
Expand Down

0 comments on commit b8d21a2

Please sign in to comment.