spakin / SimpInkScr

Simple Inkscape Scripting
https://inkscape.org/~pakin/%E2%98%85simple-inkscape-scripting
GNU General Public License v3.0
331 stars 32 forks source link

Document and give example of intermix of SimpInkScr and inkex #113

Open robertlugg opened 1 year ago

robertlugg commented 1 year ago

When I was looking into using the package I was worried that it was an either/or proposition to use traditional Extension programming or to use SimpInkScr. It would be nice to document the ability briefly. An example would also help to demonstrate. I don't know exactly how this should look but I was thinking of something like:

# Draw left circle using Simple Inkscape Scripting interface
style = {'stroke': '#000000', 'stroke-width': 1, 'fill': '#FF0000'}
circle((0, canvas.height/2), canvas.width/4, **style)

# Draw right circle using the inkex lower-level interface
style = {'stroke': '#000000', 'stroke-width': 1, 'fill': '#0000FF'}
parent =  extension.svg.get_current_layer ()
circle_attribs = {'style': str(inkex.Style(style)),
                    inkex.addNS('label', 'inkscape'): "mycircle",
                    'cx': str(canvas.width), 'cy': str(canvas.height/2),
                    'r': str(canvas.width/4)}
parent.add(inkex.Circle(**circle_attribs))

Code like this can be pasted directly into the "Python Code" dialog to demonstrate the two libraries working seamlessly together. I'm happy to make the changes but am not confidant that my code example is correct and best :)

spakin commented 1 year ago

Your example is good in that it shows how to draw the same shape with both the high- and low-level interfaces. However, it leaves the reader wondering why one might want to use inkex directly. Can you think of a small example showing something that requires inkex?

I can imagine integrating this sort of documentation into the Advanced usage wiki page.

WillAdams commented 7 months ago

Alternately, perhaps SimpInkScr could have a mode (Log window?) where it could be used as a didactic tool?

Enter a simple command such as:

circle((0, canvas.height/2), canvas.width/4, **style)

and get back the inkex equivalent?

spakin commented 7 months ago

That's an interesting idea, but I suspect it would require a lot of work, especially relative to its overall utility.