Tests.py now works in projects and makes tests.md and tests.html.
NopSCADlib blurb now scraped from libtest.scad. libtest.scad no longer required and lack of it is used to detect a project.
This commit is contained in:
parent
78ce51d045
commit
5fa33d7c4d
17
libtest.scad
17
libtest.scad
|
@ -17,6 +17,23 @@
|
||||||
// If not, see <https://www.gnu.org/licenses/>.
|
// If not, see <https://www.gnu.org/licenses/>.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
//!# NopSCADlib
|
||||||
|
//! An ever expanding library of parts modelled in OpenSCAD useful for 3D printers and enclosures for electronics, etc.
|
||||||
|
//!
|
||||||
|
//! It contains lots of vitamins (the RepRap term for non-printed parts), some general purpose printed parts and some utilities.
|
||||||
|
//! There are also Python scripts to generate Bills of Materials (BOMs),
|
||||||
|
//! STL files for all the printed parts, DXF files for CNC routed parts in a project and a manual containing assembly
|
||||||
|
//! instructions and exploded views by scraping markdown embedded in OpenSCAD comments, [see scripts](scripts/readme.md).
|
||||||
|
//!
|
||||||
|
//! A simple example project can be found [here](examples/MainsBreakOutBox/readme.md).
|
||||||
|
//!
|
||||||
|
//! For more examples of what it can make see the [gallery](gallery/readme.md).
|
||||||
|
//!
|
||||||
|
//! The license is GNU General Public License v3.0, see [COPYING](COPYING).
|
||||||
|
//!
|
||||||
|
//! See [usage](docs/usage.md) for requirements, installation instructions and a usage guide.
|
||||||
|
//!
|
||||||
|
//! <img src="libtest.png" width="100%"/>
|
||||||
//
|
//
|
||||||
// This file shows all the parts in the library.
|
// This file shows all the parts in the library.
|
||||||
//
|
//
|
||||||
|
|
10
readme.md
10
readme.md
|
@ -1,10 +1,12 @@
|
||||||
# NopSCADlib
|
# NopSCADlib
|
||||||
An ever expanding library of parts modelled in OpenSCAD useful for 3D printers and enclosures for electronics, etc.
|
An ever expanding library of parts modelled in OpenSCAD useful for 3D printers and enclosures for electronics, etc.
|
||||||
|
|
||||||
It contains lots of vitamins (the RepRap term for non-printed parts), some general purpose printed parts and
|
It contains lots of vitamins (the RepRap term for non-printed parts), some general purpose printed parts and some utilities.
|
||||||
some utilities. There are also Python scripts to generate Bills of Materials (BOMs),
|
There are also Python scripts to generate Bills of Materials (BOMs),
|
||||||
STL files for all the printed parts, DXF files for CNC routed parts in a project and a manual containing assembly
|
STL files for all the printed parts, DXF files for CNC routed parts in a project and a manual containing assembly
|
||||||
instructions and exploded views by scraping markdown embedded in OpenSCAD comments, [see scripts](scripts/readme.md). A simple example project can be found [here](examples/MainsBreakOutBox/readme.md).
|
instructions and exploded views by scraping markdown embedded in OpenSCAD comments, [see scripts](scripts/readme.md).
|
||||||
|
|
||||||
|
A simple example project can be found [here](examples/MainsBreakOutBox/readme.md).
|
||||||
|
|
||||||
For more examples of what it can make see the [gallery](gallery/readme.md).
|
For more examples of what it can make see the [gallery](gallery/readme.md).
|
||||||
|
|
||||||
|
|
|
@ -90,8 +90,6 @@ def usage():
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def tests(tests):
|
def tests(tests):
|
||||||
doc_base_name = "readme"
|
|
||||||
doc_name = doc_base_name + ".md"
|
|
||||||
scad_dir = "tests"
|
scad_dir = "tests"
|
||||||
deps_dir = scad_dir + "/deps"
|
deps_dir = scad_dir + "/deps"
|
||||||
png_dir = scad_dir + "/png"
|
png_dir = scad_dir + "/png"
|
||||||
|
@ -109,14 +107,28 @@ def tests(tests):
|
||||||
#
|
#
|
||||||
png_name = "libtest.png"
|
png_name = "libtest.png"
|
||||||
scad_name = "libtest.scad"
|
scad_name = "libtest.scad"
|
||||||
if not os.path.isfile(png_name):
|
if os.path.isfile(scad_name):
|
||||||
openscad.run(colour_scheme, "--projection=p", "--imgsize=%d,%d" % (w, h), "--camera=0,0,0,50,0,340,500", "--autocenter", "--viewall", "-o", png_name, scad_name);
|
libtest = True
|
||||||
do_cmd(["magick", png_name, "-trim", "-resize", "1280", "-bordercolor", background, "-border", "10", png_name])
|
lib_blurb = scrape_blurb(scad_name)
|
||||||
|
if not os.path.isfile(png_name):
|
||||||
|
openscad.run(colour_scheme, "--projection=p", "--imgsize=%d,%d" % (w, h), "--camera=0,0,0,50,0,340,500", "--autocenter", "--viewall", "-o", png_name, scad_name);
|
||||||
|
do_cmd(["magick", png_name, "-trim", "-resize", "1280", "-bordercolor", background, "-border", "10", png_name])
|
||||||
|
else:
|
||||||
|
#
|
||||||
|
# Project tests so just a title
|
||||||
|
#
|
||||||
|
libtest = False
|
||||||
|
project = ' '.join(word[0].upper() + word[1:] for word in os.path.basename(os.getcwd()).split('_'))
|
||||||
|
lib_blurb = '#' + project + ' Tests\n'
|
||||||
|
|
||||||
|
doc_base_name = "readme" if libtest else "tests"
|
||||||
|
doc_name = doc_base_name + ".md"
|
||||||
#
|
#
|
||||||
# List of individual part files
|
# List of individual part files
|
||||||
#
|
#
|
||||||
scads = [i for i in sorted(os.listdir(scad_dir), key = lambda s: s.lower()) if i[-5:] == ".scad"]
|
|
||||||
|
|
||||||
|
scads = [i for i in sorted(os.listdir(scad_dir), key = lambda s: s.lower()) if i[-5:] == ".scad"]
|
||||||
|
types = []
|
||||||
for scad in scads:
|
for scad in scads:
|
||||||
base_name = scad[:-5]
|
base_name = scad[:-5]
|
||||||
if not tests or base_name in tests:
|
if not tests or base_name in tests:
|
||||||
|
@ -133,13 +145,15 @@ def tests(tests):
|
||||||
if is_plural(base_name) and os.path.isfile(vits_name):
|
if is_plural(base_name) and os.path.isfile(vits_name):
|
||||||
objects_name = vits_name
|
objects_name = vits_name
|
||||||
|
|
||||||
locations = [
|
locations = []
|
||||||
('vitamins/' + depluralise(base_name) + '.scad', 'Vitamins'),
|
if os.path.isdir('vitamins'):
|
||||||
('printed/' + base_name + '.scad', 'Printed'),
|
locations.append(('vitamins/' + depluralise(base_name) + '.scad', 'Vitamins'))
|
||||||
('tests/' + base_name + '.scad', 'Tests'),
|
if os.path.isdir('printed'):
|
||||||
('utils/' + base_name + '.scad', 'Utilities'),
|
locations.append(('printed/' + base_name + '.scad', 'Printed'))
|
||||||
('utils/core/' + base_name + '.scad', 'Core Utilities'),
|
if os.path.isdir('utils'):
|
||||||
]
|
locations.append(('utils/' + base_name + '.scad', 'Utilities'))
|
||||||
|
if libtest and os.path.isdir('utils/core'):
|
||||||
|
locations.append(('utils/core/' + base_name + '.scad', 'Core Utilities'))
|
||||||
|
|
||||||
for name, type in locations:
|
for name, type in locations:
|
||||||
if os.path.isfile(name):
|
if os.path.isfile(name):
|
||||||
|
@ -149,14 +163,17 @@ def tests(tests):
|
||||||
print("Can't find implementation!")
|
print("Can't find implementation!")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
vsplit = "AJR" + chr(ord('Z') + 1)
|
if libtest:
|
||||||
vtype = locations[0][1]
|
vsplit = "AJR" + chr(ord('Z') + 1)
|
||||||
types = [vtype + ' ' + vsplit[i] + '-' + chr(ord(vsplit[i + 1]) - 1) for i in range(len(vsplit) - 1)] + [loc[1] for loc in locations[1 :]]
|
vtype = locations[0][1]
|
||||||
if type == vtype:
|
types = [vtype + ' ' + vsplit[i] + '-' + chr(ord(vsplit[i + 1]) - 1) for i in range(len(vsplit) - 1)] + [loc[1] for loc in locations[1 :]]
|
||||||
for i in range(1, len(vsplit)):
|
if type == vtype:
|
||||||
if cap_name[0] < vsplit[i]:
|
for i in range(1, len(vsplit)):
|
||||||
type = types[i - 1]
|
if cap_name[0] < vsplit[i]:
|
||||||
break
|
type = types[i - 1]
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
types = [loc[1] for loc in locations]
|
||||||
|
|
||||||
for t in types:
|
for t in types:
|
||||||
if not t in bodies:
|
if not t in bodies:
|
||||||
|
@ -252,24 +269,7 @@ def tests(tests):
|
||||||
usage()
|
usage()
|
||||||
|
|
||||||
with open(doc_name, "wt") as doc_file:
|
with open(doc_name, "wt") as doc_file:
|
||||||
print('# NopSCADlib', file = doc_file)
|
print(lib_blurb, file = doc_file)
|
||||||
print('''\
|
|
||||||
An ever expanding library of parts modelled in OpenSCAD useful for 3D printers and enclosures for electronics, etc.
|
|
||||||
|
|
||||||
It contains lots of vitamins (the RepRap term for non-printed parts), some general purpose printed parts and
|
|
||||||
some utilities. There are also Python scripts to generate Bills of Materials (BOMs),
|
|
||||||
STL files for all the printed parts, DXF files for CNC routed parts in a project and a manual containing assembly
|
|
||||||
instructions and exploded views by scraping markdown embedded in OpenSCAD comments, [see scripts](scripts/readme.md). A simple example project can be found [here](examples/MainsBreakOutBox/readme.md).
|
|
||||||
|
|
||||||
For more examples of what it can make see the [gallery](gallery/readme.md).
|
|
||||||
|
|
||||||
The license is GNU General Public License v3.0, see [COPYING](COPYING).
|
|
||||||
|
|
||||||
See [usage](docs/usage.md) for requirements, installation instructions and a usage guide.
|
|
||||||
|
|
||||||
<img src="libtest.png" width="100%"/>\n
|
|
||||||
''', file = doc_file)
|
|
||||||
|
|
||||||
print('## Table of Contents<a name="top"/>', file = doc_file)
|
print('## Table of Contents<a name="top"/>', file = doc_file)
|
||||||
print('<table><tr>', file = doc_file)
|
print('<table><tr>', file = doc_file)
|
||||||
n = 0
|
n = 0
|
||||||
|
|
Loading…
Reference in New Issue