discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Making a whole of small parts

G
gounthar
Fri, Jul 26, 2019 9:04 PM

Hi,

as I'm coming from onShape, I'm kind of lost sometimes.
I design boxes for hosting hardware. Most of the time, some small parts
don't fit that well (because I made errors when taking measurements, or the
printer is not that accurate), so I modify the small part of the big box,
and print once more everything.
If I ever want to add or modify something, I have to do the same again.
Print the whole box, and not the small part of the box.
Time, resource, and energy consuming.

I thought I had found the perfect tool with OpenSCAD, because I can define
my small parts in different files, use functions and modules, so that my
small parts can be printed more quickly, and modified if needed.
I'm getting used to it, but I'm not sure I am following the right path,
embracing the right phylosophy.
For example, I'm still struggling with translate in order to replicate lots
of small parts which are symmetrical to a construction line... I should
maybe get with mirror().
But let's say it's ok, mostly ok.

How am I supposed to integrate those small parts in the bigger part?
Just with translate() followed by the call to my module (with some
parameters maybe)?
Is there any other way that would be easier, or more OpenSCAD-like?

Thanks.

Bruno

--
Sent from: http://forum.openscad.org/

Hi, as I'm coming from onShape, I'm kind of lost sometimes. I design boxes for hosting hardware. Most of the time, some small parts don't fit that well (because I made errors when taking measurements, or the printer is not that accurate), so I modify the small part of the big box, and print once more everything. If I ever want to add or modify something, I have to do the same again. Print the whole box, and not the small part of the box. Time, resource, and energy consuming. I thought I had found the perfect tool with OpenSCAD, because I can define my small parts in different files, use functions and modules, so that my small parts can be printed more quickly, and modified if needed. I'm getting used to it, but I'm not sure I am following the right path, embracing the right phylosophy. For example, I'm still struggling with translate in order to replicate lots of small parts which are symmetrical to a construction line... I should maybe get with mirror(). But let's say it's ok, mostly ok. How am I supposed to integrate those small parts in the bigger part? Just with translate() followed by the call to my module (with some parameters maybe)? Is there any other way that would be easier, or more OpenSCAD-like? Thanks. Bruno -- Sent from: http://forum.openscad.org/
F
fred
Fri, Jul 26, 2019 9:19 PM

What you're describing is not just restricted to OpenSCAD, although it's a great reference point.
Consider to adopt a consistent practice when creating modules. The focus for a module should be a location in the module with which you will always be familiar. Add the notation in comments in the file if necessary, but at the very least, attempt to be consistent with the location.
If, for example, you always center the primitives when constructing a module, then translate within the module to create the aggregate object, you may find it useful to use a center reference for calling the module.
It's not always practical to use a center reference, but even without that reference point, you can manage your modules. The cube primitive will always be at ([0, 0, 0]) and you can use that to direct your module use, if needed.
There are complications with either reference point, but if your focus is on that reference point, you can adjust as you build.
Just my two cents.

On Friday, July 26, 2019, 5:04:58 PM EDT, gounthar <gounthar@gmail.com> wrote:  

Hi,

as I'm coming from onShape, I'm kind of lost sometimes.
I design boxes for hosting hardware. Most of the time, some small parts
don't fit that well (because I made errors when taking measurements, or the
printer is not that accurate), so I modify the small part of the big box,
and print once more everything.
If I ever want to add or modify something, I have to do the same again.
Print the whole box, and not the small part of the box.
Time, resource, and energy consuming.

I thought I had found the perfect tool with OpenSCAD, because I can define
my small parts in different files, use functions and modules, so that my
small parts can be printed more quickly, and modified if needed.
I'm getting used to it, but I'm not sure I am following the right path,
embracing the right phylosophy.
For example, I'm still struggling with translate in order to replicate lots
of small parts which are symmetrical to a construction line... I should
maybe get with mirror().
But let's say it's ok, mostly ok.

How am I supposed to integrate those small parts in the bigger part?
Just with translate() followed by the call to my module (with some
parameters maybe)?
Is there any other way that would be easier, or more OpenSCAD-like?

Thanks.

Bruno

--
Sent from: http://forum.openscad.org/


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

What you're describing is not just restricted to OpenSCAD, although it's a great reference point. Consider to adopt a consistent practice when creating modules. The focus for a module should be a location in the module with which you will always be familiar. Add the notation in comments in the file if necessary, but at the very least, attempt to be consistent with the location. If, for example, you always center the primitives when constructing a module, then translate within the module to create the aggregate object, you may find it useful to use a center reference for calling the module. It's not always practical to use a center reference, but even without that reference point, you can manage your modules. The cube primitive will always be at ([0, 0, 0]) and you can use that to direct your module use, if needed. There are complications with either reference point, but if your focus is on that reference point, you can adjust as you build. Just my two cents. On Friday, July 26, 2019, 5:04:58 PM EDT, gounthar <gounthar@gmail.com> wrote: Hi, as I'm coming from onShape, I'm kind of lost sometimes. I design boxes for hosting hardware. Most of the time, some small parts don't fit that well (because I made errors when taking measurements, or the printer is not that accurate), so I modify the small part of the big box, and print once more everything. If I ever want to add or modify something, I have to do the same again. Print the whole box, and not the small part of the box. Time, resource, and energy consuming. I thought I had found the perfect tool with OpenSCAD, because I can define my small parts in different files, use functions and modules, so that my small parts can be printed more quickly, and modified if needed. I'm getting used to it, but I'm not sure I am following the right path, embracing the right phylosophy. For example, I'm still struggling with translate in order to replicate lots of small parts which are symmetrical to a construction line... I should maybe get with mirror(). But let's say it's ok, mostly ok. How am I supposed to integrate those small parts in the bigger part? Just with translate() followed by the call to my module (with some parameters maybe)? Is there any other way that would be easier, or more OpenSCAD-like? Thanks. Bruno -- Sent from: http://forum.openscad.org/ _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
A
adrianv
Fri, Jul 26, 2019 9:20 PM

