Maths problem = finding corners of an intersection of 2 polygons

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Maths problem = finding corners of an intersection of 2 polygons

alexgibson

Hi all

 

I have a very practical problem – a failed 3D print which is over 10 DAYS in with as many to go, and as it stopped cleanly, perfectly recoverable IF I can re-register the X and Y axis, which I want to try to do by re-playing just a section of the diamond pattern infill, and jogging in x and Y until everything lines up perfectly.

 

The attached, hacked down GCODE file is one attempt to do this, by isolating just a few lines of the infill.  This would work.  Even better would be just to print the square at the intersection of these lines.

 

Using the following lines of OpenSCAD I have been able to draw a square which perfectly corresponds to the intersection:

 

intersection()

                {

                polygon(points=[[378.546,352.217],[458.698,272.065],[384.642,252.783],[324.204,313.221]]);

                polygon(points=[[379.141,252.143],[470.219,343.221],[403.88,370.221],[301.294,267.635]]);

                }

 

Is anybody able to point me to either

1)      Suitable mathematical equations to find the corner co=ordinates of this polygon?

2)      A way to get OpenSCAD to output the corner co-ordinates?

 

Thanks!!!

 

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

·         Project management

·         Operations & Process improvement

·         3D Printing

 


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

60mm liliypad-recovery3a-20072019 0 infillonly7.gcode (825 bytes) Download Attachment
tp3
Reply | Threaded
Open this post in threaded view
|

Re: Maths problem = finding corners of an intersection of 2 polygons

tp3
On 21.07.19 02:20, Alex Gibson wrote:
> 2)      A way to get OpenSCAD to output the corner co-ordinates?

Export as SVG, that gives:

M 428.88,-301.882 L 382.211,-348.552 L 335.542,-301.883 L 382.212,-255.214 z

Note that the Y coordinates are negated due to SVG coordinate
system having the origin top left.

ciao,
  Torsten.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
-- Torsten
Reply | Threaded
Open this post in threaded view
|

Re: Maths problem = finding corners of an intersection of 2 polygons

alexgibson

Fantastic, thanks Torsten, I was just thinking on similar lines...

 

I remembered an online STL to OpenSCAD converter.

 

So I did a Linear_extrude of my intersection and got:

 

 

Then used this dead useful tool https://jsfiddle.net/Riham/yzvGD/ to get:

 

module object1(scale) {polyhedron(

points=[[382.211,348.552,0],[428.88,301.883,0],[382.211,255.214,0],[382.211,348.552,0],[382.211,255.214,0],[335.542,301.883,0],[382.211,255.214,10],[428.88,301.883,10],[382.211,348.552,10],[335.542,301.883,10],[382.211,255.214,10],[382.211,348.552,10],[382.211,348.552,0],[428.88,301.883,10],[428.88,301.883,0],[382.211,348.552,0],[382.211,348.552,10],[428.88,301.883,10],[335.542,301.883,0],[382.211,348.552,10],[382.211,348.552,0],[335.542,301.883,0],[335.542,301.883,10],[382.211,348.552,10],[382.211,255.214,0],[335.542,301.883,10],[335.542,301.883,0],[382.211,255.214,0],[382.211,255.214,10],[335.542,301.883,10],[428.88,301.883,0],[382.211,255.214,10],[382.211,255.214,0],[428.88,301.883,0],[428.88,301.883,10],[382.211,255.214,10] ],

faces=[[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14],[15,16,17],[18,19,20],[21,22,23],[24,25,26],[27,28,29],[30,31,32],[33,34,35]]);}

 

 

translate([200,0,0])

object1(1);

 

 

Which if I strip it down a bit gets:

 

module object4(scale) {polyhedron(

points=[[382.211,348.552,0],

[428.88,301.883,0],

[382.211,255.214,0],

[335.542,301.883,0]],

faces=[[0,1,2,3]]);}

 

object4(1);

 

 

…which are exactly the same co-ordinates you got with rounding error of 0.001mm so that’s verified nicely via 2 methods!

 

Thanks very much!!!

 

Now I can use these co-ordinates to make a GCODE file that plays repeats of a square movement between those co-ordinates, and finally one that extrudes plastic for when I think I’ve jogged X and Y successfully!

 

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

