SVG mit Koordinaten in mm

Alice

Erfahrenes Mitglied
Hallo. :)

Wie der Titel schon sagt, suche ich nach einer Möglichkeit IN EINEM PFAD die Koordinaten in Millimeter anzugeben. Nur wie kann ich das erreichen?

Ich hoffe, ich bin im richtigen Unterforum. Ich habe das PHP Forum ausgesucht, da ich meine SVG-Dateien mit PHP bearbeite.

PHP:
<path id="Rechteck5" d="m 100,10 38.976379,0 0,272.83465896484403856447 -38.976379,0 z"/>

Wie man sehen kann, möchte ich dass das Rechteck mit den Koordinaten 100 und 10 dargestellt wird. Aber wie es aussieht, wird es mit den Koordinaten IN PIXEL dargestellt.

Gibt es dafür eine Lösung? Oder evtl. ein Befehl?
 
So langsam glaube ich man kann die Grafiken nicht so richtig beliebig ausrichten. Ausser halt mit Inkscape oder so.

Aber mit PHP scheint das unmöglich zu sein.

Wenn ich den Pfad wie folgt ändere

PHP:
<path id="Rechteck5" d="m 0,0 38.976379,0 0,272.83465896484403856447 -38.976379,0 z"/>

Sollte man meinen, die neuen Koordinaten sind X=0 und Y=0 aber das scheint nicht zu stimmen. Denn die Grafik ist dann meistens an einer ganz anderen Position.

Weiss hier zufällig jemand wie man eine Grafik auf 0 und 0 legt?
 
Das weiss ich auch bereits.

Es ist so ähnlich aufgebaut:
PHP:
<defs>
   <path id="Rechteck1" d="m 0,0 ..."/>
   <path id="Rechteck2" d="m 0,0 ..."/>
   <path id="Rechteck3" d="m 0,0 ..."/>
   <path id="Rechteck4" d="m 0,0 ..."/>
   <path id="Rechteck5" d="m 0,0 ..."/>
</defs>

Hiermit lade ich quasi die Rechtecke:
PHP:
<use xlink:href="#Rechteck1" style="fill:blue; />
<use xlink:href="#Rechteck3" style="fill:blue; />

Ich habe bereits 1000 andere Varianten ausprobiert aber das Rechteck positioniert sich einfach nicht bei X=0 und Y=0.
 
Hattest du auch diese Variante?

XML:
<use x="0" y="0" xlink:href="#Rechteck1" style="fill:blue;" />

The ‘use’ element has optional attributes ‘x’, ‘y’, ‘width’ and ‘height’ which are used to map the graphical contents of the referenced element onto a rectangular region within the current coordinate system.
 
Zuletzt bearbeitet von einem Moderator:
Ja funktioniert auch nicht.

Kann es sein das ich, um diese Variante zu verwenden, ein paar Angaben direkt im Pfad löschen muss? Denn wenn ich z.B. <use x="100" y="100" xlink:href="#Rechteck1" style="fill:blue;" /> einstelle, verschiebt sich die Grafik. Und bei X=0 und Y=0 ist die Grafik zwar ganz oben links aber etwas zu weit. Ein Teil der Grafik verschwindet dann.
 
Ich glaube ich habe den Fehler gefunden.

Darf man in Path-ID´s Zahlen verwenden? Wenn ja, auch an erster Stelle?
 
http://www.w3.org/TR/SVG/struct.html#IDAttribute
->
http://www.w3.org/TR/2008/REC-xml-20081126/#id
->
http://www.w3.org/TR/2008/REC-xml-20081126/#NT-NameStartChar

NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]

[0-9] kommt dort nicht vor ;-). Aber ab der zweiten Stelle schon.
 
Vielen Dank für die Links. :)

Eine Frage hätte ich noch.

Mir Pfaden die im + Bereich liegen, habe ich überhaupt keine Probleme. Aber sobald in einem Pfad ein - ist, kann ich diesen Pfad nicht mehr Problemlos positionieren.

Gibt es eine Möglichkeit (egal wie) wie ich Pfade quasi neu berechnen kann? Würde die Grafiken (viele Seperate) gerne so erstellen das der Zeiger (nennt man das so?) immer bei 0,0 anfängt.

Also z.B.: von 0 geht eine Linie nach 100. Von 100 geht eine kurve nach blablabla

Ist das möglich?
 
Meinst du mit negativen Werten, dass bereits der Startpunkt im negativen liegt, oder dass später irgendwann ein Punkt kommt, der dann ins negative geht? Post am besten mal einen Beispiel Pfad.

Ich kann dir nicht wirklich weiter helfen. Ich hab gestern auch nur rumprobiert.

der Zeiger (nennt man das so?)

Ich denke man kann es so nennen. Die Spezifikation nennt es symbolisch "Stift", denn man setzt den Stift an einem Punkt an und bewegt ihn zu den anderen Punkten. Und dann gibt es Anweisungen den Stift anzuheben und an eine andere Stelle zu setzen.
 
Zurück