discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Design/work flow automation with documentation generation

R
royasutton
Wed, Mar 15, 2017 8:21 PM

openscad-amu https://royasutton.github.io/openscad-amu  is being developed
to support the construction of automated work flows and Doxygen-based
documentation for OpenSCAD designs.

It incorporated two distinct but complementary features that may be used
together or independently: (1) design automation and (2) design
documentation.

If you are already familiar with Doxygen, adding basic documentation to your
OpenSCAD designs using openscad-amu is easy. Simply markup each of your
design files with the special Doxygen commands, reference each file in a
Makefile, and type /make/ to generate your documentation. You can start from
a ready-made template created by the  bootstrap
https://github.com/royasutton/openscad-amu#bootstrap  , then customize as
needed.

Setup instructions are available at the GitHub source  repository
https://github.com/royasutton/openscad-amu  .

--
View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

openscad-amu <https://royasutton.github.io/openscad-amu> is being developed to support the construction of automated work flows and Doxygen-based documentation for OpenSCAD designs. It incorporated two distinct but complementary features that may be used together or independently: (1) design automation and (2) design documentation. If you are already familiar with Doxygen, adding basic documentation to your OpenSCAD designs using openscad-amu is easy. Simply markup each of your design files with the special Doxygen commands, reference each file in a Makefile, and type /make/ to generate your documentation. You can start from a ready-made template created by the bootstrap <https://github.com/royasutton/openscad-amu#bootstrap> , then customize as needed. Setup instructions are available at the GitHub source repository <https://github.com/royasutton/openscad-amu> . -- View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928.html Sent from the OpenSCAD mailing list archive at Nabble.com.
MK
Marius Kintel
Fri, Mar 17, 2017 2:39 AM

On Mar 15, 2017, at 16:21, royasutton roy_sutton@hotmail.com wrote:

openscad-amu https://royasutton.github.io/openscad-amu  is being developed
to support the construction of automated work flows and Doxygen-based
documentation for OpenSCAD designs.

Looks cool!

How similar is your idea to runsun’s DocTest project?
https://github.com/runsun/openscad_doctest

-Marius

> On Mar 15, 2017, at 16:21, royasutton <roy_sutton@hotmail.com> wrote: > > openscad-amu <https://royasutton.github.io/openscad-amu> is being developed > to support the construction of automated work flows and Doxygen-based > documentation for OpenSCAD designs. > Looks cool! How similar is your idea to runsun’s DocTest project? https://github.com/runsun/openscad_doctest -Marius
R
royasutton
Sat, Mar 18, 2017 1:52 AM

I am not familiar with the doctest effort, but I will certainly have a look
to check for overlap and/or distinctions. Thanks for the feedback and
reference!

Roy

--
View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928p20946.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

I am not familiar with the doctest effort, but I will certainly have a look to check for overlap and/or distinctions. Thanks for the feedback and reference! Roy -- View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928p20946.html Sent from the OpenSCAD mailing list archive at Nabble.com.
R
royasutton
Tue, Mar 21, 2017 5:08 PM

I had a look at runsun’s  DocTest
https://github.com/runsun/openscad_doctest  . DocTest is an OpenSCAD
library for:

(1) documenting a function/module interface.
(2) constructing test modules that validate function behavior.

To document a function, DocTest uses a 5-element list variable (added to the
OpenSCAD deisgn) to describe the functions: name, arguments, return type,
category, and description. The DocTest library can subsequently be
instructed at compile time to converts the list-values into the function
documentation by using a mode variable. The documentation is presented in
the OpenSCAD console.

DocTests also includes a collection of data type identification functions,
list/array processing operations, and proposes a method of writing function
validation/test modules based on input sets and expected results.

@runsun, please correct me if I have misrepresented the project in anyway.
My impression is strictly from reviewing the project README.

openscad-amu https://royasutton.github.io/openscad-amu  has two main
goals:

