Thank You! As I depend on other people printers until I finish my own
Rostock and KOSSEL I would have to test what works on their printers. Also,
I need to redesign many pieces, but luckily I had similar pieces described
in OPEN SCAD . Unfortunately some informations I did not receive and
"Arms" were not supplied with ROSTOCK. I got some formulas for KOSSEL, but
it is triangilar while ROSTOCK has square box shape. Also Mr.Krux from
RepRap AustriA sent wrongly cut plates that were also not seasoned wood and
buckled. Did not get heating Plate either. Worst is, I spent the money and
have nothing.
Kossel parts were from small model of 20cm diameter and 40 cm height, and
the trippled verticals and horizontals. since it was badly 3D printed with
cracks between layers holow 70% with too small holes and holes too close to
edge, thing fell apart under own weight.
I must be boring You...... It is late and I go to sleep.
Oh, one more thing: I am gettin answers in DUPLICATE, how to stop this?
On Tue, Jan 3, 2017 at 1:42 AM, nop head nop.head@gmail.com wrote:
By the way, do You know best size of "kerf" so pieces could be joined
strongly after 3D printing, but not be impossible to do so?
On a correctly calibrated printer it is 0. That is what I use whenever I
join pieces together. The problem is most people tune their objects to
match the printer instead of getting their printer to print the correct
size.
The source code of the editor is here: https://github.com/openscad/
openscad/blob/master/src/scintillaeditor.cpp
On 3 January 2017 at 00:22, Marijan Pollak oberonmp@gmail.com wrote:
I shall do what I can, to best of my abilities.
Can You tell me where I can find Source code of that OPEN SCAD
editor?
It would not be necesary if after cutting one side I can rotate and cut
the rest.
I just do not know how to separate cut pieces and export just one that is
ready
for 3D printing. I found out how to delete one of cut parts by accident,
but in
some cases of huge sized pieces I would prefer if I can cut everything,
export
it all and then separate just 1/3 of pieces as other 2/3 is same.
However it would be usefull sometimes to be able to pick some cut pieces
and
rejoin them. I.E. I have cone in center of turbine, which in case I cut
turbine
across the center, would be cut in many pieces, Then in case I cut out
center
using cylinder, it would be usefull to be able to put it together back as
it was.
Of course it is possible to make Module which would redraw center or even
use it as "Knife" to cut out centerpiece, or I have to cutt this first
and save.
By the way, do You know best size of "kerf" so pieces could be joined
strongly
after 3D printing, but not be impossible to do so?
On Tue, Jan 3, 2017 at 12:52 AM, Torsten Paul Torsten.Paul@gmx.de
wrote:
On 01/02/2017 11:59 PM, Marijan Pollak wrote:
So every example has to be fully commented, as even
author may not recognize it after some time pases.
Next it has to be fully tested to do all what it has
to do. If possible some examples of use should be
included.
Yes, I totally agree. We don't have a very exhaustive
"official" tutorial yet (there are some good ones linked
from the main web site).
Not long ago, we did start a collection of code snippets
as examples for specific topics.
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Tips_and_Tricks
It's still a bit random, but if you have a list of
short topics, feel free to post the list. Maybe we
can come up with example code for some or even all
and add them to the tips&tricks page.
ciao,
Torsten.
OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
--
Regards from Croatia, the Homeland of one of greatest inventors from 19th
and 20th Centuries, Engineer Nikola Tesla!
OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
--
Regards from Croatia, the Homeland of one of greatest inventors from 19th
and 20th Centuries, Engineer Nikola Tesla!
Marijan Pollak wrote
I just do not know how to separate cut pieces and export just one that is
ready for 3D printing.
...
However it would be usefull sometimes to be able to pick some cut pieces
and
rejoin them.
This example shows how:
// Example of how to cut parts and use the various pieces
// released to the public domain
// show original object
translate([0,300,0])
color("orange") // orange for original
%testObject();
// ---
// demonstrate how to use parts of object for export
// ---
// select which parts to use - select one part for export
part=0; // 0=all, 1=left, 2=right
// show left of object - moved to the left
if (part==0 || part==1)
translate([-200,0,0])
simpleCut(side="left", color="lime") // lime for left
testObject();
// show right of object - moved to the right
if (part==0 || part==2)
translate([200,0,0])
simpleCut(side="right",color="red",debug=true) // red for right
testObject();
// ---
// show how to use two seperate pieces
// ---
// move left side to new position
translate([5,-300,0])
rotate([0,0,180])
simpleCut(side="left",color="blue")
testObject();
// move and rotate right side
translate([-5,-300,0])
rotate([0,0,180])
rotate([90,0,0])
simpleCut(side="right", color="lightblue")
testObject();
// asymetric object
module testObject() {
union() {
cube([200,50,50],center=true);
cube([50,200,75],center=true);
translate([-100,0,0])
sphere(d=90);
translate([100,0,0])
cylinder(d=90,h=90,center=true);
} // u
} // testObject
module simpleCut(side="left",color="yellow", maxSize=500,debug=false) {
// cuts the children objects in half along the y-axis
// side = "left" | "right" - side to keep
// maxSize is cube bigger than object to be cut (too big and it doesn't
display properly)
//
color(color) // color to identify parts for education
render() // render so color is not affected
intersection() {
children();
if (side=="left")
translate([-maxSize/2,0,0])
cube(maxSize,center=true);
else
translate([maxSize/2,0,0])
cube(maxSize,center=true);
} // i
// debug code to show cut cube
if (debug)
translate([(side=="left"? -1 : +1)*maxSize/2,0,0]) // shorter method
color("snow",0.3)
%cube(maxSize,center=true);
} // simpleCut
Admin - PM me if you need anything, or if I've done something stupid...
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.
View this message in context: http://forum.openscad.org/Export-Stl-File-module-tp19829p19878.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
And here you have an example using the PuzzleCutLib:
//OpenSCAD PuzzleCut Library Demo
//http://www.nothinglabs.com
//License: http://creativecommons.org/licenses/by/3.0/
include
<puzzlecutlib.scad>
// Example of angular cuts
// the model to cut in pieces
module model()
linear_extrude(h=10,scale=0.5,twist=60,$fn=200) circle(100,$fn=5);
stampSize = [500,500,300]; //size of cutting stamp
cutSize = 9; //size of the puzzle cuts
yCut1 = [30, 63]; //locations of puzzle cuts relative to Y axis center
kerf = -0.75; //supports +/- numbers (greater value = tighter fit)
//using a small negative number may be useful
//to assure easy fit for 3d printing
//using positive values useful for lasercutting
//negative values can also help visualize cuts
//without seperating pieces
numbPieces = 7; // number of cutting pieces
pieceToPrint = 5; // piece to print: negative means all
// do the cutting job
for(i=[0:numbPieces-1]) {
ang0 = i*360/numbPieces;
ang1 = (i+1)360/numbPieces;
if(i==pieceToPrint || pieceToPrint<0 )
translate(10[cos(-(ang0+ang1)/2), sin(-(ang0+ang1)/2), 0])
CutPie(ang0,ang1)
model();
}
// cut a pie piece of children centered at the origin
module CutPie(ang0, ang1)
// ang0 and ang1 are the two cutting angles
{ rotate(-ang1-90)
yFemaleCut(offset = 0, cut = yCut1)
rotate(ang1-ang0)
yMaleCut(offset = 0, cut = yCut1)
rotate(90+ang0)
children();
}
--
View this message in context: http://forum.openscad.org/Export-Stl-File-module-tp19829p19880.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
Please do not mix formula evaluation with Order of execution.
In case of Union it is irelevant which operand came first, IMHO.
So it would be natural to write a(); b();Union(); which gives same
result as b(); a(); Union(); and same case should be with Intersection();
Here is important only that operands exist before Union(); or
Intersection();
In case of Subtract(); it must be known which operand is subtracted
from and form which object it is subtracted from.
So logically it have to be same result just programmer would know
that what is evaluated came first and then operation, and still better
if it is explicitely stated in Subtract(a(),b()) in which case no Object is
created
before instruction, but they are created within instruction.
If language use Subtract for mathematical operations also, then it is
logical
that first is one operand from which is second one subtracted, I.e
Subtract(5,2) = 3.....
I do not know if name can be assigned to Object after it is created and
then it is
possible to use it wherever it is necesary.
Therefore it can be written
basePlate = Cylinder( h=thick, r=Radius)
nutHole = (Join( smallCilinder,Translate ( 0,0,15, hexaRod) );
Subtract (basePlate, translate(10,10,0, nutHole);
Subtract (basePlate, translate(20,20,0, nutHole);
Subtract (basePlate, translate(30,30,0, nutHole);
Subtract (basePlate, translate(10,10,0, nutHole);
Subtract (basePlate, translate(20,10,0, nutHole);
Subtract (basePlate, translate(30,10,0, nutHole);
Subtract (basePlate, translate(10,20,0, nutHole);
Subtract (basePlate, translate(20,20,0, nutHole);
Subtract (basePlate, translate(30,20,0, nutHole);
It is logical that Object is first created and then it can be reused.
It would also be logical to write
doubleHexa = join(hexaRod, translate(0,Radius,0, hexaRod ))
insideCut = subtract (doubleHexa, ScaleDown(doubleHexa, kerf))
subtract(basePlate, Insidecut);
where Knife would cut a hole in form od double hexagonal shape
joined by one edge and would thus replace T shaped cut of Puzzlecut.
If I could then separate inside and outside and move that intersection
away beside basePlate so it become separate object, I would have all I
need......
Marijan Pollak wrote
Please do not mix formula evaluation with Order of execution.
...
I do not know if name can be assigned to Object after it is created and
then it is possible to use it wherever it is necesary.
Therefore it can be written
basePlate = Cylinder( h=thick, r=Radius)
...
Pollak,
It has been hard to try to help you. I don't know what you want: to get some
help with OpenSCAD language or to define another one. I would expect that
someone doing his first steps in OpenSCAD to explore at least the OpenSCAD
Manual through the CheatSheet identifying the main constructs, operators and
functions. It seems you do not intend to do that just digress about your own
ideas on how it would behave.
I have asked you before for a small piece of code you believe is executed
upside down. No answer. Many other people have tried to help you. But you
only reply to those who you disagree with. And each disagreement has
revealed your complete ignorance on the basic fundamentals of the language.
I don't see any possibility of convergence following this way.
Here is my ultimate atempt:
OpenSCAD CheatSheet/ http://www.openscad.org/cheatsheet/
OpenScad Manual http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
--
View this message in context: http://forum.openscad.org/Export-Stl-File-module-tp19829p19900.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
There is no defined order of execution with OpenSCAD. It turns a
description into geometry and nobody cares what order it does that, the
result is always the same. It leaves the possibility of evaluating geometry
in parallel to make use of multiple cores. The only constraint is the
operands must be evaluated before an operation that combines them.
No you can't assign geometry to variables but you can reuse objects as many
times as you want. You define a module and instantiate as many times as you
need. If the parameters passed are the same it simply reuses the geometry
it returned last time. If not it caches a new version as well. So, for
example, I define a module to make screws and have hundreds in my machine
it only ever computes one of each size that I use.
If you want different language then make your own. If you want to use
OpenSCAD you need to learn how to use it instead of saying it should do
something else. It isn't going to change radically now because there are
too many people using it for many years.
On 3 January 2017 at 19:19, Marijan Pollak oberonmp@gmail.com wrote:
Please do not mix formula evaluation with Order of execution.
In case of Union it is irelevant which operand came first, IMHO.
So it would be natural to write a(); b();Union(); which gives same
result as b(); a(); Union(); and same case should be with Intersection();
Here is important only that operands exist before Union(); or
Intersection();
In case of Subtract(); it must be known which operand is subtracted
from and form which object it is subtracted from.
So logically it have to be same result just programmer would know
that what is evaluated came first and then operation, and still better
if it is explicitely stated in Subtract(a(),b()) in which case no Object
is created
before instruction, but they are created within instruction.
If language use Subtract for mathematical operations also, then it is
logical
that first is one operand from which is second one subtracted, I.e
Subtract(5,2) = 3.....
I do not know if name can be assigned to Object after it is created and
then it is
possible to use it wherever it is necesary.
Therefore it can be written
basePlate = Cylinder( h=thick, r=Radius)
nutHole = (Join( smallCilinder,Translate ( 0,0,15, hexaRod) );
Subtract (basePlate, translate(10,10,0, nutHole);
Subtract (basePlate, translate(20,20,0, nutHole);
Subtract (basePlate, translate(30,30,0, nutHole);
Subtract (basePlate, translate(10,10,0, nutHole);
Subtract (basePlate, translate(20,10,0, nutHole);
Subtract (basePlate, translate(30,10,0, nutHole);
Subtract (basePlate, translate(10,20,0, nutHole);
Subtract (basePlate, translate(20,20,0, nutHole);
Subtract (basePlate, translate(30,20,0, nutHole);
It is logical that Object is first created and then it can be reused.
It would also be logical to write
doubleHexa = join(hexaRod, translate(0,Radius,0, hexaRod ))
insideCut = subtract (doubleHexa, ScaleDown(doubleHexa, kerf))
subtract(basePlate, Insidecut);
where Knife would cut a hole in form od double hexagonal shape
joined by one edge and would thus replace T shaped cut of Puzzlecut.
If I could then separate inside and outside and move that intersection
away beside basePlate so it become separate object, I would have all I
need......
Ronaldo, Pizza cut is not suitable for my turbine that has cone in the
center.
Also, i already found that FOR loop cannot go from 0 if one has division by
i
as divisoun by zero is forbidden/impossible, and also between Female and
Male cut object has to be recreated, as each cut removes opposite side of
cut.
Problem is also that some values are not explained, nor which units are
this,
and IMHO that cannot be cm or even mm
stampSize = [500,500,300]; //size of cutting stamp
cutSize = 9; //size of the puzzle cuts
yCut1 = [30, 63]; //locations of puzzle cuts relative to Y axis center
Where for stampSize original Puzzlecut say that it has to be larger than
half
of object cut.......
But what is cutSize and What units are in yCut1?
Likewise after something is cut into two pieces, is it one Object in STL
file or two, and how to separate
them to be each printed for itself?
I can make "knife" as 3D object with thickness
of "kerf" and then subtract it from plate, but I would have to extract
piece left inside of cut area, to keep
its shape which would join two edges of cut.
If I would do what Puzzlecut do, then I can get outside and Inside part,
and I should do linear cut after
inside space is evacuated , then cut another instance and remove outside of
cut.
then I would get 3 pieces, with one connecting adjacent edges of cut.
But for further cutting, all has to be treated as one piece and rotated
appropriate number of Angles.
Perhaps I can experiment, but I do not know how to remove "Inside" or
"Outside" of cut at will, and
it would be best if I can assign some name to each object after I select it.
Then procedure would be simple:
1.form the "Knife" and save as 3D object, even in separate .stl file.
Import Knife and Object to be cut and subtract Knife from Object after
positioning it to right place,
or rotating Object and repeating cuts. However also severaL Instances of
Knife can be joined into one
and then Object has to be cut only once and resulting .stl file saved.
Then I need to be able to separate pieces as separate 3D objects for each
to be 3D printed.
Or i can do Intersect with smaller cylinder to get just what is inside
Center,save the file,
then cut center out with Cylinder with radius +kerf and then doYour Pizza
cut and save resulting file
to have all other pieces too.
--
View this message in context: http://forum.openscad.org/Export-Stl-File-module-tp19829p19902.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
On 03. jan. 2017 20:19, Marijan Pollak wrote:
I do not know if name can be assigned to Object after it is created and
then it is possible to use it wherever it is necesary.
Therefore it can be written
basePlate = Cylinder( h=thick, r=Radius)
nutHole = (Join( smallCilinder,Translate ( 0,0,15, hexaRod) );
Subtract (basePlate, translate(10,10,0, nutHole);
Subtract (basePlate, translate(20,20,0, nutHole);
Subtract (basePlate, translate(30,30,0, nutHole);
Subtract (basePlate, translate(10,10,0, nutHole);
Subtract (basePlate, translate(20,10,0, nutHole);
Subtract (basePlate, translate(30,10,0, nutHole);
Subtract (basePlate, translate(10,20,0, nutHole);
Subtract (basePlate, translate(20,20,0, nutHole);
Subtract (basePlate, translate(30,20,0, nutHole);
You cannot do this in OpenSCAD, model objects cannot be assigned to
variables there. What you are talking about is closer in philosophy to
how my AngelScript CSG language implementation works ( ref.
http://arnholm.org/using-angelscript-csg/ ), based on the general
purpose scripting language at http://www.angelcode.com/angelscript/.
A screenshot with an "AngelScript CSG" adaption of your case here:
https://gyazo.com/35055ef80060467dd58d028244735eb5
Obviously, it is possible to expresses things more or less like you
suggest, but this is "AngelScript CSG" language, not the OpenSCAD language.
The basic principle in that version is that the code is interpreted and
translated into an OpenSCAD .csg file, i.e. a simplified variant of the
OpenSCAD language. It is thus OpenSCAD that in this case actually
perform the boolean operations and does visualisation (right side of
screenshot). Thus, it is here is simply a preprocessor to the OpenSCAD
boolean engine.
(I just simplified/removed things in the example that was missing from
your description).
One important difference between such an approach and the OpenSCAD
language is that AngelScript executes the way most languages do, it has
variables that can be modified etc. In contrast, OpenSCAD is
declarative, variables cannot be modified, they are really constants.
If you want to use OpenSCAD, you must adhere to the language the way it
is. It is really quite different in its philosophy from what you describe.
Regards
Carsten Arnholm
Dear Ronaldo, Did You try this example?
In my computer it first complain to be unable to find puzzlecutlib.scad and
that yFemaleCut is missing.
Then I included my library but I got something else than expected, changed
this and that and still it is what I do not expect...
On Tue, Jan 3, 2017 at 4:42 AM, Ronaldo [via OpenSCAD] <
ml-node+s1091067n19880h86@n5.nabble.com> wrote:
And here you have an example using the PuzzleCutLib:
//OpenSCAD PuzzleCut Library Demo
//http://www.nothinglabs.com
//License: http://creativecommons.org/licenses/by/3.0/
include <puzzlecutlib.scad>
// Example of angular cuts
// the model to cut in pieces
module model()
linear_extrude(h=10,scale=0.5,twist=60,$fn=200) circle(100,$fn=5);
stampSize = [500,500,300]; //size of cutting stamp
cutSize = 9; //size of the puzzle cuts
yCut1 = [30, 63]; //locations of puzzle cuts relative to Y axis center
kerf = -0.75; //supports +/- numbers (greater value = tighter fit)
//using a small negative number may be useful
//to assure easy fit for 3d printing
//using positive values useful for lasercutting
//negative values can also help visualize cuts
//without seperating pieces
numbPieces = 7; // number of cutting pieces
pieceToPrint = 5; // piece to print: negative means all
// do the cutting job
for(i=[0:numbPieces-1]) {
ang0 = i*360/numbPieces;
ang1 = (i+1)360/numbPieces;
if(i==pieceToPrint || pieceToPrint<0 )
translate(10[cos(-(ang0+ang1)/2), sin(-(ang0+ang1)/2), 0])
CutPie(ang0,ang1)
model();
}
// cut a pie piece of children centered at the origin
module CutPie(ang0, ang1)
// ang0 and ang1 are the two cutting angles
{ rotate(-ang1-90)
yFemaleCut(offset = 0, cut = yCut1)
rotate(ang1-ang0)
yMaleCut(offset = 0, cut = yCut1)
rotate(90+ang0)
children();
}
If you reply to this email, your message will be added to the discussion
below:
http://forum.openscad.org/Export-Stl-File-module-tp19829p19880.html
To unsubscribe from Export Stl. File module, click here
http://forum.openscad.org/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=19829&code=b2Jlcm9ubXBAZ21haWwuY29tfDE5ODI5fC00Mzg5MzYyNzk=
.
NAML
http://forum.openscad.org/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml
--
Regards from Croatia, the Homeland of one of greatest inventors from 19th
and 20th Centuries, Engineer Nikola Tesla!
--
View this message in context: http://forum.openscad.org/Export-Stl-File-module-tp19829p19905.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
Marijan Pollak wrote
Dear Ronaldo, Did You try this example?
In my computer it first complain to be unable to find puzzlecutlib.scad
and
that yFemaleCut is missing.
http://forum.openscad.org/file/n19908/PieSlice3.png
http://forum.openscad.org/file/n19908/PieSliceAll.png
PuzzleCut OpenSCAD Library http://www.thingiverse.com/thing:35834
include <….scad>
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Include_Statement
--
View this message in context: http://forum.openscad.org/Export-Stl-File-module-tp19829p19908.html
Sent from the OpenSCAD mailing list archive at Nabble.com.