Inkscape рдкреНрд▓рдЧрдЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрддрд░ рдХрд╛ рд╕рдВрдкрд╛рджрдХ рдмрдирд╛рдирд╛

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЕрдкрдирд╛ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдпрд╛ рдХрд┐рдпрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрд╕ рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИ рдЬрдм рд╕рдм рдХреБрдЫ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рднрд╡рди рд╕реНрддрд░, рдЦреЗрд▓ рдХреЗ рджреГрд╢реНрдп рдЖрджрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХрддрд╛, рддреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди - рд╢рд╛рдпрдж рдХреЛрдИ рд▓рд┐рдирдХреНрд╕ / рдореИрдХ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рдВ, рдФрд░ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП igrodelovред рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдЫреЛрдЯреЗ рдЗрдВрдХрд╕реНрдХреЗрдк рдкреНрд▓рдЧрдЗрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред
рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдореБрдЭреЗ AS3 рдореЗрдВ рд▓рд┐рдЦреА рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ - рд╣рд╛рдБ, рд╣рд╛рдБ, рдлреНрд▓реИрд╢: рдбреАред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмреЙрдХреНрд╕ 2 рдбреА рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╕рдм рдХреБрдЫ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдЕрдкрдиреА рдЦреБрдж рдХреА рд░рд╛рдЬреНрдп-рдорд╢реАрди, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рдирд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рд░реИрдкрд░ рдФрд░ рдПрдХ рдХрдг рдкреНрд░рдгрд╛рд▓реАред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреБрдЫ рдЦреЗрд▓рдиреЗ рдпреЛрдЧреНрдп, рдЫреЛрдЯреЗ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдУрдкрдирд╕реЛрд░реНрд╕ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдкрд╕рдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ FlashDevelop рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░рддрд╛ рд╣реВрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдорджрдж рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ Inkscape, рдЗрд╕рдХреА рдкреНрд░рддрд┐рд░реВрдкрддрд╛, рдкреНрд▓рдЧ-рдЗрди рдФрд░ рд╕реНрд╡рдпрдВ SVG рдХреЗ рд▓рд┐рдП - XML тАЛтАЛрдЦреБрдж, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдпрд╛рдж рдЖрдпрд╛ред рдореИрдВрдиреЗ Inkscape рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╕рдорд╕реНрдпрд╛рдУрдВ
"рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╢реБрд░реВ, рдореИрдВ рдмрд╣реБрдд рдХрдо рдкрд╛рдпрд╛, "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдкреНрд▓рдЧрдЗрди" рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╕рдВрд░рдЪрд┐рдд рд╣реИ, рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИред рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЬрдЧрд░ред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдЯрд╛рдЗрдкреНрдб рдирд╣реАрдВ, рдбрд░рд╛рд╡рдиреАред рдЖрдк рд░реВрдмрд▓ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдЗрдВрдХрд╕реНрдХреЗрдк рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреЗрдЦрд╛, рддреЛ рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдХрд┐ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдкрд░рддреЛрдВ рдФрд░ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рддрд░реАрдХреЗ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░реЗрдВред рдЕрдЧрд▓рд╛, рдкрд╛рд░рд╕реАрдо рдЖрд╡реЗрджрди рдореЗрдВ, рддреИрдпрд╛рд░ рдПрд╕рд╡реАрдЬреА / рдПрдХреНрд╕рдПрдордПрд▓ - рдЪреВрдВрдХрд┐ рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдХрд░рдг рд╣реИрдВ, рд╣рдо рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╕рдорд╛рдкреНрдд рдПрд╕рд╡реАрдЬреА рд╕рдВрд░рдЪрдирд╛
рдореИрдВрдиреЗ рдПрд╕рд╡реАрдЬреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкрд░рдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдкреНрд▓рдЧрдЗрди рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рднреМрддрд┐рдХ рд╡рд╕реНрддреБ рд╕рдВрд╕рд╛рд░реЛрдВ рдХреЛ рдЧреЛрд▓, рдЪреМрдХреЛрд░ рдФрд░ рдЬрдЯрд┐рд▓ (рдПрдХ рдЙрддреНрддрд▓ рдмрд╣реБрднреБрдЬ рдпрд╛ рдХрдИ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБрднреБрдЬ) - Box2D рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ - рджреЛрдиреЛрдВ рднреМрддрд┐рдХ рдФрд░ рд╣рдорд╛рд░рд╛ред рдСрдмреНрдЬреЗрдХреНрдЯ рдПрд╕рд╡реАрдЬреА рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЪрд▓рддреЗ рд╣реИрдВ, рдЖрдо рддреМрд░ рдкрд░ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрд╕реНрдЯрдо рдЯреИрдЧ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдЧрддрд┐рд╢реАрд▓, рд╕реНрдерд┐рд░, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд░рдВрдЧреЛрдВ рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ред рдЕрдм рддрдХ, рдХреЗрд╡рд▓ рдЧреЛрд▓ рдирд┐рдХрд╛рдпреЛрдВ рдФрд░ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдорд╣рддреНрд╡рдкреВрд░реНрдг : рдЕрдВрддрд┐рдо рдПрд╕рд╡реАрдЬреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирдХреНрд╕рд╕реНрдХреЗрдк рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди, рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реАрдзреЗ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рд░реЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рд╢рд░реАрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧрдгрд┐рдд рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдкреНрд▓рдЧрдЗрди рд╕рдВрд░рдЪрдирд╛
Inkscape рдХреЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рджреЛ рдлрд╛рдЗрд▓реЗрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, my_super_plugin.py рдФрд░ my_super_plugin.inx ред My_super_plugin.inx рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖ XML рдЯреИрдЧреНрд╕ рдХреЗ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЬреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реЗрдо рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЬреАрдпреВрдЖрдИ рд╡рд┐рдВрдбреЛ, рдбреЗрдЯрд╛ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░, рдмрдЯрди рдкреНрд░рдХрд╛рд░ рдЖрджрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ "рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдХреА рдЙрдкрдЬ" рджрд┐рдЦрд╛рддрд╛ рд╣реИред



