Fast schon programmieren

Xyroon

dö_öb
Mitarbeiter
Administrator
TS Admin
10. Februar 2008
3.238
292
32
Baselland
Hallo zusamen. ich möchte mit XML rum basteln und ich hatte fas schon erfolg und Dan hat es mich wider zukür geworfen.
das Problem ist ich kam nicht einfach suchen und ersetze, da sich die Formatierung beim Export dauernd ändert

so siet die basis aus:
<layerview name="AID_1">
<data-layer transparency="0" hatch-pitch="4" transparency-3d="0" display="true" selectable="true" style="no width" hatch-angle="45" style-3d="width" color="#fac527"/>
<drawing-layer transparency="0" hatch-pitch="4" display="true" selectable="true" style="width" hatch-angle="45" color="#ffffff"/>
</layerview>
Um das ganze zu editieren benutze ich visual studio cod
mit hilfe eines kolegen war ich so weit das er mir ein String(oder wie heist das?) zusamen gesetzt hat

(<layerview name="AID_1">\n\s*<data-layer color=)".*?"( style=)".*?"( hatch-pitch=)".*?"(?:( display=".*?")|)( style-3d=)".*?"(?:( selectable=".*?")|)( transparency=)".*?"( transparency-3d=)".*?"( hatch-angle=)".*?"(\/>\n\s*<drawing-layer color=)".*?"( style=)".*?"( hatch-pitch=)".*?"(?:( display=".*?" selectable=".*?" transparency=)|( transparency=))".*?"( hatch-angle=)".*?"(\/>\n\s*<\/layerview>)

$1""$2""$3""$4$5""$6$7""$8""$9""$10""$11""$12""$13$14""$15""$16

basierend darauf habe ich mir in einer Exel was gebastelt. da ich das ganze spiel für verschiedene Layer Settings machen möchte
$1"129"$2"fill"$3"4"$4"true"$5"width"$6"true"$7"50"$8"0"$9"45"$10"#ffffff"$11"width"$12"4"$13"true"$14"true"$15"0"$16"45"

Die ID dahinter ist , ich habe ein ein layer stak up mit 6000 zielen code darin kommt der layer "AID_1" 72 mal vor.
ich möchte nun die Formatierung 72 mal gleich setzen.

Aber folgende felder sollen bleiben
data-layer: display=".*?" selectable=".*?"
drawing-layer: display=".*?" selectable=".*?"

Nach dem ich einen test lauf gemacht habe habe ich festgestellt das die Formatierung nicht immer gleich ist

<layerview name="AID_2">
<data-layer color="146" style="fill" hatch-pitch="4" display="true" style-3d="width" selectable="true" transparency="0" transparency-3d="0" hatch-angle="45"/>
<drawing-layer color="#ffffff" style="width" hatch-pitch="4" display="true" selectable="true" transparency="0" hatch-angle="45"/>
</layerview>

Hinzu kommt wen der Display haken nicht gesetzt ist stet das nicht display="off" oder so, sonder es fehlt dann einfach Komplet

Nun meine frage wie würdet ihr so was angehen?
im Anhang habe ich ein verkürzte form des Problemes
 

Anhänge

Xyroon

dö_öb
Mitarbeiter
Administrator
TS Admin
10. Februar 2008
3.238
292
32
Baselland
(<layerview name="AID_1">\n\s*<data-layer color=)".*?"( style=)".*?"( hatch-pitch=)".*?"(?:( display=".*?")|)( style-3d=)".*?"(?:( selectable=".*?")|)( transparency=)".*?"( transparency-3d=)".*?"( hatch-angle=)".*?"(\/>\n\s*<drawing-layer color=)".*?"( style=)".*?"( hatch-pitch=)".*?"(?:( display=".*?" selectable=".*?" transparency=)|( transparency=))".*?"( hatch-angle=)".*?"(\/>\n\s*<\/layerview>)

$1""$2""$3""$4$5""$6$7""$8""$9""$10""$11""$12""$13$14""$15""$16

wen ich das so mache dann habe ich da dies 16 Gruppen und nach jeder Gruppe kam ich einen Inhalt einfügen.
alos ".*?" alles zwischen den gänsefüßchen ersetzen. oder wen ich nichts schriebe nach $4 was display ist. dann bleibt da der Inhalt.
Kann man auch irgend wie sagen, dass z.b. #$3(?:( display=".*?")|). das das immer die selbe Gruppe ist. auch wen es in einer anderen Reihenfolge ist?
 

oNdsen