(1) design and/or library-api documentation.
(2) design flow automation.

It is clear that one of the big missing pieces in OpenSCAD design is the
lack of good library documentation and both DocTest and openscad-amu
attempt to address this. The deficit is not a shortage of good libraries,
but rather the lack of good collections of validated and documented
libraries. openscad-amu does not address /validation/ and inasmuch there
is potential for collaboration. openscad-amu does provide a framework
where /any method/ of validation may be completely automated.

openscad-amu takes the approach that documenting *.scad is not all that
different from any other programming language and provides a source code
/preprocessor/ that allows *.scad to work with  Doxygen
http://www.stack.nl/~dimitri/doxygen/index.html  . With Doxygen,
documentation is done using a  markup language
http://www.stack.nl/~dimitri/doxygen/manual/commands.html  that is placed
in comments. Doxygen subsequently extracts the comments to produce the
documentation in various output formats (HTML, PDF, and several others).

The openscad-amu preprocessor offers /additional capabilities/ useful in
language-based mechanical design. For example, is easy to create a table of
all generated (stl, png, svg) targets, or tabulate all render times across
any number of input, or post-process the output of one target and use it as
input to the documentation (demonstrations, dimensions, line counts, bom,
etc).

The second focus of openscad-amu is design flow automation. Having a solid
automatic design flow for OpenSCAD opens many possibilities. Towards that
goal, openscad-amu  proposes a mechanism to embed auxiliary OpenSCAD and
build scripts into /"scoped"/ comment block of a design (**.scad*).
openscad-amu then extracts these auxiliary scripts automatically at
compile-time to generate dependency-base automated design flow compilations.

http://forum.openscad.org/file/n20984/flow.png

Any feedback on direction, problems, suggestions are welcome. if you want to
create comprehensive documentation or automate your design flows, then you
should have a deeper look.

To see it in action on a debian-based system is fairly painless. Just follow
these  bootstrap instruction
https://github.com/royasutton/openscad-amu#bootstrap  .

--
View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928p20984.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

I had a look at runsun’s DocTest <https://github.com/runsun/openscad_doctest> . DocTest is an OpenSCAD library for: (1) documenting a function/module interface. (2) constructing test modules that validate function behavior. To document a function, DocTest uses a 5-element list variable (added to the OpenSCAD deisgn) to describe the functions: name, arguments, return type, category, and description. The DocTest library can subsequently be instructed at compile time to converts the list-values into the function documentation by using a mode variable. The documentation is presented in the OpenSCAD console. DocTests also includes a collection of data type identification functions, list/array processing operations, and proposes a method of writing function validation/test modules based on input sets and expected results. @runsun, please correct me if I have misrepresented the project in anyway. My impression is strictly from reviewing the project README. openscad-amu <https://royasutton.github.io/openscad-amu> has two main goals: (1) design and/or library-api documentation. (2) design flow automation. It is clear that one of the big missing pieces in OpenSCAD design is the lack of good library *documentation* and both DocTest and openscad-amu attempt to address this. The deficit is not a shortage of good libraries, but rather the lack of good collections of validated and documented libraries. openscad-amu does *not* address /validation/ and inasmuch there is potential for collaboration. openscad-amu *does* provide a framework where /any method/ of validation may be completely automated. openscad-amu takes the approach that documenting **.scad* is not all that different from any other programming language and provides a source code /preprocessor/ that allows **.scad* to work with Doxygen <http://www.stack.nl/~dimitri/doxygen/index.html> . With Doxygen, documentation is done using a markup language <http://www.stack.nl/~dimitri/doxygen/manual/commands.html> that is placed in comments. Doxygen subsequently extracts the comments to produce the documentation in various output formats (HTML, PDF, and several others). The openscad-amu preprocessor offers /additional capabilities/ useful in language-based mechanical design. For example, is easy to create a table of all generated (stl, png, svg) targets, or tabulate all render times across any number of input, or post-process the output of one target and use it as input to the documentation (demonstrations, dimensions, line counts, bom, etc). The second focus of openscad-amu is *design flow automation*. Having a solid automatic design flow for OpenSCAD opens many possibilities. Towards that goal, openscad-amu proposes a mechanism to embed auxiliary OpenSCAD and build scripts into /"scoped"/ comment block of a design (**.scad*). openscad-amu then extracts these auxiliary scripts automatically at compile-time to generate dependency-base automated design flow compilations. <http://forum.openscad.org/file/n20984/flow.png> Any feedback on direction, problems, suggestions are welcome. if you want to create comprehensive documentation or automate your design flows, then you should have a deeper look. To see it in action on a debian-based system is fairly painless. Just follow these bootstrap instruction <https://github.com/royasutton/openscad-amu#bootstrap> . -- View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928p20984.html Sent from the OpenSCAD mailing list archive at Nabble.com.
NH
nop head
Tue, Mar 21, 2017 5:23 PM