My_super_plugin.py рдлрд╝рд╛рдЗрд▓ SVG рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЯ рдХрд░рддреА рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдкрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рднреЗрдЬрддреА рд╣реИ, рдЗрдВрдХрд╕реНрдХреЗрдк рд╕рдм рдХреБрдЫ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рддреЗрдЬ рдФрд░ рд╕реБрдВрджрд░ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдХреЛрдб рдФрд░ рдЗрдВрдХрд╕реНрдХреЗрдк рдЗрдВрдХрдореЗрдХреНрд╕рд╣реЛрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рд╕рдВрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреГрд╖реНрдареЛрдВ рдкрд░, my_super_plugin.py рдФрд░ my_super_plugin.inx рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ (рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ) рдХреЛ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдЖрдИрдПрдирдПрдХреНрд╕
рдореИрдВрдиреЗ рдЕрдкрдиреА .inx рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХреЛрдб рдлреИрд▓рд╛рдпрд╛ рд╣реИ:
рдХреЛрдб
<inkscape-extension> <_name>PF Editor</_name> <id>org.pf.inkscape.plugins.pf_plugin</id> <dependency type="executable" location="extensions">pf_plugin.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> <param name="layer_name" type="string" _gui_text="Layer name">Game objects</param> <param name="obj_name" type="string" _gui_text="Object name">Object1</param> <param name="obj_width" type="int" _gui-text="Width" min="10" max="12000">30</param> <param name="obj_height" type="int" _gui-text="Height" min="10" max="12000">30</param> <param name="obj_radius" type="int" _gui-text="Radius" min="10" max="12000">30</param> <param name="obj_posX" type="int" _gui-text="PosX" min="0" max="12000">30</param> <param name="obj_posY" type="int" _gui-text="PosY" min="0" max="12000">30</param> <param name="obj_density" type="float" _gui-text="Density" min="0" max="1">0.5</param> <param name="obj_friction" type="float" _gui-text="Friction" min="0" max="1">0.5</param> <param name="obj_restitution" type="float" _gui-text="Restitution" min="0" max="1">0.5</param> <param name="obj_isSensor" type="boolean" _gui-text="Sensor body">false</param> <param name="obj_isRotable" type="boolean" _gui-text="Rotable body">false</param> <param name="obj_type" type="enum" _gui-text="Object type"> <_item value="SQUARE">Square</_item> <_item value="CIRCLE">Circle</_item> </param> <param name="obj_d_type" type="enum" _gui-text="Static/Dynamic"> <_item value="STATIC">Static</_item> <_item value="DYNAMIC">Dynamic</_item> </param> <param name="obj_hasImage" type="boolean" _gui-text="Has image">false</param> <effect> <object-type>all</object-type> <effects-menu> <submenu _name="PF Plugins"/> </effects-menu> </effect> <script> <command reldir="extensions" interpreter="python">pf_plugin.py</command> </script> </inkscape-extension> 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред pf_plugin.py, inkex.py рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИрдВ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред <param name="obj_d_type" type="enum" _gui-text="Static/Dynamic"> рдореЗрдВ enum рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИ - рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИред рдЬрдм рдЖрдк рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдирдкреБрдЯ рд╕реЗ рдкрд╛рдЗрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдорд╛рди рднреА рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред рдкрд░рдо рдирд╛рдо рдорд╛рди рдХреЛ рдЕрдЬрдЧрд░ рд▓рд┐рдкрд┐ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрд░реЗ рд╣рд╛рдБ, рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдиреЗрддреНрд░рд╣реАрди рдЖрдк рдЯреИрдм рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

