home
·
contact
·
privacy
projects
/
bricksplom
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9b02795
)
Add --ldraw=fill_n_studs mode.
master
author
Plom Heller
<plom@plomlompom.com>
Sun, 2 Aug 2026 19:16:51 +0000
(21:16 +0200)
committer
Plom Heller
<plom@plomlompom.com>
Sun, 2 Aug 2026 19:16:51 +0000
(21:16 +0200)
bricksplom.py
patch
|
blob
|
history
diff --git
a/bricksplom.py
b/bricksplom.py
index 6fd40aff591580629ce405e5657b4252a2570a38..b12064c0fdd48630d5dd5c04e664c69546c55222 100755
(executable)
--- a/
bricksplom.py
+++ b/
bricksplom.py
@@
-50,12
+50,14
@@
PARAM_Q_DELIMITERS = {CHAR_ATTR_EQ, CHAR_TEXTCONTAINS}
TOK_SORT_BOX = 'box'
TOK_SORT_ID = 'id'
TOK_SORT_BOX = 'box'
TOK_SORT_ID = 'id'
+LDRAW_MODE_FILL_N_STUDS = 'fill_n_studs'
LDRAW_MODE_FILL_PATHS = 'fill_paths'
LDRAW_MODE_FILL_PATHS = 'fill_paths'
-LDRAW_MODE_VERIFY_PATHS = 'verify_paths'
LDRAW_MODE_VERIFY_N_STUDS = 'verify_n_studs'
LDRAW_MODE_VERIFY_N_STUDS = 'verify_n_studs'
-LDRAW_MODES = {LDRAW_MODE_FILL_PATHS,
- LDRAW_MODE_VERIFY_PATHS,
- LDRAW_MODE_VERIFY_N_STUDS}
+LDRAW_MODE_VERIFY_PATHS = 'verify_paths'
+LDRAW_MODES = {LDRAW_MODE_FILL_N_STUDS,
+ LDRAW_MODE_FILL_PATHS,
+ LDRAW_MODE_VERIFY_N_STUDS,
+ LDRAW_MODE_VERIFY_PATHS}
ATTR_DESCS: dict[str, str] = {
'n_studs': 'number of studs',
ATTR_DESCS: dict[str, str] = {
'n_studs': 'number of studs',
@@
-706,6
+708,12
@@
class BricksDb:
assert design.direct_attrs is not None
design.direct_attrs.ldraw = filename
self._check_consistencies()
assert design.direct_attrs is not None
design.direct_attrs.ldraw = filename
self._check_consistencies()
+ if LDRAW_MODE_FILL_N_STUDS in self._ldraw_modes:
+ for design in [d for d in self._designs_ldrawed()
+ if d.n_studs != 1]:
+ assert design.direct_attrs is not None
+ design.direct_attrs.n_studs\
+ = self._ldraw_studs_count(design.ldraw)
@property
def boxes(
@property
def boxes(
@@
-719,6
+727,13
@@
class BricksDb:
collected[box_id] = Box(box_id, bricks_set, db=self)
return collected
collected[box_id] = Box(box_id, bricks_set, db=self)
return collected
+ def _designs_ldrawed(
+ self
+ ) -> tuple[BrickDesign, ...]:
+ return tuple(design for design in self.designs.values()
+ if (not design.alternate_to)
+ and design.ldraw and design.ldraw != '!')
+
def _ldraw_studs_count(
self,
filename: str
def _ldraw_studs_count(
self,
filename: str
@@
-790,10
+805,7
@@
class BricksDb:
if v != 0]:
fails += [f'invalid count for brick of ID: {brick_id} ({count})']
if v != 0]:
fails += [f'invalid count for brick of ID: {brick_id} ({count})']
- for design in [
- design for design in self.designs.values()
- if (not design.alternate_to)
- and design.ldraw and design.ldraw != '!']:
+ for design in self._designs_ldrawed():
# hunt for dangling Design.ldraw references
if LDRAW_MODE_VERIFY_PATHS in self._ldraw_modes:
if not self._path_ldraw.joinpath(design.ldraw).exists():
# hunt for dangling Design.ldraw references
if LDRAW_MODE_VERIFY_PATHS in self._ldraw_modes:
if not self._path_ldraw.joinpath(design.ldraw).exists():