Skip to content

Commit 0fda2d2

Browse files
committed
added support to pass a namespace to scad_import to import directories into a certain namespace
1 parent 0765268 commit 0fda2d2

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

solid/scad_import.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def init_func(self, *args, **kwargs):
116116
module_cache_by_name = {}
117117
module_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

Comments
 (0)