Sorry, but what is "design flow automation"? I have heard the term before
and Google doesn't seem to know.

On 21 March 2017 at 17:08, royasutton roy_sutton@hotmail.com wrote:

I had a look at runsun’s  DocTest
https://github.com/runsun/openscad_doctest  . DocTest is an OpenSCAD
library for:

(1) documenting a function/module interface.
(2) constructing test modules that validate function behavior.

To document a function, DocTest uses a 5-element list variable (added to
the
OpenSCAD deisgn) to describe the functions: name, arguments, return type,
category, and description. The DocTest library can subsequently be
instructed at compile time to converts the list-values into the function
documentation by using a mode variable. The documentation is presented in
the OpenSCAD console.

DocTests also includes a collection of data type identification functions,
list/array processing operations, and proposes a method of writing function
validation/test modules based on input sets and expected results.

@runsun, please correct me if I have misrepresented the project in anyway.
My impression is strictly from reviewing the project README.

openscad-amu https://royasutton.github.io/openscad-amu  has two main
goals:

(1) design and/or library-api documentation.
(2) design flow automation.

It is clear that one of the big missing pieces in OpenSCAD design is the
lack of good library documentation and both DocTest and openscad-amu
attempt to address this. The deficit is not a shortage of good libraries,
but rather the lack of good collections of validated and documented
libraries. openscad-amu does not address /validation/ and inasmuch there
is potential for collaboration. openscad-amu does provide a framework
where /any method/ of validation may be completely automated.

openscad-amu takes the approach that documenting *.scad is not all that
different from any other programming language and provides a source code
/preprocessor/ that allows *.scad to work with  Doxygen
http://www.stack.nl/~dimitri/doxygen/index.html  . With Doxygen,
documentation is done using a  markup language
http://www.stack.nl/~dimitri/doxygen/manual/commands.html  that is
placed
in comments. Doxygen subsequently extracts the comments to produce the
documentation in various output formats (HTML, PDF, and several others).

The openscad-amu preprocessor offers /additional capabilities/ useful in
language-based mechanical design. For example, is easy to create a table of
all generated (stl, png, svg) targets, or tabulate all render times across
any number of input, or post-process the output of one target and use it as
input to the documentation (demonstrations, dimensions, line counts, bom,
etc).

The second focus of openscad-amu is design flow automation. Having a
solid
automatic design flow for OpenSCAD opens many possibilities. Towards that
goal, openscad-amu  proposes a mechanism to embed auxiliary OpenSCAD and
build scripts into /"scoped"/ comment block of a design (**.scad*).
openscad-amu then extracts these auxiliary scripts automatically at
compile-time to generate dependency-base automated design flow
compilations.

http://forum.openscad.org/file/n20984/flow.png

Any feedback on direction, problems, suggestions are welcome. if you want
to
create comprehensive documentation or automate your design flows, then you
should have a deeper look.

