[OpenSCAD] sumUp() to Replace Difference() (in most cases)

pproj pproj at posteo.de
Fri Oct 7 10:16:13 EDT 2016


Sorry of course i mean addAfterRemoving() as opposed to Add() and not 
the non-existent "addBeforeRemoving()" which is now called just add()
that is definitely a weak spot in the predicate naming.

On 07.10.2016 15:58, pproj wrote:
> Hello Don
> thanks for the good words, in fact i was thinking of naming the
> predicates positive() and negative().
> but this could not accomodate for the addBeforeRemoving() predicate
> which is very useful in real world cases.
> say when you construct holes and put screws in them.
> my take was  that calling it add() and remove() is less mathematical
> and should be a little bit more intuitively understood by just looking
> at the code.
>  at least this is what your module is doing: it "adds" stuff to your
> main model, then it "removes" some and than it can add new stuff
> (think screws in the holes) in one iteration. putting both things in
> the same iterationv(no nesting of sumUp needed) simplifies the code
> for the real-world-tasks for me a lot
> Peter
> On 07.10.2016 02:34, don bright wrote:
>> That is very cool, seems a little bit like using "negative objects"
>> and "positive objects".
>> 
>> --
>> 
>>  don bright
>> 
>>  hmbright at fastmail.com
>> 
>> On Thu, Oct 6, 2016, at 02:55 PM, pproj at posteo.de wrote:
>> 
>>> hello after few years of work on my quite complex cad project, which
>>> i created using openscad .(my love to openscad was hampered by quite
>>> few a limittions for a compex project- but i am still working with
>>> it)
>>> 
>>> anyway,
>>> 
>>> i have decided it is time to share with others some of the things i
>>> have discovered and developed in the years of use.
>>> 
>>> i will start with the sumUp(). which is an advanced replacement for
>>> the difference() keyword and allows for holes inside modules, and
>>> reduced nesting producing simpler code among other things.
>>> 
>>> i have put it it under:
>>> 
>>> https://github.com/solidboredom/sumUp [1]
>>> 
>>> but to show you why i have been using it so much: it can produce
>>> this example. the code below and the lib is all you need
>>> 
>>> :
>>> 
>>> include<sumup.scad>
>>> 
>>> sumUp()
>>> {
>>> add()
>>> cube([20,20,7],center=true);
>>> lidWithNailsAndWasher();
>>> }
>>> 
>>> //== modules below ==
>>> module lidWithNailsAndWasher()
>>> {
>>> add() //washer
>>> translate([0,0,8])
>>> cube([20,20,1],center=true);
>>> addAfterRemoving() //top cover without holes
>>> translate([0,0,11])
>>> color("green")
>>> cube([17,17,2],center=true);
>>> for(x=[-1,1],y=[-1,1])
>>> translate([x*7,y*7,2])
>>> {
>>> remove()
>>> cylinder(h=25,d=4.5,center=true);
>>> #addAfterRemoving()
>>> cylinder(h=10,d2=3,d1=1);
>>> }
>>> }
>>> 
>>> i have been quite happy with thhe library (actually its predecessor)
>>> so i hope you will find it useful too.
>>> 
>>> i have been using it so much i would like to have its approach
>>> somehow integrated in openscad itself.
>>> 
>>> this perhaps could resolve its main drawback: speed on complex
>>> models: openscad creates a lot groups and getting much slower on
>>> complex models than with the difference().
>>> 
>>> i would also like to share another library: essentially a human(not
>>> linear algebra robot) oriented syntax rewrite library for basic
>>> openscad operations i use a lot, but still need to make it ready for
>>> publishing and documented first.
>>> 
>>> so whats your take folks?
>>> 
>>> Peter
>>> 
>>> _______________________________________________
>>> 
>>> OpenSCAD mailing list
>>> 
>>> Discuss at lists.openscad.org
>>> 
>>> 
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>> [2]
>> 
>> 
>> 
>> Links:
>> ------
>> [1] https://github.com/solidboredom/sumUp
>> [2] 
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>> 
>> _______________________________________________
>> OpenSCAD mailing list
>> Discuss at lists.openscad.org
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
> 
> _______________________________________________
> OpenSCAD mailing list
> Discuss at lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org




More information about the Discuss mailing list