I don't understand your goal.  Do you want to print 20 copies of the same
part?  Or 20 copies of the same part but with variations in part parameters?
And your question is how to arrange them on a line?

This code will put 20 identical parts on the X axis.  The BOSL library is
here:  https://github.com/revarbat/BOSL

include <BOSL/constants.scad>
use <BOSL/transforms.scad>

xspread(spacing=5, n=20) part();

You can do something like

xspread(spacing=5, n=20) part(partpos=$pos);

which will modify the part depending on its position to create 20 different
parts.

Is this the kind of thing you're looking for?  If not, please clarify.
Maybe give a specific example of what you're doing.

gounthar wrote

Hi,

as I'm coming from onShape, I'm kind of lost sometimes.
I design boxes for hosting hardware. Most of the time, some small parts
don't fit that well (because I made errors when taking measurements, or
the
printer is not that accurate), so I modify the small part of the big box,
and print once more everything.
If I ever want to add or modify something, I have to do the same again.
Print the whole box, and not the small part of the box.
Time, resource, and energy consuming.

I thought I had found the perfect tool with OpenSCAD, because I can define
my small parts in different files, use functions and modules, so that my
small parts can be printed more quickly, and modified if needed.
I'm getting used to it, but I'm not sure I am following the right path,
embracing the right phylosophy.
For example, I'm still struggling with translate in order to replicate
lots
of small parts which are symmetrical to a construction line... I should
maybe get with mirror().
But let's say it's ok, mostly ok.

How am I supposed to integrate those small parts in the bigger part?
Just with translate() followed by the call to my module (with some
parameters maybe)?
Is there any other way that would be easier, or more OpenSCAD-like?

Thanks.

Bruno

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list

Discuss@.openscad

I don't understand your goal. Do you want to print 20 copies of the same part? Or 20 copies of the same part but with variations in part parameters? And your question is how to arrange them on a line? This code will put 20 identical parts on the X axis. The BOSL library is here: https://github.com/revarbat/BOSL include <BOSL/constants.scad> use <BOSL/transforms.scad> xspread(spacing=5, n=20) part(); You can do something like xspread(spacing=5, n=20) part(partpos=$pos); which will modify the part depending on its position to create 20 different parts. Is this the kind of thing you're looking for? If not, please clarify. Maybe give a specific example of what you're doing. gounthar wrote > Hi, > > as I'm coming from onShape, I'm kind of lost sometimes. > I design boxes for hosting hardware. Most of the time, some small parts > don't fit that well (because I made errors when taking measurements, or > the > printer is not that accurate), so I modify the small part of the big box, > and print once more everything. > If I ever want to add or modify something, I have to do the same again. > Print the whole box, and not the small part of the box. > Time, resource, and energy consuming. > > I thought I had found the perfect tool with OpenSCAD, because I can define > my small parts in different files, use functions and modules, so that my > small parts can be printed more quickly, and modified if needed. > I'm getting used to it, but I'm not sure I am following the right path, > embracing the right phylosophy. > For example, I'm still struggling with translate in order to replicate > lots > of small parts which are symmetrical to a construction line... I should > maybe get with mirror(). > But let's say it's ok, mostly ok. > > How am I supposed to integrate those small parts in the bigger part? > Just with translate() followed by the call to my module (with some > parameters maybe)? > Is there any other way that would be easier, or more OpenSCAD-like? > > Thanks. > > Bruno > > > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@.openscad > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org -- Sent from: http://forum.openscad.org/
MM
Matt Maggio
Fri, Jul 26, 2019 10:12 PM

Put your part into a module, run a for loop and have a translate statement
to space them out.

But reading your problem again is confusing, do you want to print just the
changed part? how would you then integrate it with the whole, like
physically? I guess you could hack up a print and glue another piece on,
but the whole point of printing is that it makes the object without you
fiddling around with a file a or chainsaw or whatever.

In woodworking it's measure twice, cut once. In 3D printing it's more like
spend 100 x more time on CAD than you ever do interacting with the printer.

On Fri, Jul 26, 2019 at 4:21 PM adrianv avm4@cornell.edu wrote:

I don't understand your goal.  Do you want to print 20 copies of the same
part?  Or 20 copies of the same part but with variations in part
parameters?
And your question is how to arrange them on a line?

This code will put 20 identical parts on the X axis.  The BOSL library is
here:  https://github.com/revarbat/BOSL

include <BOSL/constants.scad>
use <BOSL/transforms.scad>

xspread(spacing=5, n=20) part();

You can do something like

xspread(spacing=5, n=20) part(partpos=$pos);

which will modify the part depending on its position to create 20 different
parts.

Is this the kind of thing you're looking for?  If not, please clarify.
Maybe give a specific example of what you're doing.