• Project management

• Operations & Process improvement

• 3D Printing

 

-----Original Message-----
From: Discuss [mailto:[hidden email]] On Behalf Of Torsten Paul
Sent: 21 July 2019 01:39
To: [hidden email]
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

On 21.07.19 02:20, Alex Gibson wrote:

> 2)      A way to get OpenSCAD to output the corner co-ordinates?

 

Export as SVG, that gives:

 

M 428.88,-301.882 L 382.211,-348.552 L 335.542,-301.883 L 382.212,-255.214 z

 

Note that the Y coordinates are negated due to SVG coordinate

system having the origin top left.

 

ciao,

  Torsten.

 

_______________________________________________

OpenSCAD mailing list

[hidden email]

http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Maths problem = finding corners of an intersection of 2 polygons

alexgibson

Yep – playing the GCODE back in Simplify3D gets a perfect square:

 

That is:

 

G92 E0

G1 X378.546 Y352.217

G1 X458.698 Y272.065 E76.6848 ;

G1 X457.434 Y271.615

G1 X384.642 Y252.783

G1 X324.204 Y313.221 E144.1098 ;

G1 X323.103 Y312.381

G1 X379.141 Y252.143

G1 X470.219 Y343.221 E58.8828 ;

G1 X469.321 Y343.146

G1 X403.880 Y370.221

G1 X301.294 Y267.635 E129.3704 ;

 

; layer 717, Z = 359.250

G1 Z359.250

 

G1 X382.211 Y348.552

G1 X428.88 Y301.883 E76.6848 ;

G1 X382.211 Y255.214 E144.1098 ;

G1 X335.542 Y301.883 E58.8828 ;

G1 X382.211 Y348.552 E129.3704 ;

 

Now I just have to make a couple of versions of this, one repeating 3 times with no extrusion and one just once with extrusion, and jog the printer in between until I find the perfect offset!

 

Thanks again

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

·         Project management

·         Operations & Process improvement

·         3D Printing

 

From: Discuss [mailto:[hidden email]] On Behalf Of Alex Gibson
Sent: 21 July 2019 01:49
To: 'OpenSCAD general discussion'
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

Fantastic, thanks Torsten, I was just thinking on similar lines...

 

I remembered an online STL to OpenSCAD converter.

 

So I did a Linear_extrude of my intersection and got:

 

 

Then used this dead useful tool https://jsfiddle.net/Riham/yzvGD/ to get:

 

module object1(scale) {polyhedron(

points=[[382.211,348.552,0],[428.88,301.883,0],[382.211,255.214,0],[382.211,348.552,0],[382.211,255.214,0],[335.542,301.883,0],[382.211,255.214,10],[428.88,301.883,10],[382.211,348.552,10],[335.542,301.883,10],[382.211,255.214,10],[382.211,348.552,10],[382.211,348.552,0],[428.88,301.883,10],[428.88,301.883,0],[382.211,348.552,0],[382.211,348.552,10],[428.88,301.883,10],[335.542,301.883,0],[382.211,348.552,10],[382.211,348.552,0],[335.542,301.883,0],[335.542,301.883,10],[382.211,348.552,10],[382.211,255.214,0],[335.542,301.883,10],[335.542,301.883,0],[382.211,255.214,0],[382.211,255.214,10],[335.542,301.883,10],[428.88,301.883,0],[382.211,255.214,10],[382.211,255.214,0],[428.88,301.883,0],[428.88,301.883,10],[382.211,255.214,10] ],

faces=[[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14],[15,16,17],[18,19,20],[21,22,23],[24,25,26],[27,28,29],[30,31,32],[33,34,35]]);}

 

 

translate([200,0,0])

object1(1);

 

 

Which if I strip it down a bit gets:

 

module object4(scale) {polyhedron(

points=[[382.211,348.552,0],

[428.88,301.883,0],

[382.211,255.214,0],

[335.542,301.883,0]],

faces=[[0,1,2,3]]);}

 

object4(1);

 

 

…which are exactly the same co-ordinates you got with rounding error of 0.001mm so that’s verified nicely via 2 methods!

 

Thanks very much!!!

 

Now I can use these co-ordinates to make a GCODE file that plays repeats of a square movement between those co-ordinates, and finally one that extrudes plastic for when I think I’ve jogged X and Y successfully!

 

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