Jibbaz
Mitarbeiter
Administrator
Gaggiwurst
Vollhonk
TS Admin
21. November 2010
5.282
612
34
Zürich
ondsen.ch
ich denke was du suchst ist ein xml parser. du wirst meines erachtens nicht drum rum kommen, das xml zuerst zu parsen (in einzelteile zu zerlegen), die elemente anzupassen und dann wieder zusammen zu führen.
da musst du effektiv was schreiben, welches deine parameter berücksichtigt. und ich glaube kaum, dass excel hier das richtige dafür ist. mit php könntest du die buildt-in funktionen verwenden.
aber auf so eine menge dynamischer code wirst du mit einem regex wie von deinem kumpel vorgeschlagen wohl nicht weit kommen.
 
  • Like
Reactions: benserker

benserker

Stammtischphilosoph
Mitarbeiter
Administrator
Gaggiwurst
8. April 2005
10.717
713
Zürich
Ich kann dir nicht helfen, da ich nicht programmieren kann. Es nimmt mich trotzdem ein bisschen wunder, um was es eigentlich geht. Was ist die Absicht deines Programms? Was soll es tun?
 

Koreander

Erfahrener Benutzer
Goldmember
9. November 2006
1.537
113
28
Würde mich auch Wundern ^^ Programmiermässig könnte ich oder Ondi dir wohl weiterhelfen wenn nötig
 

oNdsen

Jibbaz
Mitarbeiter
Administrator
Gaggiwurst
Vollhonk
TS Admin
21. November 2010
5.282
612
34
Zürich
ondsen.ch
ja noch wichtiger ist die logik dahinter. was ist dynamisch, was in jedem fall fix, sollen jeweils alle mit den selben stats ausgestattet werden welche nicht vorhanden waren usw...
 

Xyroon

dö_öb
Mitarbeiter
Administrator
TS Admin
10. Februar 2008
3.238
292
32
Baselland
Ok ein (wenig) wem Hintergrund Information.
LeiterPalten Layout tools sind oft Voll geparkt mit Möglichkeiten. aber nicht gerade User freundlich.

Wenn ich vomm altten Zucken Cr5000 in das neue CR8000 Converte, dann haben ichdie Möglichkeit Layer Settings zu übernehmen.
Der haken daran CR5000 aus dem Jahr 1994 Unix & PC das Heist singel core 32Bit Farben keine Transparenz oder so 3D Schnickschnack, undnicht der heutige RGB standar.
CR-8000 2011 in Japan entstanden.
CR5000.jpgcr-8000-design-force.jpg
Grund setz lich verhält es sich wie Photoshop mit Grafik ebenen
ich habe XXX ebenen zu 6 lagen Kupfer,6lagen sperzone für ruting 6lagen sperzonen für Vias......Zeichnungs ebenen....
Bei einem 6Kupfer lagen designe habe ich etwa 130 ebene.

Nun habe isch filter wie z.b. all= alles eingebender.
oder Layout A1 damit ich nur A1 und ale dazu gehörgen relevanten layer sehe.

Im alten toll wen ich nun A1 Von rot auf blau geändert habe dann ist in allen Setings A1 Blau
Im neuen toll kann ich aber bei jedem Layer Stak seting die lagen Farben unterschiedlich machen.

Da das neue toll Transparente layer suportet, könt ihr euch vorstellen das ich das nutzen weil.
An stelle von 4 Verschiedenen Hasch mustern wo die pixel so versetzt sind das es fast transparent wirkt

Jetzt habe ich aber 30 Layer stak Setings und in jedem die 130 ebenen.
Wen ich auf Layout A1 nun layer A2 Manuel hinzu schalte dann hat der je nach dem in all den 30 Staks eine andere Farbe

Die staks benutz man Primer zu definieren welche layer siecht bar und/oder Selektiere bar sind.
Aber wen nun meine ebene je nach view immer eine andere Farbe haben, bin ich verwirt welche das ist
nicht nur Farben sonder auch mal vew \\\\ muster ein anderes mal ein / / / / mustero_O

darum möchte ich in view_all Mall die Default Settings definieren und dann die Einstellungen kopieren.
aber selecton haken und view haken so sein lassen

wenn ich das dann hab kann ich schon noch individuell gestalten.
Z.B. wenn ich 6ebenen habe jede ebene 20% transparent. wen aber nur 3 ebene dann 80% transparent.
und Jedes mal wenn ich ein neues Design anlege oder Converter. überschreibt es mir die Layer Settings.
Darum möchte ich ein MTX fiel haben das ich Importieren kann.

Das ganze Spiel dann für 2L 4L 6L 8L 10L
Z0504-Polar-Zuken-1-1000.png
 

oNdsen

Jibbaz
Mitarbeiter
Administrator
Gaggiwurst
Vollhonk
TS Admin
21. November 2010
5.282
612
34
Zürich
ondsen.ch
Wie im Tech Chat bereits geschrieben, hier habe ich Dir ein Script geschrieben, dass genau das machen sollte, was Du benötigst:
https://ondsen.ch/xyroon/xml.php

