Inkscape Brasil

Versão Estável 0.46 Baixe Agora!

Tópicos Pais: Extensões » ComoExtender

Estendendo o Inkscape com Python

Está perdido? Caiu aqui de paraquedas? Melhor ver a página "Como Fazer Extensões".

Introdução

Uma extensão em Python pode ser feita sem nenhuma ajuda extra, mas sará muito mais fácil usando o módulo inkex. Esse módulo provê a classe Effect que facilita o trabalho específico de criar extensões para o Inkscape. O Inkscape já provê o módulo inkex no seu diretório de extensões. Não sabe qual o diretório de extensões? Melhor ler a página "Como Fazer Extensões".

Um exemplo bem simples, pra começar

Crie um arquivo INX chamado muda-cor.inx, no seu diretório de extensões, com:

Agora crie o arquivo muda-cor.py, no seu diretório de extensões, com esse conteúdo:

#!/usr/bin/env python

import inkex, simplestyle

class MudaCor(inkex.Effect):
  def __init__(self):
    inkex.Effect.__init__(self)
    self.OptionParser.add_option("-c", "--cor",
                    action="store", type="string",
                    dest="cor", default="red",
                    help="A cor a ser aplicada no elemento selecionado.")

  def effect(self):
    for id, node in self.selected.iteritems():
      style = simplestyle.parseStyle(node.get('style'))
      style['fill'] = self.options.cor
      node.set('style', simplestyle.formatStyle(style))

if __name__ == '__main__':
  e = MudaCor()
  e.affect()

Agora é só re-abrir o Inkscape, selecionar alguns elementos, procurar seu efeito no menu "Efeitos" e clicar. wink

Atenção para a limitação: como não fizemos teste do tipo de elemento selecionado podemos acabar aplicando cor de preenchimento onde faz pouco sentido, como em elementos de grupo. Neste caso deveríamos buscar seus filhos recursivamente e aplicar a estes a cor de preenchimento.

E qual o significado de de cada linha dessas?

#!/usr/bin/env python

Diz ao sistema operacional quem deve interpretar esse script. Usamos /usr/bin/env python em lugar do direto /usr/bin/python para garantir que o interpretador seja encontrado mesmo que instalado fora do path padrão.

import inkex, simplestyle

Aqui carregamos os módulos que irão ajudar no desenvolvimento da extensão.

class MudaCor(inkex.Effect):

É aqui que sua extensão começa a nascer. Aqui uma classe é criada para sua extensão, estendendo a classe Effect.

...

Em Construção... (hei... você pode ajudar!)


create new tag
rev 1 em 18 Apr 2009 por AurelioAHeckert
Editar Anexar Versões Mais...

Todo material do sítio Inkscape Brasil é propriedade do grupo Inkscape Brasil e pode ser reproduzido livremente, desde que permaneça livre e a fonte seja citada, seguindo os termos da licença Creative Commons (by-sa).

Inkscape é um Software Livre, distribuido sobre Termos GNU-GPL.

eXTReMe Tracker
Inkscape - Open Source vector graphics editor SVG - Scalable Vector Graphics TableLess - Coerência, Simplicidade e Acessibilidade no código HTML Esse documento é XHTML 1.0 Valido! Esse documento contém CSS-2 Valido! Debian - GNU/Linux TWiki - Ambiente Web Colaborativo Colivre - Cooperativa de Tecnologias Livres