• Project management

• Operations & Process improvement

• 3D Printing

 

-----Original Message-----
From: Discuss [mailto:[hidden email]] On Behalf Of Torsten Paul
Sent: 21 July 2019 01:39
To: [hidden email]
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

On 21.07.19 02:20, Alex Gibson wrote:

> 2)      A way to get OpenSCAD to output the corner co-ordinates?

 

Export as SVG, that gives:

 

M 428.88,-301.882 L 382.211,-348.552 L 335.542,-301.883 L 382.212,-255.214 z

 

Note that the Y coordinates are negated due to SVG coordinate

system having the origin top left.

 

ciao,

  Torsten.

 

_______________________________________________

OpenSCAD mailing list

[hidden email]

http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Maths problem = finding corners of an intersection of 2 polygons

alexgibson

…so that’s my problem solved for this time.

 

But I’m still interested in solving with maths, with the idea of making a post-processing tool...

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

·         Project management

·         Operations & Process improvement

·         3D Printing

 

From: Discuss [mailto:[hidden email]] On Behalf Of Alex Gibson
Sent: 21 July 2019 02:05
To: 'OpenSCAD general discussion'
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

Yep – playing the GCODE back in Simplify3D gets a perfect square:

 

That is:

 

G92 E0

G1 X378.546 Y352.217

G1 X458.698 Y272.065 E76.6848 ;

G1 X457.434 Y271.615

G1 X384.642 Y252.783

G1 X324.204 Y313.221 E144.1098 ;

G1 X323.103 Y312.381

G1 X379.141 Y252.143

G1 X470.219 Y343.221 E58.8828 ;

G1 X469.321 Y343.146

G1 X403.880 Y370.221

G1 X301.294 Y267.635 E129.3704 ;

 

; layer 717, Z = 359.250

G1 Z359.250

 

G1 X382.211 Y348.552

G1 X428.88 Y301.883 E76.6848 ;

G1 X382.211 Y255.214 E144.1098 ;

G1 X335.542 Y301.883 E58.8828 ;

G1 X382.211 Y348.552 E129.3704 ;

 

Now I just have to make a couple of versions of this, one repeating 3 times with no extrusion and one just once with extrusion, and jog the printer in between until I find the perfect offset!

 

Thanks again

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

·         Project management

·         Operations & Process improvement

·         3D Printing

 

From: Discuss [mailto:[hidden email]] On Behalf Of Alex Gibson
Sent: 21 July 2019 01:49
To: 'OpenSCAD general discussion'
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

Fantastic, thanks Torsten, I was just thinking on similar lines...

 

I remembered an online STL to OpenSCAD converter.

 

So I did a Linear_extrude of my intersection and got:

 

 

Then used this dead useful tool https://jsfiddle.net/Riham/yzvGD/ to get:

 

module object1(scale) {polyhedron(

points=[[382.211,348.552,0],[428.88,301.883,0],[382.211,255.214,0],[382.211,348.552,0],[382.211,255.214,0],[335.542,301.883,0],[382.211,255.214,10],[428.88,301.883,10],[382.211,348.552,10],[335.542,301.883,10],[382.211,255.214,10],[382.211,348.552,10],[382.211,348.552,0],[428.88,301.883,10],[428.88,301.883,0],[382.211,348.552,0],[382.211,348.552,10],[428.88,301.883,10],[335.542,301.883,0],[382.211,348.552,10],[382.211,348.552,0],[335.542,301.883,0],[335.542,301.883,10],[382.211,348.552,10],[382.211,255.214,0],[335.542,301.883,10],[335.542,301.883,0],[382.211,255.214,0],[382.211,255.214,10],[335.542,301.883,10],[428.88,301.883,0],[382.211,255.214,10],[382.211,255.214,0],[428.88,301.883,0],[428.88,301.883,10],[382.211,255.214,10] ],

faces=[[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14],[15,16,17],[18,19,20],[21,22,23],[24,25,26],[27,28,29],[30,31,32],[33,34,35]]);}

 

 

translate([200,0,0])

object1(1);

 

 

Which if I strip it down a bit gets:

 