Einfach im Formular entsprechend ein XML hochladen. Das erste Feld mit dem Namen X bestimmt für alle Nachkömmlinge mit dem selben Namen den Master und ersetzt entsprechend die Attributes.
.
Die Grundfunktion ist eigentlich ganz simpel aufgebaut:
PHP:
    $xml_data_new = $xml_data;
    $xml_replacement_arr = array();

    foreach($xml_data['dsgn']['layerview-set-list']['layerview-set'] AS $key_lvs => $layerviewset)
    {
        foreach($layerviewset['layerview'] AS $key_lv => $layerview)
        {
            if(!array_key_exists($layerview['@attributes']['name'], $xml_replacement_arr))
            {
                // Define Master Data
                foreach($xml_replacement_all_layers AS $xml_replacement_layer)
                {
                    $xml_replacement_arr[$layerview['@attributes']['name']][$xml_replacement_layer] = $layerview[$xml_replacement_layer]['@attributes'];
                    
                    // Sort Attributes
                    ksort($xml_data_new['dsgn']['layerview-set-list']['layerview-set'][$key_lvs]['layerview'][$key_lv][$xml_replacement_layer]['@attributes']);
                }
            }
            else
            {
                // Replace Values from Master
                foreach($xml_replacement_all_layers AS $xml_replacement_layer)
                {
                    // Clear Attributes before refill
                    foreach($xml_data_new['dsgn']['layerview-set-list']['layerview-set'][$key_lvs]['layerview'][$key_lv][$xml_replacement_layer]['@attributes'] AS $attr_key => $attr_val)
                    {
                        if(!in_array($attr_key, $xml_replacement_skip_attributes))
                        {
                            unset($xml_data_new['dsgn']['layerview-set-list']['layerview-set'][$key_lvs]['layerview'][$key_lv][$xml_replacement_layer]['@attributes'][$attr_key]);
                        }
                    }
                    
                    // Refill Attributes from Master Data
                    foreach($layerview[$xml_replacement_layer]['@attributes'] AS $layer_key => $layer_val)
                    {
                        if(!in_array($layer_key, $xml_replacement_skip_attributes))
                        {
                            $xml_data_new['dsgn']['layerview-set-list']['layerview-set'][$key_lvs]['layerview'][$key_lv][$xml_replacement_layer]['@attributes'][$layer_key] = $xml_replacement_arr[$layerview['@attributes']['name']][$xml_replacement_layer][$layer_key];
                        }
                    }
                    
                    // Sort Attributes
                    ksort($xml_data_new['dsgn']['layerview-set-list']['layerview-set'][$key_lvs]['layerview'][$key_lv][$xml_replacement_layer]['@attributes']);
                }
            }
        }
    }
Input
1594941159482.png


Output :)
1594941197243.png
 
Zuletzt bearbeitet:

Xyroon

dö_öb
Mitarbeiter
Administrator
TS Admin
10. Februar 2008
3.238
292
32
Baselland
Fielen dank ich werde das morgen Testen. Ich hatte klare Vorstellung welche Funktion ich möchte. die Grund IDE ist ja auch nicht schwierig. aber bei der Umsetzung waren es fiel kleine Stolpersteine weil ich einfach keine Erfahrung mit so Skript habe.

Ich merke immer mehr im altag das ich Programmieren muss, um Ordnung zu Schafen. Immer wichtiger wirt,
mehr addon Software. zur Steigerung der Funktionalität.
Die Bedingung geht den Bach herunter.
 

Xyroon

dö_öb
Mitarbeiter
Administrator
TS Admin
10. Februar 2008
3.238
292
32
Baselland
Hir sind 2 verschiedene layerview-set select.
Beim gelben siehst du dass die nicht gleich sind. Den style hat es da nicht überschriben
Farbeien sind alle korrekt
Start.png
All_.png



Hier wie es früher ausgesehen hat
Alte_sicht.png

Alte Darstellung
alte_spersonen.png


Neu Übersichtlicher
neue_sicht.png
 

oNdsen

Jibbaz
Mitarbeiter
Administrator
Gaggiwurst
Vollhonk
TS Admin
21. November 2010
5.282
612
34
Zürich
ondsen.ch
was steht denn im master style? und wie sieht es im xml beim element vorher und nachher aus? in die glaskugel schauen kann ich nicht ;)
 

Xyroon

dö_öb
Mitarbeiter
Administrator
TS Admin
10. Februar 2008
3.238
292
32
Baselland
Ich hab da was gefunden das nicht so ist wie ich das wollte.
Z.b.
<layerview name="WIR1" active="true">
<data-layer style-3d="fill" selectable="true" display="true" hatch-pitch="16" hatch-angle="45" style="fill" color="109" transparency="80" transparency-3d="0"/>
<drawing-layer selectable="true" display="true" hatch-pitch="16" hatch-angle="45" style="width" color="#ffffff" transparency="0"/>
</layerview>


