Zum Inhalt springen

Marionette if boolean flasch?


DeHu

Empfohlene Beiträge

Hi Zusammen

 

Ich habe mir eine Marionette erstellt, die mir den Höhenunterschied zwischen zwei Punkten berechnet und diesen dann in eine Datenbank schreibt, sodass ich diesen Wert mit einem Datenstempel anzeigen lassen kann. So weit so gut. 

 

Eigentlich funktioniert die Marionette perfekt. Allerdings ist sie sehr anfällig auf Fehler.

Denn: Das ganze funktioniert so. 

 

Ich habe ein Geländemodell.

Darauf habe ich Vermessungspunkte (VP) platziert  - immer zwei an ein und der selben Stelle (gleiche Koordinaten).

Der ein VP liesst mir den z-Wert vom Ist-Modell ab, der Andere vom Soll-Modell.  
Die Marionette schnappt sich nun den Vermessungspunkt der den Z-Wert vom Ist-Modell ausliesst und den der den Z-Wert vom Soll-Modell ausliesst via Obj by Criteria - simpel. 

Dann Schnapp ich mir alle Punktinfo's "Get 3d info", und dann muss die Marionette alle Punkte vergleichen. Denn es dürfen ja nur die Punkte miteinander verrechnet werden, die ein und die selbe x und y Koordinate haben, ansonsten ist das ganze falsch. Dies wollt ich mit einem "if" Boolean > pCenter = True lösen. Allerdings scheint dies nicht wirklich zu funktionieren. Wenn ich die Reihenfolge der Punkt Ergebnisse dann vergleiche, stimmen diese nicht. 

 

> zu Beginn, haben diese gestimmt, da ich durch das fortlaufende einfügen von Vermessungspunkte eine fortlaufende Rheinfolge generiert habe. Diese habe ich nun mit dem Befehl cmd+f für einige Punkte durcheinander gebracht und nun stimmt die Reihenfolge nicht mehr, und die Ergebnisse sind Random. Warum funktioniert der if boolean nicht?

 

Danke für eure Hilfe

 

Ohne Titel 1.vwx

Link zu diesem Kommentar

Wie wärs, wenn du die zwei Punktelisten nach x und y-Koordinaten sortierst. Dann sollten beim Abarbeiten der Listen automatisch die übereinander liegenden Punkte verarbeitet werden. Auf die Prüfung könntest du dann auch ganz verzichten, wenn du sicherstellst, dass immer jeder ist- auch ein soll-Punkt hat.

Vectorworks 2024 - Architektur - Win 10

Link zu diesem Kommentar

Hi Herbieherb, mir gefallen beide Ansätze. 

Was mir noch nicht klar ist:

Variante 1: Meinst du die Listen mittels  Marionette anzulegen und da die Sortierung auf x und y zu stellen? Oder effektiv mit den Tabellen zu arbeiten? 

Variante 2: Wie erstellt man einen Vermessungspunkt mit Marionette, der dann auch gleich den z-Wert vom soll abliesst?

 

Danke für deine hilfe
 

Link zu diesem Kommentar

Sorry, beide Ansätze sind nicht wirklich zu Ende gedacht. Ein Sortiernode nach bestimmten Kriterien fehlt der Marionette und Vermessungspunkte liessen sich nur aus einem bestehenden Punkt kopieren. Irgendwie beides zu aufwendig.

 

Anderer Ansatz:

Du hast ja das Ist- und das Soll-Geländemodell und kannst die Höhen auch von da holen, statt von den Vermessungspunkten. Also kannst du die Marionette so bauen, dass du zuerst die Ist-Punkte mit xyz-Koordinaten einliest. Dann kannst du mit dem 'Get Z at XY'-Node die Höhe vom Soll-Geländemodell an der jeweiligen Koordinate holen, Differenz berechnen und in die Datenbank schreiben. Die Soll-Vermessungspunkte brauchst du dann gar nicht anfassen. Somit arbeitest du nur mit einer Liste von Objekten und umgehst die Sortierprobleme.

 

Wie das Auslesen mit dem 'Get Z at XY'-Node beim Geländemodell funktioniert, hab ich ja im letzten Thread schon ein Beispiel gemacht.

Vectorworks 2024 - Architektur - Win 10

Link zu diesem Kommentar

Du holst nicht die Punkte im Modell drin, sondern wandelst eine Kopie des Modells in einen Punktkörper (Mesh) um. Punktkörper sind quasi eine Gruppe aus 3D-Polygonen. Daraus kann der 'Get Z at XY'-Node dann die Höhe an einem beliebigen Punkt auf all diesen 3D-Polygonen auslesen. Am Schluss löschst du das Mesh dann einfach wieder.

image.thumb.png.cc50f979443c20760a91fec458907ca2.png

Vectorworks 2024 - Architektur - Win 10

Link zu diesem Kommentar

@Herbiherb noch eine letzte Frage. 
In deinem Beispiel machst du 2 Geländemodelle, eines nennst du "Ist", das andere "Soll". 
Nun ich kann natürlich nicht 2 Geländemodelle machen? Da mein Geländemodell extrem gross ist. 


Ich habe einfach ein Geländemodell, welches ich mit Modifikatoren bearbeitet habe. Wie bekomme ich dann die Sollkoten ausgelesen?
Ich bräuchte ja einen andere Input, statt einfach nur den Namen des Objekts, oder zumindest eine Unterklassifizierug für den Zugriff dann aufs Sollmodell?

Link zu diesem Kommentar

Hi Herbieherb
Danke für deine Hilfe! Ich hab's jetzt hinbekommen. ?

 

Allerdings gibt es jetzt noch eine art Bug, aber ich glaube dieser kommt von Vectorworks selber? 
Ich lass mir jetzt von der Marionette einen Kreis auf der gemeinsamen xy-Koordinate generieren - damit ich den errechneten Punkt auch visuell darstellen kann. Diesem weise ich noch die Datenbank zu und lass den Wert für das Delta von Ist-Kote und Soll-Kote "delta Z" in das Datenfeld schreiben.

Jetzt zum Problem: Wenn ich die Kreise dann mittels Datenstempel beschriften will. In dem ich die Kreise bestemple - mit der Methode "mehrere Objekte", dann krieg ich ein Pop up wo ich den Delta Z Wert bestätigen muss - für jeden Punkt einzeln.
Das mag in der Beispieldatei mit ein paar Punkten noch funktionieren. Doch im eigentlichen Geländemodell habe ich 132000 Punkte. So oft kann ich nicht klicken. Eine Idee? 
Ich habe dir das File nochmals beigelegt.  

GM Differenz (1).vwx

Link zu diesem Kommentar

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      23,5Tsd
    • Beiträge insgesamt
      121Tsd
×
×
  • Neu erstellen...