gounthar wrote

Hi,

as I'm coming from onShape, I'm kind of lost sometimes.
I design boxes for hosting hardware. Most of the time, some small parts
don't fit that well (because I made errors when taking measurements, or
the
printer is not that accurate), so I modify the small part of the big box,
and print once more everything.
If I ever want to add or modify something, I have to do the same again.
Print the whole box, and not the small part of the box.
Time, resource, and energy consuming.

I thought I had found the perfect tool with OpenSCAD, because I can

define

my small parts in different files, use functions and modules, so that my
small parts can be printed more quickly, and modified if needed.
I'm getting used to it, but I'm not sure I am following the right path,
embracing the right phylosophy.
For example, I'm still struggling with translate in order to replicate
lots
of small parts which are symmetrical to a construction line... I should
maybe get with mirror().
But let's say it's ok, mostly ok.

How am I supposed to integrate those small parts in the bigger part?
Just with translate() followed by the call to my module (with some
parameters maybe)?
Is there any other way that would be easier, or more OpenSCAD-like?

Thanks.

Bruno

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list

Discuss@.openscad

--
Matt Maggio
Senior Research Technologist
Resuscitation Institute (Rm. 1.380)
Department of Medicine
Rosalind Franklin University of Medicine and Science
3333, Green Bay Rd, North Chicago, IL - 60064.
Office: 224-570-7954
Cell: 815-703-2879
"Take chances, make mistakes, and get messy!!" - Mrs. Frizzle, pHd

Put your part into a module, run a for loop and have a translate statement to space them out. But reading your problem again is confusing, do you want to print just the changed part? how would you then integrate it with the whole, like physically? I guess you could hack up a print and glue another piece on, but the whole point of printing is that it makes the object without you fiddling around with a file a or chainsaw or whatever. In woodworking it's measure twice, cut once. In 3D printing it's more like spend 100 x more time on CAD than you ever do interacting with the printer. On Fri, Jul 26, 2019 at 4:21 PM adrianv <avm4@cornell.edu> wrote: > I don't understand your goal. Do you want to print 20 copies of the same > part? Or 20 copies of the same part but with variations in part > parameters? > And your question is how to arrange them on a line? > > This code will put 20 identical parts on the X axis. The BOSL library is > here: https://github.com/revarbat/BOSL > > include <BOSL/constants.scad> > use <BOSL/transforms.scad> > > xspread(spacing=5, n=20) part(); > > You can do something like > > xspread(spacing=5, n=20) part(partpos=$pos); > > which will modify the part depending on its position to create 20 different > parts. > > Is this the kind of thing you're looking for? If not, please clarify. > Maybe give a specific example of what you're doing. > > > gounthar wrote > > Hi, > > > > as I'm coming from onShape, I'm kind of lost sometimes. > > I design boxes for hosting hardware. Most of the time, some small parts > > don't fit that well (because I made errors when taking measurements, or > > the > > printer is not that accurate), so I modify the small part of the big box, > > and print once more everything. > > If I ever want to add or modify something, I have to do the same again. > > Print the whole box, and not the small part of the box. > > Time, resource, and energy consuming. > > > > I thought I had found the perfect tool with OpenSCAD, because I can > define > > my small parts in different files, use functions and modules, so that my > > small parts can be printed more quickly, and modified if needed. > > I'm getting used to it, but I'm not sure I am following the right path, > > embracing the right phylosophy. > > For example, I'm still struggling with translate in order to replicate > > lots > > of small parts which are symmetrical to a construction line... I should > > maybe get with mirror(). > > But let's say it's ok, mostly ok. > > > > How am I supposed to integrate those small parts in the bigger part? > > Just with translate() followed by the call to my module (with some > > parameters maybe)? > > Is there any other way that would be easier, or more OpenSCAD-like? > > > > Thanks. > > > > Bruno > > > > > > > > -- > > Sent from: http://forum.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 > -- Matt Maggio Senior Research Technologist Resuscitation Institute (Rm. 1.380) Department of Medicine Rosalind Franklin University of Medicine and Science 3333, Green Bay Rd, North Chicago, IL - 60064. Office: 224-570-7954 Cell: 815-703-2879 "Take chances, make mistakes, and get messy!!" - Mrs. Frizzle, pHd
FV
Frank van der Hulst
Fri, Jul 26, 2019 10:55 PM

I also use OnShape, and don't understand how that forces you to print all
the parts every time. In OnShape you can export individual parts to STL
files for printing individually.

In Slic3r you can split a multi-part STL into separate parts and delete the
parts you don't want to print.

Getting back to OpenSCad, you can use if() statements to only generate a
part if a variable or condition is true.

On Sat, 27 Jul 2019, 10:15 Matt Maggio, mattmaggio19@gmail.com wrote:

Put your part into a module, run a for loop and have a translate statement
to space them out.

But reading your problem again is confusing, do you want to print just the
changed part? how would you then integrate it with the whole, like
physically? I guess you could hack up a print and glue another piece on,
but the whole point of printing is that it makes the object without you
fiddling around with a file a or chainsaw or whatever.

In woodworking it's measure twice, cut once. In 3D printing it's more like
spend 100 x more time on CAD than you ever do interacting with the printer.

On Fri, Jul 26, 2019 at 4:21 PM adrianv avm4@cornell.edu wrote:

