Zum Inhalt springen

Selbst gebautes Script in Tabelle ausfuehren


kingchaos
 Teilen

Empfohlene Beiträge

Moin,

 

ich habe versuche eine fehlende Tabellenfunktion

istwahr.png.576ea6972e93161ea5fd525ebbd2fb6f.png

 mit einem Script zu ersetzen.

 

Dazu habe ich, in Ermangelung von Pythoncodierfaehigkeiten, eine Marionette gebaut und diese gewrappet, den Pythoncode in ein Script reinkopiert und dieses Script abgespeichert.

 

image.png.824f2156bd5001279254d8d4cac92705.png

und moechte dieses dann in der Tabelle ausfuehren.

 

image.thumb.png.9ca9cf7753abe317ff4655478eab104b.png

 

Das Script untersucht die Kantenreihenfolge aus der Datenbank, und prüft ob eine 1 (Kante Unten/Vorne) oder 2 (Kanten oben/hinten) drin steht und schreibt dann ABS in das feld.

 

Die Marionette funktioniert praechtig, aber irgendwas haut nicht hin denn es steht #value! da statt ABS oder " ".

 

 

gruß KC

IfInStringABS.vwx

HP Z6 G4  Intel(R) Xeon(R) W-3223 CPU @ 3.50 GHz - NVIDIA Quadro RTX 4000

VWX IC 2021 SP4.0.1-F4.3 R1  Windows 10 64 GB  64 bit

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn mir jemand verraet, wie ich in der Tabelle die Kante1, Kante2, Kante3 und Kante4 separat auslesen kann, waere das mit dem Script nicht noetig.

 

Dennoch waere es spannend diese Scripte zu beherrschen, da ich noch sehr viele Sachen aendern muss, bis unsere Schelling das alles so frisst, dass die Arbeiter hier gar nichts von einer Umstellung bemerken.

HP Z6 G4  Intel(R) Xeon(R) W-3223 CPU @ 3.50 GHz - NVIDIA Quadro RTX 4000

VWX IC 2021 SP4.0.1-F4.3 R1  Windows 10 64 GB  64 bit

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Stephan Mönninghoff

Ich finde einfach keinen Fehler und in der Dokumentation wie man scripte in Tabellen ausfuehrt, werde ich leider nicht schlau.

#wert /#value deutet ja vielleicht auf ein leerzeichen hin.

 

Ich vermute ich habe irgendwas aus dem script mitkopiert, was da nicht reingehoert.

 

Wo kann ich lernen, WAS ich aus dem Pythonscript rauskopieren muss, was mir der Wrapper als Code anzeigt?

 

gruß KC

HP Z6 G4  Intel(R) Xeon(R) W-3223 CPU @ 3.50 GHz - NVIDIA Quadro RTX 4000

VWX IC 2021 SP4.0.1-F4.3 R1  Windows 10 64 GB  64 bit

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 39 Minuten schrieb kingchaos:

Wo kann ich lernen, WAS ich aus dem Pythonscript rauskopieren muss, was mir der Wrapper als Code anzeigt?

Ich selbst habe immer einfach so lange probiert, bis ich es herausgefunden hatte. Das kann durchaus lange dauern aber diese Arbeit kann keiner dir abnehmen. Wenn ich es direkt wüsste, dann würde ich dir die Antwort aber natürlich nicht vorenthalten. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

 

Das Problem von deinem Script wird sein, dass es keinen korrekten Output ausgibt. Das heisst, die Tabelle kann nicht viel damit anfangen.

 

Um ein Script zu bauen, dass in einer Runscript-Funktion ausgeführt werden kann, musst du zwingend die WSScript_usw. Funktionen aus der Function Reference gebrauchen. Damit kannst du die Parameter, die du dem Objekt mitgibst, auslesen und auch ein korrektes Ergebniss ausgeben.

 

Als Beispiel hier einige Textfunktionen, die ich vor einiger Zeit gebaut habe.

 