PY
рдЕрдм рдореИрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рд░рд╛ рдХрд╛рдо рд╣реИ:
рдХреЛрдб
 import sys sys.path.append('/usr/share/inkscape/extensions') import inkex class PFEditor(inkex.Effect): def __init__(self): inkex.Effect.__init__(self) self.OptionParser.add_option('--layer_name', action='store', type='string', dest='layer_name', default='Game objects', help='Layer name which objects append to') self.OptionParser.add_option('--obj_name', action='store', type='string', dest='obj_name', default='Object', help='Object name') self.OptionParser.add_option('--obj_width', action='store', type='int', dest='obj_width', default=30, help='Object width') self.OptionParser.add_option('--obj_height', action='store', type='int', dest='obj_height', default=30, help='Object height') self.OptionParser.add_option('--obj_radius', action='store', type='int', dest='obj_radius', default=30, help='Object radius') self.OptionParser.add_option('--obj_posX', action='store', type='int', dest='obj_posX', default=30, help='PosX') self.OptionParser.add_option('--obj_posY', action='store', type='int', dest='obj_posY', default=30, help='PosY') self.OptionParser.add_option('--obj_type', action='store', type='string', dest='obj_type', default='SQUARE', help='Object type') self.OptionParser.add_option('--obj_d_type', action='store', type='string', dest='obj_d_type', default='STATIC', help='Static/Dynamic') self.OptionParser.add_option('--obj_density', action='store', type='float', dest='obj_density', default=0.5, help='Density') self.OptionParser.add_option('--obj_friction', action='store', type='float', dest='obj_friction', default=0.5, help='Friction') self.OptionParser.add_option('--obj_restitution', action='store', type='float', dest='obj_restitution', default=0.5, help='Restitution') self.OptionParser.add_option('--obj_isSensor', action='store', type='inkbool', dest='obj_isSensor', default=False, help='Sensor body') self.OptionParser.add_option('--obj_isRotable', action='store', type='inkbool', dest='obj_isRotable', default=True, help='Rotable body') self.OptionParser.add_option('--obj_hasImage', action='store', type='inkbool', dest='obj_hasImage', default=False, help='Body has image') def pfbTypes(self, x): return { 'STATIC' : '#00ff00', 'DYNAMIC' : '#ff0000', 'SQUARE' : 'SQUARE', 'CIRCLE' : 'CIRCLE' }.get(x, 0) def pfbType_SVG(self, x): return { 'SQUARE' : 'rect', 'CIRCLE' : 'circle' }.get(x, 'rect') def concat_style(self, style): # @NoSelf style_str = '' for stl in style: style_str += stl + ':' + style[stl] + ';' style_str = style_str[:-1] return style_str def generate_object(self, w, h, r, x, y, density, friction, restitution, isSensor, isRotable, parent, type, d_type, name, hasImage): # @NoSelf style = { 'fill' : self.pfbTypes(d_type), 'fill-rule' :'evenodd', 'stroke' :'000000', 'stroke-width' :'0px', 'stroke-linecap' :'butt', 'stroke-linejoin' :'miter', 'stroke-opacity' :'0' } attribs = { 'type' : type, 'd_type' : d_type, 'height' : str(h), 'width' : str(w), 'density' : str(density), 'friction' : str(friction), 'restitution' : str(restitution), 'isSensor' : str(isSensor).lower(), 'isRotable' : str(isRotable).lower(), 'hasImage' : str(hasImage).lower(), 'name' : name, 'style' : self.concat_style(style), } if d_type == 'DYNAMIC': attribs['isDynamic'] = 'true' else: attribs['isDynamic'] = 'false' if type == 'SQUARE' : attribs['x'] = str(x); attribs['y'] = str(y); if type == 'CIRCLE' : attribs['cx'] = str(x); attribs['cy'] = str(y); attribs['r'] = str(r); obj = inkex.etree.SubElement(parent, inkex.addNS(self.pfbType_SVG(type), 'svg'), attribs) def effect(self) : layer_name = self.options.layer_name obj_name = self.options.obj_name obj_width = self.options.obj_width obj_height = self.options.obj_height obj_radius = self.options.obj_radius obj_posX = self.options.obj_posX obj_posY = self.options.obj_posY obj_type = self.options.obj_type obj_d_type = self.options.obj_d_type obj_density = self.options.obj_density obj_friction = self.options.obj_friction obj_restitution = self.options.obj_restitution obj_isSensor = self.options.obj_isSensor obj_isRotable = self.options.obj_isRotable obj_hasImage = self.options.obj_hasImage svg = self.document.getroot() d_root = self.document.getroot() layer = None iter = 0 for item in d_root: if (item.attrib.get('id') == 'pf_go_id' and item.attrib.get('level_name') == layer_name): layer = item iter += 1 break if(iter == 0): layer = inkex.etree.SubElement(svg, 'g') layer.set(inkex.addNS('id'), 'pf_go_id') layer.set(inkex.addNS('level_name'), layer_name) layer.set(inkex.addNS('label', 'inkscape'), layer_name) layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') self.generate_object(obj_width, obj_height, obj_radius, obj_posX, obj_posY, obj_density, obj_friction, obj_restitution, obj_isSensor, obj_isRotable, layer, obj_type, obj_d_type, obj_name, obj_hasImage) effect = PFEditor() effect.affect() 