To see it in action on a debian-based system is fairly painless. Just
follow
these  bootstrap instruction
https://github.com/royasutton/openscad-amu#bootstrap  .

--
View this message in context: http://forum.openscad.org/
Design-work-flow-automation-with-documentation-generation-
tp20928p20984.html
Sent from the OpenSCAD mailing list archive at Nabble.com.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

Sorry, but what is "design flow automation"? I have heard the term before and Google doesn't seem to know. On 21 March 2017 at 17:08, royasutton <roy_sutton@hotmail.com> wrote: > I had a look at runsun’s DocTest > <https://github.com/runsun/openscad_doctest> . DocTest is an OpenSCAD > library for: > > (1) documenting a function/module interface. > (2) constructing test modules that validate function behavior. > > To document a function, DocTest uses a 5-element list variable (added to > the > OpenSCAD deisgn) to describe the functions: name, arguments, return type, > category, and description. The DocTest library can subsequently be > instructed at compile time to converts the list-values into the function > documentation by using a mode variable. The documentation is presented in > the OpenSCAD console. > > DocTests also includes a collection of data type identification functions, > list/array processing operations, and proposes a method of writing function > validation/test modules based on input sets and expected results. > > @runsun, please correct me if I have misrepresented the project in anyway. > My impression is strictly from reviewing the project README. > > openscad-amu <https://royasutton.github.io/openscad-amu> has two main > goals: > > (1) design and/or library-api documentation. > (2) design flow automation. > > It is clear that one of the big missing pieces in OpenSCAD design is the > lack of good library *documentation* and both DocTest and openscad-amu > attempt to address this. The deficit is not a shortage of good libraries, > but rather the lack of good collections of validated and documented > libraries. openscad-amu does *not* address /validation/ and inasmuch there > is potential for collaboration. openscad-amu *does* provide a framework > where /any method/ of validation may be completely automated. > > openscad-amu takes the approach that documenting **.scad* is not all that > different from any other programming language and provides a source code > /preprocessor/ that allows **.scad* to work with Doxygen > <http://www.stack.nl/~dimitri/doxygen/index.html> . With Doxygen, > documentation is done using a markup language > <http://www.stack.nl/~dimitri/doxygen/manual/commands.html> that is > placed > in comments. Doxygen subsequently extracts the comments to produce the > documentation in various output formats (HTML, PDF, and several others). > > The openscad-amu preprocessor offers /additional capabilities/ useful in > language-based mechanical design. For example, is easy to create a table of > all generated (stl, png, svg) targets, or tabulate all render times across > any number of input, or post-process the output of one target and use it as > input to the documentation (demonstrations, dimensions, line counts, bom, > etc). > > The second focus of openscad-amu is *design flow automation*. Having a > solid > automatic design flow for OpenSCAD opens many possibilities. Towards that > goal, openscad-amu proposes a mechanism to embed auxiliary OpenSCAD and > build scripts into /"scoped"/ comment block of a design (**.scad*). > openscad-amu then extracts these auxiliary scripts automatically at > compile-time to generate dependency-base automated design flow > compilations. > > <http://forum.openscad.org/file/n20984/flow.png> > > Any feedback on direction, problems, suggestions are welcome. if you want > to > create comprehensive documentation or automate your design flows, then you > should have a deeper look. > > To see it in action on a debian-based system is fairly painless. Just > follow > these bootstrap instruction > <https://github.com/royasutton/openscad-amu#bootstrap> . > > > > > -- > View this message in context: http://forum.openscad.org/ > Design-work-flow-automation-with-documentation-generation- > tp20928p20984.html > Sent from the OpenSCAD mailing list archive at Nabble.com. > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
R
royasutton
Tue, Mar 21, 2017 8:24 PM

nophead wrote

Sorry, but what is "design flow automation"? I have heard the term before
and Google doesn't seem to know.

With respect to OpenSCAD, that is a good question and I have no
/authoritative/ definition!  But I will give my /option/.