I don't understand your goal.  Do you want to print 20 copies of the same
part?  Or 20 copies of the same part but with variations in part
parameters?
And your question is how to arrange them on a line?

This code will put 20 identical parts on the X axis.  The BOSL library is
here:  https://github.com/revarbat/BOSL

include <BOSL/constants.scad>
use <BOSL/transforms.scad>

xspread(spacing=5, n=20) part();

You can do something like

xspread(spacing=5, n=20) part(partpos=$pos);

which will modify the part depending on its position to create 20
different
parts.

Is this the kind of thing you're looking for?  If not, please clarify.
Maybe give a specific example of what you're doing.

gounthar wrote

Hi,

as I'm coming from onShape, I'm kind of lost sometimes.
I design boxes for hosting hardware. Most of the time, some small parts
don't fit that well (because I made errors when taking measurements, or
the
printer is not that accurate), so I modify the small part of the big

box,

and print once more everything.
If I ever want to add or modify something, I have to do the same again.
Print the whole box, and not the small part of the box.
Time, resource, and energy consuming.

I thought I had found the perfect tool with OpenSCAD, because I can

define

my small parts in different files, use functions and modules, so that my
small parts can be printed more quickly, and modified if needed.
I'm getting used to it, but I'm not sure I am following the right path,
embracing the right phylosophy.
For example, I'm still struggling with translate in order to replicate
lots
of small parts which are symmetrical to a construction line... I should
maybe get with mirror().
But let's say it's ok, mostly ok.

How am I supposed to integrate those small parts in the bigger part?
Just with translate() followed by the call to my module (with some
parameters maybe)?
Is there any other way that would be easier, or more OpenSCAD-like?

Thanks.

Bruno

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list

Discuss@.openscad

--
Matt Maggio
Senior Research Technologist
Resuscitation Institute (Rm. 1.380)
Department of Medicine
Rosalind Franklin University of Medicine and Science
3333, Green Bay Rd, North Chicago, IL - 60064.
Office: 224-570-7954
Cell: 815-703-2879
"Take chances, make mistakes, and get messy!!" - Mrs. Frizzle, pHd


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

I also use OnShape, and don't understand how that forces you to print all the parts every time. In OnShape you can export individual parts to STL files for printing individually. In Slic3r you can split a multi-part STL into separate parts and delete the parts you don't want to print. Getting back to OpenSCad, you can use if() statements to only generate a part if a variable or condition is true. On Sat, 27 Jul 2019, 10:15 Matt Maggio, <mattmaggio19@gmail.com> wrote: > Put your part into a module, run a for loop and have a translate statement > to space them out. > > But reading your problem again is confusing, do you want to print just the > changed part? how would you then integrate it with the whole, like > physically? I guess you could hack up a print and glue another piece on, > but the whole point of printing is that it makes the object without you > fiddling around with a file a or chainsaw or whatever. > > In woodworking it's measure twice, cut once. In 3D printing it's more like > spend 100 x more time on CAD than you ever do interacting with the printer. > > > On Fri, Jul 26, 2019 at 4:21 PM adrianv <avm4@cornell.edu> wrote: > >> I don't understand your goal. Do you want to print 20 copies of the same >> part? Or 20 copies of the same part but with variations in part >> parameters? >> And your question is how to arrange them on a line? >> >> This code will put 20 identical parts on the X axis. The BOSL library is >> here: https://github.com/revarbat/BOSL >> >> include <BOSL/constants.scad> >> use <BOSL/transforms.scad> >> >> xspread(spacing=5, n=20) part(); >> >> You can do something like >> >> xspread(spacing=5, n=20) part(partpos=$pos); >> >> which will modify the part depending on its position to create 20 >> different >> parts. >> >> Is this the kind of thing you're looking for? If not, please clarify. >> Maybe give a specific example of what you're doing. >> >> >> gounthar wrote >> > Hi, >> > >> > as I'm coming from onShape, I'm kind of lost sometimes. >> > I design boxes for hosting hardware. Most of the time, some small parts >> > don't fit that well (because I made errors when taking measurements, or >> > the >> > printer is not that accurate), so I modify the small part of the big >> box, >> > and print once more everything. >> > If I ever want to add or modify something, I have to do the same again. >> > Print the whole box, and not the small part of the box. >> > Time, resource, and energy consuming. >> > >> > I thought I had found the perfect tool with OpenSCAD, because I can >> define >> > my small parts in different files, use functions and modules, so that my >> > small parts can be printed more quickly, and modified if needed. >> > I'm getting used to it, but I'm not sure I am following the right path, >> > embracing the right phylosophy. >> > For example, I'm still struggling with translate in order to replicate >> > lots >> > of small parts which are symmetrical to a construction line... I should >> > maybe get with mirror(). >> > But let's say it's ok, mostly ok. >> > >> > How am I supposed to integrate those small parts in the bigger part? >> > Just with translate() followed by the call to my module (with some >> > parameters maybe)? >> > Is there any other way that would be easier, or more OpenSCAD-like? >> > >> > Thanks. >> > >> > Bruno >> > >> > >> > >> > -- >> > Sent from: http://forum.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 >> > > > -- > Matt Maggio > Senior Research Technologist > Resuscitation Institute (Rm. 1.380) > Department of Medicine > Rosalind Franklin University of Medicine and Science > 3333, Green Bay Rd, North Chicago, IL - 60064. > Office: 224-570-7954 > Cell: 815-703-2879 > "Take chances, make mistakes, and get messy!!" - Mrs. Frizzle, pHd > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
NH
nop head
Sat, Jul 27, 2019 7:01 AM