рдлрд╝реЙрд░реНрдо рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ self.OptionParser.add_option('--layer_name', action='store',
type='string', dest='layer_name', default='Game objects',
help='Layer name which objects append to')
self.OptionParser.add_option('--layer_name', action='store',
type='string', dest='layer_name', default='Game objects',
help='Layer name which objects append to')
self.OptionParser.add_option('--layer_name', action='store',
type='string', dest='layer_name', default='Game objects',
help='Layer name which objects append to')
рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ рдкреНрд░рдХрд╛рд░ (.inx рдореИрдЪ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рднрд╛рд╡ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЗрдирдкреБрдЯ рдЪрд░ рдореЗрдВ crammed рд╣реИред рддрдм рдореИрдВ for item in d_root:
if (item.attrib.get('id') == 'pf_go_id' and item.attrib.get('level_name') == layer_name)
рд▓рд┐рдП рдХреБрдЫ for item in d_root:
if (item.attrib.get('id') == 'pf_go_id' and item.attrib.get('level_name') == layer_name)
for item in d_root:
if (item.attrib.get('id') == 'pf_go_id' and item.attrib.get('level_name') == layer_name)
for item in d_root:
if (item.attrib.get('id') == 'pf_go_id' and item.attrib.get('level_name') == layer_name)
: SVG рдореЗрдВ рдкрд░рддреЛрдВ рдореЗрдВ id рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╡рд╣рд╛рдБ рдмрд┐рд▓реНрдХреБрд▓ 'pf_go_id' , рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде "рдЦреБрдж рдХреА рдкрд░рддреЛрдВ" рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╕рд╛рджрдЧреАред рдпрджрд┐ рдкрд░рдд рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдореЗрдВ рдирдИ рд╡рд╕реНрддреБрдПрдБ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рдирдИ рдкрд░рдд рдмрдирд╛рдПрдБ, "рд╕реНрддрд░", рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдПрдХ рдкрд░рдд рдмрдирд╛рддреА рд╣реИрдВ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдирд░реЗрдЯ_рдмреЙрдЬреЗрдХреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдореИрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдПрд╕рд╡реАрдЬреА
рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрддреНрдкрдиреНрди SVG рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рдХреЛрдб
 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="630" height="480" id="svg2" version="1.1" inkscape:version="0.48.4 r9939" sodipodi:docname="levels_tmp.svg"> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.98994949" inkscape:cx="60.920287" inkscape:cy="223.06442" inkscape:document-units="px" inkscape:current-layer="pf_go_id" showgrid="false" inkscape:window-width="1366" inkscape:window-height="716" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" /> <defs id="defs4" /> <metadata id="metadata7"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title /> </cc:Work> </rdf:RDF> </metadata> <g id="pf_go_id" level_name="Menu" inkscape:label="Menu" inkscape:groupmode="layer" style="display:inline"> <circle transform="translate(194.95944,151.52288)" sodipodi:ry="40" sodipodi:rx="40" sodipodi:cy="40" sodipodi:cx="40" isSensor="false" isRotable="true" height="10" cy="40" cx="40" friction="0.5" restitution="0.5" style="fill:#00ff00;fill-rule:evenodd;stroke-width:0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0" name="Object1" density="0.5" isDynamic="false" width="100" r="40" type="CIRCLE" d_type="STATIC" hasImage="false" id="circle3294" /> <rect id="rect2997" hasImage="false" d_type="DYNAMIC" type="SQUARE" x="4.7976952" y="405.67188" width="100" isDynamic="true" density="0.5" name="Object2" style="fill:#ff0000;fill-rule:evenodd;stroke-width:0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0" restitution="0.5" friction="0.5" height="10" isRotable="true" isSensor="false" transform="matrix(0.88912747,-0.45765964,0.45765964,0.88912747,0,0)" /> <rect isSensor="false" isRotable="true" height="10" friction="0.5" restitution="0.5" style="fill:#00ff00;fill-rule:evenodd;stroke-width:0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0" name="Object2" density="0.5" isDynamic="false" width="300" y="391.62952" x="173.53809" type="SQUARE" d_type="STATIC" hasImage="false" id="rect3011" /> </g> <g inkscape:groupmode="layer" inkscape:label="Level_1" level_name="Level_1" id="g3027"> <circle id="circle3029" hasImage="false" d_type="DYNAMIC" type="CIRCLE" r="30" width="300" isDynamic="true" density="0.5" name="Object1" style="stroke-linejoin:miter;stroke-opacity:0;fill-rule:evenodd;stroke:000000;stroke-linecap:butt;stroke-width:0px;fill:#ff0000" restitution="0.5" friction="0.5" cx="120" cy="130" height="10" isRotable="true" isSensor="false" /> </g> </svg> 

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рджреЛ рд▓реЗрдпрд░реНрд╕ рджреЗрдЦреЗрдВрдЧреЗ - рд╕реНрддрд░ рдореЗрдиреВ рдФрд░ Level_1ред рд╣рд░реЗ рд░рдВрдЧ рдХреА рдЖрдХреГрддрд┐рдпрд╛рдБ рдЧрддрд┐рд╣реАрди рд╣реЛрдВрдЧреА, рд▓рд╛рд▓ рдЪрд▓рддреА рд╣реЛрдВрдЧреАред рдореЗрд░реЗ рдкрд╛рд╕ isSensor рдмреЙрдбреА рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ , рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрдиреВ рд▓реЗрдпрд░ рдкрд░, рдЖрдпрддреЛрдВ рдХреЛ рдШреБрдорд╛рдпрд╛ рдФрд░ рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдЧреБрдг рд░реЗрдХреНрдЯ рдЯреИрдЧ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡реЗ рдХреНрд░рдорд╢рдГ рд░реЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ (рдФрд░ рди рдХреЗрд╡рд▓), рдФрд░ рдЖрдВрджреЛрд▓рди рдХреЗ рд▓рд┐рдПред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдХреНрд╖реНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣рдо рд╕рдм рдХреБрдЫ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдореИрдЯреНрд░рд┐рд╕ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдлрд╛рд░реНрдо рдХреЗ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдореАрдХрд░рдг рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ рдПрдХреНрд╕ = рдмреА (: рдбреА)ред рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдореЗрдВ рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг рдорд┐рд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдПрд╕ 3 рдкрд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдпрд╣ рдкрдж рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред

рд╕рдВрджрд░реНрдн
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХрд░рдХреЗ, рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХрд╣рд╛рдБ рд╣реИред рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рднреА рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрддрд░ рд╕рдВрдкрд╛рджрдХ рдФрд░ рдЗрдВрдХрд╕реНрдХреЗрдк - рдПрдХреНрд╕рд┐рд╕, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдХреЗрдВрджреНрд░, рд░реЛрдЯреЗрд╢рди рдХреЛрдг рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рд▓рд┐рдВрдХ:
wiki.inkscape.org/wiki/index.php/Script_extensions
wiki.inkscape.org/wiki/index.php/PythonEffectTutorial
wiki.inkscape.org/wiki/index.php/Generating_objects_from_extensions
wiki.inkscape.org/wiki/index.php/INX_extension_descriptor_format
docs.python.org/2/library/xml.etree.elementtree.html
wiki.inkscape.org/wiki/index.php/INX_Parameters
www.w3schools.com/svg/svg_rect.asp
developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform

Source: https://habr.com/ru/post/In208094/


All Articles