Skip to content

Commit

Permalink
export_step and export_stl merged into a single function
Browse files Browse the repository at this point in the history
  • Loading branch information
David Sosa sanchez committed Nov 13, 2024
1 parent b8d21a2 commit 666c81c
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 72 deletions.
27 changes: 6 additions & 21 deletions parastell/invessel_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,37 +292,22 @@ def merge_layer_surfaces(self):
)
prev_outer_surface_id = outer_surface_id

def export_step(self, export_dir=""):
"""Export CAD solids as STEP files via CadQuery.
def export_components(self, filetype ="step", export_dir=""):
"""Export CAD solids as STEP or STL files via CadQuery.
Arguments:
filetype (str): file extension to which solids are exported
(defaults to STEP).
export_dir (str): directory to which to export the STEP output files
(optional, defaults to empty string).
"""
self._logger.info("Exporting STEP files for in-vessel components...")
self._logger.info(f"Exporting {filetype.upper()} 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(
".step"
)
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"
f".{filetype}"
)
cq.exporters.export(component, str(export_path))

Expand Down
35 changes: 6 additions & 29 deletions parastell/magnet_coils.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,46 +246,23 @@ def build_magnet_coils(self):

self._cut_magnets()

def export_step(self, step_filename="magnet_set", export_dir=""):
"""Export CAD solids as a STEP file via CadQuery.
def export_components(self, filetype="step", filename="magnet_set", export_dir=""):
"""Export CAD solids as a STEP or STL file via CadQuery.
Arguments:
step_filename (str): name of STEP output file, excluding '.step'
extension (optional, defaults to 'magnet_set').
export_dir (str): directory to which to export the STEP output file
(optional, defaults to empty string).
"""
self._logger.info("Exporting STEP file for magnet coils...")
self._logger.info(f"Exporting {filetype.upper()} file for magnet coils...")

self.export_dir = export_dir
self.step_filename = step_filename
self.filename = filename

export_path = Path(self.export_dir) / Path(
self.step_filename
).with_suffix(".step")

coil_set = cq.Compound.makeCompound(
[coil.solid for coil in self.magnet_coils]
)
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")
self.filename
).with_suffix(f".{filetype}")

coil_set = cq.Compound.makeCompound(
[coil.solid for coil in self.magnet_coils]
Expand Down
36 changes: 14 additions & 22 deletions parastell/parastell.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,14 +171,15 @@ def construct_invessel_build(
self.invessel_build.generate_components()

def export_invessel_build(
self, export_to_stl=False, export_cad_to_dagmc=False, dagmc_filename="dagmc", export_dir=""
self, filetype="step", export_cad_to_dagmc=False, dagmc_filename="dagmc",
export_dir=""
):
"""Exports InVesselBuild component STEP files and, optionally, to STL files and a DAGMC
"""Exports InVesselBuild component STEP or STL files and, optionally, 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)
filetype (str): file extension to which solids are exported
(defaults to STEP).
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,10 +188,7 @@ def export_invessel_build(
export_dir (str): directory to which to export the output files
(optional, defaults to empty string).
"""
self.invessel_build.export_step(export_dir=export_dir)

if export_to_stl:
self.invessel_build.export_stl(export_dir=export_dir)
self.invessel_build.export_components(filetype=filetype, export_dir=export_dir)

if export_cad_to_dagmc:
self.invessel_build.export_cad_to_dagmc(
Expand Down Expand Up @@ -234,36 +232,30 @@ def construct_magnets(

def export_magnets(
self,
step_filename="magnet_set",
export_stl=False,
filetype="step",
filename="magnet_set",
export_mesh=False,
mesh_filename="magnet_mesh",
export_dir="",
):
"""Export magnet components.
Arguments:
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)
filetype (str): filetype (str): file extension to which solids are
exported (defaults to STEP).
filename (str): name of export output file, excluding extension
(optional, defaults to 'magnet_set').
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
'.h5m' extension (optional, defaults to 'magnet_mesh').
export_dir (str): directory to which to export output files
(optional, defaults to empty string).
"""
self.magnet_set.export_step(
step_filename=step_filename, export_dir=export_dir
self.magnet_set.export_components(
filetype=filetype, filename=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 666c81c

Please sign in to comment.