I sometimes print a small section of a part if it has I detail I want to
test. I use this https://github.com/nophead/NopSCADlib#Clip module to cut
out the bit I want.

On Fri, 26 Jul 2019 at 23:56, Frank van der Hulst drifter.frank@gmail.com
wrote:

I also use OnShape, and don't understand how that forces you to print all
the parts every time. In OnShape you can export individual parts to STL
files for printing individually.

In Slic3r you can split a multi-part STL into separate parts and delete
the parts you don't want to print.

Getting back to OpenSCad, you can use if() statements to only generate a
part if a variable or condition is true.

On Sat, 27 Jul 2019, 10:15 Matt Maggio, mattmaggio19@gmail.com wrote:

Put your part into a module, run a for loop and have a translate
statement to space them out.

But reading your problem again is confusing, do you want to print just
the changed part? how would you then integrate it with the whole, like
physically? I guess you could hack up a print and glue another piece on,
but the whole point of printing is that it makes the object without you
fiddling around with a file a or chainsaw or whatever.

In woodworking it's measure twice, cut once. In 3D printing it's more
like spend 100 x more time on CAD than you ever do interacting with the
printer.

On Fri, Jul 26, 2019 at 4:21 PM adrianv avm4@cornell.edu wrote:

I don't understand your goal.  Do you want to print 20 copies of the same
part?  Or 20 copies of the same part but with variations in part
parameters?
And your question is how to arrange them on a line?

This code will put 20 identical parts on the X axis.  The BOSL library is
here:  https://github.com/revarbat/BOSL

include <BOSL/constants.scad>
use <BOSL/transforms.scad>

xspread(spacing=5, n=20) part();

You can do something like

xspread(spacing=5, n=20) part(partpos=$pos);

which will modify the part depending on its position to create 20
different
parts.

Is this the kind of thing you're looking for?  If not, please clarify.
Maybe give a specific example of what you're doing.

gounthar wrote

Hi,

as I'm coming from onShape, I'm kind of lost sometimes.
I design boxes for hosting hardware. Most of the time, some small parts
don't fit that well (because I made errors when taking measurements, or
the
printer is not that accurate), so I modify the small part of the big

box,

and print once more everything.
If I ever want to add or modify something, I have to do the same again.
Print the whole box, and not the small part of the box.
Time, resource, and energy consuming.

I thought I had found the perfect tool with OpenSCAD, because I can

define

my small parts in different files, use functions and modules, so that

my

small parts can be printed more quickly, and modified if needed.
I'm getting used to it, but I'm not sure I am following the right path,
embracing the right phylosophy.
For example, I'm still struggling with translate in order to replicate
lots
of small parts which are symmetrical to a construction line... I should
maybe get with mirror().
But let's say it's ok, mostly ok.

How am I supposed to integrate those small parts in the bigger part?
Just with translate() followed by the call to my module (with some
parameters maybe)?
Is there any other way that would be easier, or more OpenSCAD-like?

Thanks.

Bruno

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list

Discuss@.openscad

--
Matt Maggio
Senior Research Technologist
Resuscitation Institute (Rm. 1.380)
Department of Medicine
Rosalind Franklin University of Medicine and Science
3333, Green Bay Rd, North Chicago, IL - 60064.
Office: 224-570-7954
Cell: 815-703-2879
"Take chances, make mistakes, and get messy!!" - Mrs. Frizzle, pHd


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