Von Marionette erzeugte Python-Scripte sind aber meist nicht so schön gecodet. Von demher wirst du wahrscheinlich Schwierigkeiten haben, die Funktionen an der korrekten Stellen einzubauen.

 

Wenn du das Marionette postest, kann ich schauen, wie viel Aufwand es gibt, es sauber umzubauen.

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok. Habe das File nicht gesehen.

 

Ich habe das ganze noch ein bisschen allgemeiner gebaut und stattdessen eine SUCHEN und eine FINDEN Excelfunktion gebaut. FINDEN unterscheidet zwischen Gross- und Kleinschreibung, SUCHEN nicht.

 

Die beiden Scripts kannst in dein Dokument ablegen und in der Tabelle wie folgt aufrufen.

=Runscript('FINDEN',[Text in dem gesucht wird],[Suchtext])

 

Das Ergebnis kannst du in einer If-Funktion verwenden.

#Excelfunktion SUCHEN
#by MRoth V1.0

Text = vs.WSScript_GetPrmStr(0)
Suchtext = vs.WSScript_GetPrmStr(1)

vs.WSScript_SetResStr(Suchtext.upper() in Text.upper())
#Excelfunktion FINDEN
#by MRoth V1.0

Text = vs.WSScript_GetPrmStr(0)
Suchtext = vs.WSScript_GetPrmStr(1)

vs.WSScript_SetResStr(Suchtext in Text)

 

@alle Scripter Wie kann ich sauber einen Boolean aus einem solchen Script ausgegen. Momentan ist es ja noch ein String. Habe aber keine Boolausgabefunktion gefunden. Funktioniert zwar, ist aber nicht schön.

  • Like 1

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke Dir,

 

 

haut hin, auch wenn ich probleme hatte die richtige syntax zu benutzen gehts nun.

 

Jetzt muss ich nur noch auf die Bauteilmenge zugreifen koennen, da ja Bauteile 3D auch mehr als einmal vorkommen koennen.

 

Dummerweise finde ich bei der Auswahl kein Datenbankfeld, wo die Menge auslesbar ist.

 

image.png.de281467e00635733a179002804b36fa.png

Weiss Du, ob es eine Liste gibt mit allen auslesbaren Datenbankfeldern?

 

 

gruß kc

HP Z6 G4  Intel(R) Xeon(R) W-3223 CPU @ 3.50 GHz - NVIDIA Quadro RTX 4000

VWX IC 2021 SP4.0.1-F4.3 R1  Windows 10 64 GB  64 bit

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hinderlich ist auf jeden Fall dass einige Auswahlpunkte doppelt vorhanden sind oder entweder seltsam uebersetzt wurden oder die zuordnung zu den menues fragwuerdig ist.

 

Ich habe leider auch noch nicht geblickt, warum ich manchmal 'Objekt - Zuordnung'.'Container' nicht auswaehlen kann.

 

Ein Trick schlug fehl, ich hatte mit der Pipette die Eigenschaften-Datenbank auf Bauteile 3D uebertragen, womit natuerlich auch der "Containername" uebertragen wurde. Leider sind diese uebertragenen Eintraege "read only".

 

Das mit dem Containernamen ist grosse Klasse, leider bin ich entweder zu doof oder da funktioniert was nicht, weil ich das auch in meiner Liste/Tabelle brauche.

 

Ich hatte es einmal "irgendwie" hinbekommen, 'Objekt - Zuordnung'.'Container' des zu verknuepfen und meiner (Bau)Gruppe, wo Bauteile 3D drin waren" einen Containernamen zuzuweisen. Leider tauchte dieser dann nicht in meiner Tabelle auf.

 

Das war sehr frustrierend :(

HP Z6 G4  Intel(R) Xeon(R) W-3223 CPU @ 3.50 GHz - NVIDIA Quadro RTX 4000

VWX IC 2021 SP4.0.1-F4.3 R1  Windows 10 64 GB  64 bit

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
 Teilen

  • Forenstatistik

    • Themen insgesamt
      20,8Tsd
    • Beiträge insgesamt
      103,6Tsd
×
×
  • Neu erstellen...