From d6fff25616a053ce84f0cb1e0928cc2dc01ab6d7 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 30 Oct 2024 16:08:18 -0500 Subject: [PATCH 1/8] add flexible importer --- parastell/cubit_io.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/parastell/cubit_io.py b/parastell/cubit_io.py index b0c191b..b994ae9 100644 --- a/parastell/cubit_io.py +++ b/parastell/cubit_io.py @@ -65,6 +65,23 @@ def export_step_cubit(filename, export_dir=""): cubit.cmd(f'export step "{export_path}" overwrite') +def import_cub5_cubit(filename, import_dir): + """Imports cub5 file with Coreform Cubit with default import settings. + Arguments: + filename (str): name of cub5 input file, excluding '.step' extension. + import_dir (str): directory from which to import cub5 file. + Returns: + vol_id (int): Cubit volume ID of imported CAD solid. + """ + init_cubit() + import_path = Path(import_dir) / Path(filename).with_suffix(".cub5") + cubit.cmd( + f'import cubit "{import_path}" nofreesurfaces attributes_on separate_bodies' + ) + vol_id = cubit.get_last_id("volume") + return vol_id + + def export_cub5(filename, export_dir=""): """Export cub5 representation of model (native Cubit format). @@ -192,3 +209,22 @@ def export_dagmc_cubit_native( # exports if delete_upon_export: cubit.cmd(f"delete mesh volume all propagate") + + +def cubit_importer(filename, import_dir=""): + """Attempts to open a geometry file with the appropriate cubit_io function, + based on file extension + Arguments: + filename (path): Path to file to import, including the suffix + import_dir (str): directory from which to import cub5 file. + Returns: + vol_id (int): Cubit volume ID of imported CAD solid. + """ + importers = { + ".step": import_step_cubit, + ".stp": import_step_cubit, + ".cub5": import_cub5_cubit, + } + filename = Path(filename) + vol_id = importers[filename.suffix](filename, import_dir) + return vol_id From 6bf66f53a7e5676645d33634657f5117a3f3a474 Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 6 Nov 2024 17:14:09 -0600 Subject: [PATCH 2/8] magnets from custom geometry working --- parastell/magnet_coils.py | 131 ++++++++++++++++++++++--------------- parastell/parastell.py | 10 ++- tests/test_magnet_coils.py | 25 ++++++- 3 files changed, 110 insertions(+), 56 deletions(-) diff --git a/parastell/magnet_coils.py b/parastell/magnet_coils.py index 2cc78e0..ad2d957 100644 --- a/parastell/magnet_coils.py +++ b/parastell/magnet_coils.py @@ -14,7 +14,81 @@ class MagnetSet(object): - """An object representing a set of modular stellarator magnet coils. + """A minimum viable class which can be used to build a DAGMC model with + parastell utilizing pre-defined geometry + + Arguments: + geom_filename (path): Path to the predefined magnet geometry + + Optional Attributes + mat_tag (str): DAGMC material tag to use for magnets in DAGMC + neutronics model (defaults to 'magnets'). + """ + + def __init__(self, geom_filename, **kwargs): + geom_path = Path(geom_filename).resolve() + self.geom_filename = geom_path.name + self.export_dir = geom_path.parent + self.mat_tag = "magnets" + for name in kwargs.keys() & ("mat_tag"): + self.__setattr__(name, kwargs[name]) + + def import_step_cubit(self): + """Import STEP file for magnet set into Coreform Cubit.""" + first_vol_id = 1 + if cubit_io.initialized: + first_vol_id += cubit.get_last_id("volume") + + # TODO cubit importer + last_vol_id = cubit_io.import_step_cubit( + self.geom_filename, self.export_dir + ) + + self.volume_ids = list(range(first_vol_id, last_vol_id + 1)) + + def mesh_magnets(self, min_size=20.0, max_size=50.0, max_gradient=1.5): + """Creates tetrahedral mesh of magnet volumes via Coreform Cubit. + + Arguments: + min_size (float): minimum size of mesh elements (defaults to 20.0). + max_size (float): maximum size of mesh elements (defaults to 50.0). + max_gradient (float): maximum transition in mesh element size + (defaults to 1.5). + """ + self._logger.info("Generating tetrahedral mesh of magnet coils...") + + if not hasattr(self, "volume_ids"): + self.import_step_cubit() + + volume_ids_str = " ".join(str(id) for id in self.volume_ids) + cubit.cmd(f"volume {volume_ids_str} scheme tetmesh") + cubit.cmd( + f"volume {volume_ids_str} sizing function type skeleton min_size " + f"{min_size} max_size {max_size} max_gradient {max_gradient} " + "min_num_layers_3d 1 min_num_layers_2d 1 min_num_layers_1d 1" + ) + cubit.cmd(f"mesh volume {volume_ids_str}") + + def export_mesh(self, mesh_filename="magnet_mesh", export_dir=""): + """Creates tetrahedral mesh of magnet volumes and exports H5M format + via Coreform Cubit and MOAB. + + Arguments: + mesh_filename (str): name of H5M output file, excluding '.h5m' + extension (optional, defaults to 'magnet_mesh'). + export_dir (str): directory to which to export the H5M output file + (optional, defaults to empty string). + """ + self._logger.info("Exporting mesh H5M file for magnet coils...") + + cubit_io.export_mesh_cubit( + filename=mesh_filename, export_dir=export_dir + ) + + +class BuildableMagnetSet(MagnetSet): + """An object representing a set of modular stellarator magnet coils, and + can use filament data to build 3D step files with cadquery. Arguments: coils_file (str): path to coil filament data file. @@ -238,18 +312,6 @@ def build_magnet_coils(self): self._cut_magnets() - def import_step_cubit(self): - """Import STEP file for magnet set into Coreform Cubit.""" - first_vol_id = 1 - if cubit_io.initialized: - first_vol_id += cubit.get_last_id("volume") - - last_vol_id = cubit_io.import_step_cubit( - self.step_filename, self.export_dir - ) - - self.volume_ids = list(range(first_vol_id, last_vol_id + 1)) - def export_step(self, step_filename="magnet_set", export_dir=""): """Export CAD solids as a STEP file via CadQuery. @@ -262,10 +324,10 @@ def export_step(self, step_filename="magnet_set", export_dir=""): self._logger.info("Exporting STEP file for magnet coils...") self.export_dir = export_dir - self.step_filename = step_filename + self.geom_filename = step_filename export_path = Path(self.export_dir) / Path( - self.step_filename + self.geom_filename ).with_suffix(".step") coil_set = cq.Compound.makeCompound( @@ -273,45 +335,6 @@ def export_step(self, step_filename="magnet_set", export_dir=""): ) cq.exporters.export(coil_set, str(export_path)) - def mesh_magnets(self, min_size=20.0, max_size=50.0, max_gradient=1.5): - """Creates tetrahedral mesh of magnet volumes via Coreform Cubit. - - Arguments: - min_size (float): minimum size of mesh elements (defaults to 20.0). - max_size (float): maximum size of mesh elements (defaults to 50.0). - max_gradient (float): maximum transition in mesh element size - (defaults to 1.5). - """ - self._logger.info("Generating tetrahedral mesh of magnet coils...") - - if not hasattr(self, "volume_ids"): - self.import_step_cubit() - - volume_ids_str = " ".join(str(id) for id in self.volume_ids) - cubit.cmd(f"volume {volume_ids_str} scheme tetmesh") - cubit.cmd( - f"volume {volume_ids_str} sizing function type skeleton min_size " - f"{min_size} max_size {max_size} max_gradient {max_gradient} " - "min_num_layers_3d 1 min_num_layers_2d 1 min_num_layers_1d 1" - ) - cubit.cmd(f"mesh volume {volume_ids_str}") - - def export_mesh(self, mesh_filename="magnet_mesh", export_dir=""): - """Creates tetrahedral mesh of magnet volumes and exports H5M format - via Coreform Cubit and MOAB. - - Arguments: - mesh_filename (str): name of H5M output file, excluding '.h5m' - extension (optional, defaults to 'magnet_mesh'). - export_dir (str): directory to which to export the H5M output file - (optional, defaults to empty string). - """ - self._logger.info("Exporting mesh H5M file for magnet coils...") - - cubit_io.export_mesh_cubit( - filename=mesh_filename, export_dir=export_dir - ) - def sort_coils_toroidally(self): """Reorders list of coils by toroidal angle on range [-pi, pi]. diff --git a/parastell/parastell.py b/parastell/parastell.py index e73628d..0a03c85 100644 --- a/parastell/parastell.py +++ b/parastell/parastell.py @@ -214,7 +214,7 @@ def construct_magnets( mat_tag (str): DAGMC material tag to use for magnets in DAGMC neutronics model (defaults to 'magnets'). """ - self.magnet_set = mc.MagnetSet( + self.magnet_set = mc.BuildableMagnetSet( coils_file, width, thickness, @@ -226,6 +226,14 @@ def construct_magnets( self.magnet_set.populate_magnet_coils() self.magnet_set.build_magnet_coils() + def load_magnets_from_geometry(self, geom_filename): + """Load predefined magnet geometry for use when building dagmc model + + Arguments: + geom_filename (path): Path to the predefined magnet geometry + """ + self.magnet_set = mc.MagnetSet(geom_filename) + def export_magnets( self, step_filename="magnet_set", diff --git a/tests/test_magnet_coils.py b/tests/test_magnet_coils.py index 556785d..d8b1f5e 100644 --- a/tests/test_magnet_coils.py +++ b/tests/test_magnet_coils.py @@ -4,6 +4,7 @@ import numpy as np import parastell.magnet_coils as magnet_coils +import cubit def remove_files(): @@ -29,13 +30,22 @@ def coil_set(): toroidal_extent = 90.0 sample_mod = 10 - coil_set_obj = magnet_coils.MagnetSet( + coil_set_obj = magnet_coils.BuildableMagnetSet( coils_file, width, thickness, toroidal_extent, sample_mod=sample_mod ) return coil_set_obj +@pytest.fixture +def coil_set_from_geom(): + + geom_file = Path("files_for_tests") / "magnet_set.step" + coil_set_from_geom_obj = magnet_coils.MagnetSet(geom_file) + + return coil_set_from_geom_obj + + def test_magnet_construction(coil_set): width_exp = 40.0 @@ -67,6 +77,8 @@ def test_magnet_construction(coil_set): def test_magnet_exports(coil_set): + cubit.cmd("reset") + volume_ids_exp = list(range(1, 2)) remove_files() @@ -83,3 +95,14 @@ def test_magnet_exports(coil_set): assert Path("magnet_mesh.h5m").exists() remove_files() + + +def test_magnets_from_geom_cubit_import(coil_set_from_geom): + + cubit.cmd("reset") + + volume_ids_exp = list(range(1, 2)) + + coil_set_from_geom.import_step_cubit() + + assert coil_set_from_geom.volume_ids == volume_ids_exp From 0cb692b9e006693bfc597fe6b172d23b6e44559e Mon Sep 17 00:00:00 2001 From: Edgar Date: Wed, 6 Nov 2024 22:10:31 -0600 Subject: [PATCH 3/8] init cubit such that the global initialized variable is true --- tests/test_magnet_coils.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/test_magnet_coils.py b/tests/test_magnet_coils.py index d8b1f5e..dd28c91 100644 --- a/tests/test_magnet_coils.py +++ b/tests/test_magnet_coils.py @@ -5,6 +5,7 @@ import parastell.magnet_coils as magnet_coils import cubit +from parastell import cubit_io def remove_files(): @@ -77,7 +78,10 @@ def test_magnet_construction(coil_set): def test_magnet_exports(coil_set): - cubit.cmd("reset") + if cubit_io.initialized: + cubit.cmd("new") + else: + cubit_io.init_cubit() volume_ids_exp = list(range(1, 2)) @@ -99,7 +103,10 @@ def test_magnet_exports(coil_set): def test_magnets_from_geom_cubit_import(coil_set_from_geom): - cubit.cmd("reset") + if cubit_io.initialized: + cubit.cmd("new") + else: + cubit_io.init_cubit() volume_ids_exp = list(range(1, 2)) From 7de5585ea84b26350bfd0c16b910b3a2edf2464f Mon Sep 17 00:00:00 2001 From: Edgar Date: Thu, 7 Nov 2024 16:21:07 -0600 Subject: [PATCH 4/8] add tests for importing and meshing cub5, add logger to base class --- .gitignore | 1 + parastell/cubit_io.py | 1 + parastell/magnet_coils.py | 39 +++++++++++++------------- parastell/parastell.py | 2 +- tests/files_for_tests/magnet_set.cub5 | Bin 0 -> 85872 bytes tests/test_magnet_coils.py | 23 ++++++++++++++- 6 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 tests/files_for_tests/magnet_set.cub5 diff --git a/.gitignore b/.gitignore index 4a0afb1..8fac2bc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ *.yaml !config.yaml *.lic +!tests/files_for_tests/magnet_set.cub5 # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/parastell/cubit_io.py b/parastell/cubit_io.py index b994ae9..b11445f 100644 --- a/parastell/cubit_io.py +++ b/parastell/cubit_io.py @@ -225,6 +225,7 @@ def cubit_importer(filename, import_dir=""): ".stp": import_step_cubit, ".cub5": import_cub5_cubit, } + print(filename) filename = Path(filename) vol_id = importers[filename.suffix](filename, import_dir) return vol_id diff --git a/parastell/magnet_coils.py b/parastell/magnet_coils.py index ad2d957..9fbafbe 100644 --- a/parastell/magnet_coils.py +++ b/parastell/magnet_coils.py @@ -19,13 +19,16 @@ class MagnetSet(object): Arguments: geom_filename (path): Path to the predefined magnet geometry + logger (object): logger object (optional, defaults to None). If no + logger is supplied, a default logger will be instantiated. Optional Attributes - mat_tag (str): DAGMC material tag to use for magnets in DAGMC - neutronics model (defaults to 'magnets'). + mat_tag (str): DAGMC material tag to use for magnets in DAGMC + neutronics model (defaults to 'magnets'). """ - def __init__(self, geom_filename, **kwargs): + def __init__(self, geom_filename, logger=None, **kwargs): + self.logger = logger geom_path = Path(geom_filename).resolve() self.geom_filename = geom_path.name self.export_dir = geom_path.parent @@ -33,14 +36,22 @@ def __init__(self, geom_filename, **kwargs): for name in kwargs.keys() & ("mat_tag"): self.__setattr__(name, kwargs[name]) - def import_step_cubit(self): - """Import STEP file for magnet set into Coreform Cubit.""" + @property + def logger(self): + return self._logger + + @logger.setter + def logger(self, logger_object): + self._logger = log.check_init(logger_object) + + def import_geom_cubit(self): + """Import geom file for magnet set into Coreform Cubit.""" first_vol_id = 1 if cubit_io.initialized: first_vol_id += cubit.get_last_id("volume") # TODO cubit importer - last_vol_id = cubit_io.import_step_cubit( + last_vol_id = cubit_io.cubit_importer( self.geom_filename, self.export_dir ) @@ -58,7 +69,7 @@ def mesh_magnets(self, min_size=20.0, max_size=50.0, max_gradient=1.5): self._logger.info("Generating tetrahedral mesh of magnet coils...") if not hasattr(self, "volume_ids"): - self.import_step_cubit() + self.import_geom_cubit() volume_ids_str = " ".join(str(id) for id in self.volume_ids) cubit.cmd(f"volume {volume_ids_str} scheme tetmesh") @@ -178,14 +189,6 @@ def toroidal_extent(self, angle): self._logger.error(e.args[0]) raise e - @property - def logger(self): - return self._logger - - @logger.setter - def logger(self, logger_object): - self._logger = log.check_init(logger_object) - def _instantiate_coils(self): """Extracts filament coordinate data from input data file and instantiates MagnetCoil class objects. @@ -324,11 +327,9 @@ def export_step(self, step_filename="magnet_set", export_dir=""): self._logger.info("Exporting STEP file for magnet coils...") self.export_dir = export_dir - self.geom_filename = step_filename + self.geom_filename = Path(step_filename).with_suffix(".step") - export_path = Path(self.export_dir) / Path( - self.geom_filename - ).with_suffix(".step") + export_path = Path(self.export_dir) / self.geom_filename coil_set = cq.Compound.makeCompound( [coil.solid for coil in self.magnet_coils] diff --git a/parastell/parastell.py b/parastell/parastell.py index 0a03c85..e5e0924 100644 --- a/parastell/parastell.py +++ b/parastell/parastell.py @@ -385,7 +385,7 @@ def build_cubit_model(self, skip_imprint=False, legacy_faceting=True): self.invessel_build.import_step_cubit() if self.magnet_set: - self.magnet_set.import_step_cubit() + self.magnet_set.import_geom_cubit() if skip_imprint: self.invessel_build.merge_layer_surfaces() diff --git a/tests/files_for_tests/magnet_set.cub5 b/tests/files_for_tests/magnet_set.cub5 new file mode 100644 index 0000000000000000000000000000000000000000..4c6267ab7035daa698b65d569d2c086e590abfd5 GIT binary patch literal 85872 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 H{k;Dl%0erV literal 0 HcmV?d00001 diff --git a/tests/test_magnet_coils.py b/tests/test_magnet_coils.py index dd28c91..a92801c 100644 --- a/tests/test_magnet_coils.py +++ b/tests/test_magnet_coils.py @@ -110,6 +110,27 @@ def test_magnets_from_geom_cubit_import(coil_set_from_geom): volume_ids_exp = list(range(1, 2)) - coil_set_from_geom.import_step_cubit() + coil_set_from_geom.import_geom_cubit() assert coil_set_from_geom.volume_ids == volume_ids_exp + + cubit.cmd("new") + + coil_set_from_geom.geom_filename = "magnet_set.cub5" + + coil_set_from_geom.import_geom_cubit() + + assert coil_set_from_geom.volume_ids == volume_ids_exp + + +def test_magnets_from_geom_exports(coil_set_from_geom): + + if cubit_io.initialized: + cubit.cmd("new") + else: + cubit_io.init_cubit() + + coil_set_from_geom.mesh_magnets() + + coil_set_from_geom.export_mesh() + assert Path("magnet_mesh.h5m").exists() From cb8b7ea4be9d0ed3ad28ea0b7e604d1be1d5ef4b Mon Sep 17 00:00:00 2001 From: Edgar Date: Thu, 7 Nov 2024 17:10:24 -0600 Subject: [PATCH 5/8] clarify/make docstrings consistent --- parastell/cubit_io.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/parastell/cubit_io.py b/parastell/cubit_io.py index b11445f..8816171 100644 --- a/parastell/cubit_io.py +++ b/parastell/cubit_io.py @@ -68,7 +68,7 @@ def export_step_cubit(filename, export_dir=""): def import_cub5_cubit(filename, import_dir): """Imports cub5 file with Coreform Cubit with default import settings. Arguments: - filename (str): name of cub5 input file, excluding '.step' extension. + filename (str): name of cub5 input file, excluding '.cub5' extension. import_dir (str): directory from which to import cub5 file. Returns: vol_id (int): Cubit volume ID of imported CAD solid. @@ -215,8 +215,8 @@ def cubit_importer(filename, import_dir=""): """Attempts to open a geometry file with the appropriate cubit_io function, based on file extension Arguments: - filename (path): Path to file to import, including the suffix - import_dir (str): directory from which to import cub5 file. + filename (path): name of the file to import, including the suffix + import_dir (str): directory from which to import the file. Returns: vol_id (int): Cubit volume ID of imported CAD solid. """ @@ -225,7 +225,6 @@ def cubit_importer(filename, import_dir=""): ".stp": import_step_cubit, ".cub5": import_cub5_cubit, } - print(filename) filename = Path(filename) vol_id = importers[filename.suffix](filename, import_dir) return vol_id From 9e89233594f0c98c4e1f75aea5928ac57aaa5ce4 Mon Sep 17 00:00:00 2001 From: Edgar Date: Thu, 7 Nov 2024 17:14:33 -0600 Subject: [PATCH 6/8] remove mention of excluding suffix from import/export functions --- parastell/cubit_io.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/parastell/cubit_io.py b/parastell/cubit_io.py index 8816171..0c6b34d 100644 --- a/parastell/cubit_io.py +++ b/parastell/cubit_io.py @@ -36,7 +36,7 @@ def import_step_cubit(filename, import_dir): """Imports STEP file into Coreform Cubit. Arguments: - filename (str): name of STEP input file, excluding '.step' extension. + filename (str): name of STEP input file. import_dir (str): directory from which to import STEP file. Returns: @@ -55,7 +55,7 @@ def export_step_cubit(filename, export_dir=""): """Export CAD solid as a STEP file via Coreform Cubit. Arguments: - filename (str): name of STEP output file, excluding '.step' extension. + filename (str): name of STEP output file. export_dir (str): directory to which to export the STEP output file (defaults to empty string). """ @@ -68,7 +68,7 @@ def export_step_cubit(filename, export_dir=""): def import_cub5_cubit(filename, import_dir): """Imports cub5 file with Coreform Cubit with default import settings. Arguments: - filename (str): name of cub5 input file, excluding '.cub5' extension. + filename (str): name of cub5 input file. import_dir (str): directory from which to import cub5 file. Returns: vol_id (int): Cubit volume ID of imported CAD solid. @@ -86,7 +86,7 @@ def export_cub5(filename, export_dir=""): """Export cub5 representation of model (native Cubit format). Arguments: - filename (str): name of cub5 output file, excluding '.cub5' extension. + filename (str): name of cub5 output file. export_dir (str): directory to which to export the cub5 output file (defaults to empty string). """ From ab25043ba40f10f5c27994a7553c772e4cd41202 Mon Sep 17 00:00:00 2001 From: Edgar Date: Sun, 17 Nov 2024 19:36:43 -0600 Subject: [PATCH 7/8] changes per comments --- parastell/cubit_io.py | 2 +- parastell/magnet_coils.py | 3 +-- tests/test_magnet_coils.py | 8 ++++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/parastell/cubit_io.py b/parastell/cubit_io.py index 0c6b34d..082057e 100644 --- a/parastell/cubit_io.py +++ b/parastell/cubit_io.py @@ -211,7 +211,7 @@ def export_dagmc_cubit_native( cubit.cmd(f"delete mesh volume all propagate") -def cubit_importer(filename, import_dir=""): +def import_geom_to_cubit(filename, import_dir=""): """Attempts to open a geometry file with the appropriate cubit_io function, based on file extension Arguments: diff --git a/parastell/magnet_coils.py b/parastell/magnet_coils.py index 9fbafbe..56f6949 100644 --- a/parastell/magnet_coils.py +++ b/parastell/magnet_coils.py @@ -50,8 +50,7 @@ def import_geom_cubit(self): if cubit_io.initialized: first_vol_id += cubit.get_last_id("volume") - # TODO cubit importer - last_vol_id = cubit_io.cubit_importer( + last_vol_id = cubit_io.import_geom_to_cubit( self.geom_filename, self.export_dir ) diff --git a/tests/test_magnet_coils.py b/tests/test_magnet_coils.py index a92801c..527e42c 100644 --- a/tests/test_magnet_coils.py +++ b/tests/test_magnet_coils.py @@ -108,6 +108,8 @@ def test_magnets_from_geom_cubit_import(coil_set_from_geom): else: cubit_io.init_cubit() + remove_files() + volume_ids_exp = list(range(1, 2)) coil_set_from_geom.import_geom_cubit() @@ -122,6 +124,8 @@ def test_magnets_from_geom_cubit_import(coil_set_from_geom): assert coil_set_from_geom.volume_ids == volume_ids_exp + remove_files() + def test_magnets_from_geom_exports(coil_set_from_geom): @@ -130,7 +134,11 @@ def test_magnets_from_geom_exports(coil_set_from_geom): else: cubit_io.init_cubit() + remove_files() + coil_set_from_geom.mesh_magnets() coil_set_from_geom.export_mesh() assert Path("magnet_mesh.h5m").exists() + + remove_files() From 7cd10956d1856585320b36fe0ccd3cfce8a0a78a Mon Sep 17 00:00:00 2001 From: Edgar Date: Sun, 17 Nov 2024 19:49:21 -0600 Subject: [PATCH 8/8] add necessary file for testing --- .gitignore | 1 + tests/files_for_tests/magnet_set.step | 1604 +++++++++++++++++++++++++ tests/test_magnet_coils.py | 6 +- 3 files changed, 1610 insertions(+), 1 deletion(-) create mode 100644 tests/files_for_tests/magnet_set.step diff --git a/.gitignore b/.gitignore index 8fac2bc..446bc9a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ !config.yaml *.lic !tests/files_for_tests/magnet_set.cub5 +!tests/files_for_tests/magnet_set.step # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/tests/files_for_tests/magnet_set.step b/tests/files_for_tests/magnet_set.step new file mode 100644 index 0000000..5825f3d --- /dev/null +++ b/tests/files_for_tests/magnet_set.step @@ -0,0 +1,1604 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('Open CASCADE Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2024-11-06T16:49:05',('Author'),( + 'Open CASCADE'),'Open CASCADE STEP processor 7.7','Open CASCADE 7.7' + ,'Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('Open CASCADE STEP translator 7.7 1', + 'Open CASCADE STEP translator 7.7 1','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#725); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = MANIFOLD_SOLID_BREP('',#16); +#16 = CLOSED_SHELL('',(#17,#451,#628,#699)); +#17 = ADVANCED_FACE('',(#18),#55,.F.); +#18 = FACE_BOUND('',#19,.F.); +#19 = EDGE_LOOP('',(#20,#277,#299,#450)); +#20 = ORIENTED_EDGE('',*,*,#21,.T.); +#21 = EDGE_CURVE('',#22,#22,#24,.T.); +#22 = VERTEX_POINT('',#23); +#23 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#24 = SURFACE_CURVE('',#25,(#54,#165),.PCURVE_S1.); +#25 = B_SPLINE_CURVE_WITH_KNOTS('',3,(#26,#27,#28,#29,#30,#31,#32,#33, + #34,#35,#36,#37,#38,#39,#40,#41,#42,#43,#44,#45,#46,#47,#48,#49,#50, + #51,#52,#53),.UNSPECIFIED.,.T.,.F.,(4,2,2,2,2,2,2,2,2,2,2,2,2,4),(0. + ,209.23228019313,482.64365057914,715.14729372521,912.73931944314, + 1.165060787701E+03,1.437843148576E+03,1.712941418707E+03, + 1.993387146468E+03,2.219646600857E+03,2.455042741061E+03, + 2.730847502047E+03,2.986740727954E+03,3.18959189978E+03), + .UNSPECIFIED.); +#26 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#27 = CARTESIAN_POINT('',(1.178068206983E+03,1.143011162431E+03, + 88.902052812263)); +#28 = CARTESIAN_POINT('',(1.059198871667E+03,1.133111066035E+03, + 103.20778721284)); +#29 = CARTESIAN_POINT('',(961.78978729139,1.051858369149E+03, + 122.65498397959)); +#30 = CARTESIAN_POINT('',(920.97596978499,940.83297255026,108.0665985826 + )); +#31 = CARTESIAN_POINT('',(919.03221624622,760.36472584502, + 156.98452136172)); +#32 = CARTESIAN_POINT('',(904.13905708826,686.9486858971,187.9725200736) + ); +#33 = CARTESIAN_POINT('',(868.30305523949,567.42888247732, + 206.00482966527)); +#34 = CARTESIAN_POINT('',(860.11758853447,491.71757644465, + 200.02847334382)); +#35 = CARTESIAN_POINT('',(837.5142328206,347.8525128263,156.15760998742) + ); +#36 = CARTESIAN_POINT('',(788.23979160928,269.71060622585, + 120.50734641085)); +#37 = CARTESIAN_POINT('',(657.15905341342,171.32200542051, + 90.463334707785)); +#38 = CARTESIAN_POINT('',(531.24614458489,157.45967248274, + 86.380602659075)); +#39 = CARTESIAN_POINT('',(393.81944439462,189.3940634281,13.515593340398 + )); +#40 = CARTESIAN_POINT('',(347.74739271531,237.2459665214,-92.79844272712 + )); +#41 = CARTESIAN_POINT('',(321.41946639248,345.9846568351,-234.53119284) + ); +#42 = CARTESIAN_POINT('',(316.74869984858,444.69048792449,-292.432677006 + )); +#43 = CARTESIAN_POINT('',(377.31916130385,598.25856806489, + -323.3518305216)); +#44 = CARTESIAN_POINT('',(445.28712272089,660.00237271927, + -315.8751767843)); +#45 = CARTESIAN_POINT('',(591.5528099863,705.09381005083,-329.8557821768 + )); +#46 = CARTESIAN_POINT('',(673.94738735828,716.95103012423, + -332.3985242526)); +#47 = CARTESIAN_POINT('',(828.95136848228,765.07732270351, + -302.3851476386)); +#48 = CARTESIAN_POINT('',(913.775332618,794.82059179459,-267.5279287865) + ); +#49 = CARTESIAN_POINT('',(1.060964764734E+03,830.02513487346, + -166.8253263552)); +#50 = CARTESIAN_POINT('',(1.12631110515E+03,852.50000157897, + -101.5153023671)); +#51 = CARTESIAN_POINT('',(1.216526794197E+03,933.9985011832, + -30.71410020296)); +#52 = CARTESIAN_POINT('',(1.235828801867E+03,1.016396857139E+03, + 8.919736019131)); +#53 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#54 = PCURVE('',#55,#160); +#55 = B_SPLINE_SURFACE_WITH_KNOTS('',3,1,( + (#56,#57) + ,(#58,#59) + ,(#60,#61) + ,(#62,#63) + ,(#64,#65) + ,(#66,#67) + ,(#68,#69) + ,(#70,#71) + ,(#72,#73) + ,(#74,#75) + ,(#76,#77) + ,(#78,#79) + ,(#80,#81) + ,(#82,#83) + ,(#84,#85) + ,(#86,#87) + ,(#88,#89) + ,(#90,#91) + ,(#92,#93) + ,(#94,#95) + ,(#96,#97) + ,(#98,#99) + ,(#100,#101) + ,(#102,#103) + ,(#104,#105) + ,(#106,#107) + ,(#108,#109) + ,(#110,#111) + ,(#112,#113) + ,(#114,#115) + ,(#116,#117) + ,(#118,#119) + ,(#120,#121) + ,(#122,#123) + ,(#124,#125) + ,(#126,#127) + ,(#128,#129) + ,(#130,#131) + ,(#132,#133) + ,(#134,#135) + ,(#136,#137) + ,(#138,#139) + ,(#140,#141) + ,(#142,#143) + ,(#144,#145) + ,(#146,#147) + ,(#148,#149) + ,(#150,#151) + ,(#152,#153) + ,(#154,#155) + ,(#156,#157) + ,(#158,#159 + )),.UNSPECIFIED.,.T.,.F.,.F.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,4),(2,2),(0.,231.78584422142,281.97780706428, + 534.6687705374,562.21582109731,792.23444425384,806.32706316339, + 1.011125307796E+03,1.021482963204E+03,1.290645009447E+03, + 1.292851720834E+03,1.592831124065E+03,1.607089856103E+03, + 1.897582784408E+03,1.921345385356E+03,2.208258315485E+03, + 2.241884939283E+03,2.458906726906E+03,2.495960051918E+03, + 2.719676685698E+03,2.743967327556E+03,3.025210990951E+03, + 3.0394615204E+03,3.292831481351E+03,3.308687457118E+03, + 3.533404360598E+03),(0.,1.),.UNSPECIFIED.); +#56 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#57 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#58 = CARTESIAN_POINT('',(1.178068206983E+03,1.143011162431E+03, + 88.902052812263)); +#59 = CARTESIAN_POINT('',(1.214518599337E+03,1.183185736462E+03, + 96.55905917632)); +#60 = CARTESIAN_POINT('',(1.059198871667E+03,1.133111066035E+03, + 103.20778721284)); +#61 = CARTESIAN_POINT('',(1.105764206144E+03,1.18048705174E+03, + 125.20916979138)); +#62 = CARTESIAN_POINT('',(1.007826505234E+03,1.090259381874E+03, + 113.46400227535)); +#63 = CARTESIAN_POINT('',(1.022182824328E+03,1.143986300442E+03, + 142.98091296698)); +#64 = CARTESIAN_POINT('',(999.07677877083,1.080846908264E+03, + 114.5864633831)); +#65 = CARTESIAN_POINT('',(1.009183392587E+03,1.136208806935E+03, + 145.48583926152)); +#66 = CARTESIAN_POINT('',(949.35488717979,1.015432017596E+03, + 118.94657828131)); +#67 = CARTESIAN_POINT('',(948.61443848197,1.085685892157E+03, + 157.57810330425)); +#68 = CARTESIAN_POINT('',(920.80189350862,924.67082042352, + 112.44752943395)); +#69 = CARTESIAN_POINT('',(946.27205443502,976.10493793072, + 151.38643049645)); +#70 = CARTESIAN_POINT('',(919.82996917614,834.43228106456, + 136.90768783108)); +#71 = CARTESIAN_POINT('',(945.45260270986,873.72375324464, + 171.32618546094)); +#72 = CARTESIAN_POINT('',(919.57429082723,825.67086113344, + 139.40939693563)); +#73 = CARTESIAN_POINT('',(945.39110777202,863.86497509643, + 173.57349674222)); +#74 = CARTESIAN_POINT('',(915.79528621862,744.76152674923,163.369994476) + ); +#75 = CARTESIAN_POINT('',(944.42998573533,774.62937738797, + 197.76179666504)); +#76 = CARTESIAN_POINT('',(902.06714479911,680.03846888831, + 189.01508514552)); +#77 = CARTESIAN_POINT('',(928.03167174473,700.90468143827, + 229.03868470183)); +#78 = CARTESIAN_POINT('',(883.70666438192,618.80281488271, + 198.25389109635)); +#79 = CARTESIAN_POINT('',(907.69845073456,631.02907965246, + 242.01668863906)); +#80 = CARTESIAN_POINT('',(882.68102106784,615.18143536609, + 198.72813937179)); +#81 = CARTESIAN_POINT('',(906.51424332594,627.02472954887, + 242.69441236352)); +#82 = CARTESIAN_POINT('',(867.24184448253,557.73193360769, + 205.18020017959)); +#83 = CARTESIAN_POINT('',(888.0054401839,565.29439137085,252.00785279242 + )); +#84 = CARTESIAN_POINT('',(859.4784759225,487.64977440039,198.7880193854) + ); +#85 = CARTESIAN_POINT('',(876.50839717942,489.32731188382, + 247.46915120988)); +#86 = CARTESIAN_POINT('',(849.72096738999,425.54551857416, + 179.84966664931)); +#87 = CARTESIAN_POINT('',(865.55412109633,419.19585941328, + 227.90297525684)); +#88 = CARTESIAN_POINT('',(849.20098643529,422.55929391341, + 178.92280209409)); +#89 = CARTESIAN_POINT('',(865.0295168282,415.8432769491,226.92502661335) + ); +#90 = CARTESIAN_POINT('',(833.84365741078,342.10376619291, + 153.54468358374)); +#91 = CARTESIAN_POINT('',(850.92942441207,326.09949208154, + 199.55815084805)); +#92 = CARTESIAN_POINT('',(785.90581268231,267.95873234953,119.9723929832 + )); +#93 = CARTESIAN_POINT('',(814.74559997743,239.09814489192, + 150.42107423387)); +#94 = CARTESIAN_POINT('',(724.75597357367,222.05994361689, + 105.95670687167)); +#95 = CARTESIAN_POINT('',(746.99128745957,187.26592848495, + 134.22346744767)); +#96 = CARTESIAN_POINT('',(724.25563319256,221.68869105112, + 105.84334894335)); +#97 = CARTESIAN_POINT('',(746.43823924445,186.84683244536, + 134.09397491733)); +#98 = CARTESIAN_POINT('',(655.32316337656,171.12113339847, + 90.401989595809)); +#99 = CARTESIAN_POINT('',(670.41790396166,129.78631749731, + 116.66993631072)); +#100 = CARTESIAN_POINT('',(530.74648699776,157.57577991095, + 86.115679214855)); +#101 = CARTESIAN_POINT('',(536.89362797018,112.23272461948, + 107.59788978439)); +#102 = CARTESIAN_POINT('',(459.5946955201,174.1096057422,48.390288574738 + )); +#103 = CARTESIAN_POINT('',(452.11013556385,127.47583964633, + 68.463604521195)); +#104 = CARTESIAN_POINT('',(456.41634335042,174.92948909651, + 46.525835806506)); +#105 = CARTESIAN_POINT('',(448.3818501155,128.24004032485,66.62395590029 + )); +#106 = CARTESIAN_POINT('',(389.5805198092,193.88497849112,3.646235650355 + )); +#107 = CARTESIAN_POINT('',(371.49061944001,146.10756255496, + 25.855457261112)); +#108 = CARTESIAN_POINT('',(347.1374052923,239.76531546943, + -96.08222565542)); +#109 = CARTESIAN_POINT('',(318.66859061781,194.02035365751, + -78.91660384912)); +#110 = CARTESIAN_POINT('',(333.69357873396,295.29054274459, + -168.4552066031)); +#111 = CARTESIAN_POINT('',(297.74510023139,254.35152330045, + -164.3745612242)); +#112 = CARTESIAN_POINT('',(332.72744510444,299.7454302083, + -173.8478901057)); +#113 = CARTESIAN_POINT('',(296.3869917766,258.9660674834,-170.6640328428 + )); +#114 = CARTESIAN_POINT('',(320.92840968066,361.00384777106, + -243.1499764834)); +#115 = CARTESIAN_POINT('',(281.65302303526,319.81979536194, + -249.9823158014)); +#116 = CARTESIAN_POINT('',(319.31283723141,451.19150584044, + -293.7415816349)); +#117 = CARTESIAN_POINT('',(275.12439359132,416.49902694289, + -308.0024519443)); +#118 = CARTESIAN_POINT('',(353.90111545377,538.88533141732, + -311.3977172909)); +#119 = CARTESIAN_POINT('',(304.88072900251,517.36882112178, + -336.5872791122)); +#120 = CARTESIAN_POINT('',(358.26616840192,547.96205454181, + -312.8668949681)); +#121 = CARTESIAN_POINT('',(308.45789443601,527.86290731499, + -339.1404879232)); +#122 = CARTESIAN_POINT('',(395.62303511305,614.11194660346, + -321.6036103664)); +#123 = CARTESIAN_POINT('',(338.83015169465,604.86759119353, + -354.6444887552)); +#124 = CARTESIAN_POINT('',(454.9043393223,662.96721107469, + -316.7944252615)); +#125 = CARTESIAN_POINT('',(402.96773505925,656.56665818927, + -359.6102410339)); +#126 = CARTESIAN_POINT('',(527.56983812138,685.36885459427, + -323.7400574419)); +#127 = CARTESIAN_POINT('',(483.6171601418,690.87330211529,-366.649615046 + )); +#128 = CARTESIAN_POINT('',(538.32486432968,688.41101185876, + -324.6603913111)); +#129 = CARTESIAN_POINT('',(495.51723074804,695.22360485239, + -367.706731414)); +#130 = CARTESIAN_POINT('',(614.74555860104,708.67147780925, + -330.2480134527)); +#131 = CARTESIAN_POINT('',(579.08177904429,720.98525587998, + -375.6941343133)); +#132 = CARTESIAN_POINT('',(684.08930797469,720.09993659335, + -330.434747059)); +#133 = CARTESIAN_POINT('',(655.90689467962,733.46763016086, + -378.2563683958)); +#134 = CARTESIAN_POINT('',(751.9717477027,741.17636399642, + -317.2906896338)); +#135 = CARTESIAN_POINT('',(733.02072854281,754.94274655484, + -366.8910709321)); +#136 = CARTESIAN_POINT('',(758.62793299532,743.26453738585, + -315.8853482299)); +#137 = CARTESIAN_POINT('',(740.48787215445,757.12730949169, + -365.6268463667)); +#138 = CARTESIAN_POINT('',(842.38519210409,769.73405999669, + -296.732848228)); +#139 = CARTESIAN_POINT('',(833.13484918799,785.89273532765, + -347.6876386528)); +#140 = CARTESIAN_POINT('',(919.84538422725,796.2724174474, + -263.3749812199)); +#141 = CARTESIAN_POINT('',(920.57211116411,816.15302640666, + -312.2469113162)); +#142 = CARTESIAN_POINT('',(993.68719586923,813.93378893034, + -212.8546246041)); +#143 = CARTESIAN_POINT('',(1.002310650952E+03,836.63550307721, + -258.6924029856)); +#144 = CARTESIAN_POINT('',(997.23441785561,814.79950736035, + -210.3756575128)); +#145 = CARTESIAN_POINT('',(1.006227829523E+03,837.59565303316, + -256.069803756)); +#146 = CARTESIAN_POINT('',(1.063566741348E+03,831.36160235673, + -163.1237980721)); +#147 = CARTESIAN_POINT('',(1.079297572541E+03,855.07236232424, + -206.0776733766)); +#148 = CARTESIAN_POINT('',(1.121596528688E+03,852.16191318709, + -106.6448582035)); +#149 = CARTESIAN_POINT('',(1.153360683264E+03,858.80877830514, + -143.090843395)); +#150 = CARTESIAN_POINT('',(1.170957936369E+03,892.94715769432, + -66.52038693537)); +#151 = CARTESIAN_POINT('',(1.206780786179E+03,907.06710545621, + -101.166788433)); +#152 = CARTESIAN_POINT('',(1.173819727628E+03,895.41805154506, + -64.2305726249)); +#153 = CARTESIAN_POINT('',(1.209868664867E+03,910.06873239902, + -98.58160668438)); +#154 = CARTESIAN_POINT('',(1.216526794197E+03,933.9985011832, + -30.71410020296)); +#155 = CARTESIAN_POINT('',(1.255617456262E+03,957.80134484501, + -57.81664145477)); +#156 = CARTESIAN_POINT('',(1.235828801867E+03,1.016396857139E+03, + 8.919736019131)); +#157 = CARTESIAN_POINT('',(1.283766682134E+03,1.031390244851E+03, + 0.66977502507)); +#158 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#159 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#160 = DEFINITIONAL_REPRESENTATION('',(#161),#164); +#161 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#162,#163),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,3.18959189978E+03),.PIECEWISE_BEZIER_KNOTS.); +#162 = CARTESIAN_POINT('',(0.,0.)); +#163 = CARTESIAN_POINT('',(3.533404360598E+03,0.)); +#164 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#165 = PCURVE('',#166,#271); +#166 = B_SPLINE_SURFACE_WITH_KNOTS('',3,1,( + (#167,#168) + ,(#169,#170) + ,(#171,#172) + ,(#173,#174) + ,(#175,#176) + ,(#177,#178) + ,(#179,#180) + ,(#181,#182) + ,(#183,#184) + ,(#185,#186) + ,(#187,#188) + ,(#189,#190) + ,(#191,#192) + ,(#193,#194) + ,(#195,#196) + ,(#197,#198) + ,(#199,#200) + ,(#201,#202) + ,(#203,#204) + ,(#205,#206) + ,(#207,#208) + ,(#209,#210) + ,(#211,#212) + ,(#213,#214) + ,(#215,#216) + ,(#217,#218) + ,(#219,#220) + ,(#221,#222) + ,(#223,#224) + ,(#225,#226) + ,(#227,#228) + ,(#229,#230) + ,(#231,#232) + ,(#233,#234) + ,(#235,#236) + ,(#237,#238) + ,(#239,#240) + ,(#241,#242) + ,(#243,#244) + ,(#245,#246) + ,(#247,#248) + ,(#249,#250) + ,(#251,#252) + ,(#253,#254) + ,(#255,#256) + ,(#257,#258) + ,(#259,#260) + ,(#261,#262) + ,(#263,#264) + ,(#265,#266) + ,(#267,#268) + ,(#269,#270 + )),.UNSPECIFIED.,.T.,.F.,.F.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,4),(2,2),(0.,209.23228019313,222.50673066079, + 482.64365057914,521.49891968826,715.14729372521,746.73554473208, + 912.73931944314,956.05226445931,1.165060787701E+03, + 1.183772437718E+03,1.437843148576E+03,1.452241892468E+03, + 1.712941418707E+03,1.744199379991E+03,1.993387146468E+03, + 2.014074791318E+03,2.219646600857E+03,2.265547928379E+03, + 2.455042741061E+03,2.497306330196E+03,2.730847502047E+03, + 2.769771749825E+03,2.986740727954E+03,3.009298678456E+03, + 3.18959189978E+03),(0.,1.),.UNSPECIFIED.); +#167 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#168 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#169 = CARTESIAN_POINT('',(1.168133054106E+03,1.157010515852E+03, + 52.606947252995)); +#170 = CARTESIAN_POINT('',(1.178068206983E+03,1.143011162431E+03, + 88.902052812263)); +#171 = CARTESIAN_POINT('',(1.056514096872E+03,1.156883580516E+03, + 72.630502068623)); +#172 = CARTESIAN_POINT('',(1.059198871667E+03,1.133111066035E+03, + 103.20778721284)); +#173 = CARTESIAN_POINT('',(1.001045524464E+03,1.122038149565E+03, + 83.270907413599)); +#174 = CARTESIAN_POINT('',(1.014291667615E+03,1.095652224673E+03, + 112.17326757893)); +#175 = CARTESIAN_POINT('',(997.97567466326,1.119827940679E+03, + 83.865376469529)); +#176 = CARTESIAN_POINT('',(1.011646431145E+03,1.09326426919E+03, + 112.64777948003)); +#177 = CARTESIAN_POINT('',(940.40372810783,1.071804946185E+03, + 95.359304167162)); +#178 = CARTESIAN_POINT('',(957.92039849994,1.041109347172E+03, + 121.33512179234)); +#179 = CARTESIAN_POINT('',(898.7874722016,986.179979794,117.20416374198) + ); +#180 = CARTESIAN_POINT('',(920.92496861013,936.09775667843, + 109.35013143998)); +#181 = CARTESIAN_POINT('',(886.51573507019,877.65017920072, + 146.2428155497)); +#182 = CARTESIAN_POINT('',(919.77622403852,829.44230133697, + 138.2602772613)); +#183 = CARTESIAN_POINT('',(885.61122164493,863.34993637576, + 150.09280998306)); +#184 = CARTESIAN_POINT('',(919.23595121287,815.84791125893, + 142.25484715074)); +#185 = CARTESIAN_POINT('',(884.68360838732,777.22546900741, + 173.43780347102)); +#186 = CARTESIAN_POINT('',(913.9293241041,736.07253113423, + 166.74856185688)); +#187 = CARTESIAN_POINT('',(873.00780785201,717.04003448039, + 196.18574463605)); +#188 = CARTESIAN_POINT('',(900.90159715451,676.15114836781, + 189.60157679881)); +#189 = CARTESIAN_POINT('',(855.3292493192,652.72991177983, + 210.15013524082)); +#190 = CARTESIAN_POINT('',(882.13465599279,613.55987136361, + 199.04490963891)); +#191 = CARTESIAN_POINT('',(852.75617061253,643.8409909714, + 211.82273745092)); +#192 = CARTESIAN_POINT('',(879.71425585336,604.25012889776, + 200.00482575879)); +#193 = CARTESIAN_POINT('',(836.27486303409,588.87273167202, + 220.11596284989)); +#194 = CARTESIAN_POINT('',(865.64139338044,543.54175642545, + 203.75432333532)); +#195 = CARTESIAN_POINT('',(827.20718595288,529.2664080136, + 216.45632823466)); +#196 = CARTESIAN_POINT('',(858.53061574203,481.61686641584, + 196.94831713125)); +#197 = CARTESIAN_POINT('',(816.63675068973,458.73557212563, + 201.38725924848)); +#198 = CARTESIAN_POINT('',(848.01468248774,414.6854149187, + 176.53793750867)); +#199 = CARTESIAN_POINT('',(814.49606006932,444.39080049406, + 197.70464317212)); +#200 = CARTESIAN_POINT('',(844.7602583283,400.91046643502, + 171.98901078877)); +#201 = CARTESIAN_POINT('',(801.87319047848,364.04919282658, + 173.20490985838)); +#202 = CARTESIAN_POINT('',(820.19350293907,321.93464428506, + 144.5434074757)); +#203 = CARTESIAN_POINT('',(768.81181456575,291.88403510254, + 154.58918956287)); +#204 = CARTESIAN_POINT('',(777.42765791082,261.59506826846, + 118.02918008495)); +#205 = CARTESIAN_POINT('',(715.93857892705,244.15146557236, + 140.62581363939)); +#206 = CARTESIAN_POINT('',(720.58227466146,218.92718435869, + 105.00008532155)); +#207 = CARTESIAN_POINT('',(711.47004397603,240.45656424658, + 139.52493406232)); +#208 = CARTESIAN_POINT('',(715.63926146923,215.59645490494, + 103.98371857214)); +#209 = CARTESIAN_POINT('',(644.59423506447,190.25988884564, + 124.19684228281)); +#210 = CARTESIAN_POINT('',(640.15543896383,169.56025801505, + 89.751728131046)); +#211 = CARTESIAN_POINT('',(528.93552797393,176.09299062159, + 119.5449094089)); +#212 = CARTESIAN_POINT('',(526.55263988445,158.55032090696, + 83.892059579301)); +#213 = CARTESIAN_POINT('',(456.24561722562,188.51834517559, + 87.370397058876)); +#214 = CARTESIAN_POINT('',(459.21156378098,174.19863559393, + 48.187148299211)); +#215 = CARTESIAN_POINT('',(452.49758608681,189.26801759873, + 85.561937730902)); +#216 = CARTESIAN_POINT('',(455.66270135681,175.12506078399, + 46.081177684064)); +#217 = CARTESIAN_POINT('',(384.11325904121,205.15875667189, + 49.303884379332)); +#218 = CARTESIAN_POINT('',(389.08708767557,194.41965651195, + 2.485540488728)); +#219 = CARTESIAN_POINT('',(335.84679578522,247.29300847123, + -43.95298755887)); +#220 = CARTESIAN_POINT('',(347.06501819636,240.0642861484, + -96.47191157505)); +#221 = CARTESIAN_POINT('',(314.20188066815,302.23257787823, + -124.5669780797)); +#222 = CARTESIAN_POINT('',(333.2287869526,297.21020967749, + -170.9573488757)); +#223 = CARTESIAN_POINT('',(312.30053110128,308.21412497455, + -132.8919535021)); +#224 = CARTESIAN_POINT('',(331.85451740724,303.87273371074, + -178.7624771788)); +#225 = CARTESIAN_POINT('',(299.16603581103,362.46176294952, + -203.5996923496)); +#226 = CARTESIAN_POINT('',(320.85276549027,367.81746902815, + -246.9316626596)); +#227 = CARTESIAN_POINT('',(296.03570825642,446.98596042264,-254.39910028 + )); +#228 = CARTESIAN_POINT('',(320.48521016234,454.16389627442, + -294.3400380072)); +#229 = CARTESIAN_POINT('',(323.53812605875,531.57173421972, + -276.700486818)); +#230 = CARTESIAN_POINT('',(352.74554373576,535.95553814951, + -310.8078373644)); +#231 = CARTESIAN_POINT('',(325.84296060535,538.01149896248, + -278.2018263885)); +#232 = CARTESIAN_POINT('',(355.56060551809,542.16828975663, + -311.8922706835)); +#233 = CARTESIAN_POINT('',(353.32607318483,607.69115359463, + -292.2310174582)); +#234 = CARTESIAN_POINT('',(389.77930755542,609.21801759018, + -322.1043883522)); +#235 = CARTESIAN_POINT('',(403.35824863543,666.88567611293, + -297.8572148184)); +#236 = CARTESIAN_POINT('',(451.84155989735,662.02300379626, + -316.5016736849)); +#237 = CARTESIAN_POINT('',(478.42466391225,707.30763150174, + -304.986991624)); +#238 = CARTESIAN_POINT('',(531.51543724609,686.58522146057, + -324.1171921304)); +#239 = CARTESIAN_POINT('',(492.6915127111,713.38204975598, + -306.2984681434)); +#240 = CARTESIAN_POINT('',(546.35541857437,690.64517663665, + -325.3328786582)); +#241 = CARTESIAN_POINT('',(567.96995695303,736.58922373106, + -313.4938551352)); +#242 = CARTESIAN_POINT('',(623.26707646564,710.10982025737, + -330.2252457877)); +#243 = CARTESIAN_POINT('',(632.62456916818,747.51497143365, + -316.3524014464)); +#244 = CARTESIAN_POINT('',(687.86537632957,721.27234628973, + -329.7035880215)); +#245 = CARTESIAN_POINT('',(705.83840218028,766.17130457839, + -308.3226198527)); +#246 = CARTESIAN_POINT('',(758.13809074948,743.09091630315,-316.09670239 + )); +#247 = CARTESIAN_POINT('',(718.95134039256,769.78879466426, + -306.3895192142)); +#248 = CARTESIAN_POINT('',(770.98113887103,747.15847686908, + -313.1770739649)); +#249 = CARTESIAN_POINT('',(802.32792156724,795.67590872918, + -290.245335604)); +#250 = CARTESIAN_POINT('',(854.74880142024,773.92326958905, + -291.2941880499)); +#251 = CARTESIAN_POINT('',(873.80840379858,820.33166554078, + -262.9067303473)); +#252 = CARTESIAN_POINT('',(925.47512053762,797.61892916098, + -259.5232841971)); +#253 = CARTESIAN_POINT('',(951.26524643061,841.25757664254, + -216.2773387751)); +#254 = CARTESIAN_POINT('',(1.000901455365E+03,815.65928447413, + -207.9188442602)); +#255 = CARTESIAN_POINT('',(962.18931639229,844.06038548822, + -209.2650636914)); +#256 = CARTESIAN_POINT('',(1.011549736015E+03,818.36451240634, + -200.1569232773)); +#257 = CARTESIAN_POINT('',(1.032894548979E+03,860.97155479361, + -160.8906605527)); +#258 = CARTESIAN_POINT('',(1.080496998393E+03,837.39434291726, + -147.5538751538)); +#259 = CARTESIAN_POINT('',(1.094595458635E+03,882.76217605053, + -117.5452577732)); +#260 = CARTESIAN_POINT('',(1.133965864208E+03,859.4151111864, + -95.50785344869)); +#261 = CARTESIAN_POINT('',(1.145717121408E+03,922.27490882705, + -78.42173217464)); +#262 = CARTESIAN_POINT('',(1.181070716101E+03,901.96840534044, + -58.54000254613)); +#263 = CARTESIAN_POINT('',(1.150365213162E+03,926.14744559752, + -74.82265625574)); +#264 = CARTESIAN_POINT('',(1.185252286197E+03,906.54926738957, + -54.95550978119)); +#265 = CARTESIAN_POINT('',(1.190493342512E+03,962.39815064055, + -43.33013174535)); +#266 = CARTESIAN_POINT('',(1.22028678567E+03,951.95066417113, + -21.9818587277)); +#267 = CARTESIAN_POINT('',(1.220653496216E+03,1.041882904981E+03, + -20.11921921824)); +#268 = CARTESIAN_POINT('',(1.233182779058E+03,1.022197080291E+03, + 12.583739739288)); +#269 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#270 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#271 = DEFINITIONAL_REPRESENTATION('',(#272),#276); +#272 = LINE('',#273,#274); +#273 = CARTESIAN_POINT('',(0.,1.)); +#274 = VECTOR('',#275,1.); +#275 = DIRECTION('',(1.,0.)); +#276 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#277 = ORIENTED_EDGE('',*,*,#278,.T.); +#278 = EDGE_CURVE('',#22,#279,#281,.T.); +#279 = VERTEX_POINT('',#280); +#280 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#281 = SEAM_CURVE('',#282,(#285,#292),.PCURVE_S1.); +#282 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#283,#284),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,1.),.PIECEWISE_BEZIER_KNOTS.); +#283 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#284 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#285 = PCURVE('',#55,#286); +#286 = DEFINITIONAL_REPRESENTATION('',(#287),#291); +#287 = LINE('',#288,#289); +#288 = CARTESIAN_POINT('',(3.533404360598E+03,0.)); +#289 = VECTOR('',#290,1.); +#290 = DIRECTION('',(0.,1.)); +#291 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#292 = PCURVE('',#55,#293); +#293 = DEFINITIONAL_REPRESENTATION('',(#294),#298); +#294 = LINE('',#295,#296); +#295 = CARTESIAN_POINT('',(0.,0.)); +#296 = VECTOR('',#297,1.); +#297 = DIRECTION('',(0.,1.)); +#298 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#299 = ORIENTED_EDGE('',*,*,#300,.F.); +#300 = EDGE_CURVE('',#279,#279,#301,.T.); +#301 = SURFACE_CURVE('',#302,(#331,#338),.PCURVE_S1.); +#302 = B_SPLINE_CURVE_WITH_KNOTS('',3,(#303,#304,#305,#306,#307,#308, + #309,#310,#311,#312,#313,#314,#315,#316,#317,#318,#319,#320,#321, + #322,#323,#324,#325,#326,#327,#328,#329,#330),.UNSPECIFIED.,.T.,.F., + (4,2,2,2,2,2,2,2,2,2,2,2,2,4),(0.,281.97780706428,562.21582109731, + 806.32706316339,1.021482963204E+03,1.292851720834E+03, + 1.607089856103E+03,1.921345385356E+03,2.241884939283E+03, + 2.495960051918E+03,2.743967327556E+03,3.0394615204E+03, + 3.292831481351E+03,3.533404360598E+03),.UNSPECIFIED.); +#303 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#304 = CARTESIAN_POINT('',(1.20541876021E+03,1.20313306927E+03, + 109.15979878623)); +#305 = CARTESIAN_POINT('',(1.055534721569E+03,1.174872248935E+03, + 136.23204716506)); +#306 = CARTESIAN_POINT('',(943.10572242002,1.081090858344E+03, + 158.67788866693)); +#307 = CARTESIAN_POINT('',(946.33403952981,951.41169215577, + 149.84298667821)); +#308 = CARTESIAN_POINT('',(944.37739826747,769.74688177617, + 199.08525133182)); +#309 = CARTESIAN_POINT('',(925.96397889784,691.89325427802, + 232.90750435998)); +#310 = CARTESIAN_POINT('',(887.12962562564,562.37338516382, + 252.44855372011)); +#311 = CARTESIAN_POINT('',(875.36035990985,481.5966728602, + 246.97616463591)); +#312 = CARTESIAN_POINT('',(850.81810905824,325.39099593332, + 199.34209882732)); +#313 = CARTESIAN_POINT('',(814.150778011,237.67155343728,149.61384713614 + )); +#314 = CARTESIAN_POINT('',(666.83086426075,127.09390195203, + 115.84777842363)); +#315 = CARTESIAN_POINT('',(524.06900294613,110.65231447035, + 106.75404043752)); +#316 = CARTESIAN_POINT('',(365.49512911538,147.50075857634, + 22.676588396699)); +#317 = CARTESIAN_POINT('',(310.16378877887,202.06561720196, + -96.49855156124)); +#318 = CARTESIAN_POINT('',(280.05826073711,326.40642742467, + -258.5674980722)); +#319 = CARTESIAN_POINT('',(273.69129338207,439.71696870758, + -321.3933245472)); +#320 = CARTESIAN_POINT('',(343.32007889251,616.25118450252, + -356.9364433642)); +#321 = CARTESIAN_POINT('',(425.9719206318,673.78386699289, + -361.0593381954)); +#322 = CARTESIAN_POINT('',(586.86579114506,723.38494578943, + -376.438158449)); +#323 = CARTESIAN_POINT('',(672.65041666914,736.06484898683, + -378.7621935059)); +#324 = CARTESIAN_POINT('',(837.45602835475,787.23439333772, + -346.8509299643)); +#325 = CARTESIAN_POINT('',(929.43848436236,819.22929499476, + -308.6067745529)); +#326 = CARTESIAN_POINT('',(1.079297572541E+03,855.07236232424, + -206.0776733766)); +#327 = CARTESIAN_POINT('',(1.153360683264E+03,858.80877830514, + -143.090843395)); +#328 = CARTESIAN_POINT('',(1.251369358353E+03,947.3472581661, + -66.17371188483)); +#329 = CARTESIAN_POINT('',(1.285687682208E+03,1.027179310211E+03, + -1.99027438737)); +#330 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#331 = PCURVE('',#55,#332); +#332 = DEFINITIONAL_REPRESENTATION('',(#333),#337); +#333 = LINE('',#334,#335); +#334 = CARTESIAN_POINT('',(0.,1.)); +#335 = VECTOR('',#336,1.); +#336 = DIRECTION('',(1.,0.)); +#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#338 = PCURVE('',#339,#444); +#339 = B_SPLINE_SURFACE_WITH_KNOTS('',3,1,( + (#340,#341) + ,(#342,#343) + ,(#344,#345) + ,(#346,#347) + ,(#348,#349) + ,(#350,#351) + ,(#352,#353) + ,(#354,#355) + ,(#356,#357) + ,(#358,#359) + ,(#360,#361) + ,(#362,#363) + ,(#364,#365) + ,(#366,#367) + ,(#368,#369) + ,(#370,#371) + ,(#372,#373) + ,(#374,#375) + ,(#376,#377) + ,(#378,#379) + ,(#380,#381) + ,(#382,#383) + ,(#384,#385) + ,(#386,#387) + ,(#388,#389) + ,(#390,#391) + ,(#392,#393) + ,(#394,#395) + ,(#396,#397) + ,(#398,#399) + ,(#400,#401) + ,(#402,#403) + ,(#404,#405) + ,(#406,#407) + ,(#408,#409) + ,(#410,#411) + ,(#412,#413) + ,(#414,#415) + ,(#416,#417) + ,(#418,#419) + ,(#420,#421) + ,(#422,#423) + ,(#424,#425) + ,(#426,#427) + ,(#428,#429) + ,(#430,#431) + ,(#432,#433) + ,(#434,#435) + ,(#436,#437) + ,(#438,#439) + ,(#440,#441) + ,(#442,#443 + )),.UNSPECIFIED.,.T.,.F.,.F.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,4),(2,2),(0.,281.97780706428,295.56243148447, + 562.21582109731,600.79758735235,806.32706316339,837.67840191166, + 1.021482963204E+03,1.064606658661E+03,1.292851720834E+03, + 1.311466182752E+03,1.607089856103E+03,1.621478758028E+03, + 1.921345385356E+03,1.952709985806E+03,2.241884939283E+03, + 2.262789636712E+03,2.495960051918E+03,2.542331942498E+03, + 2.743967327556E+03,2.786729429334E+03,3.0394615204E+03, + 3.078929010456E+03,3.292831481351E+03,3.316053394305E+03, + 3.533404360598E+03),(0.,1.),.UNSPECIFIED.); +#340 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#341 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#342 = CARTESIAN_POINT('',(1.20541876021E+03,1.20313306927E+03, + 109.15979878623)); +#343 = CARTESIAN_POINT('',(1.19657387931E+03,1.214742488355E+03, + 71.354970571472)); +#344 = CARTESIAN_POINT('',(1.055534721569E+03,1.174872248935E+03, + 136.23204716506)); +#345 = CARTESIAN_POINT('',(1.05358925665E+03,1.200968112242E+03, + 104.71439401134)); +#346 = CARTESIAN_POINT('',(996.42968199018,1.125570442065E+03, + 148.03204859167)); +#347 = CARTESIAN_POINT('',(983.27229389294,1.152151774028E+03, + 119.08855493597)); +#348 = CARTESIAN_POINT('',(993.85237263366,1.123109553168E+03, + 148.52734823849)); +#349 = CARTESIAN_POINT('',(980.21654841404,1.149831957067E+03, + 119.70362216435)); +#350 = CARTESIAN_POINT('',(943.40866637867,1.068594961368E+03, + 157.90394249051)); +#351 = CARTESIAN_POINT('',(921.20574503279,1.100608756265E+03, + 131.48480984384)); +#352 = CARTESIAN_POINT('',(946.2833476744,946.70519512032,151.118734976) + ); +#353 = CARTESIAN_POINT('',(913.29053670633,1.000594353231E+03, + 157.76229652863)); +#354 = CARTESIAN_POINT('',(945.14434405469,840.95414070966, + 179.7837328796)); +#355 = CARTESIAN_POINT('',(911.11814684147,888.12944335332, + 188.03341457832)); +#356 = CARTESIAN_POINT('',(944.56316511354,827.75507130136, + 183.67920916074)); +#357 = CARTESIAN_POINT('',(910.96953005192,873.95081462557,191.863191732 + )); +#358 = CARTESIAN_POINT('',(938.50126507264,745.3624474608, + 209.19104182813)); +#359 = CARTESIAN_POINT('',(910.01715985116,785.5277831474, + 215.83123655271)); +#360 = CARTESIAN_POINT('',(922.70161195877,681.01264720341, + 234.54909403551)); +#361 = CARTESIAN_POINT('',(895.4742951886,721.79791120067, + 240.88205999854)); +#362 = CARTESIAN_POINT('',(902.67162855129,614.20888685464,244.627976815 + )); +#363 = CARTESIAN_POINT('',(875.96697851316,653.54101705844, + 255.70864473738)); +#364 = CARTESIAN_POINT('',(900.15703951155,604.94059216676, + 245.65135471378)); +#365 = CARTESIAN_POINT('',(873.32973171844,644.61203614679, + 257.38739364418)); +#366 = CARTESIAN_POINT('',(883.71916773225,539.08108245779, + 250.52266232655)); +#367 = CARTESIAN_POINT('',(855.12720640392,583.90319210451, + 266.54671820296)); +#368 = CARTESIAN_POINT('',(873.7788729123,471.53087863061, + 243.90665580511)); +#369 = CARTESIAN_POINT('',(843.35689597888,518.53405034204, + 263.03804812969)); +#370 = CARTESIAN_POINT('',(862.33170345305,398.6723268584, + 221.68883940999)); +#371 = CARTESIAN_POINT('',(831.05062152438,442.58645696264, + 246.53157275787)); +#372 = CARTESIAN_POINT('',(859.57609898733,384.81188391715, + 216.88189340098)); +#373 = CARTESIAN_POINT('',(828.811257913,428.36610869162,242.85200657582 + )); +#374 = CARTESIAN_POINT('',(838.36636433618,298.43286673825, + 184.39793728455)); +#375 = CARTESIAN_POINT('',(815.18311497827,341.6261717051,216.401137773) + ); +#376 = CARTESIAN_POINT('',(803.30223921768,229.52868998267, + 147.12733667737)); +#377 = CARTESIAN_POINT('',(792.35340946456,260.17048074804, + 185.46429835277)); +#378 = CARTESIAN_POINT('',(741.20029977916,182.91525910983, + 132.89342694391)); +#379 = CARTESIAN_POINT('',(736.51723401698,208.16467733345, + 168.59457361297)); +#380 = CARTESIAN_POINT('',(736.29394114698,179.55088697101, + 131.85178733893)); +#381 = CARTESIAN_POINT('',(732.11537471863,204.46513447452, + 167.42453419775)); +#382 = CARTESIAN_POINT('',(650.14009341408,125.26835014485, + 114.65481069238)); +#383 = CARTESIAN_POINT('',(654.41297809965,146.14207200336, + 149.61496319969)); +#384 = CARTESIAN_POINT('',(519.37242841843,111.74367624259, + 104.26386970466)); +#385 = CARTESIAN_POINT('',(521.53715648821,129.33451084384, + 140.30188099372)); +#386 = CARTESIAN_POINT('',(441.15382770255,129.91964474799, + 62.791586209786)); +#387 = CARTESIAN_POINT('',(438.22066443735,144.21553037801, + 102.02857842753)); +#388 = CARTESIAN_POINT('',(437.57362193708,130.83902970584, + 60.704982516957)); +#389 = CARTESIAN_POINT('',(434.48018914869,144.97965298572, + 100.18776385665)); +#390 = CARTESIAN_POINT('',(360.51294275406,152.51216468147, + 11.844823082628)); +#391 = CARTESIAN_POINT('',(355.83711603569,163.25425783658, + 58.49042085639)); +#392 = CARTESIAN_POINT('',(309.48138669058,204.88405069493, + -100.1721688249)); +#393 = CARTESIAN_POINT('',(298.6860164447,212.05526932838, + -47.88373788942)); +#394 = CARTESIAN_POINT('',(293.77255201241,269.76413613401, + -184.738507727)); +#395 = CARTESIAN_POINT('',(274.73760607337,274.69381971984, + -138.3056147614)); +#396 = CARTESIAN_POINT('',(292.36965639872,276.39144207075, + -192.5641556371)); +#397 = CARTESIAN_POINT('',(272.85795961445,280.71161910873, + -146.5995570419)); +#398 = CARTESIAN_POINT('',(279.24509966947,348.43913660386, + -270.4507450043)); +#399 = CARTESIAN_POINT('',(257.81975263328,342.82190123836, + -227.5556644874)); +#400 = CARTESIAN_POINT('',(277.49189083365,449.3528611872, + -323.3333998452)); +#401 = CARTESIAN_POINT('',(253.22477282045,441.96553965547, + -283.7246444454)); +#402 = CARTESIAN_POINT('',(315.06571336287,544.61612401723, + -342.5135539837)); +#403 = CARTESIAN_POINT('',(285.68296626613,539.83682677471, + -308.3638804238)); +#404 = CARTESIAN_POINT('',(317.94993608573,550.8995605323, + -343.7281454827)); +#405 = CARTESIAN_POINT('',(288.05340921329,546.39390226629, + -309.8515341718)); +#406 = CARTESIAN_POINT('',(356.91252901125,625.49893495088, + -357.6396603773)); +#407 = CARTESIAN_POINT('',(319.19708810077,625.35441965958, + -325.7493194195)); +#408 = CARTESIAN_POINT('',(432.67089625785,675.84905702669, + -361.6996506057)); +#409 = CARTESIAN_POINT('',(381.58462371148,684.10295454626, + -339.6895003333)); +#410 = CARTESIAN_POINT('',(522.2511018189,703.46524166113, + -370.2620518657)); +#411 = CARTESIAN_POINT('',(468.11031232786,724.39485023599, + -350.7415853765)); +#412 = CARTESIAN_POINT('',(537.33171859344,707.63308593782, + -371.4980975912)); +#413 = CARTESIAN_POINT('',(482.85063554467,730.08433110206, + -352.3882199262)); +#414 = CARTESIAN_POINT('',(618.57551864137,728.4996829922, + -376.7169121871)); +#415 = CARTESIAN_POINT('',(562.74444065305,754.71434907536, + -360.0247598653)); +#416 = CARTESIAN_POINT('',(686.71173616016,740.43066701917, + -376.0395042271)); +#417 = CARTESIAN_POINT('',(631.18423042149,766.49205509095, + -362.8152931557)); +#418 = CARTESIAN_POINT('',(760.82023383333,763.44018726353, + -361.6898969793)); +#419 = CARTESIAN_POINT('',(708.09678243875,786.36001490233, + -354.0301233284)); +#420 = CARTESIAN_POINT('',(773.83680016724,767.55357875211, + -358.7415801131)); +#421 = CARTESIAN_POINT('',(721.32994312394,790.04382113036, + -352.0414882353)); +#422 = CARTESIAN_POINT('',(863.84160654731,796.2286828154, + -335.4269420855)); +#423 = CARTESIAN_POINT('',(810.66618573987,817.78131612173, + -334.7433370816)); +#424 = CARTESIAN_POINT('',(941.11403201232,822.02183461057, + -300.6187144303)); +#425 = CARTESIAN_POINT('',(888.95640775797,844.61106616961, + -304.294764537)); +#426 = CARTESIAN_POINT('',(1.02089472545E+03,841.1036587512, + -246.0351527066)); +#427 = CARTESIAN_POINT('',(971.25803668978,866.71214696489, + -254.415372144)); +#428 = CARTESIAN_POINT('',(1.03178924243E+03,843.37022825881, + -238.282633211)); +#429 = CARTESIAN_POINT('',(982.2012717797,869.50922888726, + -247.3685882134)); +#430 = CARTESIAN_POINT('',(1.101793995178E+03,857.24773921553, + -187.0257167728)); +#431 = CARTESIAN_POINT('',(1.051121618559E+03,885.99349193742, + -200.2153505022)); +#432 = CARTESIAN_POINT('',(1.161191865528E+03,865.88326403328, + -136.9449376829)); +#433 = CARTESIAN_POINT('',(1.119488899486E+03,892.35391702974, + -159.0650225159)); +#434 = CARTESIAN_POINT('',(1.208242343439E+03,908.38743815096, + -100.0197594386)); +#435 = CARTESIAN_POINT('',(1.172264579591E+03,928.41200043742, + -120.2994628652)); +#436 = CARTESIAN_POINT('',(1.212725052321E+03,912.89197521696, + -96.15464940695)); +#437 = CARTESIAN_POINT('',(1.177188297478E+03,932.25161373475, + -116.5759494403)); +#438 = CARTESIAN_POINT('',(1.257403351872E+03,962.61070236438, + -54.00475396164)); +#439 = CARTESIAN_POINT('',(1.22525177331E+03,975.67090374394, + -78.85577121994)); +#440 = CARTESIAN_POINT('',(1.282874276262E+03,1.033346446129E+03, + 1.905508301433)); +#441 = CARTESIAN_POINT('',(1.27107271388E+03,1.051437068749E+03, + -31.8051405617)); +#442 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#443 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#444 = DEFINITIONAL_REPRESENTATION('',(#445),#449); +#445 = LINE('',#446,#447); +#446 = CARTESIAN_POINT('',(0.,0.)); +#447 = VECTOR('',#448,1.); +#448 = DIRECTION('',(1.,0.)); +#449 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#450 = ORIENTED_EDGE('',*,*,#278,.F.); +#451 = ADVANCED_FACE('',(#452),#339,.F.); +#452 = FACE_BOUND('',#453,.F.); +#453 = EDGE_LOOP('',(#454,#455,#477,#627)); +#454 = ORIENTED_EDGE('',*,*,#300,.T.); +#455 = ORIENTED_EDGE('',*,*,#456,.T.); +#456 = EDGE_CURVE('',#279,#457,#459,.T.); +#457 = VERTEX_POINT('',#458); +#458 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#459 = SEAM_CURVE('',#460,(#463,#470),.PCURVE_S1.); +#460 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#461,#462),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,1.),.PIECEWISE_BEZIER_KNOTS.); +#461 = CARTESIAN_POINT('',(1.256541540361E+03,1.091069207975E+03, + 38.369004377271)); +#462 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#463 = PCURVE('',#339,#464); +#464 = DEFINITIONAL_REPRESENTATION('',(#465),#469); +#465 = LINE('',#466,#467); +#466 = CARTESIAN_POINT('',(3.533404360598E+03,0.)); +#467 = VECTOR('',#468,1.); +#468 = DIRECTION('',(0.,1.)); +#469 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#470 = PCURVE('',#339,#471); +#471 = DEFINITIONAL_REPRESENTATION('',(#472),#476); +#472 = LINE('',#473,#474); +#473 = CARTESIAN_POINT('',(0.,0.)); +#474 = VECTOR('',#475,1.); +#475 = DIRECTION('',(0.,1.)); +#476 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#477 = ORIENTED_EDGE('',*,*,#478,.F.); +#478 = EDGE_CURVE('',#457,#457,#479,.T.); +#479 = SURFACE_CURVE('',#480,(#509,#515),.PCURVE_S1.); +#480 = B_SPLINE_CURVE_WITH_KNOTS('',3,(#481,#482,#483,#484,#485,#486, + #487,#488,#489,#490,#491,#492,#493,#494,#495,#496,#497,#498,#499, + #500,#501,#502,#503,#504,#505,#506,#507,#508),.UNSPECIFIED.,.T.,.F., + (4,2,2,2,2,2,2,2,2,2,2,2,2,4),(0.,294.89464339225,599.44015679986, + 835.7857673874,1.062201306783E+03,1.308503081198E+03, + 1.617815220003E+03,1.948298070295E+03,2.257677133181E+03, + 2.53658784644E+03,2.780433146279E+03,3.071972537268E+03, + 3.30856116683E+03,3.525421054515E+03),.UNSPECIFIED.); +#481 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#482 = CARTESIAN_POINT('',(1.194223616049E+03,1.219894390801E+03, + 74.60942979372)); +#483 = CARTESIAN_POINT('',(1.039593706748E+03,1.19936074875E+03, + 107.84929370025)); +#484 = CARTESIAN_POINT('',(913.08143316727,1.093831952504E+03, + 133.10678475979)); +#485 = CARTESIAN_POINT('',(912.00984568855,970.53916043029, + 165.68184776873)); +#486 = CARTESIAN_POINT('',(909.89484643157,774.1715654265, + 218.90946550254)); +#487 = CARTESIAN_POINT('',(890.71784650228,702.60466795808, + 248.63787213448)); +#488 = CARTESIAN_POINT('',(851.47887438954,571.73531894139, + 268.38252155664)); +#489 = CARTESIAN_POINT('',(838.04192564068,487.11714622309, + 260.76781375489)); +#490 = CARTESIAN_POINT('',(814.2482964314,335.67627066303, + 214.58674803142)); +#491 = CARTESIAN_POINT('',(788.55406358799,246.82775544822, + 180.36041365827)); +#492 = CARTESIAN_POINT('',(650.85500076073,143.47147053367, + 148.79946647393)); +#493 = CARTESIAN_POINT('',(508.46060315271,127.78852884585, + 139.41291841787)); +#494 = CARTESIAN_POINT('',(347.98806220289,165.07817380997, + 54.328774103047)); +#495 = CARTESIAN_POINT('',(286.92629019415,222.60708693331, + -70.86464506636)); +#496 = CARTESIAN_POINT('',(256.83900263544,346.87256094405, + -232.8353964596)); +#497 = CARTESIAN_POINT('',(252.60730904242,456.52518703908, + -291.7575096856)); +#498 = CARTESIAN_POINT('',(324.88119960101,639.76570313709, + -328.6508643616)); +#499 = CARTESIAN_POINT('',(407.73642100612,706.92778659119, + -345.2085306056)); +#500 = CARTESIAN_POINT('',(576.51995194256,758.96112503242, + -361.341473245)); +#501 = CARTESIAN_POINT('',(660.36986974258,771.11667935032, + -363.8451698411)); +#502 = CARTESIAN_POINT('',(822.59832299497,821.4860566353, + -332.4329207513)); +#503 = CARTESIAN_POINT('',(913.4544349676,853.06646568553, + -294.4031156001)); +#504 = CARTESIAN_POINT('',(1.057438319591E+03,887.5043108215, + -195.8936527858)); +#505 = CARTESIAN_POINT('',(1.134453238261E+03,893.64587626952, + -150.1143904698)); +#506 = CARTESIAN_POINT('',(1.22525177331E+03,975.67090374394, + -78.85577121994)); +#507 = CARTESIAN_POINT('',(1.27107271388E+03,1.051437068749E+03, + -31.8051405617)); +#508 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#509 = PCURVE('',#339,#510); +#510 = DEFINITIONAL_REPRESENTATION('',(#511),#514); +#511 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#512,#513),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,3.525421054515E+03),.PIECEWISE_BEZIER_KNOTS.); +#512 = CARTESIAN_POINT('',(0.,1.)); +#513 = CARTESIAN_POINT('',(3.533404360598E+03,1.)); +#514 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#515 = PCURVE('',#516,#621); +#516 = B_SPLINE_SURFACE_WITH_KNOTS('',3,1,( + (#517,#518) + ,(#519,#520) + ,(#521,#522) + ,(#523,#524) + ,(#525,#526) + ,(#527,#528) + ,(#529,#530) + ,(#531,#532) + ,(#533,#534) + ,(#535,#536) + ,(#537,#538) + ,(#539,#540) + ,(#541,#542) + ,(#543,#544) + ,(#545,#546) + ,(#547,#548) + ,(#549,#550) + ,(#551,#552) + ,(#553,#554) + ,(#555,#556) + ,(#557,#558) + ,(#559,#560) + ,(#561,#562) + ,(#563,#564) + ,(#565,#566) + ,(#567,#568) + ,(#569,#570) + ,(#571,#572) + ,(#573,#574) + ,(#575,#576) + ,(#577,#578) + ,(#579,#580) + ,(#581,#582) + ,(#583,#584) + ,(#585,#586) + ,(#587,#588) + ,(#589,#590) + ,(#591,#592) + ,(#593,#594) + ,(#595,#596) + ,(#597,#598) + ,(#599,#600) + ,(#601,#602) + ,(#603,#604) + ,(#605,#606) + ,(#607,#608) + ,(#609,#610) + ,(#611,#612) + ,(#613,#614) + ,(#615,#616) + ,(#617,#618) + ,(#619,#620 + )),.UNSPECIFIED.,.T.,.F.,.F.,(4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,4),(2,2),(0.,245.93425669822,294.89464339225, + 576.40705430156,599.44015679986,825.35863341498,835.7857673874, + 1.056714115237E+03,1.062201306783E+03,1.308410733039E+03, + 1.308503081198E+03,1.605147086155E+03,1.617815220003E+03, + 1.927844505098E+03,1.948298070295E+03,2.226134846647E+03, + 2.257677133181E+03,2.504085355645E+03,2.53658784644E+03, + 2.760245383322E+03,2.780433146279E+03,3.06139843273E+03, + 3.071972537268E+03,3.30856116683E+03,3.32614492816E+03, + 3.525421054515E+03),(0.,1.),.UNSPECIFIED.); +#517 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#518 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#519 = CARTESIAN_POINT('',(1.202713388734E+03,1.201284356179E+03, + 62.853462083628)); +#520 = CARTESIAN_POINT('',(1.166057269021E+03,1.161560747493E+03, + 55.481330741842)); +#521 = CARTESIAN_POINT('',(1.088086272215E+03,1.202523244816E+03, + 95.776331213073)); +#522 = CARTESIAN_POINT('',(1.042033497262E+03,1.156578280013E+03, + 75.069470515965)); +#523 = CARTESIAN_POINT('',(1.000569009003E+03,1.16381934727E+03, + 115.57506677041)); +#524 = CARTESIAN_POINT('',(985.85302939548,1.109715971885E+03, + 86.285597020484)); +#525 = CARTESIAN_POINT('',(987.68910607487,1.156065107357E+03, + 118.21176644974)); +#526 = CARTESIAN_POINT('',(976.90716960524,1.100777675124E+03, + 88.464087217588)); +#527 = CARTESIAN_POINT('',(917.94258591393,1.097886828629E+03, + 132.13628191005)); +#528 = CARTESIAN_POINT('',(919.69262837613,1.033667902514E+03, + 105.05393389749)); +#529 = CARTESIAN_POINT('',(912.53346093188,988.79012419722, + 160.86740524197)); +#530 = CARTESIAN_POINT('',(886.47235429077,943.30199597359, + 128.4209161799)); +#531 = CARTESIAN_POINT('',(910.99845453676,876.77245824724, + 191.1031862944)); +#532 = CARTESIAN_POINT('',(885.37306115443,841.23787057247, + 156.08653102374)); +#533 = CARTESIAN_POINT('',(910.90907232865,868.33760333009, + 193.3847150011)); +#534 = CARTESIAN_POINT('',(885.16365639997,833.65236176629, + 158.21717617621)); +#535 = CARTESIAN_POINT('',(909.93561874161,777.95707997853, + 217.88335973648)); +#536 = CARTESIAN_POINT('',(881.63500679981,753.02055248361, + 181.47048635563)); +#537 = CARTESIAN_POINT('',(892.37442693947,708.94717919312, + 246.02734063944)); +#538 = CARTESIAN_POINT('',(867.17033879378,691.91495175403, + 204.56967545344)); +#539 = CARTESIAN_POINT('',(872.44397768611,641.67268822425, + 257.79401451541)); +#540 = CARTESIAN_POINT('',(849.33448442783,632.42902426024, + 213.54449494129)); +#541 = CARTESIAN_POINT('',(871.56150893165,638.71468072271, + 258.27714526472)); +#542 = CARTESIAN_POINT('',(848.56303278912,629.76125572807, + 213.90612685975)); +#543 = CARTESIAN_POINT('',(851.944150604,573.28710258968,268.14839932447 + )); +#544 = CARTESIAN_POINT('',(831.77195714405,569.67684033369, + 221.17796622322)); +#545 = CARTESIAN_POINT('',(838.69659981287,491.20650535871, + 261.12675301092)); +#546 = CARTESIAN_POINT('',(822.32877333063,494.244185359,212.90715989339 + )); +#547 = CARTESIAN_POINT('',(827.19916554756,418.1049870085, + 239.71225054204)); +#548 = CARTESIAN_POINT('',(812.08088821017,429.01879743557, + 193.01703501534)); +#549 = CARTESIAN_POINT('',(826.92177616239,416.34000001561, + 239.18471058912)); +#550 = CARTESIAN_POINT('',(811.81977666655,427.43488921949, + 192.53594382717)); +#551 = CARTESIAN_POINT('',(814.2529446594,335.70585554527, + 214.59576977926)); +#552 = CARTESIAN_POINT('',(799.26201525971,354.65684215134, + 170.51433605328)); +#553 = CARTESIAN_POINT('',(788.57332926242,246.8943796104, + 180.38607780955)); +#554 = CARTESIAN_POINT('',(761.49384329249,278.00419854781, + 150.99050583725)); +#555 = CARTESIAN_POINT('',(727.55830204535,201.0446264089, + 166.38004646877)); +#556 = CARTESIAN_POINT('',(706.86217902163,236.99792194868, + 138.46880064011)); +#557 = CARTESIAN_POINT('',(727.53542015965,201.0274415914, + 166.37479790344)); +#558 = CARTESIAN_POINT('',(706.84168970447,236.98255061732, + 138.46410680441)); +#559 = CARTESIAN_POINT('',(653.99457325372,145.82801924528, + 149.51906383064)); +#560 = CARTESIAN_POINT('',(640.98616107366,187.60217057505, + 123.38504922427)); +#561 = CARTESIAN_POINT('',(520.01409755392,129.1433526287, + 140.19551295739)); +#562 = CARTESIAN_POINT('',(515.63408268306,174.59673783698, + 119.03753895297)); +#563 = CARTESIAN_POINT('',(437.34286343304,144.39625058295, + 101.59468679523)); +#564 = CARTESIAN_POINT('',(446.06923991212,190.76179806199, + 82.153564370601)); +#565 = CARTESIAN_POINT('',(434.05674247195,145.07805098043, + 99.963248198461)); +#566 = CARTESIAN_POINT('',(443.25212064465,191.47618320384, + 80.52911384442)); +#567 = CARTESIAN_POINT('',(353.11819862887,163.88606352861, + 57.048823685604)); +#568 = CARTESIAN_POINT('',(372.33230990464,210.96326635596, + 36.422971651468)); +#569 = CARTESIAN_POINT('',(294.56812450218,215.63274158357, + -55.6794103871)); +#570 = CARTESIAN_POINT('',(323.9734395583,260.00308236508, + -70.05246522855)); +#571 = CARTESIAN_POINT('',(273.484361894,278.87011712882,-144.0069789618 + )); +#572 = CARTESIAN_POINT('',(309.96990672082,317.83998914768, + -145.4385475206)); +#573 = CARTESIAN_POINT('',(272.34823817989,282.81685294064, + -149.3435718885)); +#574 = CARTESIAN_POINT('',(309.15032680045,321.61982704475, + -150.0378589026)); +#575 = CARTESIAN_POINT('',(258.32216927759,340.74683739837, + -224.8509739688)); +#576 = CARTESIAN_POINT('',(298.00397772363,379.41020524188, + -216.0373017653)); +#577 = CARTESIAN_POINT('',(253.57740885281,434.68149063597, + -279.5413023503)); +#578 = CARTESIAN_POINT('',(297.82258148459,466.96967885751, + -263.8983790846)); +#579 = CARTESIAN_POINT('',(283.30469713481,533.10288732123, + -306.7925579625)); +#580 = CARTESIAN_POINT('',(331.82221430143,553.17107491283, + -281.2540313494)); +#581 = CARTESIAN_POINT('',(286.74073372781,543.0657939886, + -309.1814581335)); +#582 = CARTESIAN_POINT('',(335.77156889379,561.8803279774, + -282.8862857798)); +#583 = CARTESIAN_POINT('',(320.8881309504,629.64182638578, + -326.6125390848)); +#584 = CARTESIAN_POINT('',(374.50555301259,637.4080935637,-296.23318306) + ); +#585 = CARTESIAN_POINT('',(389.08542892668,691.00679267604, + -341.3368003541)); +#586 = CARTESIAN_POINT('',(436.07690300895,695.92864579526, + -300.8870382141)); +#587 = CARTESIAN_POINT('',(476.8984363254,727.68416908525,-351.701981371 + )); +#588 = CARTESIAN_POINT('',(516.77450321137,720.80646129913, + -308.6004078064)); +#589 = CARTESIAN_POINT('',(487.29485514593,731.45441490903,-352.81301457 + )); +#590 = CARTESIAN_POINT('',(526.27614657826,723.51878420151, + -309.4286250346)); +#591 = CARTESIAN_POINT('',(570.00187882977,756.95170443089, + -360.7184521536)); +#592 = CARTESIAN_POINT('',(601.66997642775,743.77912017005, + -315.2080405631)); +#593 = CARTESIAN_POINT('',(646.52121639985,769.02093802401, + -363.3961926916)); +#594 = CARTESIAN_POINT('',(670.55612544275,754.76284334854, + -315.760270869)); +#595 = CARTESIAN_POINT('',(721.95555275757,790.33318722791, + -351.7919098269)); +#596 = CARTESIAN_POINT('',(737.24921538289,775.46999639197, + -302.8465069036)); +#597 = CARTESIAN_POINT('',(728.14098252971,792.15854149325, + -350.7226686196)); +#598 = CARTESIAN_POINT('',(742.77606882474,777.20105708491, + -301.6937851866)); +#599 = CARTESIAN_POINT('',(819.39423320107,820.49123726516, + -333.0533277434)); +#600 = CARTESIAN_POINT('',(825.26120343947,803.20646150145, + -283.2582232627)); +#601 = CARTESIAN_POINT('',(906.8670605001,850.78109134058,-297.134263731 + )); +#602 = CARTESIAN_POINT('',(902.70679740363,829.83344764311, + -249.9612222077)); +#603 = CARTESIAN_POINT('',(987.15639623033,870.68143078649, + -243.9466956622)); +#604 = CARTESIAN_POINT('',(975.58776570465,847.26500608648, + -200.098245837)); +#605 = CARTESIAN_POINT('',(990.05418316001,871.38747621119, + -241.9958613723)); +#606 = CARTESIAN_POINT('',(978.23455491646,847.91173479218, + -198.2851920716)); +#607 = CARTESIAN_POINT('',(1.057438319591E+03,887.5043108215, + -195.8936527858)); +#608 = CARTESIAN_POINT('',(1.04014671822E+03,863.38035893063, + -155.8209105862)); +#609 = CARTESIAN_POINT('',(1.134453238261E+03,893.64587626952, + -150.1143904698)); +#610 = CARTESIAN_POINT('',(1.100378372713E+03,885.72102739646, + -113.3455323739)); +#611 = CARTESIAN_POINT('',(1.185348720031E+03,939.62352654996, + -110.1716562067)); +#612 = CARTESIAN_POINT('',(1.148441143176E+03,924.5716438537, + -76.3084220365)); +#613 = CARTESIAN_POINT('',(1.188885451155E+03,943.04450187011, + -107.3231182047)); +#614 = CARTESIAN_POINT('',(1.151680562723E+03,927.33569807066, + -73.7903709501)); +#615 = CARTESIAN_POINT('',(1.232212109091E+03,987.83013487148, + -71.30094780836)); +#616 = CARTESIAN_POINT('',(1.190493342512E+03,962.39815064055, + -43.33013174535)); +#617 = CARTESIAN_POINT('',(1.268987723051E+03,1.056007479873E+03, + -28.91800968385)); +#618 = CARTESIAN_POINT('',(1.220653496216E+03,1.041882904981E+03, + -20.11921921824)); +#619 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#620 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#621 = DEFINITIONAL_REPRESENTATION('',(#622),#626); +#622 = LINE('',#623,#624); +#623 = CARTESIAN_POINT('',(0.,0.)); +#624 = VECTOR('',#625,1.); +#625 = DIRECTION('',(1.,0.)); +#626 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#627 = ORIENTED_EDGE('',*,*,#456,.F.); +#628 = ADVANCED_FACE('',(#629),#516,.F.); +#629 = FACE_BOUND('',#630,.F.); +#630 = EDGE_LOOP('',(#631,#632,#654,#698)); +#631 = ORIENTED_EDGE('',*,*,#478,.T.); +#632 = ORIENTED_EDGE('',*,*,#633,.T.); +#633 = EDGE_CURVE('',#457,#634,#636,.T.); +#634 = VERTEX_POINT('',#635); +#635 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#636 = SEAM_CURVE('',#637,(#640,#647),.PCURVE_S1.); +#637 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#638,#639),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,1.),.PIECEWISE_BEZIER_KNOTS.); +#638 = CARTESIAN_POINT('',(1.245358597967E+03,1.107803782579E+03, + 3.801739338516)); +#639 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#640 = PCURVE('',#516,#641); +#641 = DEFINITIONAL_REPRESENTATION('',(#642),#646); +#642 = LINE('',#643,#644); +#643 = CARTESIAN_POINT('',(3.525421054515E+03,0.)); +#644 = VECTOR('',#645,1.); +#645 = DIRECTION('',(0.,1.)); +#646 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#647 = PCURVE('',#516,#648); +#648 = DEFINITIONAL_REPRESENTATION('',(#649),#653); +#649 = LINE('',#650,#651); +#650 = CARTESIAN_POINT('',(0.,0.)); +#651 = VECTOR('',#652,1.); +#652 = DIRECTION('',(0.,1.)); +#653 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#654 = ORIENTED_EDGE('',*,*,#655,.F.); +#655 = EDGE_CURVE('',#634,#634,#656,.T.); +#656 = SURFACE_CURVE('',#657,(#686,#692),.PCURVE_S1.); +#657 = B_SPLINE_CURVE_WITH_KNOTS('',3,(#658,#659,#660,#661,#662,#663, + #664,#665,#666,#667,#668,#669,#670,#671,#672,#673,#674,#675,#676, + #677,#678,#679,#680,#681,#682,#683,#684,#685),.UNSPECIFIED.,.T.,.F., + (4,2,2,2,2,2,2,2,2,2,2,2,2,4),(0.,222.00403323393,520.32072537362, + 745.0484854878,953.89230726678,1.181098004649E+03,1.448960920875E+03 + ,1.740258804631E+03,2.009524501033E+03,2.26042949843E+03, + 2.49166430102E+03,2.763514154257E+03,3.002499932648E+03, + 3.182385827244E+03),.UNSPECIFIED.); +#658 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#659 = CARTESIAN_POINT('',(1.166057269021E+03,1.161560747493E+03, + 55.481330741842)); +#660 = CARTESIAN_POINT('',(1.042033497262E+03,1.156578280013E+03, + 75.069470515965)); +#661 = CARTESIAN_POINT('',(932.22201469412,1.064980261565E+03, + 96.992738991696)); +#662 = CARTESIAN_POINT('',(886.64908261109,959.71037773339, + 123.97324205157)); +#663 = CARTESIAN_POINT('',(884.5575816291,765.52448550344, + 176.60948501576)); +#664 = CARTESIAN_POINT('',(868.90853507648,697.7121631419, + 203.69503286265)); +#665 = CARTESIAN_POINT('',(832.66209593812,576.8234741981,221.9338703004 + )); +#666 = CARTESIAN_POINT('',(822.80072005024,497.24801566188, + 213.82316149551)); +#667 = CARTESIAN_POINT('',(800.93710398683,358.09122161299, + 171.38805916219)); +#668 = CARTESIAN_POINT('',(762.71094539038,278.91774979948, + 151.26946848406)); +#669 = CARTESIAN_POINT('',(641.06421339458,187.61027077289, + 123.38775306176)); +#670 = CARTESIAN_POINT('',(515.65485194608,174.59191160042, + 119.0485510237)); +#671 = CARTESIAN_POINT('',(376.34310968249,206.96433729765, + 45.184073566389)); +#672 = CARTESIAN_POINT('',(324.51022574305,257.78606663841, + -67.16275104239)); +#673 = CARTESIAN_POINT('',(298.19714326979,366.46344939827, + -208.8155913441)); +#674 = CARTESIAN_POINT('',(295.57480912397,461.27076097379, + -262.750968003)); +#675 = CARTESIAN_POINT('',(358.90158098079,621.82708730657, + -295.0771239155)); +#676 = CARTESIAN_POINT('',(426.95073213349,693.11518920266, + -300.0147256701)); +#677 = CARTESIAN_POINT('',(581.48562987514,740.75589555926, + -314.7857322205)); +#678 = CARTESIAN_POINT('',(661.66650754441,752.00275713146, + -317.4815650448)); +#679 = CARTESIAN_POINT('',(814.09483484646,799.32934980291, + -287.966911545)); +#680 = CARTESIAN_POINT('',(897.66012529831,828.62639233363, + -253.4140041589)); +#681 = CARTESIAN_POINT('',(1.039127481215E+03,862.46233798558, + -156.6262749376)); +#682 = CARTESIAN_POINT('',(1.107444291677E+03,887.37380500749, + -108.5069618489)); +#683 = CARTESIAN_POINT('',(1.190493342512E+03,962.39815064055, + -43.33013174535)); +#684 = CARTESIAN_POINT('',(1.220653496216E+03,1.041882904981E+03, + -20.11921921824)); +#685 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#686 = PCURVE('',#516,#687); +#687 = DEFINITIONAL_REPRESENTATION('',(#688),#691); +#688 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#689,#690),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,3.182385827244E+03),.PIECEWISE_BEZIER_KNOTS.); +#689 = CARTESIAN_POINT('',(0.,1.)); +#690 = CARTESIAN_POINT('',(3.525421054515E+03,1.)); +#691 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#692 = PCURVE('',#166,#693); +#693 = DEFINITIONAL_REPRESENTATION('',(#694),#697); +#694 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#695,#696),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,3.182385827244E+03),.PIECEWISE_BEZIER_KNOTS.); +#695 = CARTESIAN_POINT('',(0.,0.)); +#696 = CARTESIAN_POINT('',(3.18959189978E+03,0.)); +#697 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#698 = ORIENTED_EDGE('',*,*,#633,.F.); +#699 = ADVANCED_FACE('',(#700),#166,.F.); +#700 = FACE_BOUND('',#701,.F.); +#701 = EDGE_LOOP('',(#702,#703,#723,#724)); +#702 = ORIENTED_EDGE('',*,*,#655,.T.); +#703 = ORIENTED_EDGE('',*,*,#704,.T.); +#704 = EDGE_CURVE('',#634,#22,#705,.T.); +#705 = SEAM_CURVE('',#706,(#709,#716),.PCURVE_S1.); +#706 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#707,#708),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,1.),.PIECEWISE_BEZIER_KNOTS.); +#707 = CARTESIAN_POINT('',(1.200851639897E+03,1.085289630385E+03, + 7.300829836965)); +#708 = CARTESIAN_POINT('',(1.212034582291E+03,1.068555055781E+03, + 41.86809487572)); +#709 = PCURVE('',#166,#710); +#710 = DEFINITIONAL_REPRESENTATION('',(#711),#715); +#711 = LINE('',#712,#713); +#712 = CARTESIAN_POINT('',(3.18959189978E+03,0.)); +#713 = VECTOR('',#714,1.); +#714 = DIRECTION('',(0.,1.)); +#715 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#716 = PCURVE('',#166,#717); +#717 = DEFINITIONAL_REPRESENTATION('',(#718),#722); +#718 = LINE('',#719,#720); +#719 = CARTESIAN_POINT('',(0.,0.)); +#720 = VECTOR('',#721,1.); +#721 = DIRECTION('',(0.,1.)); +#722 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#723 = ORIENTED_EDGE('',*,*,#21,.F.); +#724 = ORIENTED_EDGE('',*,*,#704,.F.); +#725 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#729)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#726,#727,#728)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#726 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#727 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#728 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#729 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#726, + 'distance_accuracy_value','confusion accuracy'); +#730 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +ENDSEC; +END-ISO-10303-21; diff --git a/tests/test_magnet_coils.py b/tests/test_magnet_coils.py index 527e42c..be6d5e6 100644 --- a/tests/test_magnet_coils.py +++ b/tests/test_magnet_coils.py @@ -41,7 +41,7 @@ def coil_set(): @pytest.fixture def coil_set_from_geom(): - geom_file = Path("files_for_tests") / "magnet_set.step" + geom_file = Path("files_for_tests") / "magnet_set.cub5" coil_set_from_geom_obj = magnet_coils.MagnetSet(geom_file) return coil_set_from_geom_obj @@ -112,10 +112,14 @@ def test_magnets_from_geom_cubit_import(coil_set_from_geom): volume_ids_exp = list(range(1, 2)) + # test cub5 import + coil_set_from_geom.import_geom_cubit() assert coil_set_from_geom.volume_ids == volume_ids_exp + # test step import + cubit.cmd("new") coil_set_from_geom.geom_filename = "magnet_set.cub5"