I sometimes print a small section of a part if it has I detail I want to test. I use this <https://github.com/nophead/NopSCADlib#Clip> module to cut out the bit I want. On Fri, 26 Jul 2019 at 23:56, Frank van der Hulst <drifter.frank@gmail.com> wrote: > I also use OnShape, and don't understand how that forces you to print all > the parts every time. In OnShape you can export individual parts to STL > files for printing individually. > > In Slic3r you can split a multi-part STL into separate parts and delete > the parts you don't want to print. > > Getting back to OpenSCad, you can use if() statements to only generate a > part if a variable or condition is true. > > On Sat, 27 Jul 2019, 10:15 Matt Maggio, <mattmaggio19@gmail.com> wrote: > >> Put your part into a module, run a for loop and have a translate >> statement to space them out. >> >> But reading your problem again is confusing, do you want to print just >> the changed part? how would you then integrate it with the whole, like >> physically? I guess you could hack up a print and glue another piece on, >> but the whole point of printing is that it makes the object without you >> fiddling around with a file a or chainsaw or whatever. >> >> In woodworking it's measure twice, cut once. In 3D printing it's more >> like spend 100 x more time on CAD than you ever do interacting with the >> printer. >> >> >> On Fri, Jul 26, 2019 at 4:21 PM adrianv <avm4@cornell.edu> wrote: >> >>> I don't understand your goal. Do you want to print 20 copies of the same >>> part? Or 20 copies of the same part but with variations in part >>> parameters? >>> And your question is how to arrange them on a line? >>> >>> This code will put 20 identical parts on the X axis. The BOSL library is >>> here: https://github.com/revarbat/BOSL >>> >>> include <BOSL/constants.scad> >>> use <BOSL/transforms.scad> >>> >>> xspread(spacing=5, n=20) part(); >>> >>> You can do something like >>> >>> xspread(spacing=5, n=20) part(partpos=$pos); >>> >>> which will modify the part depending on its position to create 20 >>> different >>> parts. >>> >>> Is this the kind of thing you're looking for? If not, please clarify. >>> Maybe give a specific example of what you're doing. >>> >>> >>> gounthar wrote >>> > Hi, >>> > >>> > as I'm coming from onShape, I'm kind of lost sometimes. >>> > I design boxes for hosting hardware. Most of the time, some small parts >>> > don't fit that well (because I made errors when taking measurements, or >>> > the >>> > printer is not that accurate), so I modify the small part of the big >>> box, >>> > and print once more everything. >>> > If I ever want to add or modify something, I have to do the same again. >>> > Print the whole box, and not the small part of the box. >>> > Time, resource, and energy consuming. >>> > >>> > I thought I had found the perfect tool with OpenSCAD, because I can >>> define >>> > my small parts in different files, use functions and modules, so that >>> my >>> > small parts can be printed more quickly, and modified if needed. >>> > I'm getting used to it, but I'm not sure I am following the right path, >>> > embracing the right phylosophy. >>> > For example, I'm still struggling with translate in order to replicate >>> > lots >>> > of small parts which are symmetrical to a construction line... I should >>> > maybe get with mirror(). >>> > But let's say it's ok, mostly ok. >>> > >>> > How am I supposed to integrate those small parts in the bigger part? >>> > Just with translate() followed by the call to my module (with some >>> > parameters maybe)? >>> > Is there any other way that would be easier, or more OpenSCAD-like? >>> > >>> > Thanks. >>> > >>> > Bruno >>> > >>> > >>> > >>> > -- >>> > Sent from: http://forum.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 >>> >> >> >> -- >> Matt Maggio >> Senior Research Technologist >> Resuscitation Institute (Rm. 1.380) >> Department of Medicine >> Rosalind Franklin University of Medicine and Science >> 3333, Green Bay Rd, North Chicago, IL - 60064. >> Office: 224-570-7954 >> Cell: 815-703-2879 >> "Take chances, make mistakes, and get messy!!" - Mrs. Frizzle, pHd >> _______________________________________________ >> 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 >
G
gounthar
Sat, Jul 27, 2019 9:23 PM

Sorry for not being clear at all.
Discuss
http://forum.openscad.org/Making-a-whole-of-small-parts-tp27057p27058.html
got it right despite my bad explanations.

I have several problems. For "big"  boxes
https://github.com/gounthar/MerryKombo/blob/CAD/big.png  , I have small
sections https://github.com/gounthar/MerryKombo/blob/CAD/usb2uart.png
(which are not parts but a part of the box) which have lots of symmetry.
My first problem/question was: what is the correct way to code that
symmetry? Should I use mirror, or translate?
I guess I should use mirror, and that leads to the second question: does it
change anything to use mirror or translate, knowing that this section will
be inserted in the final part, and maybe in other parts later on? It should
be "agnostic", like a component in classic development, but easily inserted
wherever its final position in the part may be.
Another example would be the  camera hole
https://github.com/gounthar/MerryKombo/blob/CAD/camera_view.png  for the
same  part
https://github.com/gounthar/MerryKombo/blob/CAD/big%20with%20camera%20view.png

The problem I have with onShape regarding this sections is that I don't know
how to cut them in order to only print them to see if they fit, and not the
whole big part with them included. I guess I could do that with parts
studios and parts assembly, but I already have way too many tabs for that
project. That's why I was pretty happy to find OpenSCAD with modules so that
I can refine those small sections before integrating them into the big part.
Yes, I'm measuring more than twice before printing, but there are still some
errors or improvements after the first print (especially with OpenSCAD, as
I'm used to rely on the tool just by using constraints to get things right,
in comparison with OpenSCAD where I have to work out the right numbers by
myself).

I hope I did not muddy the water more than in my previous message...

Thanks.

--
Sent from: http://forum.openscad.org/

Sorry for not being clear at all. Discuss <http://forum.openscad.org/Making-a-whole-of-small-parts-tp27057p27058.html> got it right despite my bad explanations. I have several problems. For "big" boxes <https://github.com/gounthar/MerryKombo/blob/CAD/big.png> , I have small sections <https://github.com/gounthar/MerryKombo/blob/CAD/usb2uart.png> (which are not parts but a part of the box) which have lots of symmetry. My first problem/question was: what is the correct way to code that symmetry? Should I use mirror, or translate? I guess I should use mirror, and that leads to the second question: does it change anything to use mirror or translate, knowing that this section will be inserted in the final part, and maybe in other parts later on? It should be "agnostic", like a component in classic development, but easily inserted wherever its final position in the part may be. Another example would be the camera hole <https://github.com/gounthar/MerryKombo/blob/CAD/camera_view.png> for the same part <https://github.com/gounthar/MerryKombo/blob/CAD/big%20with%20camera%20view.png> The problem I have with onShape regarding this sections is that I don't know how to cut them in order to only print them to see if they fit, and not the whole big part with them included. I guess I could do that with parts studios and parts assembly, but I already have way too many tabs for that project. That's why I was pretty happy to find OpenSCAD with modules so that I can refine those small sections before integrating them into the big part. Yes, I'm measuring more than twice before printing, but there are still some errors or improvements after the first print (especially with OpenSCAD, as I'm used to rely on the tool just by using constraints to get things right, in comparison with OpenSCAD where I have to work out the right numbers by myself). I hope I did not muddy the water more than in my previous message... Thanks. -- Sent from: http://forum.openscad.org/
A
adrianv
Sat, Jul 27, 2019 10:08 PM

