NH
nop head
Thu, Nov 26, 2020 9:17 PM
I think the point of the discussion is that at the moment, OpenSCAD is a
great tool but, like any tool, it has it's limitations.
Where I, as a newbie, would like to get is more 'programmatic' structure
in the building of our tools. That is, for example, 'includes' that
don't eat it's young while trying to be parsed. More streamlined
lexicology. Variables that can be either global or local, depending
upon the particular syntax the designer/programmer declares.
Implementation of 'libraries' that we can share with each other, like
the parametric design of screws and nust, or 3D printable items that can
be called as assemblies or subassemblies. And suchlike.
Am I the only one?
David
On 11/26/20 2:03 PM, adrianv wrote:
Note that I'm not taking a position on the OpenSCAD language being
I'm just making observations about challenges and limitations.
What does it mean to use a language "as intended"? You can only model
things the original designer imagined? Seems like a weird way to think
about things. When computer languages are released into the wild users
use them to do what they want, not what the designers imagined.
the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
certainly is a language in the classical sense. It's got functions and
recursion and can theoretically do anything. It's just that doing
not always easy, or efficient. The code is harder to write. Of course,
once it's written then the complexity is hidden, and the actual models
easy to construct.
The question about what OpenSCAD is "for" I think leads to the question
whether it's a toy environment or an environment for real design. The
driving problem I generally struggle with is that every edge and corner
my 3d printed models should be filleted or rounded, and this tends to be
very difficult, even though my models are pretty simple. I think I may
this problem mostly solved, but it wasn't easy. Is there a better tool
this, for constructing simple models with specified parametric
where parts can have roundovers applied without a struggle?
Alan Cox-2 wrote
On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
adrianv <
avm4@
> wrote:
If you think the OpenSCAD language is "fine" then probably you're not
trying
to do anything nontrivial.
Or you are using it as intended - it's not a "language" in the classic
interpretive sense - it's a data structure with some compression
My tools output OpenSCAD, it's great for that. I think it's kind of
meaningless to talk about replacing OpenSCAD's language with python
because they are just not the same thing. OpenSCAD is a definition,
python would produce a program which instantiated and bound objects to
some kind of scene. By all means go and build that - but you will end up
working at the library level with csg libraries, or outputting an
file of the resulting construct. The former means you can query internal
state more easily, the latter is easy to do and has been done many times
already.
Either way you don't end up with anything connected to OpenSCAD beyond
perhaps being able to recycle code.
Alan
OpenSCAD mailing list
Discuss@.openscad
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
I have a library that has parametric screws and nuts and 3D printable items
that can be called as assemblies or subassemblies.
https://github.com/nophead/NopSCADlib#Screws
[image: image.png]
https://github.com/nophead/NopSCADlib#Nuts
[image: image.png]
https://github.com/nophead/NopSCADlib#Camera_housing
[image: image.png]
https://github.com/nophead/NopSCADlib#Butt_box
[image: image.png]
Variables prefixed with a $ are global.
On Thu, 26 Nov 2020 at 20:57, David <ainut@hiwaay.net> wrote:
> I think the point of the discussion is that at the moment, OpenSCAD is a
> great tool but, like any tool, it has it's limitations.
>
> Where I, as a newbie, would like to get is more 'programmatic' structure
> in the building of our tools. That is, for example, 'includes' that
> don't eat it's young while trying to be parsed. More streamlined
> lexicology. Variables that can be either global or local, depending
> upon the particular syntax the designer/programmer declares.
> Implementation of 'libraries' that we can share with each other, like
> the parametric design of screws and nust, or 3D printable items that can
> be called as assemblies or subassemblies. And suchlike.
>
> Am I the only one?
>
> David
>
>
> On 11/26/20 2:03 PM, adrianv wrote:
> > Note that I'm not taking a position on the OpenSCAD language being
> replaced.
> > I'm just making observations about challenges and limitations.
> >
> > What does it mean to use a language "as intended"? You can only model
> > things the original designer imagined? Seems like a weird way to think
> > about things. When computer languages are released into the wild users
> will
> > use them to do what *they* want, not what the designers imagined.
> Where's
> > the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
> > certainly is a language in the classical sense. It's got functions and
> > recursion and can theoretically do anything. It's just that doing
> things is
> > not always easy, or efficient. The code is harder to write. Of course,
> > once it's written then the complexity is hidden, and the actual models
> are
> > easy to construct.
> >
> > The question about what OpenSCAD is "for" I think leads to the question
> of
> > whether it's a toy environment or an environment for real design. The
> > driving problem I generally struggle with is that every edge and corner
> in
> > my 3d printed models should be filleted or rounded, and this tends to be
> > very difficult, even though my models are pretty simple. I think I may
> have
> > this problem mostly solved, but it wasn't easy. Is there a better tool
> for
> > this, for constructing simple models with specified parametric
> dimensions,
> > where parts can have roundovers applied without a struggle?
> >
> >
> > Alan Cox-2 wrote
> >> On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
> >> adrianv <
> >> avm4@
> >> > wrote:
> >>
> >>> If you think the OpenSCAD language is "fine" then probably you're not
> >>> trying
> >>> to do anything nontrivial.
> >> Or you are using it as intended - it's not a "language" in the classic
> >> interpretive sense - it's a data structure with some compression
> features.
> >>
> >> My tools output OpenSCAD, it's great for that. I think it's kind of
> >> meaningless to talk about replacing OpenSCAD's language with python
> >> because they are just not the same thing. OpenSCAD is a definition,
> >> python would produce a program which instantiated and bound objects to
> >> some kind of scene. By all means go and build that - but you will end up
> >> working at the library level with csg libraries, or outputting an
> openscad
> >> file of the resulting construct. The former means you can query internal
> >> state more easily, the latter is easy to do and has been done many times
> >> already.
> >>
> >> Either way you don't end up with anything connected to OpenSCAD beyond
> >> perhaps being able to recycle code.
> >>
> >> Alan
> >>
> >> _______________________________________________
> >> OpenSCAD mailing list
> >> Discuss@.openscad
> >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
> >
> >
> >
> >
> > --
> > Sent from: http://forum.openscad.org/
> >
> > _______________________________________________
> > OpenSCAD mailing list
> > Discuss@lists.openscad.org
> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
D
David
Thu, Nov 26, 2020 10:37 PM
OUTSTANDING! Thanks.
On 11/26/20 3:17 PM, nop head wrote:
I have a library that has parametric screws and nuts and 3D printable
items that can be called as assemblies or subassemblies.
https://github.com/nophead/NopSCADlib#Screws
https://github.com/nophead/NopSCADlib#Screws
image.png
https://github.com/nophead/NopSCADlib#Nuts
https://github.com/nophead/NopSCADlib#Nuts
image.png
https://github.com/nophead/NopSCADlib#Camera_housing
https://github.com/nophead/NopSCADlib#Camera_housing
image.png
https://github.com/nophead/NopSCADlib#Butt_box
https://github.com/nophead/NopSCADlib#Butt_box
image.png
Variables prefixed with a $ are global.
On Thu, 26 Nov 2020 at 20:57, David <ainut@hiwaay.net
mailto:ainut@hiwaay.net> wrote:
I think the point of the discussion is that at the moment,
OpenSCAD is a
great tool but, like any tool, it has it's limitations.
Where I, as a newbie, would like to get is more 'programmatic'
structure
in the building of our tools. That is, for example, 'includes' that
don't eat it's young while trying to be parsed. More streamlined
lexicology. Variables that can be either global or local, depending
upon the particular syntax the designer/programmer declares.
Implementation of 'libraries' that we can share with each other, like
the parametric design of screws and nust, or 3D printable items
that can
be called as assemblies or subassemblies. And suchlike.
Am I the only one?
David
On 11/26/20 2:03 PM, adrianv wrote:
Note that I'm not taking a position on the OpenSCAD language
I'm just making observations about challenges and limitations.
What does it mean to use a language "as intended"? You can only
things the original designer imagined? Seems like a weird way
about things. When computer languages are released into the
use them to do what they want, not what the designers
the threshold for a model being "wrong" for OpenSCAD? Note that
certainly is a language in the classical sense. It's got
recursion and can theoretically do anything. It's just that
not always easy, or efficient. The code is harder to write. Of
once it's written then the complexity is hidden, and the actual
easy to construct.
The question about what OpenSCAD is "for" I think leads to the
whether it's a toy environment or an environment for real
driving problem I generally struggle with is that every edge and
my 3d printed models should be filleted or rounded, and this
very difficult, even though my models are pretty simple. I think
this problem mostly solved, but it wasn't easy. Is there a
this, for constructing simple models with specified parametric
where parts can have roundovers applied without a struggle?
Alan Cox-2 wrote
On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
adrianv <
avm4@
> wrote:
If you think the OpenSCAD language is "fine" then probably
trying
to do anything nontrivial.
Or you are using it as intended - it's not a "language" in the
interpretive sense - it's a data structure with some
My tools output OpenSCAD, it's great for that. I think it's kind of
meaningless to talk about replacing OpenSCAD's language with python
because they are just not the same thing. OpenSCAD is a definition,
python would produce a program which instantiated and bound
some kind of scene. By all means go and build that - but you
working at the library level with csg libraries, or outputting
file of the resulting construct. The former means you can query
state more easily, the latter is easy to do and has been done
already.
Either way you don't end up with anything connected to OpenSCAD
perhaps being able to recycle code.
Alan
OpenSCAD mailing list
Discuss@.openscad
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
<http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org>
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
<http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
Discuss@lists.openscad.org <mailto:Discuss@lists.openscad.org>
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
<http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org>
OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
OUTSTANDING! Thanks.
On 11/26/20 3:17 PM, nop head wrote:
> I have a library that has parametric screws and nuts and 3D printable
> items that can be called as assemblies or subassemblies.
>
> https://github.com/nophead/NopSCADlib#Screws
> <https://github.com/nophead/NopSCADlib#Screws>
> image.png
> https://github.com/nophead/NopSCADlib#Nuts
> <https://github.com/nophead/NopSCADlib#Nuts>
> image.png
> https://github.com/nophead/NopSCADlib#Camera_housing
> <https://github.com/nophead/NopSCADlib#Camera_housing>
> image.png
> https://github.com/nophead/NopSCADlib#Butt_box
> <https://github.com/nophead/NopSCADlib#Butt_box>
> image.png
>
> Variables prefixed with a $ are global.
>
>
> On Thu, 26 Nov 2020 at 20:57, David <ainut@hiwaay.net
> <mailto:ainut@hiwaay.net>> wrote:
>
> I think the point of the discussion is that at the moment,
> OpenSCAD is a
> great tool but, like any tool, it has it's limitations.
>
> Where I, as a newbie, would like to get is more 'programmatic'
> structure
> in the building of our tools. That is, for example, 'includes' that
> don't eat it's young while trying to be parsed. More streamlined
> lexicology. Variables that can be either global or local, depending
> upon the particular syntax the designer/programmer declares.
> Implementation of 'libraries' that we can share with each other, like
> the parametric design of screws and nust, or 3D printable items
> that can
> be called as assemblies or subassemblies. And suchlike.
>
> Am I the only one?
>
> David
>
>
> On 11/26/20 2:03 PM, adrianv wrote:
> > Note that I'm not taking a position on the OpenSCAD language
> being replaced.
> > I'm just making observations about challenges and limitations.
> >
> > What does it mean to use a language "as intended"? You can only
> model
> > things the original designer imagined? Seems like a weird way
> to think
> > about things. When computer languages are released into the
> wild users will
> > use them to do what *they* want, not what the designers
> imagined. Where's
> > the threshold for a model being "wrong" for OpenSCAD? Note that
> OpenSCAD
> > certainly is a language in the classical sense. It's got
> functions and
> > recursion and can theoretically do anything. It's just that
> doing things is
> > not always easy, or efficient. The code is harder to write. Of
> course,
> > once it's written then the complexity is hidden, and the actual
> models are
> > easy to construct.
> >
> > The question about what OpenSCAD is "for" I think leads to the
> question of
> > whether it's a toy environment or an environment for real
> design. The
> > driving problem I generally struggle with is that every edge and
> corner in
> > my 3d printed models should be filleted or rounded, and this
> tends to be
> > very difficult, even though my models are pretty simple. I think
> I may have
> > this problem mostly solved, but it wasn't easy. Is there a
> better tool for
> > this, for constructing simple models with specified parametric
> dimensions,
> > where parts can have roundovers applied without a struggle?
> >
> >
> > Alan Cox-2 wrote
> >> On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
> >> adrianv <
> >> avm4@
> >> > wrote:
> >>
> >>> If you think the OpenSCAD language is "fine" then probably
> you're not
> >>> trying
> >>> to do anything nontrivial.
> >> Or you are using it as intended - it's not a "language" in the
> classic
> >> interpretive sense - it's a data structure with some
> compression features.
> >>
> >> My tools output OpenSCAD, it's great for that. I think it's kind of
> >> meaningless to talk about replacing OpenSCAD's language with python
> >> because they are just not the same thing. OpenSCAD is a definition,
> >> python would produce a program which instantiated and bound
> objects to
> >> some kind of scene. By all means go and build that - but you
> will end up
> >> working at the library level with csg libraries, or outputting
> an openscad
> >> file of the resulting construct. The former means you can query
> internal
> >> state more easily, the latter is easy to do and has been done
> many times
> >> already.
> >>
> >> Either way you don't end up with anything connected to OpenSCAD
> beyond
> >> perhaps being able to recycle code.
> >>
> >> Alan
> >>
> >> _______________________________________________
> >> OpenSCAD mailing list
> >> Discuss@.openscad
> >>
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
> <http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org>
> >
> >
> >
> >
> > --
> > Sent from: http://forum.openscad.org/ <http://forum.openscad.org/>
> >
> > _______________________________________________
> > OpenSCAD mailing list
> > Discuss@lists.openscad.org <mailto:Discuss@lists.openscad.org>
> >
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
> <http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org>
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@lists.openscad.org <mailto:Discuss@lists.openscad.org>
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
> <http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org>
>
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
A
adrianv
Fri, Nov 27, 2020 12:43 AM
I asked about libraries when I first encountered OpenSCAD a couple years ago,
I think. And I got a remarkably negative reception, with hostility to
libraries. A vocal group seemed to oppose the idea that libraries should
exist---everybody should design their own code in private from the ground
up. Maybe things have improved a bit, but there's still no good mechanism
for managing them, or dealing with them, and we have the bug with "use" that
creates big performance issues, which is apparently seen as very low
priority. (The issue for this bug was first opened in 2012, I think, by
someone who thought the fix was not hard.)
There are tons of OpenSCAD files on thingiverse that implement a variety of
interesting and useful things. If you need a particular thing it's
certainly a good place to start. But hunting around on thingiverse can be
pretty frustrating as a way to find libraries, and quality is variable.
Screw libraries abound if you want screws.
In addition to nopscadlib you might take a look at BOSL2. There's also
dotSCAD, though I think it provides basic modeling commands rather than
parametric parts. The BOSL2 library does both.
https://github.com/revarbat/BOSL2/wiki
If you're specifically looking for parts scroll down to the "Miscellaneous
Parts" section, which includes:
Miscellaneous Parts
polyhedra.scad: Modules to create various regular and stellated
polyhedra.
walls.scad: Modules to create walls and structural elements for 3D
printing.
cubetruss.scad: Modules to create modular open-framed trusses and
joiners.
involute_gears.scad: Modules and functions to make involute gears and
racks.
joiners.scad: Modules to make joiner shapes for connecting separately
printed objects.
sliders.scad: Modules for creating simple sliders and rails.
screws.scad: Functions and modules to make metric and UTS screws and
nuts.
metric_screws.scad: Functions and modules to make metric screws, nuts,
and screwholes.
linear_bearings.scad: Modules to make mounts for LMxUU style linear
bearings.
nema_steppers.scad: Modules to make mounting holes for NEMA motors.
phillips_drive.scad: Modules to create Phillips screwdriver tips.
torx_drive.scad: Functions and Modules to create Torx bit drive holes.
wiring.scad: Modules to render routed bundles of wires.
hingesnaps.scad: Modules to make foldable, snap-locking parts.
bottlecaps.scad: Modules to make standard beverage bottle caps and
necks.
skypuppy wrote
I think the point of the discussion is that at the moment, OpenSCAD is a
great tool but, like any tool, it has it's limitations.
Where I, as a newbie, would like to get is more 'programmatic' structure
in the building of our tools. That is, for example, 'includes' that
don't eat it's young while trying to be parsed. More streamlined
lexicology. Variables that can be either global or local, depending
upon the particular syntax the designer/programmer declares.
Implementation of 'libraries' that we can share with each other, like
the parametric design of screws and nust, or 3D printable items that can
be called as assemblies or subassemblies. And suchlike.
Am I the only one?
David
On 11/26/20 2:03 PM, adrianv wrote:
Note that I'm not taking a position on the OpenSCAD language being
replaced.
I'm just making observations about challenges and limitations.
What does it mean to use a language "as intended"? You can only model
things the original designer imagined? Seems like a weird way to think
about things. When computer languages are released into the wild users
will
use them to do what they want, not what the designers imagined.
Where's
the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
certainly is a language in the classical sense. It's got functions and
recursion and can theoretically do anything. It's just that doing things
is
not always easy, or efficient. The code is harder to write. Of course,
once it's written then the complexity is hidden, and the actual models
are
easy to construct.
The question about what OpenSCAD is "for" I think leads to the question
of
whether it's a toy environment or an environment for real design. The
driving problem I generally struggle with is that every edge and corner
in
my 3d printed models should be filleted or rounded, and this tends to be
very difficult, even though my models are pretty simple. I think I may
have
this problem mostly solved, but it wasn't easy. Is there a better tool
for
this, for constructing simple models with specified parametric
dimensions,
where parts can have roundovers applied without a struggle?
Alan Cox-2 wrote
On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
adrianv <
avm4@
> wrote:
If you think the OpenSCAD language is "fine" then probably you're not
trying
to do anything nontrivial.
Or you are using it as intended - it's not a "language" in the classic
interpretive sense - it's a data structure with some compression
features.
My tools output OpenSCAD, it's great for that. I think it's kind of
meaningless to talk about replacing OpenSCAD's language with python
because they are just not the same thing. OpenSCAD is a definition,
python would produce a program which instantiated and bound objects to
some kind of scene. By all means go and build that - but you will end up
working at the library level with csg libraries, or outputting an
openscad
file of the resulting construct. The former means you can query internal
state more easily, the latter is easy to do and has been done many times
already.
Either way you don't end up with anything connected to OpenSCAD beyond
perhaps being able to recycle code.
Alan
OpenSCAD mailing list
Discuss@.openscad
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
I asked about libraries when I first encountered OpenSCAD a couple years ago,
I think. And I got a remarkably negative reception, with hostility to
libraries. A vocal group seemed to oppose the idea that libraries should
exist---everybody should design their own code in private from the ground
up. Maybe things have improved a bit, but there's still no good mechanism
for managing them, or dealing with them, and we have the bug with "use" that
creates big performance issues, which is apparently seen as very low
priority. (The issue for this bug was first opened in 2012, I think, by
someone who thought the fix was not hard.)
There are tons of OpenSCAD files on thingiverse that implement a variety of
interesting and useful things. If you need a particular thing it's
certainly a good place to start. But hunting around on thingiverse can be
pretty frustrating as a way to find libraries, and quality is variable.
Screw libraries abound if you want screws.
In addition to nopscadlib you might take a look at BOSL2. There's also
dotSCAD, though I think it provides basic modeling commands rather than
parametric parts. The BOSL2 library does both.
https://github.com/revarbat/BOSL2/wiki
If you're specifically looking for parts scroll down to the "Miscellaneous
Parts" section, which includes:
Miscellaneous Parts
polyhedra.scad: Modules to create various regular and stellated
polyhedra.
walls.scad: Modules to create walls and structural elements for 3D
printing.
cubetruss.scad: Modules to create modular open-framed trusses and
joiners.
involute_gears.scad: Modules and functions to make involute gears and
racks.
joiners.scad: Modules to make joiner shapes for connecting separately
printed objects.
sliders.scad: Modules for creating simple sliders and rails.
screws.scad: Functions and modules to make metric and UTS screws and
nuts.
metric_screws.scad: Functions and modules to make metric screws, nuts,
and screwholes.
linear_bearings.scad: Modules to make mounts for LMxUU style linear
bearings.
nema_steppers.scad: Modules to make mounting holes for NEMA motors.
phillips_drive.scad: Modules to create Phillips screwdriver tips.
torx_drive.scad: Functions and Modules to create Torx bit drive holes.
wiring.scad: Modules to render routed bundles of wires.
hingesnaps.scad: Modules to make foldable, snap-locking parts.
bottlecaps.scad: Modules to make standard beverage bottle caps and
necks.
skypuppy wrote
> I think the point of the discussion is that at the moment, OpenSCAD is a
> great tool but, like any tool, it has it's limitations.
>
> Where I, as a newbie, would like to get is more 'programmatic' structure
> in the building of our tools. That is, for example, 'includes' that
> don't eat it's young while trying to be parsed. More streamlined
> lexicology. Variables that can be either global or local, depending
> upon the particular syntax the designer/programmer declares.
> Implementation of 'libraries' that we can share with each other, like
> the parametric design of screws and nust, or 3D printable items that can
> be called as assemblies or subassemblies. And suchlike.
>
> Am I the only one?
>
> David
>
>
> On 11/26/20 2:03 PM, adrianv wrote:
>> Note that I'm not taking a position on the OpenSCAD language being
>> replaced.
>> I'm just making observations about challenges and limitations.
>>
>> What does it mean to use a language "as intended"? You can only model
>> things the original designer imagined? Seems like a weird way to think
>> about things. When computer languages are released into the wild users
>> will
>> use them to do what *they* want, not what the designers imagined.
>> Where's
>> the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
>> certainly is a language in the classical sense. It's got functions and
>> recursion and can theoretically do anything. It's just that doing things
>> is
>> not always easy, or efficient. The code is harder to write. Of course,
>> once it's written then the complexity is hidden, and the actual models
>> are
>> easy to construct.
>>
>> The question about what OpenSCAD is "for" I think leads to the question
>> of
>> whether it's a toy environment or an environment for real design. The
>> driving problem I generally struggle with is that every edge and corner
>> in
>> my 3d printed models should be filleted or rounded, and this tends to be
>> very difficult, even though my models are pretty simple. I think I may
>> have
>> this problem mostly solved, but it wasn't easy. Is there a better tool
>> for
>> this, for constructing simple models with specified parametric
>> dimensions,
>> where parts can have roundovers applied without a struggle?
>>
>>
>> Alan Cox-2 wrote
>>> On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
>>> adrianv <
>>> avm4@
>>> > wrote:
>>>
>>>> If you think the OpenSCAD language is "fine" then probably you're not
>>>> trying
>>>> to do anything nontrivial.
>>> Or you are using it as intended - it's not a "language" in the classic
>>> interpretive sense - it's a data structure with some compression
>>> features.
>>>
>>> My tools output OpenSCAD, it's great for that. I think it's kind of
>>> meaningless to talk about replacing OpenSCAD's language with python
>>> because they are just not the same thing. OpenSCAD is a definition,
>>> python would produce a program which instantiated and bound objects to
>>> some kind of scene. By all means go and build that - but you will end up
>>> working at the library level with csg libraries, or outputting an
>>> openscad
>>> file of the resulting construct. The former means you can query internal
>>> state more easily, the latter is easy to do and has been done many times
>>> already.
>>>
>>> Either way you don't end up with anything connected to OpenSCAD beyond
>>> perhaps being able to recycle code.
>>>
>>> Alan
>>>
>>> _______________________________________________
>>> OpenSCAD mailing list
>>> Discuss@.openscad
>>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>
>>
>>
>>
>> --
>> Sent from: http://forum.openscad.org/
>>
>> _______________________________________________
>> OpenSCAD mailing list
>>
> Discuss@.openscad
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@.openscad
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
--
Sent from: http://forum.openscad.org/
A
adrianv
Fri, Nov 27, 2020 1:01 AM
I need the algorithms to build the missing primitives so I can compose things
with CSG. If you're doing sweep then that means you're also coding a
missing primitive. A full path sweep implementation is an algorithm. You
need to make decision about how you're going to manage the twist of the
sections as you move along the path, and it's not obvious how to do this in
general.
nophead wrote
But if you want to write nontrivial geometric algorithms (to fill in the
missing functionality) then challenges quickly mount.
Yes no doubt they would but I can make everything I need without
nontrivial
geometric algorithms. I do just compose cube and cylinders in the main
plus
a few sweeps, isn't that what CSG is? If you don't want to make
geometry with CSG then OpenSCAD doesn't seem to be the right tool. It is
certainly not a good language for coding algorithms.
I need the algorithms to build the missing primitives so I can compose things
with CSG. If you're doing sweep then that means you're also coding a
missing primitive. A full path sweep implementation is an algorithm. You
need to make decision about how you're going to manage the twist of the
sections as you move along the path, and it's not obvious how to do this in
general.
nophead wrote
>> But if you want to write nontrivial geometric algorithms (to fill in the
> missing functionality) then challenges quickly mount.
>
> Yes no doubt they would but I can make everything I need without
> nontrivial
> geometric algorithms. I do just compose cube and cylinders in the main
> plus
> a few sweeps, isn't that what CSG is? If you don't want to make
> geometry with CSG then OpenSCAD doesn't seem to be the right tool. It is
> certainly not a good language for coding algorithms.
--
Sent from: http://forum.openscad.org/
D
David
Fri, Nov 27, 2020 1:21 AM
People objected to sharing their creations? Sounds kinda small minded.
I understand protectionism, esp of work stuff, but object to SCREWS and
NUTS? That's nuts (if you'll pardon the pun.)
Adrianv, some of the items in your list I actually recognize and I'm not
a machinist. :) With the parametric abilities of OpenSCAD, I think
it's wonderful that we can have libraries like these. Common and not so
common everyday stuff that -everyone- uses routinely are prime
candidates for saving repetitive donkey labor. If made available in the
form of 'libraries' will make OpenSCAD MUCH more useful, thereby also
growing the user base.
Aside: how does one find these existing libraries in thingiverse? I've
looked but I'm not using the correct magic incantations.
Aside thought #2: OpenSCAD is a prime candidate for getting tough
concepts across to other people visually and when animated, improves
understanding by leaps and bounds. Calc III, anyone? :) :)
David
On 11/26/20 6:43 PM, adrianv wrote:
I asked about libraries when I first encountered OpenSCAD a couple years ago,
I think. And I got a remarkably negative reception, with hostility to
libraries. A vocal group seemed to oppose the idea that libraries should
exist---everybody should design their own code in private from the ground
up. Maybe things have improved a bit, but there's still no good mechanism
for managing them, or dealing with them, and we have the bug with "use" that
creates big performance issues, which is apparently seen as very low
priority. (The issue for this bug was first opened in 2012, I think, by
someone who thought the fix was not hard.)
There are tons of OpenSCAD files on thingiverse that implement a variety of
interesting and useful things. If you need a particular thing it's
certainly a good place to start. But hunting around on thingiverse can be
pretty frustrating as a way to find libraries, and quality is variable.
Screw libraries abound if you want screws.
In addition to nopscadlib you might take a look at BOSL2. There's also
dotSCAD, though I think it provides basic modeling commands rather than
parametric parts. The BOSL2 library does both.
https://github.com/revarbat/BOSL2/wiki
If you're specifically looking for parts scroll down to the "Miscellaneous
Parts" section, which includes:
Miscellaneous Parts
polyhedra.scad: Modules to create various regular and stellated
polyhedra.
walls.scad: Modules to create walls and structural elements for 3D
printing.
cubetruss.scad: Modules to create modular open-framed trusses and
joiners.
involute_gears.scad: Modules and functions to make involute gears and
racks.
joiners.scad: Modules to make joiner shapes for connecting separately
printed objects.
sliders.scad: Modules for creating simple sliders and rails.
screws.scad: Functions and modules to make metric and UTS screws and
nuts.
metric_screws.scad: Functions and modules to make metric screws, nuts,
and screwholes.
linear_bearings.scad: Modules to make mounts for LMxUU style linear
bearings.
nema_steppers.scad: Modules to make mounting holes for NEMA motors.
phillips_drive.scad: Modules to create Phillips screwdriver tips.
torx_drive.scad: Functions and Modules to create Torx bit drive holes.
wiring.scad: Modules to render routed bundles of wires.
hingesnaps.scad: Modules to make foldable, snap-locking parts.
bottlecaps.scad: Modules to make standard beverage bottle caps and
necks.
skypuppy wrote
I think the point of the discussion is that at the moment, OpenSCAD is a
great tool but, like any tool, it has it's limitations.
Where I, as a newbie, would like to get is more 'programmatic' structure
in the building of our tools. That is, for example, 'includes' that
don't eat it's young while trying to be parsed. More streamlined
lexicology. Variables that can be either global or local, depending
upon the particular syntax the designer/programmer declares.
Implementation of 'libraries' that we can share with each other, like
the parametric design of screws and nust, or 3D printable items that can
be called as assemblies or subassemblies. And suchlike.
Am I the only one?
David
On 11/26/20 2:03 PM, adrianv wrote:
Note that I'm not taking a position on the OpenSCAD language being
replaced.
I'm just making observations about challenges and limitations.
What does it mean to use a language "as intended"? You can only model
things the original designer imagined? Seems like a weird way to think
about things. When computer languages are released into the wild users
will
use them to do what they want, not what the designers imagined.
Where's
the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
certainly is a language in the classical sense. It's got functions and
recursion and can theoretically do anything. It's just that doing things
is
not always easy, or efficient. The code is harder to write. Of course,
once it's written then the complexity is hidden, and the actual models
are
easy to construct.
The question about what OpenSCAD is "for" I think leads to the question
of
whether it's a toy environment or an environment for real design. The
driving problem I generally struggle with is that every edge and corner
in
my 3d printed models should be filleted or rounded, and this tends to be
very difficult, even though my models are pretty simple. I think I may
have
this problem mostly solved, but it wasn't easy. Is there a better tool
for
this, for constructing simple models with specified parametric
dimensions,
where parts can have roundovers applied without a struggle?
Alan Cox-2 wrote
On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
adrianv <
avm4@
> wrote:
If you think the OpenSCAD language is "fine" then probably you're not
trying
to do anything nontrivial.
Or you are using it as intended - it's not a "language" in the classic
interpretive sense - it's a data structure with some compression
features.
My tools output OpenSCAD, it's great for that. I think it's kind of
meaningless to talk about replacing OpenSCAD's language with python
because they are just not the same thing. OpenSCAD is a definition,
python would produce a program which instantiated and bound objects to
some kind of scene. By all means go and build that - but you will end up
working at the library level with csg libraries, or outputting an
openscad
file of the resulting construct. The former means you can query internal
state more easily, the latter is easy to do and has been done many times
already.
Either way you don't end up with anything connected to OpenSCAD beyond
perhaps being able to recycle code.
Alan
OpenSCAD mailing list
Discuss@.openscad
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
People objected to sharing their creations? Sounds kinda small minded.
I understand protectionism, esp of work stuff, but object to SCREWS and
NUTS? That's nuts (if you'll pardon the pun.)
Adrianv, some of the items in your list I actually recognize and I'm not
a machinist. :) With the parametric abilities of OpenSCAD, I think
it's wonderful that we can have libraries like these. Common and not so
common everyday stuff that -everyone- uses routinely are prime
candidates for saving repetitive donkey labor. If made available in the
form of 'libraries' will make OpenSCAD MUCH more useful, thereby also
growing the user base.
Aside: how does one find these existing libraries in thingiverse? I've
looked but I'm not using the correct magic incantations.
Aside thought #2: OpenSCAD is a prime candidate for getting tough
concepts across to other people visually and when animated, improves
understanding by leaps and bounds. Calc III, anyone? :) :)
David
On 11/26/20 6:43 PM, adrianv wrote:
> I asked about libraries when I first encountered OpenSCAD a couple years ago,
> I think. And I got a remarkably negative reception, with hostility to
> libraries. A vocal group seemed to oppose the idea that libraries should
> exist---everybody should design their own code in private from the ground
> up. Maybe things have improved a bit, but there's still no good mechanism
> for managing them, or dealing with them, and we have the bug with "use" that
> creates big performance issues, which is apparently seen as very low
> priority. (The issue for this bug was first opened in 2012, I think, by
> someone who thought the fix was not hard.)
>
> There are tons of OpenSCAD files on thingiverse that implement a variety of
> interesting and useful things. If you need a particular thing it's
> certainly a good place to start. But hunting around on thingiverse can be
> pretty frustrating as a way to find libraries, and quality is variable.
> Screw libraries abound if you want screws.
>
> In addition to nopscadlib you might take a look at BOSL2. There's also
> dotSCAD, though I think it provides basic modeling commands rather than
> parametric parts. The BOSL2 library does both.
>
> https://github.com/revarbat/BOSL2/wiki
>
> If you're specifically looking for parts scroll down to the "Miscellaneous
> Parts" section, which includes:
>
> Miscellaneous Parts
>
> polyhedra.scad: Modules to create various regular and stellated
> polyhedra.
> walls.scad: Modules to create walls and structural elements for 3D
> printing.
> cubetruss.scad: Modules to create modular open-framed trusses and
> joiners.
> involute_gears.scad: Modules and functions to make involute gears and
> racks.
> joiners.scad: Modules to make joiner shapes for connecting separately
> printed objects.
> sliders.scad: Modules for creating simple sliders and rails.
> screws.scad: Functions and modules to make metric and UTS screws and
> nuts.
> metric_screws.scad: Functions and modules to make metric screws, nuts,
> and screwholes.
> linear_bearings.scad: Modules to make mounts for LMxUU style linear
> bearings.
> nema_steppers.scad: Modules to make mounting holes for NEMA motors.
> phillips_drive.scad: Modules to create Phillips screwdriver tips.
> torx_drive.scad: Functions and Modules to create Torx bit drive holes.
> wiring.scad: Modules to render routed bundles of wires.
> hingesnaps.scad: Modules to make foldable, snap-locking parts.
> bottlecaps.scad: Modules to make standard beverage bottle caps and
> necks.
>
>
>
>
> skypuppy wrote
>> I think the point of the discussion is that at the moment, OpenSCAD is a
>> great tool but, like any tool, it has it's limitations.
>>
>> Where I, as a newbie, would like to get is more 'programmatic' structure
>> in the building of our tools. That is, for example, 'includes' that
>> don't eat it's young while trying to be parsed. More streamlined
>> lexicology. Variables that can be either global or local, depending
>> upon the particular syntax the designer/programmer declares.
>> Implementation of 'libraries' that we can share with each other, like
>> the parametric design of screws and nust, or 3D printable items that can
>> be called as assemblies or subassemblies. And suchlike.
>>
>> Am I the only one?
>>
>> David
>>
>>
>> On 11/26/20 2:03 PM, adrianv wrote:
>>> Note that I'm not taking a position on the OpenSCAD language being
>>> replaced.
>>> I'm just making observations about challenges and limitations.
>>>
>>> What does it mean to use a language "as intended"? You can only model
>>> things the original designer imagined? Seems like a weird way to think
>>> about things. When computer languages are released into the wild users
>>> will
>>> use them to do what *they* want, not what the designers imagined.
>>> Where's
>>> the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
>>> certainly is a language in the classical sense. It's got functions and
>>> recursion and can theoretically do anything. It's just that doing things
>>> is
>>> not always easy, or efficient. The code is harder to write. Of course,
>>> once it's written then the complexity is hidden, and the actual models
>>> are
>>> easy to construct.
>>>
>>> The question about what OpenSCAD is "for" I think leads to the question
>>> of
>>> whether it's a toy environment or an environment for real design. The
>>> driving problem I generally struggle with is that every edge and corner
>>> in
>>> my 3d printed models should be filleted or rounded, and this tends to be
>>> very difficult, even though my models are pretty simple. I think I may
>>> have
>>> this problem mostly solved, but it wasn't easy. Is there a better tool
>>> for
>>> this, for constructing simple models with specified parametric
>>> dimensions,
>>> where parts can have roundovers applied without a struggle?
>>>
>>>
>>> Alan Cox-2 wrote
>>>> On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
>>>> adrianv <
>>>> avm4@
>>>> > wrote:
>>>>
>>>>> If you think the OpenSCAD language is "fine" then probably you're not
>>>>> trying
>>>>> to do anything nontrivial.
>>>> Or you are using it as intended - it's not a "language" in the classic
>>>> interpretive sense - it's a data structure with some compression
>>>> features.
>>>>
>>>> My tools output OpenSCAD, it's great for that. I think it's kind of
>>>> meaningless to talk about replacing OpenSCAD's language with python
>>>> because they are just not the same thing. OpenSCAD is a definition,
>>>> python would produce a program which instantiated and bound objects to
>>>> some kind of scene. By all means go and build that - but you will end up
>>>> working at the library level with csg libraries, or outputting an
>>>> openscad
>>>> file of the resulting construct. The former means you can query internal
>>>> state more easily, the latter is easy to do and has been done many times
>>>> already.
>>>>
>>>> Either way you don't end up with anything connected to OpenSCAD beyond
>>>> perhaps being able to recycle code.
>>>>
>>>> Alan
>>>>
>>>> _______________________________________________
>>>> OpenSCAD mailing list
>>>> Discuss@.openscad
>>>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>>
>>>
>>>
>>> --
>>> Sent from: http://forum.openscad.org/
>>>
>>> _______________________________________________
>>> OpenSCAD mailing list
>>>
>> Discuss@.openscad
>>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>> _______________________________________________
>> OpenSCAD mailing list
>> Discuss@.openscad
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
>
>
>
> --
> Sent from: http://forum.openscad.org/
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
AC
A. Craig West
Fri, Nov 27, 2020 1:38 AM
I know when I made my own parametric bezier sweep, accounting for twist
along the path was most vexing
On Thu, 26 Nov 2020, 20:02 adrianv, avm4@cornell.edu wrote:
I need the algorithms to build the missing primitives so I can compose
things
with CSG. If you're doing sweep then that means you're also coding a
missing primitive. A full path sweep implementation is an algorithm. You
need to make decision about how you're going to manage the twist of the
sections as you move along the path, and it's not obvious how to do this in
general.
nophead wrote
But if you want to write nontrivial geometric algorithms (to fill in the
missing functionality) then challenges quickly mount.
Yes no doubt they would but I can make everything I need without
nontrivial
geometric algorithms. I do just compose cube and cylinders in the main
plus
a few sweeps, isn't that what CSG is? If you don't want to make
geometry with CSG then OpenSCAD doesn't seem to be the right tool. It is
certainly not a good language for coding algorithms.
I know when I made my own parametric bezier sweep, accounting for twist
along the path was most vexing
On Thu, 26 Nov 2020, 20:02 adrianv, <avm4@cornell.edu> wrote:
> I need the algorithms to build the missing primitives so I can compose
> things
> with CSG. If you're doing sweep then that means you're also coding a
> missing primitive. A full path sweep implementation is an algorithm. You
> need to make decision about how you're going to manage the twist of the
> sections as you move along the path, and it's not obvious how to do this in
> general.
>
>
> nophead wrote
> >> But if you want to write nontrivial geometric algorithms (to fill in the
> > missing functionality) then challenges quickly mount.
> >
> > Yes no doubt they would but I can make everything I need without
> > nontrivial
> > geometric algorithms. I do just compose cube and cylinders in the main
> > plus
> > a few sweeps, isn't that what CSG is? If you don't want to make
> > geometry with CSG then OpenSCAD doesn't seem to be the right tool. It is
> > certainly not a good language for coding algorithms.
>
>
>
>
>
> --
> Sent from: http://forum.openscad.org/
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
AC
Alan Cox
Fri, Nov 27, 2020 1:42 AM
Here's that same model (modulo that I don't have a trivial way to make
equilateral triangles) expressed in my Python-based prototype:
You are using python to encode the data structure in this exmple rather
than doing anything truely programmatic.
The moment you add any input, output or other externally conditional
behaviour they diverge completely. The python one becomes a program not a
data structure expression. That has enormous consequences for efficiency
if parallelism was supported which in the OpenSCAD case it isn't but in
other SCAD systems is. It also becomes a completely different beast to
work with using tools.
Alan
> Here's that same model (modulo that I don't have a trivial way to make
> equilateral triangles) expressed in my Python-based prototype:
You are using python to encode the data structure in this exmple rather
than doing anything truely programmatic.
The moment you add any input, output or other externally conditional
behaviour they diverge completely. The python one becomes a program not a
data structure expression. That has enormous consequences for efficiency
if parallelism was supported which in the OpenSCAD case it isn't but in
other SCAD systems is. It also becomes a completely different beast to
work with using tools.
Alan
A
adrianv
Fri, Nov 27, 2020 1:45 AM
The easiest way to find a library on thingiverse is to have someone give you
a link to it or mention its name and then you are able to find it with
google. If you have a specific thing you want to make you can try searching
for it, e.g. "gears"
I tried searching thingiverse for "gears" and looked through about 5 screens
of hits and found this library:
https://www.thingiverse.com/thing:1604369
Like I said, stuff is there on thingiverse, but not necessarily easy to
find. It's a terrible method for distributing library code. Other
libraries are on github. Maybe you can stumble across them.
There is this list: https://www.openscad.org/libraries.html
People are not obligated to share their creations. One person complained
quite aggressively that sharing work creates the burden of maintenance.
That is fine. I agree, that if you share something people may bug you about
it, and maybe you don't want to deal with that. So again, nobody should be
expected to share their work.
What I found puzzling was that people objected to others sharing
libraries. They argued that libraries served no purpose, they weren't
desirable or necessary, and we shouldn't try to support them, or develop
capabilities to make it easier to use them in OpenSCAD. This group
apparently thought that everybody should just write their own stuff, alone.
That was how they worked, and it was how everyone should work.
Unfortunately, based on private emails I had, this hostility seemed to be
driving away people who might have been interested in making contributions.
:(
Another issue with libraries is how you actually use the objects in the
library. For example, BOSL2 has an attachment mechanism that can make it
easy to stick library objects onto other objects (similar to the Relativity
library). But this type of feature is by no means universal. The question
I guess is whether any library can become sufficiently adopted as to be seen
as a standard. (There is a "standard" library called MCAD. I don't
recommend it.)
skypuppy wrote
People objected to sharing their creations? Sounds kinda small minded.
I understand protectionism, esp of work stuff, but object to SCREWS and
NUTS? That's nuts (if you'll pardon the pun.)
Adrianv, some of the items in your list I actually recognize and I'm not
a machinist. :) With the parametric abilities of OpenSCAD, I think
it's wonderful that we can have libraries like these. Common and not so
common everyday stuff that -everyone- uses routinely are prime
candidates for saving repetitive donkey labor. If made available in the
form of 'libraries' will make OpenSCAD MUCH more useful, thereby also
growing the user base.
Aside: how does one find these existing libraries in thingiverse? I've
looked but I'm not using the correct magic incantations.
Aside thought #2: OpenSCAD is a prime candidate for getting tough
concepts across to other people visually and when animated, improves
understanding by leaps and bounds. Calc III, anyone? :) :)
David
On 11/26/20 6:43 PM, adrianv wrote:
I asked about libraries when I first encountered OpenSCAD a couple years
ago,
I think. And I got a remarkably negative reception, with hostility to
libraries. A vocal group seemed to oppose the idea that libraries should
exist---everybody should design their own code in private from the ground
up. Maybe things have improved a bit, but there's still no good
mechanism
for managing them, or dealing with them, and we have the bug with "use"
that
creates big performance issues, which is apparently seen as very low
priority. (The issue for this bug was first opened in 2012, I think, by
someone who thought the fix was not hard.)
There are tons of OpenSCAD files on thingiverse that implement a variety
of
interesting and useful things. If you need a particular thing it's
certainly a good place to start. But hunting around on thingiverse can
be
pretty frustrating as a way to find libraries, and quality is variable.
Screw libraries abound if you want screws.
In addition to nopscadlib you might take a look at BOSL2. There's also
dotSCAD, though I think it provides basic modeling commands rather than
parametric parts. The BOSL2 library does both.
https://github.com/revarbat/BOSL2/wiki
If you're specifically looking for parts scroll down to the
"Miscellaneous
Parts" section, which includes:
Miscellaneous Parts
polyhedra.scad: Modules to create various regular and stellated
polyhedra.
walls.scad: Modules to create walls and structural elements for 3D
printing.
cubetruss.scad: Modules to create modular open-framed trusses and
joiners.
involute_gears.scad: Modules and functions to make involute gears
and
racks.
joiners.scad: Modules to make joiner shapes for connecting
separately
printed objects.
sliders.scad: Modules for creating simple sliders and rails.
screws.scad: Functions and modules to make metric and UTS screws and
nuts.
metric_screws.scad: Functions and modules to make metric screws,
nuts,
and screwholes.
linear_bearings.scad: Modules to make mounts for LMxUU style linear
bearings.
nema_steppers.scad: Modules to make mounting holes for NEMA motors.
phillips_drive.scad: Modules to create Phillips screwdriver tips.
torx_drive.scad: Functions and Modules to create Torx bit drive
holes.
wiring.scad: Modules to render routed bundles of wires.
hingesnaps.scad: Modules to make foldable, snap-locking parts.
bottlecaps.scad: Modules to make standard beverage bottle caps and
necks.
skypuppy wrote
I think the point of the discussion is that at the moment, OpenSCAD is a
great tool but, like any tool, it has it's limitations.
Where I, as a newbie, would like to get is more 'programmatic' structure
in the building of our tools. That is, for example, 'includes' that
don't eat it's young while trying to be parsed. More streamlined
lexicology. Variables that can be either global or local, depending
upon the particular syntax the designer/programmer declares.
Implementation of 'libraries' that we can share with each other, like
the parametric design of screws and nust, or 3D printable items that can
be called as assemblies or subassemblies. And suchlike.
Am I the only one?
David
On 11/26/20 2:03 PM, adrianv wrote:
Note that I'm not taking a position on the OpenSCAD language being
replaced.
I'm just making observations about challenges and limitations.
What does it mean to use a language "as intended"? You can only model
things the original designer imagined? Seems like a weird way to think
about things. When computer languages are released into the wild users
will
use them to do what they want, not what the designers imagined.
Where's
the threshold for a model being "wrong" for OpenSCAD? Note that
OpenSCAD
certainly is a language in the classical sense. It's got functions and
recursion and can theoretically do anything. It's just that doing
things
is
not always easy, or efficient. The code is harder to write. Of
course,
once it's written then the complexity is hidden, and the actual models
are
easy to construct.
The question about what OpenSCAD is "for" I think leads to the question
of
whether it's a toy environment or an environment for real design. The
driving problem I generally struggle with is that every edge and corner
in
my 3d printed models should be filleted or rounded, and this tends to
be
very difficult, even though my models are pretty simple. I think I may
have
this problem mostly solved, but it wasn't easy. Is there a better
tool
for
this, for constructing simple models with specified parametric
dimensions,
where parts can have roundovers applied without a struggle?
Alan Cox-2 wrote
On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
adrianv <
avm4@
> wrote:
If you think the OpenSCAD language is "fine" then probably you're not
trying
to do anything nontrivial.
Or you are using it as intended - it's not a "language" in the classic
interpretive sense - it's a data structure with some compression
features.
My tools output OpenSCAD, it's great for that. I think it's kind of
meaningless to talk about replacing OpenSCAD's language with python
because they are just not the same thing. OpenSCAD is a definition,
python would produce a program which instantiated and bound objects to
some kind of scene. By all means go and build that - but you will end
up
working at the library level with csg libraries, or outputting an
openscad
file of the resulting construct. The former means you can query
internal
state more easily, the latter is easy to do and has been done many
times
already.
Either way you don't end up with anything connected to OpenSCAD beyond
perhaps being able to recycle code.
Alan
OpenSCAD mailing list
Discuss@.openscad
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
The easiest way to find a library on thingiverse is to have someone give you
a link to it or mention its name and then you are able to find it with
google. If you have a specific thing you want to make you can try searching
for it, e.g. "gears"
I tried searching thingiverse for "gears" and looked through about 5 screens
of hits and found this library:
https://www.thingiverse.com/thing:1604369
Like I said, stuff is there on thingiverse, but not necessarily easy to
find. It's a terrible method for distributing library code. Other
libraries are on github. Maybe you can stumble across them.
There is this list: https://www.openscad.org/libraries.html
People are not obligated to share their creations. One person complained
quite aggressively that sharing work creates the burden of maintenance.
That is fine. I agree, that if you share something people may bug you about
it, and maybe you don't want to deal with that. So again, nobody should be
expected to share their work.
What I found puzzling was that people objected to *others* sharing
libraries. They argued that libraries served no purpose, they weren't
desirable or necessary, and we shouldn't try to support them, or develop
capabilities to make it easier to use them in OpenSCAD. This group
apparently thought that everybody should just write their own stuff, alone.
That was how they worked, and it was how everyone should work.
Unfortunately, based on private emails I had, this hostility seemed to be
driving away people who might have been interested in making contributions.
:(
Another issue with libraries is how you actually use the objects in the
library. For example, BOSL2 has an attachment mechanism that can make it
easy to stick library objects onto other objects (similar to the Relativity
library). But this type of feature is by no means universal. The question
I guess is whether any library can become sufficiently adopted as to be seen
as a standard. (There is a "standard" library called MCAD. I don't
recommend it.)
skypuppy wrote
> People objected to sharing their creations? Sounds kinda small minded.
> I understand protectionism, esp of work stuff, but object to SCREWS and
> NUTS? That's nuts (if you'll pardon the pun.)
>
> Adrianv, some of the items in your list I actually recognize and I'm not
> a machinist. :) With the parametric abilities of OpenSCAD, I think
> it's wonderful that we can have libraries like these. Common and not so
> common everyday stuff that -everyone- uses routinely are prime
> candidates for saving repetitive donkey labor. If made available in the
> form of 'libraries' will make OpenSCAD MUCH more useful, thereby also
> growing the user base.
>
> Aside: how does one find these existing libraries in thingiverse? I've
> looked but I'm not using the correct magic incantations.
>
> Aside thought #2: OpenSCAD is a prime candidate for getting tough
> concepts across to other people visually and when animated, improves
> understanding by leaps and bounds. Calc III, anyone? :) :)
>
> David
>
>
> On 11/26/20 6:43 PM, adrianv wrote:
>> I asked about libraries when I first encountered OpenSCAD a couple years
>> ago,
>> I think. And I got a remarkably negative reception, with hostility to
>> libraries. A vocal group seemed to oppose the idea that libraries should
>> exist---everybody should design their own code in private from the ground
>> up. Maybe things have improved a bit, but there's still no good
>> mechanism
>> for managing them, or dealing with them, and we have the bug with "use"
>> that
>> creates big performance issues, which is apparently seen as very low
>> priority. (The issue for this bug was first opened in 2012, I think, by
>> someone who thought the fix was not hard.)
>>
>> There are tons of OpenSCAD files on thingiverse that implement a variety
>> of
>> interesting and useful things. If you need a particular thing it's
>> certainly a good place to start. But hunting around on thingiverse can
>> be
>> pretty frustrating as a way to find libraries, and quality is variable.
>> Screw libraries abound if you want screws.
>>
>> In addition to nopscadlib you might take a look at BOSL2. There's also
>> dotSCAD, though I think it provides basic modeling commands rather than
>> parametric parts. The BOSL2 library does both.
>>
>> https://github.com/revarbat/BOSL2/wiki
>>
>> If you're specifically looking for parts scroll down to the
>> "Miscellaneous
>> Parts" section, which includes:
>>
>> Miscellaneous Parts
>>
>> polyhedra.scad: Modules to create various regular and stellated
>> polyhedra.
>> walls.scad: Modules to create walls and structural elements for 3D
>> printing.
>> cubetruss.scad: Modules to create modular open-framed trusses and
>> joiners.
>> involute_gears.scad: Modules and functions to make involute gears
>> and
>> racks.
>> joiners.scad: Modules to make joiner shapes for connecting
>> separately
>> printed objects.
>> sliders.scad: Modules for creating simple sliders and rails.
>> screws.scad: Functions and modules to make metric and UTS screws and
>> nuts.
>> metric_screws.scad: Functions and modules to make metric screws,
>> nuts,
>> and screwholes.
>> linear_bearings.scad: Modules to make mounts for LMxUU style linear
>> bearings.
>> nema_steppers.scad: Modules to make mounting holes for NEMA motors.
>> phillips_drive.scad: Modules to create Phillips screwdriver tips.
>> torx_drive.scad: Functions and Modules to create Torx bit drive
>> holes.
>> wiring.scad: Modules to render routed bundles of wires.
>> hingesnaps.scad: Modules to make foldable, snap-locking parts.
>> bottlecaps.scad: Modules to make standard beverage bottle caps and
>> necks.
>>
>>
>>
>>
>> skypuppy wrote
>>> I think the point of the discussion is that at the moment, OpenSCAD is a
>>> great tool but, like any tool, it has it's limitations.
>>>
>>> Where I, as a newbie, would like to get is more 'programmatic' structure
>>> in the building of our tools. That is, for example, 'includes' that
>>> don't eat it's young while trying to be parsed. More streamlined
>>> lexicology. Variables that can be either global or local, depending
>>> upon the particular syntax the designer/programmer declares.
>>> Implementation of 'libraries' that we can share with each other, like
>>> the parametric design of screws and nust, or 3D printable items that can
>>> be called as assemblies or subassemblies. And suchlike.
>>>
>>> Am I the only one?
>>>
>>> David
>>>
>>>
>>> On 11/26/20 2:03 PM, adrianv wrote:
>>>> Note that I'm not taking a position on the OpenSCAD language being
>>>> replaced.
>>>> I'm just making observations about challenges and limitations.
>>>>
>>>> What does it mean to use a language "as intended"? You can only model
>>>> things the original designer imagined? Seems like a weird way to think
>>>> about things. When computer languages are released into the wild users
>>>> will
>>>> use them to do what *they* want, not what the designers imagined.
>>>> Where's
>>>> the threshold for a model being "wrong" for OpenSCAD? Note that
>>>> OpenSCAD
>>>> certainly is a language in the classical sense. It's got functions and
>>>> recursion and can theoretically do anything. It's just that doing
>>>> things
>>>> is
>>>> not always easy, or efficient. The code is harder to write. Of
>>>> course,
>>>> once it's written then the complexity is hidden, and the actual models
>>>> are
>>>> easy to construct.
>>>>
>>>> The question about what OpenSCAD is "for" I think leads to the question
>>>> of
>>>> whether it's a toy environment or an environment for real design. The
>>>> driving problem I generally struggle with is that every edge and corner
>>>> in
>>>> my 3d printed models should be filleted or rounded, and this tends to
>>>> be
>>>> very difficult, even though my models are pretty simple. I think I may
>>>> have
>>>> this problem mostly solved, but it wasn't easy. Is there a better
>>>> tool
>>>> for
>>>> this, for constructing simple models with specified parametric
>>>> dimensions,
>>>> where parts can have roundovers applied without a struggle?
>>>>
>>>>
>>>> Alan Cox-2 wrote
>>>>> On Thu, 26 Nov 2020 11:28:44 -0700 (MST)
>>>>> adrianv <
>>>>> avm4@
>>>>> > wrote:
>>>>>
>>>>>> If you think the OpenSCAD language is "fine" then probably you're not
>>>>>> trying
>>>>>> to do anything nontrivial.
>>>>> Or you are using it as intended - it's not a "language" in the classic
>>>>> interpretive sense - it's a data structure with some compression
>>>>> features.
>>>>>
>>>>> My tools output OpenSCAD, it's great for that. I think it's kind of
>>>>> meaningless to talk about replacing OpenSCAD's language with python
>>>>> because they are just not the same thing. OpenSCAD is a definition,
>>>>> python would produce a program which instantiated and bound objects to
>>>>> some kind of scene. By all means go and build that - but you will end
>>>>> up
>>>>> working at the library level with csg libraries, or outputting an
>>>>> openscad
>>>>> file of the resulting construct. The former means you can query
>>>>> internal
>>>>> state more easily, the latter is easy to do and has been done many
>>>>> times
>>>>> already.
>>>>>
>>>>> Either way you don't end up with anything connected to OpenSCAD beyond
>>>>> perhaps being able to recycle code.
>>>>>
>>>>> Alan
>>>>>
>>>>> _______________________________________________
>>>>> OpenSCAD mailing list
>>>>> Discuss@.openscad
>>>>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>>>
>>>>
>>>>
>>>> --
>>>> Sent from: http://forum.openscad.org/
>>>>
>>>> _______________________________________________
>>>> OpenSCAD mailing list
>>>>
>>> Discuss@.openscad
>>>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>> _______________________________________________
>>> OpenSCAD mailing list
>>> Discuss@.openscad
>>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>
>>
>>
>>
>> --
>> Sent from: http://forum.openscad.org/
>>
>> _______________________________________________
>> OpenSCAD mailing list
>>
> Discuss@.openscad
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@.openscad
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
--
Sent from: http://forum.openscad.org/
A
adrianv
Fri, Nov 27, 2020 1:56 AM
I think this is the reason why it's frustrating to see that everybody writes
their own library. Some of these issues are pretty tricky...and they've
also been discussed at great length for years on this forum or in other
places. Instead of building on previous work, everybody just reinvents the
wheel. Again and again and again.
When I implemented path sweep I took a look at those discussions and prior
work and I concluded that you need multiple options for handling twist
because no one method works for all cases. There is a method that is robust
and will work for any path, but it tends to produce mysterious and often
obnoxious twisting. There are other methods that control the twist, but
they can fail if the path has certain properties. There's also the case
where you actually know what twist you want, such as putting an object onto
the surface of another object.
I wonder how many people realize that the fastest way to compute beziers in
openscad is using matrix products instead of the recursive casteljau method.
Again, the constant reinvention of the wheel really stands in the way of
progress.
acwest wrote
I know when I made my own parametric bezier sweep, accounting for twist
along the path was most vexing
On Thu, 26 Nov 2020, 20:02 adrianv, <
I need the algorithms to build the missing primitives so I can compose
things
with CSG. If you're doing sweep then that means you're also coding a
missing primitive. A full path sweep implementation is an algorithm.
You
need to make decision about how you're going to manage the twist of the
sections as you move along the path, and it's not obvious how to do this
in
general.
nophead wrote
But if you want to write nontrivial geometric algorithms (to fill in
missing functionality) then challenges quickly mount.
Yes no doubt they would but I can make everything I need without
nontrivial
geometric algorithms. I do just compose cube and cylinders in the main
plus
a few sweeps, isn't that what CSG is? If you don't want to make
geometry with CSG then OpenSCAD doesn't seem to be the right tool. It
certainly not a good language for coding algorithms.
I think this is the reason why it's frustrating to see that everybody writes
their own library. Some of these issues are pretty tricky...and they've
also been discussed at great length for years on this forum or in other
places. Instead of building on previous work, everybody just reinvents the
wheel. Again and again and again.
When I implemented path sweep I took a look at those discussions and prior
work and I concluded that you need multiple options for handling twist
because no one method works for all cases. There is a method that is robust
and will work for any path, but it tends to produce mysterious and often
obnoxious twisting. There are other methods that control the twist, but
they can fail if the path has certain properties. There's also the case
where you actually know what twist you want, such as putting an object onto
the surface of another object.
I wonder how many people realize that the fastest way to compute beziers in
openscad is using matrix products instead of the recursive casteljau method.
Again, the constant reinvention of the wheel really stands in the way of
progress.
acwest wrote
> I know when I made my own parametric bezier sweep, accounting for twist
> along the path was most vexing
>
> On Thu, 26 Nov 2020, 20:02 adrianv, <
> avm4@
> > wrote:
>
>> I need the algorithms to build the missing primitives so I can compose
>> things
>> with CSG. If you're doing sweep then that means you're also coding a
>> missing primitive. A full path sweep implementation is an algorithm.
>> You
>> need to make decision about how you're going to manage the twist of the
>> sections as you move along the path, and it's not obvious how to do this
>> in
>> general.
>>
>>
>> nophead wrote
>> >> But if you want to write nontrivial geometric algorithms (to fill in
>> the
>> > missing functionality) then challenges quickly mount.
>> >
>> > Yes no doubt they would but I can make everything I need without
>> > nontrivial
>> > geometric algorithms. I do just compose cube and cylinders in the main
>> > plus
>> > a few sweeps, isn't that what CSG is? If you don't want to make
>> > geometry with CSG then OpenSCAD doesn't seem to be the right tool. It
>> is
>> > certainly not a good language for coding algorithms.
>>
>>
>>
>>
>>
>> --
>> Sent from: http://forum.openscad.org/
>>
>> _______________________________________________
>> OpenSCAD mailing list
>>
> Discuss@.openscad
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss@.openscad
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
--
Sent from: http://forum.openscad.org/
AC
Alan Cox
Fri, Nov 27, 2020 1:56 AM
the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
certainly is a language in the classical sense. It's got functions and
recursion and can theoretically do anything. It's just that doing things is
not always easy, or efficient. The code is harder to write. Of course,
once it's written then the complexity is hidden, and the actual models are
easy to construct.
It's not a programming language in the classic iterative sense because it
has no external inputs or behaviour changes. It's just a data structure
encoding. There is a fixed mapping between an openscad file and an STL
file so they are basically the same thing. One happens to be easier
to write.
The question about what OpenSCAD is "for" I think leads to the question of
whether it's a toy environment or an environment for real design. The
driving problem I generally struggle with is that every edge and corner in
my 3d printed models should be filleted or rounded, and this tends to be
very difficult, even though my models are pretty simple. I think I may have
this problem mostly solved, but it wasn't easy. Is there a better tool for
this, for constructing simple models with specified parametric dimensions,
where parts can have roundovers applied without a struggle?
There is at least one OpenSCAD relative that can do rounding nicely, but
it lacks the nice UI which is a key bit of OpenSCAD.
What I was trying to say though is
If you wanted to write a python library for working with openscad models
or using python syntax for it you can trivially write it so that the
python just outputs an openscad syntax file. In fact it's been done -
several times.
If you want to be able to manipulate the object through python
effectively though you end up with something that looks very different to
OpenSCAD because to provide useful extra power you need access to the
underlying data structures. Take a look at the python bindings to blender
and the access you have. Without that level of access and the ability to
mix in conditional behaviour and impure calculations you are just writing
openscad in a different format. With that, you don't actually want it
to look like OpenSCAD IMHO because you want to be able to do stuff like
reach into the vertex lists.
A good example would be creating a flat 2D object, extruding it and then
bending it. It's a classic problem when moving flat media model designs
to 3D print. OpenSCAD can't do it. You can take the flat 2D object, give
it thickness but you can't then bend it. A python syntax openscad would
be the same. Blender can do it because you can reach into the data
structures to do the bend in python. IOW to make a meaningfully better
programming language interface you need to be able to reach into objects
and directly manipulate them so you can write stuff like bend(),
centreof(), volumeof() etc.
If you are a programmer then that blender like interface is powerful. If
you are a non programmer then you want a primitive that bends an object
along a vector so you don't have to be a programmer.
Alan
> the threshold for a model being "wrong" for OpenSCAD? Note that OpenSCAD
> certainly is a language in the classical sense. It's got functions and
> recursion and can theoretically do anything. It's just that doing things is
> not always easy, or efficient. The code is harder to write. Of course,
> once it's written then the complexity is hidden, and the actual models are
> easy to construct.
It's not a programming language in the classic iterative sense because it
has no external inputs or behaviour changes. It's just a data structure
encoding. There is a fixed mapping between an openscad file and an STL
file so they are basically the same thing. One happens to be easier
to write.
> The question about what OpenSCAD is "for" I think leads to the question of
> whether it's a toy environment or an environment for real design. The
> driving problem I generally struggle with is that every edge and corner in
> my 3d printed models should be filleted or rounded, and this tends to be
> very difficult, even though my models are pretty simple. I think I may have
> this problem mostly solved, but it wasn't easy. Is there a better tool for
> this, for constructing simple models with specified parametric dimensions,
> where parts can have roundovers applied without a struggle?
There is at least one OpenSCAD relative that can do rounding nicely, but
it lacks the nice UI which is a key bit of OpenSCAD.
What I was trying to say though is
If you wanted to write a python library for working with openscad models
or using python syntax for it you can trivially write it so that the
python just outputs an openscad syntax file. In fact it's been done -
several times.
If you want to be able to manipulate the object through python
effectively though you end up with something that looks very different to
OpenSCAD because to provide useful extra power you need access to the
underlying data structures. Take a look at the python bindings to blender
and the access you have. Without that level of access and the ability to
mix in conditional behaviour and impure calculations you are just writing
openscad in a different format. With that, you don't actually want it
to look like OpenSCAD IMHO because you want to be able to do stuff like
reach into the vertex lists.
A good example would be creating a flat 2D object, extruding it and then
bending it. It's a classic problem when moving flat media model designs
to 3D print. OpenSCAD can't do it. You can take the flat 2D object, give
it thickness but you can't then bend it. A python syntax openscad would
be the same. Blender *can* do it because you can reach into the data
structures to do the bend in python. IOW to make a meaningfully better
programming language interface you need to be able to reach into objects
and directly manipulate them so you can write stuff like bend(),
centreof(), volumeof() etc.
If you are a programmer then that blender like interface is powerful. If
you are a non programmer then you want a primitive that bends an object
along a vector so you don't have to be a programmer.
Alan