Sketchup: Constructing Triangle with Ruby

E

Eps Ilon

Hello,

i'm constructing triangles with ruby and try to plot them within
Sketchup. In most cases, this works. But sometimes, an error occurs:
"Points are not planar", which is quite strange for a triangle...

model = Sketchup.active_model
entities = model.active_entities
k = 0
for i in 1..3 do
x = arr[k]
y = arr[k+1]
z = arr[k+2]

pts << Geom::point3d.new([x,y,z])

k += 3
end

pts << pts.first()

begin
face = entities.add_face(pts)
rescue
puts $!.message
puts pts
end

arr is an array with the triangle coordinates (the coordinates come from
an external data source, but thats not the problem)

An example output for an error is

Points are not planar
(0,08255m, 0,003858m, 0,11049m)
(0,083007m, 0,004218m, 0,11049m)
(0,082855m, 0,004111m, 0,11049m)
(0,08255m, 0,003858m, 0,11049m)

The last and the first point are the same, but thats correct (a face is
constructed by a closed line).

o you have any ideas where I can find the error?
 
G

G.Durga Prasad

Hello,

i'm constructing triangles with ruby and try to plot them within
Sketchup. In most cases, this works. But sometimes, an error occurs:
"Points are not planar", which is quite strange for a triangle...

model = Sketchup.active_model
entities = model.active_entities
k = 0
for i in 1..3 do
x = arr[k]
y = arr[k+1]
z = arr[k+2]

pts << Geom::point3d.new([x,y,z])

k += 3
end

pts << pts.first()

begin
face = entities.add_face(pts)
rescue
puts $!.message
puts pts
end

arr is an array with the triangle coordinates (the coordinates come from
an external data source, but thats not the problem)

An example output for an error is

Points are not planar
(0,08255m, 0,003858m, 0,11049m)
(0,083007m, 0,004218m, 0,11049m)
(0,082855m, 0,004111m, 0,11049m)
(0,08255m, 0,003858m, 0,11049m)

The last and the first point are the same, but thats correct (a face is
constructed by a closed line).

o you have any ideas where I can find the error?
My wild guess:
The first and last points may differ as they are built out of floating
point numbers.
Try integers to represent the points, at least , the first and the last.

Prasad
 
E

Eps Ilon

G.Durga Prasad said:
My wild guess:
The first and last points may differ as they are built out of floating
point numbers.
Try integers to represent the points, at least , the first and the last.

Prasad

Well... I don't think so. The first and last point are exakly the same,
bit by bit, as you can see here:

pts << pts.first() # adding last point

But thanks anyway....
 
T

Todd Burch

Eps said:
Well... I don't think so. The first and last point are exakly the same,
bit by bit, as you can see here:

pts << pts.first() # adding last point

But thanks anyway....

If you want a 3 sided shape, pass 3 points (AKA vertices) to
entities.add_face, not 4.

Todd

(Do I get the old post resurrection award today?)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,575
Members
45,053
Latest member
billing-software

Latest Threads

Top