mehrere Punkte löschen [Objektdatei]

  • Hallo.


    Zur Zeit arbeite ich an einem Projekt bei dem ich im Objekteditor von einem Runden Objekt nur einen gewissen Abschnitt brauche und somit sehr viele Punkte wieder löschen muß. Derzeit geht das im Editor aber nur in dem man Punkt für Punkt löscht.


    Warum das so ist, ist mir denke ich bewusst, da ja jedesmal die Flächen die den Punkt benutzen bearbeitet und nachfolgende Punkte nachrücken müssen deren Flächen dann wieder bearbeitet werden müssten. Also ziemlich großer Aufwand. Deshalb habe ich mir Gedanken gemacht wie man sowas umsetzen könnte.


    Erstmal bräuchte man eine Eingabemaske beid er man die zu löschenden Punkte auswählen kann.
    Dann das Programm starten
    Ablauf:
    An sich muß man die Punkteliste von hinten aufräumen somit umgeht man das Problem der Nachrückenden Punkte



    Soweit meine Gedanken dazu.
    Vom Code her würde ich mir zutrauen sowas als Externes Tool in Visual Basic zu schreiben.
    Jedoch habe ich kaum Erfahrungen mit XML (Habe mir bis jetzt nur mit Mühe ein Tool geschrieben das mir die verwendeten Variablen in einer Gruppendatei ausliest damit ich dies für die Dokumentation leichter hab)


    Nun zu den Fragen.
    Sieht hier jemand gegebenenfalls einen Denkfehler oder hat Verbesserungsvorschläge und Tipps zur Umsetzung für mich?


    Gruß André

  • Hallo André,
    ich bin mir nicht ganz sicher ob ich Dich ganz richtig verstanden habe, ein Sortieren der Punktliste macht Sinn aber mE kann man das von Dir beschriebene Problem dadurch trotzdem nicht ganz umgehen.


    Beispiel:
    Objekt mit 10 Punkten
    Flächen:
    1) 1 5 7 3
    2) 3 6 7 9
    3) 9 2 4 8
    4) 0 1 2


    Ich möchte die Punkte 7, 5 löschen:
    1. Schleifendurchgang, Punkt "7"
    a) 1 5 3
    b) 3 6 8
    c) 8 2 4 7
    d) 0 1 2


    2. Schleifendurchgang, Punkt "5"
    a) 1 3
    b) 3 5 7
    c) 7 2 4 6
    d) 0 1 2



    Allgemein ausgedrückt:
    Für jeden zu löschenden Punkt x:
    - Lösche Punkt x Element aus XML (<Point>)
    - Für jede Fläche a:
    -- Für alle Punkte p in Fläche a:
    --- Falls p == x
    ---- Lösche p
    --- Falls p > x
    ---- p = p - 1



    Was hat uns also das Sortieren des "zu löschende Punkte Array" gebracht: Wir müssen weniger Punkte mittels "p = p - 1" editieren, da wir die "höheren Punkte" früher löschen. Und zusätzlich müssen wir nicht die Punkte im "zu löschende Punkte Array" anpassen. Angenommen wir hätten das Array nicht sortiert und zB folgendes Array genommen "5 7": Nach dem Löschen des Punkts "5" müssten wir im nächsten Schleifendurchgang nicht Punkt "7" löschen, sondern Punkt "6"!


    Ich hoffe das war halbwegs verständlich, ansonsten einfach nochmals nachfragen!


    Ich denke der Grund warum dies derzeitig im LoksimEdit nicht umgesetzt ist, ist eher die Oberfläche (Mehrfachauswahl im Baum des Objekteditors) und weniger der Algorithmus an sich (ist öfter so ;) )


    Tipps zu VB kann ich nicht geben, da kenne ich mich zu wenig aus. Bei VB.NET ist die "XDocument" Klasse recht einfach zu verwenden bei der XML-Verarbeitung.


    ABER, ich werde schnell in den LoksimEdit Code schauen und analysieren wie aufwändig die Mehrfachauswahl wirklich wäre :)


    lg
    Lukas

  • Die Mehrfachauswahl ist wirklich nichts fürs "Zwischendurch-mal-schnell-Programmieren" Wirds also vermutlich nicht kurzfristig geben. Allerdings habe ich dafür schnell die "Entf" Taste eingebaut, sodass das Löschen der Punkte und Flächen auch so schneller geht ;)

  • Hallo Lukas. das habe ich mir schon gedacht. :)
    Deswegen wollte ich mir ja auch selbst darüber Gedanken machen.


    Wäre es nicht sinnvolle wenn schon keine externe Lösung es so zu gestallten wie beim verschieben und zoomen?
    Also eine Art Unterfunktion in dem man für die zu löschenden Punkte Kästchen anklickt.


    Gruß André


    ps.
    Ich sollte vielleicht auch erzählen wie ich auf sowas komme.
    Und zwar baue ich einen neuen Rundschuppen. Dafür ist dein Objektcreator sehr schön, da man dort die Grundform sehr schön mit den Ebenen modellieren kann. Jedoch brauche ich dann von den ganzen Segmenten des Vollkreises nur 1. Das Tool kann aber nur Kreisausschnitte von mindestens 30° erstellen. Ich bräuchte aber 7.2° Also muss ich mit 36° und 6 Punkten einen Kreisausschnitt erstellen und die überflüssigen Punkte und Flächen löschen.

  • Hallo,
    eigentlich halte ich davon nicht so viel, weil die naheliegende Lösung eine Mehrfachauswahl in der Baumstruktur ist. Da der Punkte verschieben / zoomen Dialog aber schon existiert, könnte man aber den natürlich einfach für eine dritte Funktion "Löschen" verwenden ;)
    Ansonsten würde ich sagen, den Aufwand für das Erstellen des Dialogs sollte man lieber in die Mehrfachauswahl stecken (auch wenn diese dann mehr Zeit benötigen würde). Aber in diesem Fall ist der Dialog ja netterweise schon da.
    Also ja, gute Idee!


    lg
    Lukas

  • Naja Lukas es ist halt der Gedanke für mich gewesen was der Editor dann rechts anzeigen soll wenn man mehr als einen Punkt auswählt. Obwohl eigentlich müsste man da ja nix anzeigen und könnte so auch das kopieren mehrerer Punkte ohne den Umweg über die Flächen ermöglichen. Muss man halt abwägen.


    Gruß André

  • Vielleicht passt das noch mit hier rein: Bei Objekten mit vielen Punkten würde es - finde ich - die Arbeit leichter machen, wenn man die Punkte für eine Fläche per Tastatur eingeben könnte und sich nicht aus so einer endlos langen Liste den richtigen heraussuchen muss.


    Alternativ könnte man auch einfach diese Liste vergrößern, dass man beispielsweise 20 Punkte auf einmal sehen kann.

  • Hallo Paul,


    Vielleicht passt das noch mit hier rein: Bei Objekten mit vielen Punkten würde es - finde ich - die Arbeit leichter machen, wenn man die Punkte für eine Fläche per Tastatur eingeben könnte und sich nicht aus so einer endlos langen Liste den richtigen heraussuchen muss.


    Alternativ könnte man auch einfach diese Liste vergrößern, dass man beispielsweise 20 Punkte auf einmal sehen kann.

    wenn ich es richtig in Erinnerung habe, ist das zur kommenden Version umgesetzt.


    Gruss
    Uwe

    --
    Wenn du die Götter zum Lachen bringen willst, mach’ einen Plan.

  • lukash

    Hat das Label auf Vorschlagsliste hinzugefügt