The referenced message suggests creating parts with standardized locations.
This is not unreasonable, but I think it is inflexible and messy, in the
end.  (If you want to place the part on something, how do you do it?  You
have to know the part dimensions.)  In BOSL2 the author has been working on
giving parts a set of "anchors", and I think this is a great idea.  You can
have standard anchors such as the left side and right side or top and bottom
of a part, but you can also add special anchors for screw holes or other
special locations on each part.  Then you can have your modules place the
specified anchor point at the origin.  This is much better than having to
move parts around based on knowing that they start with their centers at the
origin or something like that.  I find it always seems a remarkable struggle
to get a part that appears in the first quadrant, for example, rotated and
positioned correctly.

I think also the Relativity library does something similar, and the obiscad
attachment library was also an inspiration for this approach.

With regards to creating a part, you should use whichever is easier of
mirror or translate, or makes the construction easier to understand.  Once
the geometry has been created, it won't make a difference which commands you
used to create it.  I did run into a gotcha with mirror---my part had
chirality (screw threads) and mirror changed its handedness.

gounthar wrote

Sorry for not being clear at all.
Discuss
<http://forum.openscad.org/Making-a-whole-of-small-parts-tp27057p27058.html>
got it right despite my bad explanations.

I have several problems. For "big"  boxes
<https://github.com/gounthar/MerryKombo/blob/CAD/big.png>  , I have
small
sections
<https://github.com/gounthar/MerryKombo/blob/CAD/usb2uart.png>
(which are not parts but a part of the box) which have lots of symmetry.
My first problem/question was: what is the correct way to code that
symmetry? Should I use mirror, or translate?
I guess I should use mirror, and that leads to the second question: does
it
change anything to use mirror or translate, knowing that this section will
be inserted in the final part, and maybe in other parts later on? It
should
be "agnostic", like a component in classic development, but easily
inserted
wherever its final position in the part may be.
Another example would be the  camera hole
<https://github.com/gounthar/MerryKombo/blob/CAD/camera_view.png>
for the
same  part
<https://github.com/gounthar/MerryKombo/blob/CAD/big%20with%20camera%20view.png>

The problem I have with onShape regarding this sections is that I don't
know
how to cut them in order to only print them to see if they fit, and not
the
whole big part with them included. I guess I could do that with parts
studios and parts assembly, but I already have way too many tabs for that
project. That's why I was pretty happy to find OpenSCAD with modules so
that
I can refine those small sections before integrating them into the big
part.
Yes, I'm measuring more than twice before printing, but there are still
some
errors or improvements after the first print (especially with OpenSCAD, as
I'm used to rely on the tool just by using constraints to get things
right,
in comparison with OpenSCAD where I have to work out the right numbers by
myself).

I hope I did not muddy the water more than in my previous message...

Thanks.

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list

Discuss@.openscad