module object4(scale) {polyhedron(

points=[[382.211,348.552,0],

[428.88,301.883,0],

[382.211,255.214,0],

[335.542,301.883,0]],

faces=[[0,1,2,3]]);}

 

object4(1);

 

 

…which are exactly the same co-ordinates you got with rounding error of 0.001mm so that’s verified nicely via 2 methods!

 

Thanks very much!!!

 

Now I can use these co-ordinates to make a GCODE file that plays repeats of a square movement between those co-ordinates, and finally one that extrudes plastic for when I think I’ve jogged X and Y successfully!

 

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

• Project management

• Operations & Process improvement

• 3D Printing

 

-----Original Message-----
From: Discuss [mailto:[hidden email]] On Behalf Of Torsten Paul
Sent: 21 July 2019 01:39
To: [hidden email]
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

On 21.07.19 02:20, Alex Gibson wrote:

> 2)      A way to get OpenSCAD to output the corner co-ordinates?

 

Export as SVG, that gives:

 

M 428.88,-301.882 L 382.211,-348.552 L 335.542,-301.883 L 382.212,-255.214 z

 

Note that the Y coordinates are negated due to SVG coordinate

system having the origin top left.

 

ciao,

  Torsten.

 

_______________________________________________

OpenSCAD mailing list

[hidden email]

http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Maths problem = finding corners of an intersection of 2 polygons

MichaelAtOz's alias

> But I’m still interested in solving with maths,

 

 

Plus https://rosettacode.org/wiki/Find_the_intersection_of_two_lines should be hints enough?

 

p1=[[378.546,352.217],[458.698,272.065],[384.642,252.783],[324.204,313.221]];

p2=[[379.141,252.143],[470.219,343.221],[403.88,370.221],[301.294,267.635]];

intersection()

  {

  %polygon(p1);

  #polygon(p2);

  }

 

plot(p1,size=1.5);

plot(p2,size=2,c="green");

 

line(p1[0], p1[1]);

               

line(p2[0], p2[1], c="green");

 

module line(a,b,thick=1,c="blue") {

  color(c)

    hull() {

      translate(a) circle(thick);

      translate(b) circle(thick);

    }

}

 

module plot(v,size=1,c="blue") { // v=[ [x,y,z] or [x,y], ... ]

  d3=(len(v[0])==3);

  for(j=[0:len(v)-1]) {

    i=v[j];

    translate([i.x,i.y,d3 ? i.z : 0]) { //echo(i,j);

      color(c)

        if (d3)

          sphere(size,$fn=12);

        else

          circle(size,$fn=8);

      %color("black")

        translate([0,-1,0.1])

          if (d3)

            linear_extrude(height=1)

              text(str(j),size=size*4);

          else

              text(str(j),size=size*4);

    }

  }

}

 

 

 

 


From: Discuss [mailto:[hidden email]] On Behalf Of Alex Gibson
Sent: Sun, 21 Jul 2019 11:12
To: 'OpenSCAD general discussion'
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

…so that’s my problem solved for this time.

 

But I’m still interested in solving with maths, with the idea of making a post-processing tool...

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

·         Project management

·         Operations & Process improvement

·         3D Printing

 

From: Discuss [mailto:[hidden email]] On Behalf Of Alex Gibson
Sent: 21 July 2019 02:05
To: 'OpenSCAD general discussion'
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

Yep – playing the GCODE back in Simplify3D gets a perfect square:

 

That is:

 

G92 E0

G1 X378.546 Y352.217

G1 X458.698 Y272.065 E76.6848 ;

G1 X457.434 Y271.615

G1 X384.642 Y252.783

G1 X324.204 Y313.221 E144.1098 ;

G1 X323.103 Y312.381

G1 X379.141 Y252.143

G1 X470.219 Y343.221 E58.8828 ;

G1 X469.321 Y343.146

G1 X403.880 Y370.221

G1 X301.294 Y267.635 E129.3704 ;

 

; layer 717, Z = 359.250

G1 Z359.250

 

G1 X382.211 Y348.552

G1 X428.88 Y301.883 E76.6848 ;

G1 X382.211 Y255.214 E144.1098 ;

G1 X335.542 Y301.883 E58.8828 ;

G1 X382.211 Y348.552 E129.3704 ;

 