Differenz:
<layerview name="WIR1">
<data-layer style-3d="fill" hatch-pitch="16" hatch-angle="45" style="tone9" color="109" transparency="0" transparency-3d="0"/>
<drawing-layer hatch-pitch="16" hatch-angle="45" style="width" color="#ffffff" transparency="0"/>
</layerview>

Bei einem stet active="true"> und beim anderen nicht. ich vermute mall dass die darum nicht als gleichen Layer betrachtet werden
Die Eigenschaft active="true">, soll stehen, wen es gesetzt ist, und wen nicht dann nicht.
aber die Layer setting darunter sohlen überschrieben werden

PS: wo ich noch Manuel eingreifen muss ist die erste ziele einfügen
<?xml version="1.0" encoding="UTF-8"?>
und alles kommt links bündig raus da muss ich dann die Sechspass wider einfügen
 

oNdsen

Jibbaz
Mitarbeiter
Administrator
Gaggiwurst
Vollhonk
TS Admin
21. November 2010
5.282
612
34
Zürich
ondsen.ch
Der Code wird langsam immer grösser - genau wie die Ansprüche :p
Habs erweitert.
 

Latest posts

Members online

No members online now.
Shoutbox
  1. benserker:
    han das usde comments zu dem vid und hans zimli schön formuliert gfunde...
  2. Varimathras:
    isch de fappe wie konsole game?
  3. benserker:
    Einen PC zusammen zu bauen, ist wie wenn man Leben erschafft! Künstliches digitales Leben. Es ist fantastisch! Und die GeForce 3080 wird mit ca. 60 Milliarden Transistoren beinahe gleich viel Transistoren haben, wie das menschliche Gehirn eines Babys 80 bis 85 Milliarden Neuronenverknüpfungen hat - einen Computer zu bauen ist also schon sehr nahe dran an Leben erschaffen.
  4. benserker:
  5. oNdsen:
    ahii ahii
  6. Jahracer:
    blub ;)
  7. DragonSixZero:
    Origin isch doch am sterbe hani gmeint
  8. benserker:
  9. Yodenko:
    Dammi, The Last Order für 30Fr. muessi wohl doch wieder Origin installe :/
  10. Yodenko:
    kommt drauf an wo, im Kopf ned, weil dann is man tot :D
  11. benserker:
  12. Varimathras:
    eifach so als bei läbe wär scho recht schlächt
  13. Varimathras:
    let it all out
  14. benserker:
    shooooout
  15. benserker:
    geil

Teamspeak (2 / 64)

  Fightgenossen.ch - The Gamers Asylum since 2005

   ▓▒░ Lieber Herr Gesangsverein ♪♫ ░▒▓

     -Guardian-(FGN)

▓▒░ Strategy ░▒▓

  ✘ League of Legends

 ► Team 1

 ► Team 2

 ► Team 3

 ► Team 4

   ► Retarded Goon Squad

  Rennleitung

   ► Hoodhustlers

  ► Pokémon Hunt Club

  ✘ Smite

 ► Team 1

 ► Team 2

▓▒░ Action ░▒▓

  ✘ Call of Duty: Modern Warfare

 ► Team 1

 ► Team 2

  ✘ The Division 2

  ✘ Rainbow Six Siege

 ✘ Left 4 Dead 2

  ✘ Battlefield

  ✘ Hello Kitty Online

  ✘ Valorant

  ✘ Satisfactory

▓▒░ Roleplaying ░▒▓

  ✘ Divinity: Original Sin 2

  ✘ Diablo III

  ✘ World of Warcraft: Classic

 ► Alliance

 ► Horde

  ✘ ARK: Survival Evolved

 ► Team 1

  ► Duo Party

▓▒░ Evergreen ░▒▓

  ✘ Chillout

  ✘ Rocket League

 ► Team 1

 ► Team 2

 ► Ranked 2s

 ► Ranked 3s

  ► RL Nitro League

  ✘ Gaming Event

 ► Team 1

 ► Team 2

  ✘ Co-Op Mig-Ros

▓▒░ Meeting ░▒▓

  ✘ Corona @ HomeOffice

  ✘ Members

  ✘ Goldmembers

  ✘ Admins

  ✘ Text only ♥

  ✘ Dateitransfer

  ✘ Streaming

▓▒░ Guest Asylums ░▒▓

  ▒░ Roblox ░▒

  ▒░ A Truly Unbreakable [BonD] ░▒

  ▒░ Sonic's Gummizelle ░▒

   ▒░ Big Black Cars ░▒

  ▒░ SparX ░▒

▓▒░ AFK ░▒▓

╔═✘════════════╗

║ fightgenossen.ch ║

╚════════════✘═╝