Python svgwrite и одновременные преобразования анимации

#python #svgwrite #animatetransform

#питон #svgwrite #animatetransform

Вопрос:

Я пытаюсь использовать python svgwrite для одновременного масштабирования и поворота объекта. До сих пор мои усилия заключались в добавлении двух последовательных «animateTransform». Однако, похоже, он учитывает только последнее действие, как видно из моего примера.

 import svgwrite 

path = [(100,100),(100,200),(200,200),(200,100)]

image = svgwrite.Drawing('test.svg',size=(300,300))

rectangle = image.add(image.polygon(path,id ='polygon',stroke="black",fill="white"))
rectangle.add(image.animateTransform("rotate","transform",id="polygon", from_="0 150 150", to="360 150 150",dur="4s",begin="0s",repeatCount="indefinite"))
rectangle.add(image.animateTransform("scale","transform",id="polygon", from_="0", to="1",dur="4s",begin="0s",repeatCount="indefinite"))

image.save()
display(SVG('test.svg'))
 

Кто-нибудь может помочь?

Ответ №1:

Возможно, это происходит слишком поздно, но то, что сработало для меня, добавляет additive = "sum" к обеим анимациям. Имейте в виду, что порядок, в котором вы добавляете анимации, влияет на конечный результат.

 import svgwrite 

path = [(100,100),(100,200),(200,200),(200,100)]

image = svgwrite.Drawing('test.svg',size=(300,300))

rectangle = image.add(image.polygon(path,id ='polygon',stroke="black",fill="white"))
rectangle.add(image.animateTransform("scale","transform",id="polygon", from_="0", to="1",dur="4s",begin="0s",repeatCount="indefinite", additive = "sum"))    
rectangle.add(image.animateTransform("rotate","transform",id="polygon", from_="0 150 150", to="360 150 150",dur="4s",begin="0s", additive = "sum", repeatCount="indefinite"))

image.save()
display(SVG('test.svg'))