My background is integrated circuit design and in my world we often use
terms like design flow, electronic design flow, design flow automation,
electronic design flow automation, etc..

A design flow is, essentially, the sequence of steps and tools used to
convert a digital design description into a physical implementation.
As for
integrated circuits, where designs have very large numbers of interdependent
parts, its best done with the assistance of computers in pre-described
automated steps
.

Years ago I worked with a group who did R&D on /silicon compilers/. As a
result, I have a world view that thinks OpenSCAD has the potential to do for
/language-based mechanical design/ (made this term up) what silicon
compilers did for integrated circuit design. Namely: significantly reduce
design times, produce correct-by-construction implementations, and empower,
smaller teams of non-IC geeks to create IC-based solutions, etc.

As for designing mechanical objects, I see that OpenSCAD can plays an
essential part in a process of converting high-level textual design
descriptions into customized physical implementations. /The implementation
process brings together numerous conversion tools and steps which make up
the design flow./

The real power is when the design components can be abstracted at a high
level and the user can plug-in parameters that best suit the parts/standards
he/she have on hand and then reprocess a system-level design description
with minimal interaction to obtain a customized product implementation.  An
automated mechanical design flow allows thoughtfully constructed design
descriptions to be used to generate highly customized physical objects that
work with local materials/standards (pipe size, switch type, material
properties, dimensions, limits, etc) or even for the countless differences
in people (prosthetics, teethes, eyewear, custom furniture, etc).

As a concrete example to accompany my babble: One goal on my to-do list is
to create a CNC design that can be assembled anywhere in the word that can
makes use of local materials. For example, we don't all use the size boards,
bars, switches,  balls, rails, etc. A good portable design should allow the
users to specify the component properties on-hand and allow an automated
design flow to account for differences throughout the implementation.

Roy

--
View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928p20987.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

nophead wrote > Sorry, but what is "design flow automation"? I have heard the term before > and Google doesn't seem to know. With respect to OpenSCAD, that is a good question and I have no /authoritative/ definition! But I will give my /option/. My background is integrated circuit design and in my world we often use terms like design flow, electronic design flow, design flow automation, electronic design flow automation, etc.. *A design flow is, essentially, the sequence of steps and tools used to convert a digital design description into a physical implementation.* As for integrated circuits, where designs have very large numbers of interdependent parts, its best done with the assistance of computers in *pre-described automated steps*. Years ago I worked with a group who did R&D on /silicon compilers/. As a result, I have a world view that thinks OpenSCAD has the potential to do for /language-based mechanical design/ (made this term up) what silicon compilers did for integrated circuit design. Namely: significantly reduce design times, produce correct-by-construction implementations, and empower, smaller teams of non-IC geeks to create IC-based solutions, etc. As for designing mechanical objects, I see that OpenSCAD can plays an essential part in a process of converting high-level textual design descriptions into customized physical implementations. /The implementation process brings together numerous conversion tools and steps which make up the design flow./ The real power is when the design components can be abstracted at a high level and the user can plug-in parameters that best suit the parts/standards he/she have on hand and then reprocess a system-level design description with minimal interaction to obtain a customized product implementation. An *automated mechanical design flow* allows thoughtfully constructed design descriptions to be used to generate highly customized physical objects that work with local materials/standards (pipe size, switch type, material properties, dimensions, limits, etc) or even for the countless differences in people (prosthetics, teethes, eyewear, custom furniture, etc). *As a concrete example to accompany my babble*: One goal on my to-do list is to create a CNC design that can be assembled anywhere in the word that can makes use of local materials. For example, we don't all use the size boards, bars, switches, balls, rails, etc. A good portable design should allow the users to specify the component properties on-hand and allow an automated design flow to account for differences throughout the implementation. Roy -- View this message in context: http://forum.openscad.org/Design-work-flow-automation-with-documentation-generation-tp20928p20987.html Sent from the OpenSCAD mailing list archive at Nabble.com.