added reverse subpaths and number subpaths extensions
This commit is contained in:
parent
06e5d0cad3
commit
8386b76eda
@ -1,18 +0,0 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Animate Order - joinery_2021-4-25_1.24.3.svg</title>
|
|
||||||
<meta name="description" content="SVG Drawing Animation">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<button onclick="vi.reset().play();">replay</button>
|
|
||||||
<br/>
|
|
||||||
<object id="animate_order" type="image/svg+xml" data="drawing.svg"></object>
|
|
||||||
<script src="./vivus-0.4.6/dist/vivus.js"></script>
|
|
||||||
<script>
|
|
||||||
var vi = new Vivus('animate_order', {type: 'oneByOne', duration:1200.0, reverseStack:false});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,494 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
version="1.1"
|
|
||||||
width="96.550346mm"
|
|
||||||
height="91.824226mm"
|
|
||||||
viewBox="0 0 96.550345 91.824227"
|
|
||||||
id="svg274"
|
|
||||||
sodipodi:docname="joinery_2021-4-25_1.24.3.svg"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<defs
|
|
||||||
id="defs278" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview276"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
objecttolerance="10.0"
|
|
||||||
gridtolerance="10.0"
|
|
||||||
guidetolerance="10.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:document-units="mm"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="0.93602498"
|
|
||||||
inkscape:cx="6.9442591"
|
|
||||||
inkscape:cy="277.23619"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="964"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="shape" />
|
|
||||||
<g
|
|
||||||
id="g272"
|
|
||||||
transform="translate(-973.35126,-374.04121)">
|
|
||||||
<g
|
|
||||||
fill="none"
|
|
||||||
stroke="none"
|
|
||||||
stroke-width="none"
|
|
||||||
stroke-linecap="none"
|
|
||||||
stroke-linejoin="miter"
|
|
||||||
stroke-miterlimit="none"
|
|
||||||
stroke-dasharray="none"
|
|
||||||
stroke-dashoffset="0"
|
|
||||||
font-family="none"
|
|
||||||
font-weight="none"
|
|
||||||
font-size="12px"
|
|
||||||
text-anchor="start"
|
|
||||||
mix-blend-mode="normal"
|
|
||||||
id="g270">
|
|
||||||
<g
|
|
||||||
stroke-opacity="0"
|
|
||||||
stroke="#000000"
|
|
||||||
stroke-width="1"
|
|
||||||
stroke-linecap="butt"
|
|
||||||
stroke-miterlimit="10"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="g2" />
|
|
||||||
<g
|
|
||||||
stroke-width="1"
|
|
||||||
stroke-linecap="butt"
|
|
||||||
stroke-miterlimit="10"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="g4" />
|
|
||||||
<g
|
|
||||||
stroke-width="1"
|
|
||||||
stroke-linecap="butt"
|
|
||||||
stroke-miterlimit="10"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="g6" />
|
|
||||||
<g
|
|
||||||
stroke-width="1"
|
|
||||||
stroke-linecap="butt"
|
|
||||||
stroke-miterlimit="10"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="g8" />
|
|
||||||
<g
|
|
||||||
stroke="#00aaff"
|
|
||||||
stroke-width="2"
|
|
||||||
stroke-linecap="butt"
|
|
||||||
stroke-miterlimit="10"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="g10" />
|
|
||||||
<g
|
|
||||||
stroke-width="1"
|
|
||||||
stroke-linecap="butt"
|
|
||||||
stroke-miterlimit="10"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="g12" />
|
|
||||||
<g
|
|
||||||
id="shape"
|
|
||||||
stroke-width="1"
|
|
||||||
stroke-linecap="round">
|
|
||||||
<path
|
|
||||||
d="m 1021.6264,380.69814 -40.49996,29.425"
|
|
||||||
id="joint"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400"
|
|
||||||
style="fill:none;stroke:#ff0000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 996.59544,457.73314 -15.469,-47.61"
|
|
||||||
id="path15"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400"
|
|
||||||
style="fill:none;stroke:#ff0000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 996.59544,457.73314 h 50.06096"
|
|
||||||
id="path17"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400"
|
|
||||||
style="fill:none;stroke:#ff0000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1046.6564,457.73314 15.47,-47.61"
|
|
||||||
id="path19"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400"
|
|
||||||
style="fill:none;stroke:#ff0000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1062.1264,410.12314 -40.5,-29.425"
|
|
||||||
id="path21"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400"
|
|
||||||
style="fill:none;stroke:#ff0000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<g
|
|
||||||
id="3_joint">
|
|
||||||
<g
|
|
||||||
id="g56"
|
|
||||||
fill="none"
|
|
||||||
stroke="#00ffff"
|
|
||||||
stroke-miterlimit="4"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400">
|
|
||||||
<path
|
|
||||||
d="m 1046.6564,457.73314 15.47,-47.61"
|
|
||||||
id="path54"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
d="m 1046.6564,457.73314 7.6085,2.47222 c 1.0313,-3.174 2.0626,-6.348 3.094,-9.522 1.0313,-3.174 2.0626,-6.348 3.094,-9.522 1.0313,-3.174 2.0626,-6.348 3.094,-9.522 1.0313,-3.174 2.0626,-6.348 3.094,-9.522 1.0313,-3.174 2.0626,-6.348 3.094,-9.522 l -7.6085,-2.47222"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path58"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1046.9233,454.75751 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path60"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1048.8571,448.80626 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path62"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1050.7908,442.85501 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path64"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1052.7246,436.90376 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path66"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1054.6583,430.95251 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path68"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1056.5921,425.00126 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path70"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1058.5258,419.05001 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path72"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1060.4596,413.09876 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path74"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="4_joint">
|
|
||||||
<g
|
|
||||||
id="g102"
|
|
||||||
fill="none"
|
|
||||||
stroke="#00ffff"
|
|
||||||
stroke-miterlimit="4"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400">
|
|
||||||
<path
|
|
||||||
d="m 1062.1264,410.12314 -40.5,-29.425"
|
|
||||||
id="path100"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
d="m 1062.1264,410.12314 4.7023,-6.47213 c -2.7,-1.96167 -5.4,-3.92333 -8.1,-5.885 -2.7,-1.96167 -5.4,-3.92333 -8.1,-5.885 -2.7,-1.96167 -5.4,-3.92333 -8.1,-5.885 -2.7,-1.96167 -5.4,-3.92333 -8.1,-5.885 -2.7,-1.96167 -5.4,-3.92333 -8.1,-5.885 l -4.7023,6.47213"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path104"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1058.8952,408.28408 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path106"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1053.8327,404.60595 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path108"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1048.7702,400.92782 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path110"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1043.7077,397.2497 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path112"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1038.6452,393.57157 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path114"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1033.5827,389.89345 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path116"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1028.5202,386.21532 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path118"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1023.4577,382.5372 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path120"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="2_joint">
|
|
||||||
<g
|
|
||||||
id="g148"
|
|
||||||
fill="none"
|
|
||||||
stroke="#00ffff"
|
|
||||||
stroke-miterlimit="4"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400">
|
|
||||||
<path
|
|
||||||
d="m 996.59544,457.73314 h 50.06096"
|
|
||||||
id="path146"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
d="m 996.59544,457.73314 v 8 c 3.3374,0 6.67476,0 10.01216,0 3.3374,0 6.6748,0 10.0122,0 3.3374,0 6.6748,0 10.0122,0 3.3374,0 6.6748,0 10.0122,0 3.3374,0 6.6748,0 10.0122,0 v -8"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path150"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 999.02425,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.38665,0 0.70005,0.3134 0.70005,0.7 0,0.3866 -0.3134,0.7 -0.70005,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path152"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1005.2819,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path154"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1011.5395,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path156"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1017.7971,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path158"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1024.0548,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path160"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1030.3124,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path162"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1036.57,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path164"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1042.8276,457.73314 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path166"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="0_joint">
|
|
||||||
<g
|
|
||||||
id="g171"
|
|
||||||
fill="none"
|
|
||||||
stroke="#00ffff"
|
|
||||||
stroke-miterlimit="4"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400">
|
|
||||||
<path
|
|
||||||
d="m 1021.6264,380.69814 -40.49996,29.425"
|
|
||||||
id="path169"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
d="m 1021.6264,380.69814 -4.7022,-6.47213 c -2.7001,1.96167 -5.4,3.92333 -8.1,5.885 -2.7001,1.96167 -5.4,3.92333 -8.1001,5.885 -2.69995,1.96167 -5.39995,3.92333 -8.09995,5.885 -2.7,1.96167 -5.4,3.92333 -8.1,5.885 -2.7,1.96167 -5.4,3.92333 -8.1,5.885 l 4.70229,6.47213"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path173"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1018.3952,382.5372 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path175"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1013.3327,386.21532 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path177"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1008.2702,389.89345 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path179"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1003.2077,393.57157 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path181"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 998.14519,397.2497 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path183"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 993.08269,400.92782 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path185"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 988.02019,404.60595 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path187"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 982.95769,408.28408 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path189"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="1_joint">
|
|
||||||
<g
|
|
||||||
id="g240"
|
|
||||||
fill="none"
|
|
||||||
stroke="#00ffff"
|
|
||||||
stroke-miterlimit="4"
|
|
||||||
font-family="Roboto, sans-serif"
|
|
||||||
font-weight="400">
|
|
||||||
<path
|
|
||||||
d="m 996.59544,457.73314 -15.469,-47.61"
|
|
||||||
id="path238"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
d="m 996.59544,457.73314 -7.60847,2.47207 c -1.03127,-3.174 -2.06253,-6.348 -3.0938,-9.522 -1.03127,-3.174 -2.06253,-6.348 -3.0938,-9.522 -1.03127,-3.174 -2.06253,-6.348 -3.0938,-9.522 -1.03127,-3.174 -2.06253,-6.348 -3.0938,-9.522 -1.03127,-3.174 -2.06253,-6.348 -3.0938,-9.522 l 7.60847,-2.47207"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path242"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 994.92863,454.75751 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path244"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 992.995,448.80626 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path246"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 991.06138,442.85501 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path248"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 989.12775,436.90376 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path250"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 987.19413,430.95251 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path252"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 985.2605,425.00126 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path254"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 983.32688,419.05001 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path256"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 981.39325,413.09876 c 0,-0.3866 0.3134,-0.7 0.7,-0.7 0.3866,0 0.7,0.3134 0.7,0.7 0,0.3866 -0.3134,0.7 -0.7,0.7 -0.3866,0 -0.7,-0.3134 -0.7,-0.7 z"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path258"
|
|
||||||
style="fill:none;stroke:#0000ff;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
d="m 1046.6564,457.73314 15.47,-47.61"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path264"
|
|
||||||
style="fill:none;stroke:none;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 1046.6564,457.73314 15.47,-47.61"
|
|
||||||
font-family="sans-serif"
|
|
||||||
font-weight="normal"
|
|
||||||
id="path268"
|
|
||||||
style="fill:none;stroke:none;stroke-width:0.2646;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 23 KiB |
27
extensions/fablabchemnitz/path_number_subpaths.inx
Normal file
27
extensions/fablabchemnitz/path_number_subpaths.inx
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||||
|
<name>Number Subpaths</name>
|
||||||
|
<id>fablabchemnitz.de.number_subpaths</id>
|
||||||
|
<param name="tab" type="notebook">
|
||||||
|
<page name="Options" gui-text="Options">
|
||||||
|
<param name="fontsize" type="string" gui-text="Font size:">10px</param>
|
||||||
|
<param name="dotsize" type="string" gui-text="Dot size:">10px</param>
|
||||||
|
<param name="showID" type="boolean" gui-text="Show path id">false</param>
|
||||||
|
<param name="help" type="description">Green dot = start, red dot = end.</param>
|
||||||
|
</page>
|
||||||
|
<page name="Help" _gui-text="Help">
|
||||||
|
<param name="info" type="description" xml:space="preserve">This extension mark the selection's start and endnodes for each subpath and number the subpaths.</param>
|
||||||
|
</page>
|
||||||
|
</param>
|
||||||
|
<effect>
|
||||||
|
<object-type>path</object-type>
|
||||||
|
<effects-menu>
|
||||||
|
<submenu name="FabLab Chemnitz">
|
||||||
|
<submenu name="Shape/Pattern from existing Path(s)" />
|
||||||
|
</submenu>
|
||||||
|
</effects-menu>
|
||||||
|
</effect>
|
||||||
|
<script>
|
||||||
|
<command location="inx" interpreter="python">path_number_subpaths.py</command>
|
||||||
|
</script>
|
||||||
|
</inkscape-extension>
|
84
extensions/fablabchemnitz/path_number_subpaths.py
Normal file
84
extensions/fablabchemnitz/path_number_subpaths.py
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Copyright (C) 2005 Aaron Spike, aaron@ekips.org
|
||||||
|
# Modified by Ellen Wasbo, ellen@wasbo.net 2021 - number subpaths and mark start/end node with green/red dot
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
import math
|
||||||
|
import inkex
|
||||||
|
from inkex import TextElement, Circle
|
||||||
|
|
||||||
|
class NumberSubpaths(inkex.EffectExtension):
|
||||||
|
"""Mark start and end nodes with numbered dots according to the options"""
|
||||||
|
def add_arguments(self, pars):
|
||||||
|
pars.add_argument("--dotsize", default="10px", help="Size of the dots on the path nodes")
|
||||||
|
pars.add_argument("--fontsize", default="10px", help="Size of node labels")
|
||||||
|
pars.add_argument("--showID", type=inkex.Boolean, default=False)
|
||||||
|
pars.add_argument("--tab", help="The selected UI-tab when OK was pressed")
|
||||||
|
|
||||||
|
def effect(self):
|
||||||
|
if not self.svg.selected:
|
||||||
|
raise inkex.AbortExtension("Please select an object.")
|
||||||
|
for id, node in self.svg.selection.id_dict().items():
|
||||||
|
self.add_dot(node)
|
||||||
|
|
||||||
|
def add_dot(self, node):
|
||||||
|
"""Add a dot label for this path element"""
|
||||||
|
group = node.getparent().add(inkex.Group())
|
||||||
|
dot_group = group.add(inkex.Group())
|
||||||
|
num_group = group.add(inkex.Group())
|
||||||
|
group.transform = node.transform
|
||||||
|
|
||||||
|
styleStart = inkex.Style({'stroke': 'none', 'fill': '#00ff00'})
|
||||||
|
styleEnd = inkex.Style({'stroke': 'none', 'fill': '#ff0000'})
|
||||||
|
|
||||||
|
idTxt=''
|
||||||
|
if self.options.showID==True:
|
||||||
|
idTxt=node.get('id')+', '
|
||||||
|
|
||||||
|
cc=0
|
||||||
|
for sub in node.path.to_superpath():
|
||||||
|
x=sub[0][1][0]
|
||||||
|
y=sub[0][1][1]
|
||||||
|
circle = dot_group.add(Circle(cx=str(x), cy=str(y), r=str(self.svg.unittouu(self.options.dotsize) / 2)))
|
||||||
|
circle.style = styleStart
|
||||||
|
num_group.append(self.add_text(
|
||||||
|
x + (self.svg.unittouu(self.options.dotsize) / 3),
|
||||||
|
y - (self.svg.unittouu(self.options.dotsize) / 3), idTxt+str(cc)))
|
||||||
|
x=sub[-1][1][0]
|
||||||
|
y=sub[-1][1][1]
|
||||||
|
circle = dot_group.add(Circle(cx=str(x), cy=str(y), r=str(self.svg.unittouu(self.options.dotsize) *0.9 / 2)))
|
||||||
|
circle.style = styleEnd
|
||||||
|
num_group.append(self.add_text(
|
||||||
|
x + (self.svg.unittouu(self.options.dotsize) / 3),
|
||||||
|
y - (self.svg.unittouu(self.options.dotsize) / 3), idTxt+str(cc)))
|
||||||
|
cc+=1
|
||||||
|
|
||||||
|
def add_text(self, x, y, text):
|
||||||
|
"""Add a text label at the given location"""
|
||||||
|
elem = TextElement(x=str(x), y=str(y))
|
||||||
|
elem.text = str(text)
|
||||||
|
elem.style = {
|
||||||
|
'font-size': self.svg.unittouu(self.options.fontsize),
|
||||||
|
'fill-opacity': '1.0',
|
||||||
|
'stroke': 'none',
|
||||||
|
'font-weight': 'normal',
|
||||||
|
'font-style': 'normal',
|
||||||
|
'fill': '#999'}
|
||||||
|
return elem
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
NumberSubpaths().run()
|
17
extensions/fablabchemnitz/reverse_order_subpaths.inx
Normal file
17
extensions/fablabchemnitz/reverse_order_subpaths.inx
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||||
|
<name>Reverse Order Of Subpaths</name>
|
||||||
|
<id>fablabchemnitz.de.reverse_order_subpaths</id>
|
||||||
|
<param name="help" type="description">Reverse order of subpaths (combined paths) without reversing the node order nor the order of the paths.</param>
|
||||||
|
<effect>
|
||||||
|
<object-type>path</object-type>
|
||||||
|
<effects-menu>
|
||||||
|
<submenu name="FabLab Chemnitz">
|
||||||
|
<submenu name="Modify existing Path(s)"/>
|
||||||
|
</submenu>
|
||||||
|
</effects-menu>
|
||||||
|
</effect>
|
||||||
|
<script>
|
||||||
|
<command location="inx" interpreter="python">reverse_order_subpaths.py</command>
|
||||||
|
</script>
|
||||||
|
</inkscape-extension>
|
42
extensions/fablabchemnitz/reverse_order_subpaths.py
Normal file
42
extensions/fablabchemnitz/reverse_order_subpaths.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Copyright (C) Ellen Wasbo, cutlings.wasbo.net 2021
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
import inkex
|
||||||
|
from inkex import PathElement, CubicSuperPath
|
||||||
|
|
||||||
|
class ReverseOrderSubpaths(inkex.EffectExtension):
|
||||||
|
|
||||||
|
def effect(self):
|
||||||
|
"""Reverse order of subpaths (combined paths) without reversing node-order or order of paths"""
|
||||||
|
if not self.svg.selected:
|
||||||
|
raise inkex.AbortExtension("Please select an object.")
|
||||||
|
for id, elem in self.svg.selection.id_dict().items():
|
||||||
|
|
||||||
|
new=[]
|
||||||
|
sub=elem.path.to_superpath()
|
||||||
|
|
||||||
|
i=0
|
||||||
|
while i<len(sub):
|
||||||
|
new.append(sub[-1-i])
|
||||||
|
i+=1
|
||||||
|
|
||||||
|
elem.path = CubicSuperPath(new).to_path(curves_only=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
ReverseOrderSubpaths().run()
|
Reference in New Issue
Block a user