The referenced message suggests creating parts with standardized locations. This is not unreasonable, but I think it is inflexible and messy, in the end. (If you want to place the part on something, how do you do it? You have to know the part dimensions.) In BOSL2 the author has been working on giving parts a set of "anchors", and I think this is a great idea. You can have standard anchors such as the left side and right side or top and bottom of a part, but you can also add special anchors for screw holes or other special locations on each part. Then you can have your modules place the specified anchor point at the origin. This is much better than having to move parts around based on knowing that they start with their centers at the origin or something like that. I find it always seems a remarkable struggle to get a part that appears in the first quadrant, for example, rotated and positioned correctly. I think also the Relativity library does something similar, and the obiscad attachment library was also an inspiration for this approach. With regards to creating a part, you should use whichever is easier of mirror or translate, or makes the construction easier to understand. Once the geometry has been created, it won't make a difference which commands you used to create it. I did run into a gotcha with mirror---my part had chirality (screw threads) and mirror changed its handedness. gounthar wrote > Sorry for not being clear at all. > Discuss > &lt;http://forum.openscad.org/Making-a-whole-of-small-parts-tp27057p27058.html&gt; > got it right despite my bad explanations. > > I have several problems. For "big" boxes > &lt;https://github.com/gounthar/MerryKombo/blob/CAD/big.png&gt; , I have > small > sections > &lt;https://github.com/gounthar/MerryKombo/blob/CAD/usb2uart.png&gt; > (which are not parts but a part of the box) which have lots of symmetry. > My first problem/question was: what is the correct way to code that > symmetry? Should I use mirror, or translate? > I guess I should use mirror, and that leads to the second question: does > it > change anything to use mirror or translate, knowing that this section will > be inserted in the final part, and maybe in other parts later on? It > should > be "agnostic", like a component in classic development, but easily > inserted > wherever its final position in the part may be. > Another example would be the camera hole > &lt;https://github.com/gounthar/MerryKombo/blob/CAD/camera_view.png&gt; > for the > same part > &lt;https://github.com/gounthar/MerryKombo/blob/CAD/big%20with%20camera%20view.png&gt; > > The problem I have with onShape regarding this sections is that I don't > know > how to cut them in order to only print them to see if they fit, and not > the > whole big part with them included. I guess I could do that with parts > studios and parts assembly, but I already have way too many tabs for that > project. That's why I was pretty happy to find OpenSCAD with modules so > that > I can refine those small sections before integrating them into the big > part. > Yes, I'm measuring more than twice before printing, but there are still > some > errors or improvements after the first print (especially with OpenSCAD, as > I'm used to rely on the tool just by using constraints to get things > right, > in comparison with OpenSCAD where I have to work out the right numbers by > myself). > > I hope I did not muddy the water more than in my previous message... > > Thanks. > > > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@.openscad > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org -- Sent from: http://forum.openscad.org/
M
MichaelAtOz
Sun, Jul 28, 2019 5:48 AM

gounthar wrote

My first problem/question was: what is the correct way to code that
symmetry? Should I use mirror, or translate?

Mirror may seem convenient to position items which have symmetry.
But will the item always be symmetrical?
If you later wish to adapt your code such that it loses symmetry it will be
complicated.

Just because two rectangles are equally spaced from a centre line doesn't
make them mirrors.
For example if you wanted to add a text imprint, the opposite side would be
inverted.

I rarely use mirror, and reserve it for where actual inversion is needed, ie
when you want the left side to become the right side (or top/bottom).
http://forum.openscad.org/file/t359/Mirror-x.png


Admin - email* me if you need anything, or if I've done something stupid...

  • click on my MichaelAtOz label, there is a link to email me.

Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above.

The TPP is no simple “trade agreement.”  Fight it! http://www.ourfairdeal.org/  time is running out!

Sent from: http://forum.openscad.org/

gounthar wrote > My first problem/question was: what is the correct way to code that > symmetry? Should I use mirror, or translate? Mirror may seem convenient to position items which have symmetry. But will the item always be symmetrical? If you later wish to adapt your code such that it loses symmetry it will be complicated. Just because two rectangles are equally spaced from a centre line doesn't make them mirrors. For example if you wanted to add a text imprint, the opposite side would be inverted. I rarely use mirror, and reserve it for where actual inversion is needed, ie when you want the left side to become the right side (or top/bottom). <http://forum.openscad.org/file/t359/Mirror-x.png> ----- Admin - email* me if you need anything, or if I've done something stupid... * click on my MichaelAtOz label, there is a link to email me. Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above. The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out! -- Sent from: http://forum.openscad.org/
NH
nop head
Sun, Jul 28, 2019 8:13 AM

Yes I rarely use mirror but I have for(side = [-1, 1]) all over the place
with a translate( side * ) ... and possibly rotate( side * ...). That makes
my parts symmetrical but I can always have and if(side > 0) to break
symmetry.

On Sun, 28 Jul 2019 at 06:49, MichaelAtOz oz.at.michael@gmail.com wrote:

gounthar wrote

My first problem/question was: what is the correct way to code that
symmetry? Should I use mirror, or translate?

Mirror may seem convenient to position items which have symmetry.
But will the item always be symmetrical?
If you later wish to adapt your code such that it loses symmetry it will be
complicated.

Just because two rectangles are equally spaced from a centre line doesn't
make them mirrors.
For example if you wanted to add a text imprint, the opposite side would be
inverted.

I rarely use mirror, and reserve it for where actual inversion is needed,
ie
when you want the left side to become the right side (or top/bottom).
http://forum.openscad.org/file/t359/Mirror-x.png


Admin - email* me if you need anything, or if I've done something stupid...

  • click on my MichaelAtOz label, there is a link to email me.

Unless specifically shown otherwise above, my contribution is in the
Public Domain; to the extent possible under law, I have waived all
copyright and related or neighbouring rights to this work. Obviously
inclusion of works of previous authors is not included in the above.

The TPP is no simple “trade agreement.”  Fight it!
http://www.ourfairdeal.org/  time is running out!

Sent from: http://forum.openscad.org/


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

Yes I rarely use mirror but I have for(side = [-1, 1]) all over the place with a translate( side * ) ... and possibly rotate( side * ...). That makes my parts symmetrical but I can always have and if(side > 0) to break symmetry. On Sun, 28 Jul 2019 at 06:49, MichaelAtOz <oz.at.michael@gmail.com> wrote: > gounthar wrote > > My first problem/question was: what is the correct way to code that > > symmetry? Should I use mirror, or translate? > > Mirror may seem convenient to position items which have symmetry. > But will the item always be symmetrical? > If you later wish to adapt your code such that it loses symmetry it will be > complicated. > > > Just because two rectangles are equally spaced from a centre line doesn't > make them mirrors. > For example if you wanted to add a text imprint, the opposite side would be > inverted. > > I rarely use mirror, and reserve it for where actual inversion is needed, > ie > when you want the left side to become the right side (or top/bottom). > <http://forum.openscad.org/file/t359/Mirror-x.png> > > > > ----- > Admin - email* me if you need anything, or if I've done something stupid... > > * click on my MichaelAtOz label, there is a link to email me. > > Unless specifically shown otherwise above, my contribution is in the > Public Domain; to the extent possible under law, I have waived all > copyright and related or neighbouring rights to this work. Obviously > inclusion of works of previous authors is not included in the above. > > The TPP is no simple “trade agreement.” Fight it! > http://www.ourfairdeal.org/ time is running out! > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >