# [Ipe-discuss] Get point coordinates in ipelets.

Günter Rote rote at inf.fu-berlin.de
Tue Mar 16 15:02:27 CET 2010

```> From: "Sebastien Loriot (GeometryFactory)" <sloriot.ml at gmail.com>
> Subject: Re: [Ipe-discuss] CGAL points generator ipelets in Ipe 7
>
>> I'm writing an Ipelet in Lua that uses a set of points (markers) as
>> input. I sort the points using their x coordinate, which I obtain using
>> the getPosition() function of each marker object.

...

>> Â¿Does anybody have any idea of why this happens?, Â¿Are not all the
>> objects on a page referenced to the same coordinate system?
>>
>
> Just a hint: ... You probably should have a
> look at the matrix() function of ipe::Object.
>

Here is an ipelet print.lua that dumps the coordinates of a group of points
to the terminal (written for my own convenience), assuming
that you start ipe from the command line.
It seems to work fine.

--[[
written by Günter Rote, 2010
--]]

label = "print point coordinates"

Dump coordinates of a point set

This ipelet is part of Acrobat Reader.
]]

local function incorrect_input(model,s)
model:warning("Cannot find coordinates", s)
end

local function getpoints(model,obj,which)
if obj:type() ~= "group" then
incorrect_input(model, which .. " selection is not a group")
return
end
local marks={}
for i,point in ipairs(obj:elements()) do
if point:type() ~= "reference" or point:symbol():sub(1,5) ~= "mark/" then
incorrect_input(model, which .. " selection is not a group of points")
return
end
marks[#marks + 1] = obj:matrix() * point:position()
end
return marks
end

function match(model)
local p = model:page()
local prim = p:primarySelection()

-- get the data
local p = getpoints(model,p[prim],"first")
if not p then
return
end

-- now print the data

print ("[")
for i,ps in ipairs(p) do
print ("("..ps.x..","..ps.y .."),")
end
print ("]")

end

run = match

--
G"unter Rote               (Germany=49)30-838-75150 (office)
Freie Universit"at Berlin                    -75103 (secretary)
Institut f"ur Informatik       FAX (49)30-838-75192

```