Beispiel Scriptausführung einfügen
An dem folgenden Beispiel wird erklärt wie man eine Designvariante mit Script erzeigt. Diese Funktion steht zurzeit noch nicht im vollem Umfang zur Verfügung.
Ausgangspunkt der Variante sind zwei Blechlaschen aus zwei Blechteilen. An beide soll jeweils eine Lasche angekantet werden, so dass die beiden Laschen sich in einer Fläche berühren und verschraubt werden können. Die beiden Laschen werden so angekantet, dass sie in der Winkelhalbierenden zwischen den beiden Ausgangslaschen liegen.
Schritt 1: Konstruktion
(siehe Beispiel einer Designvariante bei der Blechbearbeitung)
- Grundbleche als Ausgangspunkt für die Variante anlegen.
- Grundblech um irgendeinen Wert verkürzen.
- Lasche ankanten mit der Einstellung Ankanten ohne Verkürzung.
- Einfügen einer Normbohrung
- Analog das 2. Teil konstruieren
- Leerteil mit den konstruierten Blechteilen als Nebenteil erzeugen.
- Leerteil durch Auswahl der Funktion Designvariantenbasiskörper: Nein zur Variantenbasis machen. (Der Text Nein oder Ja stellt immer den aktuellen Zustand dar. Durch Anklicken wird der Zustand geändert.)
Schritt 2: Parametrisieren 1. Teil
Die Parameter der Designvariante müssen als Variablen für den Designvariantenbasiskörper definiert werden:
- Erstellen Sie die Variablen für:
- biegeradius: Biegeradius für die neuen Laschen,
- kante1: Kante im ersten Teil,
- kante2: Kante im zweiten Teil und
- laschenbreite: Breite der neuen Lasche.
- Tragen Sie die Variablen kante1 bzw. kante2 an den Kanten der Ankantfeatures ein.
- Grundblech als zu bearbeitendes Teil markieren (s.o.) mit der Formel part_of_edge(kante2).
Grundblech aktivieren und Wahl der Funktion Formel für das bearbeitete Teil. Eingabe der Formel part_of_edge(kante1) bzw. für das 2. Grundblech part_of_edge(kante2).
Schritt 3: neuer Featureschritt Scriptausführen einfügen
Es ist möglich, ein Visual Basic Script (VBS) in die Featureliste einzufügen, in dem man Zugriff auf die Variablen des berechneten Teils hat, Werte mit den Mitteln von Basic und einer COM-Schnittstelle zu HiCAD berechnen und Variablen belegen kann. Diese Variablen nutzt man dann in den Formeln nachfolgender Features.
- Grundblech aktivieren und im Featureprotokoll mit der RMT Blech verlängern anklicken.
- Wahl der Funktion Scriptausführung einfügen.
Das Script wird vor dem Feature, in dessen Kontextmenü man sich befindet, eingefügt.
Script |
Beschreibung |
---|---|
set partVariables = CreateObject ("HicadNext.Variables") |
In VBS müssen Objekte, die ein COM-Server zur Verfügung stellt, mit 'CreateObject' angelegt werden.
|
set variantVariables = CreateObject ("HicadNext.Variables") |
|
set c = CreateObject ("Hicad-Next.Const") |
|
partVariables.MakeCurrentVars() 'die Variablen des Teils |
'MakeCurrentVars' liefert Zugriff auf die Variablen des gerade berechneten Teils. 'MakeVariantVars': Eine Designvariante legt in allen Teilen der Szene, die bearbeitet werden oder die neu angelegt werden, ein Designvariantenfeature an. Diese Features arbeiten auf einem gemeinsamen Datensatz, zu dem z.B. die Parametervariablen der Variante gehören und eben diese Variantenvariablen. In den Variantenvariablen kann man sich bei der Berechnung eines Teils Informationen für die Berechnung von anderen Teilen merken. |
variantVariables.MakeVariantVars() 'lokale Variablen der Variante |
|
ownIndex = "1" |
Die Scripte in den beiden Teilen unterscheiden sich nur an dieser Stelle. |
otherIndex = "2" |
|
'Die Kante, an die angekantet wird |
Hier werden für die beiden Parameterkanten der Variante Kantenobjekte erzeugt und mit den Variablenwerten belegt. |
set ownEdge = CreateObject ("HicadNext.Edge") |
|
call partVariables.GetEdgeVar ("kante"+ownIndex, ownEdge) |
|
'Die Kante im anderen Teil |
|
set otherEdge = CreateObject ("HicadNext.Edge") |
|
call partVariables.GetEdgeVar ("kante"+otherIndex, otherEdge) |
|
'1. Facette aus der Kante ermitteln |
Ermitteln der zu der Kante im aktuellen Teil gehörigen Deckfacette der Blechlasche: |
set ownFace= CreateObject ("HicadNext.Face") |
|
'1. Blechlasche |
|
set ownSheet = CreateObject ("HicadNext.Sheet") |
Ein Objekt vom Typ 'Sheet' steht für eine Blechlasche mit einer ausgezeichneten Facette, die sich auf der bei der Konstruktion des Objektes angegebene Kante ergibt. |
call ownSheet.Construct (ownEdge) |
|
'1. Deckfacette call ownSheet.GetFace(ownFace) |
|
'2. Facette ermitteln (entweder aus der Kante oder der gemerken Facette) |
Ermitteln der zu der Kante im anderen Teil gehörigen Deckfacette der Blechlasche: Wenn das andere Teil bereits gerechnet ist, ist die Kante, an die in dem anderen Teil angekantet wird nicht mehr vorhanden. Dann holt man sich die Deckfacette der andern Lasche aus der Variantenvariablen, wo sie beim Ausführen des Scripts des anderen Teils gespeichert worden ist. |
set otherFace= CreateObject ("HicadNext.Face") |
|
if (otherEdge.index = 0) then call variantVari-ables.GetFaceVar("Bezugsfacet-te"+otherIndex, otherFace) 'msgbox "Bezugsfacette"+otherIndex+" "+cstr(otherFace) |
|
else '2. Blechlasche set otherSheet = CreateObject ("HicadNext.Sheet") call otherSheet.Construct (otherEdge) |
|
'2. Deckfacette call otherSheet.GetFace(otherFace) |
|
end if |
|
'Der Winkel zwischen den Laschen
|
Jetzt kann man den Winkel zwischen den Facette berechnen |
sheetAngle = 180-ownFace.Angle (otherFace) |
|
'Blechverkürzung thickness = ownSheet.GetThickness() radius = partVariables.GetRealVar ("biegeradius") |
Die Verkürzung errechnet sich aus Blechdicke und Biegeradius, sowie dem Winkel zwischen den Blechen. Zu beachten ist, dass VBS mit Winkel in Bogenmaß arbeitet |
beta= sheetAngle/2 betaRad = beta*(c.Pi()/180) d = (thickness+radius) * tan betaRad/2) |
|
'Daten für die Verschraubung edgeLength = ownEdge.GetLength() |
Berechnung der Daten für die Verschraubung: Die Berechnung muss vor dem Ankanten erfolgen, da sonst die Kante, deren Länge man braucht, nicht mehr vorhanden ist. |
outerDist = 30 maxDist = 40 |
|
dist1 = edgeLength-2*outerDist count = round (dist1/maxDist + 0.5) if (count <= 1) then dist = 0 |
|
else dist = dist1/(count-1) end if |
|
'Werte auf die Hicadvariablen schreiben |
Setzen der Variablen im HiCAD. |
call partVariables.SetRealVar ("anzahl", count) call partVariables.SetRealVar ("abstand", dist) call partVariables.SetRealVar ("winkel", sheetAngle/2) call partVariables.SetRealVar ("verkuerzung", d) call variantVariables.SetFaceVar ("Bezugsfacette"+ownIndex, ownFace) |
Das Skript kann man für das zweite Teil einfach kopieren und am Anfang die beiden Strings "1" und "2" austauschen.
Das Skript eines Skriptfeatures kann man durch einen Doppelklick auf das Feature editieren.
Beachten Sie an dieser Stelle bitte die Hinweise zu Teilevariablen und Protokollvariablen.
Schritt 4: Einbau der Variante
Nach dem Einbau der Varianten haben die beiden Blechteile jeweils ein Designvariantenfeature.