Now I just have to make a couple of versions of this, one repeating 3 times with no extrusion and one just once with extrusion, and jog the printer in between until I find the perfect offset!

 

Thanks again

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

·         Project management

·         Operations & Process improvement

·         3D Printing

 

From: Discuss [mailto:[hidden email]] On Behalf Of Alex Gibson
Sent: 21 July 2019 01:49
To: 'OpenSCAD general discussion'
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

Fantastic, thanks Torsten, I was just thinking on similar lines...

 

I remembered an online STL to OpenSCAD converter.

 

So I did a Linear_extrude of my intersection and got:

 

 

Then used this dead useful tool https://jsfiddle.net/Riham/yzvGD/ to get:

 

module object1(scale) {polyhedron(

points=[[382.211,348.552,0],[428.88,301.883,0],[382.211,255.214,0],[382.211,348.552,0],[382.211,255.214,0],[335.542,301.883,0],[382.211,255.214,10],[428.88,301.883,10],[382.211,348.552,10],[335.542,301.883,10],[382.211,255.214,10],[382.211,348.552,10],[382.211,348.552,0],[428.88,301.883,10],[428.88,301.883,0],[382.211,348.552,0],[382.211,348.552,10],[428.88,301.883,10],[335.542,301.883,0],[382.211,348.552,10],[382.211,348.552,0],[335.542,301.883,0],[335.542,301.883,10],[382.211,348.552,10],[382.211,255.214,0],[335.542,301.883,10],[335.542,301.883,0],[382.211,255.214,0],[382.211,255.214,10],[335.542,301.883,10],[428.88,301.883,0],[382.211,255.214,10],[382.211,255.214,0],[428.88,301.883,0],[428.88,301.883,10],[382.211,255.214,10] ],

faces=[[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14],[15,16,17],[18,19,20],[21,22,23],[24,25,26],[27,28,29],[30,31,32],[33,34,35]]);}

 

 

translate([200,0,0])

object1(1);

 

 

Which if I strip it down a bit gets:

 

module object4(scale) {polyhedron(

points=[[382.211,348.552,0],

[428.88,301.883,0],

[382.211,255.214,0],

[335.542,301.883,0]],

faces=[[0,1,2,3]]);}

 

object4(1);

 

 

…which are exactly the same co-ordinates you got with rounding error of 0.001mm so that’s verified nicely via 2 methods!

 

Thanks very much!!!

 

Now I can use these co-ordinates to make a GCODE file that plays repeats of a square movement between those co-ordinates, and finally one that extrudes plastic for when I think I’ve jogged X and Y successfully!

 

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

• Project management

• Operations & Process improvement

• 3D Printing

 

-----Original Message-----
From: Discuss [mailto:[hidden email]] On Behalf Of Torsten Paul
Sent: 21 July 2019 01:39
To: [hidden email]
Subject: Re: [OpenSCAD] Maths problem = finding corners of an intersection of 2 polygons

 

On 21.07.19 02:20, Alex Gibson wrote:

> 2)      A way to get OpenSCAD to output the corner co-ordinates?

 

Export as SVG, that gives:

 

M 428.88,-301.882 L 382.211,-348.552 L 335.542,-301.883 L 382.212,-255.214 z

 

Note that the Y coordinates are negated due to SVG coordinate

system having the origin top left.

 

ciao,

  Torsten.

 

_______________________________________________

OpenSCAD mailing list

[hidden email]

http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


Virus-free. www.avg.com

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Maths problem = finding corners of an intersection of 2 polygons

MichaelAtOz
Administrator
> with the idea of making a post-processing tool...

For the more general case you may want to see  Clipper
<http://www.angusj.com/delphi/clipper/documentation/Docs/Overview/_Body.htm>
.
Or https://rosettacode.org/wiki/Sutherland-Hodgman_polygon_clipping



-----
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
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
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!
Reply | Threaded
Open this post in threaded view
|

Re: Maths problem = finding corners of an intersection of 2 polygons

adrianv
In reply to this post by alexgibson
The BOSL2 library has polygon intersection functions, so you can directly
compute the intersection of your polygons in OpenSCAD.  Be warned that it is
not yet a stable library.  

https://github.com/revarbat/BOSL2/wiki/geometry.scad#intersection

