@@ -116,7 +116,7 @@ def init_func(self, *args, **kwargs):
116116module_cache_by_name = {}
117117module_cache_by_resolved_filename = {}
118118
119- def import_scad (scad_file_or_dir : PathStr ) -> SimpleNamespace :
119+ def import_scad (scad_file_or_dir : PathStr , dest_namespace = None ) -> SimpleNamespace :
120120 '''
121121 Recursively look in current directory & OpenSCAD library directories for
122122 OpenSCAD files. Create Python mappings for all OpenSCAD modules & functions
@@ -135,7 +135,7 @@ def import_scad(scad_file_or_dir: PathStr) -> SimpleNamespace:
135135 if not resolved_scad :
136136 raise ValueError (f'Could not find .scad files at or under { scad_file_or_dir } .' )
137137
138- namespace = _import_scad (resolved_scad )
138+ namespace = _import_scad (resolved_scad , dest_namespace )
139139
140140 if not namespace :
141141 raise ValueError (f'Could not import .scad file { resolved_scad .as_posix ()} .' )
@@ -144,7 +144,7 @@ def import_scad(scad_file_or_dir: PathStr) -> SimpleNamespace:
144144 module_cache_by_resolved_filename [resolved_scad ] = namespace
145145 return namespace
146146
147- def _import_scad (scad : Path ) -> Optional [SimpleNamespace ]:
147+ def _import_scad (scad : Path , dest_namespace = None ) -> Optional [SimpleNamespace ]:
148148 '''
149149 cases:
150150 single scad file:
@@ -158,14 +158,14 @@ def _import_scad(scad: Path) -> Optional[SimpleNamespace]:
158158 if not scad .exists ():
159159 return None
160160
161+ if dest_namespace == None :
162+ dest_namespace = SimpleNamespace ()
161163 if scad .is_file ():
162- namespace = SimpleNamespace ()
163- use (scad .absolute (), dest_namespace_dict = namespace .__dict__ )
164- return namespace
164+ use (scad .absolute (), dest_namespace_dict = dest_namespace .__dict__ )
165+ return dest_namespace
165166
166167 assert (scad .is_dir ())
167168
168- namespace = SimpleNamespace ()
169169 for f in scad .iterdir ():
170170 #skip non .scad files
171171 if f .suffix != ".scad" :
@@ -175,9 +175,9 @@ def _import_scad(scad: Path) -> Optional[SimpleNamespace]:
175175 subspace = _import_scad (f )
176176 if subspace :
177177 identifier = escpape_openscad_identifier (f .stem )
178- setattr (namespace , identifier , subspace )
178+ setattr (dest_namespace , identifier , subspace )
179179
180- return namespace
180+ return dest_namespace
181181
182182 assert (False )
183183
0 commit comments