[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"

about = [[
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



More information about the Ipe-discuss mailing list