include <BOSL2/std.scad>

polygon1 =
[[378.546,352.217],[458.698,272.065],[384.642,252.783],[324.204,313.221]];
polygon2 =
[[379.141,252.143],[470.219,343.221],[403.88,370.221],[301.294,267.635]];

echo(intersection([polygon1],[polygon2]));

The output printed is:

ECHO: [[[382.211, 348.552], [428.88, 301.882], [382.212, 255.213], [335.542,
301.883], [382.211, 348.552]]]




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

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Modify the viewport without reopening OpenSCAD

Juan C.Cilleruelo
In reply to this post by alexgibson
Hello all!

I have an external program that opens OpenSCAD giving it as parameter a
filename with the instructions.

When the data on my program is changed, I modify only the target file
and OpenSCAD, because is in "Autoreload = True", draws the new graphic
again.

Until this point, all works well. Actually, all works very well. But I
think I need new functionality or a trick.


My program works on various levels, and when the user goes down a level
needs to change the viewport with the mouse to see the sub-part properly.

As it run now, when the user goes up the previous level, the viewport is
now the changed level, this is, the appropriate for the sub-part, not
the appropriate for the current part.


{***********************************************************************************}

What I need is: When the user goes down to a sublevel, save the current
viewport, and when the user returns to this level, restore the saved
viewport.

{***********************************************************************************}


If it's possible without close and reopen OpenSCAD.

My program makes some changes in the registry before calling OpenSCAD.
I've see State registry variable that saves some info. But I don't know
his format, nor the values saved nor if I the modifications in this
value are immediate or is necessary reopen OpenSCAD.


Thank you all for your help.


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
tp3
Reply | Threaded
Open this post in threaded view
|

Re: Modify the viewport without reopening OpenSCAD

tp3
On 26.07.19 19:33, Juan C.Cilleruelo wrote:
> If it's possible without close and reopen OpenSCAD.

For giving a specific viewport setting when loading a file,
you can include the $vpX variables to setup a fixed viewport
on preview/render.

The saved state is Qt internal, I don't know what the
format is and if it can/should be driven from outside.

That said, there's an (experimental) InputDriver for DBus
which allows external programs to interact with a running
OpenSCAD. But so far that is only available on Linux.
There might be a way to get DBus working on Windows, but
I have never tried.

ciao,
  Torsten.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
-- Torsten
Reply | Threaded
Open this post in threaded view
|

Re: Modify the viewport without reopening OpenSCAD

Juan C.Cilleruelo
Thank you, Paul!
I've just checked these variables and I think I found the path to solve
my problem (Really to make an improvement to my software)

$vpt = [ 307.88, 422.79, 929.94 ];
$vpr = [ 86.50, 0.00, 16.60 ];
$vpd = 2973.77;

My program can send keystrokes to OpenSCAD. I make this all the time. I
need to send to OpenSCAD the next keystrokes:

"Ctrl+T" to copy to clipboard $vpt value;
"Alt+E" and "Y" to copy to clipboard $vpr value.
and "Alt+E" and "W" to copy $vpd.

After each keystroke, I need to take the clipboard values inside
temporal variables in my software. When I need to restore the values I
save my .scad file that starts defining again the values.

$vpt = [ 307.88, 422.79, 929.94 ];
$vpr = [ 86.50, 0.00, 16.60 ];
$vpd = 2973.77;

The only worry about this technique is if there is going to have
problems with other languages for the keystrokes.

If there are problems, I can make these keystrokes configurable, I think.

I'm going to try this.
Thanks again, Paul!


On 26/07/2019 20:22, Torsten Paul wrote:

> On 26.07.19 19:33, Juan C.Cilleruelo wrote:
>> If it's possible without close and reopen OpenSCAD.
> For giving a specific viewport setting when loading a file,
> you can include the $vpX variables to setup a fixed viewport
> on preview/render.
>
> The saved state is Qt internal, I don't know what the
> format is and if it can/should be driven from outside.
>
> That said, there's an (experimental) InputDriver for DBus
> which allows external programs to interact with a running
> OpenSCAD. But so far that is only available on Linux.
> There might be a way to get DBus working on Windows, but
> I have never tried.
>
> ciao,
>    Torsten.
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org