Support Forum

[Frage] VB-Script

Schlagworte:
  • Allplan 2017-1-10 VB-Script functions.vbs

Servus!

Wer von Euch hat denn schon Erfahrung mit dem Schreiben von eigenen VBS-Funktionen gesammelt.

Ich lese mich gerade ein und es tauchen ständig Fragen auf, vor allem zu bestehenden Funktionen. Zu Beginn möchte ich gerne nur bestehende Funktionen für meine Zwecke umbauen.

Eine Funktion hat einen Namen - klar!
Dahinter stehen in einer Klammer ( ) ein oder mehrere Abkürzungen, welche in der Funktion berücksichtigt werden sollen. Einige erkenne ich als Allplan Attribute, andere sind in der Datei definiert doch wo ist der Rest definiert.

Wie ist der Zusammenhang von diesen - mir noch nicht ganz klaren Attributen - mit den Allplan Bauteilen.

Hier eine beispielhafte Funktion aus der functions.vbs:

FUNCTION DD1(Laenge,Dicke,DeckenH,DeckenDBH,DOK,DDBOK,DUK,DDUK)
CALL Schriftart(tft)
Laenge = CDbl (Laenge)
Dicke = CStr (Dicke)
DeckenH = CDbl (DeckenH)
DeckenDBH = CDbl (DeckenDBH)
DOK = CDbl (DOK)
DDBOK = CDbl (DDBOK)
DUK = CDbl (DUK)
DDUK = CDbl (DDUK)
IF Laenge >=100 then
Laenge = ROUND(Laenge/100,2)
Laenge = Laenge+.001
Anzahl = Len(Laenge)
Laenge = Left(Laenge,Anzahl-1)
end if
Laenge = CStr (Laenge)

IF Dicke >=100 then
Dicke = ROUND(Dicke/100,2)
Dicke = Dicke+.001
Anzahl = Len(Dicke)
Dicke = Left(Dicke,Anzahl-1)
end if
Dicke = CStr (Dicke)

IF DeckenH=DeckenDBH THEN
DD1 = tft + "DD= " + Laenge + "/" + Dicke
end if

IF DeckenH<>DeckenDBH THEN
if DOK = DDBOK then
DeckenDBH = CStr (DeckenDBH)
DeckenH = CStr (DeckenH)
DD1 = tft + "DAO= " + Laenge + "/" + Dicke + "/" + DeckenDBH
end if
if DUK = DDUK then
DeckenDBH = CStr (DeckenDBH)
DD1 = tft + "DAU= " + Laenge + "/" + Dicke + "/" + DeckenDBH
end if
end if
END FUNCTION

Läenge und Dicke finde ich in Allplan, doch wo sind die roten Attribute / Werte her? Diese habe ich noch nicht gefunden? Im AttributManager sind sie nicht zu finden?

Ich brauche diesen Zusammenhang damit ich in meinem Funktionen-Verständnis einen Schritt nach vorne komme! Daran scheitere ich gerade noch!

Wer von den Spezialisten hat denn da einen Tipp für mich.

Gruß, Martin

Tell me and I forget.
Teach me and I remember.
Involve me and I learn.
Benjamin Franklin

die namen d. variablen im skript haben nur "zufällig" etwas mit den attributbezeichnungen zu tun.

der aufruf einer solchen funktion in einer formel sieht z. b. wie folgt aus:

MeineFunktion(@attribut1@;@attribut2@;@attribut3@)

und als rückwert kommt ein "wert" zurück (kann auch ein string über mehrere zeilen sein!)

im skript ist das dann z. B.

FUNCTION MeinFunktion(Wert1, Wert2, Wert3)

... ich mache etwas schlaues mit den drei werten

END FUNCTION

d.h. um eine bestehende function zu verwenden benötigst du die info welche attribute zu übergeben sind.

Namenlos gezeichnet in vollem Bewusstsein - ignorant, in eigen Augen vermutlich höflich, dennoch unhöflichst, unfreundlichst wer einen/viele vermutete - sich von alters erschließende Namen nennt.
[b]

Servus Markus!

Dankeschön für Deine zeitige Antwort!

d.h. um eine bestehende function zu verwenden benötigst du die info welche attribute zu übergeben sind.

...genau das möchte ich herausfinden.

Wie finde ich den Zusammenhang zwischen den Variablen im Skript und den Allplan-Attributen. Auch diese "Umrechnung" muss doch irgendwo definiert sein. Andernfalls würde dies ja nicht funktionieren.

Gruß, Martin (den jetzt der Ehrgeiz gepackt hat )

Tell me and I forget.
Teach me and I remember.
Involve me and I learn.
Benjamin Franklin

wenn in der skript-datei das nicht kommentiert ist, brauchst du die formel über die das aufgerufen wird auf seiten von allplan oder den kopf, welcher ursprung der funktion ist.

Namenlos gezeichnet in vollem Bewusstsein - ignorant, in eigen Augen vermutlich höflich, dennoch unhöflichst, unfreundlichst wer einen/viele vermutete - sich von alters erschließende Namen nennt.
[b]

Das schaue ich mir an!

Im Kopf steht nix! jetzt werden ich mir die entsprechende Allplan-Formel suchen!

Ich werde zunehmends fauler was das Erstellen von BSB angeht, da der Wartungsaufwand enorm ist. Da muss es ja schließlich einen einfacheren Weg geben!

Gruß, Martin

Tell me and I forget.
Teach me and I remember.
Involve me and I learn.
Benjamin Franklin

mit "Kopf" meinte ich den "kopf" des erstellers ;)

Namenlos gezeichnet in vollem Bewusstsein - ignorant, in eigen Augen vermutlich höflich, dennoch unhöflichst, unfreundlichst wer einen/viele vermutete - sich von alters erschließende Namen nennt.
[b]

Tell me and I forget.
Teach me and I remember.
Involve me and I learn.
Benjamin Franklin

Servus!

Die ersten Versuch waren jetzt nicht das, was ich mir erhofft hatte...

Kann ich / muss ich / soll ich meine eigenen VB-Scripts in der functions.xml dazu schreiben?

Wenn ich das nicht möchte / nicht soll, definiere ich mir zwar eine eigene functions-Datei, nur wie sage ich Allplan, dass es darin nachschauen soll? Gibt es da einen Bezeichnungsschlüssel? reicht der Speicherort?

Gruß, Martin

Tell me and I forget.
Teach me and I remember.
Involve me and I learn.
Benjamin Franklin