Jump to content
DeHu

Marionette if boolean flasch?

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

Diesen Beitrag teilen


Link zum Beitrag

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 2020 - Architektur - Win 10

Diesen Beitrag teilen


Link zum Beitrag

Ein anderer Ansatz wärs, alle Soll-Punkte einfach zu löschen und durch die Marionette jeweils neu anzulegen.


Vectorworks 2020 - Architektur - Win 10

Diesen Beitrag teilen


Link zum Beitrag

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
 

Diesen Beitrag teilen


Link zum Beitrag

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 2020 - Architektur - Win 10

Diesen Beitrag teilen


Link zum Beitrag

Okey das klingt besser, bin nämlich jetzt wirklich an der Sortierung hängen geblieben. 

Hast du mir noch eine Tipp wie ich an die 3D Punkte des Geländemodells komme? Die sind ja im Geländemodell (drin)?

 

Diesen Beitrag teilen


Link zum Beitrag

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 2020 - Architektur - Win 10

Diesen Beitrag teilen


Link zum Beitrag

@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?

Diesen Beitrag teilen


Link zum Beitrag

Das Geländemodell kann im 3D ja nur entweder den Ist- oder den Soll-Zustand anzeigen. Von dem her stellst du einfach das GM auf den Sollzustand.


Vectorworks 2020 - Architektur - Win 10

Diesen Beitrag teilen


Link zum Beitrag

Das funktioniert irgendwie auch nicht, denn es muss zuerst ja das Mesh generieren für das IST-Modell, dann muss ich die Punkte auslesen und erst dann kann ich das Modell umstellen, doch Marionette kann ich ja nicht stoppen, um das Modell dann zu switchen?

Datei im Anhang. 

GM Differenz (1).vwx

Diesen Beitrag teilen


Link zum Beitrag

Achso, ich dachte die Punkte seien schon vorhanden.

 

Im Grunde verändert sich doch das Ist-Modell ja nie. Da könntest du also gut ein zum Mesh aufgelöstes Ist-Modell auf einer separaten Ebene haben. Ist sowieso ganz praktisch, um das gewachsene Terrain in Schnitten anzuzeigen.


Vectorworks 2020 - Architektur - Win 10

Diesen Beitrag teilen


Link zum Beitrag

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

Diesen Beitrag teilen


Link zum Beitrag

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

  • Forenstatistik

    • Themen insgesamt
      14.997
    • Beiträge insgesamt
      72.714
×
×
  • Neu erstellen...