Nach Abschluss der Hello World-Übungslektion können Sie mit dem Hinzufügen von Trägern und Blechen mithilfe der Advance Steel-API beginnen.
Dieses Walkthrough macht Sie mit den grundlegenden Prinzipien beim Erstellen von Trägern und Blechen in einem Advance Steel-Modell mithilfe der API vertraut.
Wechseln Sie wieder zum Hello World Walkthrough, um ein leeres Advance Steel-Zusatzmodulprojekt zu erstellen, bis zu der Stelle, an der die Befehlsklasse erstellt wird. In dieser Lektion wird davon ausgegangen, dass Ihnen ein neues Advance Steel-Add-On-Projekt mit einer Klassendatei vorliegt, durch die die IExtensionApplication-Schnittstelle implementiert wird.
Erstellen Sie eine neue Klasse namens CreateElements, und fügen Sie den folgenden Code hinzu:
|
Code-Region: Befehlsklasse CreateElements |
using Autodesk.AdvanceSteel.CADAccess;
using Autodesk.AdvanceSteel.DocumentManagement;
using Autodesk.AdvanceSteel.Runtime;
namespace HelloWorld
{
public class CreateElements
{
[CommandMethodAttribute("TEST_GROUP", "CreateElements", "CreateElements",
CommandFlags.Modal | CommandFlags.UsePickSet | CommandFlags.Redraw)]
public void Create()
{
using (DocumentAccess da = new DocumentAccess(null, false))
{
da.Commit();
}
}
}
}
|
Der Befehl kann folgendermaßen zusammengefasst werden. Wir fügen Code innerhalb des Blocks DocumentAccess-Blocks hinzu. Das DocumentAccess-Dienstprogramm wurde entwickelt, um das Lesen und Bestätigen von Änderungen am Advance Steel-Modelldokument zu vereinfachen.
Zum Erstellen eines geraden Trägers werden ein Profilname, Start- und Endpunkt des Trägers und die Ausrichtung benötigt. Am einfachsten ist es, zum Hinzufügen eines neuen Trägers eine Standardform zu verwenden. Durch Verwendung einer Überladung der statischen Methode ProfilesManager.GetProfTypeAsDefault() kann ein ProfileName-Objekt erstellt werden, dessen Namenseigenschaft zur Trägererstellung verwendet werden kann. Im Beispiel unten wird die Überladung der Methode ProfilesManager.GetProfTypeAsDefault(), die nur einen Buchstaben zur Darstellung des Profilklassennamens nutzt, zum Abruf eines Standardprofil mit I-Form verwendet. Folgende Buchstaben werden von dieser Überladung unterstützt: A, C, D, F, H, I, K, O, Q, T, U, W und Z. Eine andere Überladung dieser Methode nutzt den gesamten Profilklassennamen als Parameter. Informationen zur Ermittlung von Profilklassennamen finden Sie unter Profilnamen.
Vor Hinzufügen des Codes zum Erstellen eines neuen Trägers sollten Sie noch 3 using-Anweisungen an den Anfang der Datei einfügen. Die Profilnamenklasse des unten angezeigten Codes befindet sich im Namensbereich Autodesk.AdvanceSteel.Profiles, Point3d befindet sich im Namensbereich Autodesk.AdvanceSteel.Geometry, und sämtliche Trägerklassen sind im Namensbereich Autodesk.AdvanceSteel.Modelling zu finden. So fügen Sie die folgenden Zeilen an den Anfang der Datei ein:
|
Code-Region: zum Erstellen der von Elementen benötigten Namensbereiche |
using Autodesk.AdvanceSteel.Geometry; using Autodesk.AdvanceSteel.Modelling; using Autodesk.AdvanceSteel.Profiles; |
Als nächstes fügen Sie den folgenden Code in den DocumentAcccess-Block ein.
|
Code-Region: Hinzufügen einer Stütze mit Standardgröße |
//create column (vertical beam) with a default size
ProfileName profName = new ProfileName();
ProfilesManager.GetProfTypeAsDefault("I", out profName);
Point3d beamStart = Point3d.kOrigin;
Point3d beamEnd = new Point3d(0, 0, 3500);
StraightBeam myBeam = new StraightBeam(profName.Name, beamStart, beamEnd, Vector3d.kXAxis);
myBeam.WriteToDb();
|
Anhand des oben dargestellten Codes wird ein vertikaler, gerader Träger erstellt, der am Ursprung beginnt, 3.500 mm lang ist und eine standardmäßige I-förmige Profilgröße aufweist. Beachten Sie, dass alle Längeneinheiten in der Advance Steel-API in Millimetern angegeben werden.
Der letzte Parameter des StraightBeam-Konstruktors definiert die Ausrichtung des Trägers an der Achse, die anhand der Start- und Endpunkte bestimmt wird; in diesem Fall ist der Träger an der X-Achse ausgerichtet. Jeder Träger verfügt über ein eigenes lokales Koordinatensystem, wobei die XY-Ebene parallel zum Flansch ausgerichtet ist und die Z-Achse in Richtung Oberkante des Trägers zeigt.
Nach der Erstellung des Trägers müssen Sie mithilfe der Methode WriteToDb() dafür sorgen, dass er Teil des Modells wird. Vor Aufruf dieser Methode ist er lediglich ein temporäres Konstrukt im Arbeitsspeicher.
Falls Sie einen Träger mit einem bestimmten Querschnitt erstellen möchten, wird der Profilname anhand einer Verkettung des Profilklassennamens mit einem festen Zeichenfolgentrennzeichen ("#@§@#") und des Profilnamens erstellt. Weitere Informationen zu Profilklassennamen und Profilnamen finden Sie unter Profilnamen.
Fügen Sie nach dem vorherigen Code den folgenden Code ein, um eine neue Stütze hinzuzufügen.
|
Code-Region: Hinzufügen eines Trägers mit einer bestimmten Profilgröße |
//create a wide flange column
beamStart = new Point3d(0, 3000, 0);
beamEnd = new Point3d(0, 3000, 3500);
myBeam = new StraightBeam("AISC 14.1 W Shape#@§@#W10x33", beamStart, beamEnd, Vector3d.kXAxis);
myBeam.WriteToDb();
|
Anhand des oben stehenden Codes wird ein anderer vertikaler, gerader Träger (Stütze) in 3.000 mm Entfernung zum ersten erstellt, der eine Profilgröße von W10 x 33 aufweist.
Fügen Sie dem Befehl folgenden Code hinzu, um einen gebogenen Träger zu erstellen, der von den beiden oben erstellten Stützen gestützt wird.
|
Code-Region: Hinzufügen eines gebogenen Trägers |
//create a curved beam
beamStart = new Point3d(0, 0, 3500);
beamEnd = new Point3d(0, 3000, 3500);
Point3d arcPoint = new Point3d(0, 1500, 5000);
BentBeam myBentBeam = new BentBeam("HEA DIN18800-1#@§@#HEA200", Vector3d.kZAxis, beamStart, arcPoint, beamEnd);
myBentBeam.WriteToDb();
|
Der BentBeam-Konstruktor nutzt die Start- und Endpunkte des Trägers sowie einen Punkt an der Krümmung des Elements. In diesem Fall wird der Mittelpunkt des gebogenen Trägers bestimmt. Die Drehung der Trägers wird durch einen Vektor bestimmt. In diesem Fall zeigt die Oberkante des Trägers nach oben.
Die Plate-Klasse stellt ein Blech in Advance Steel dar. Es gibt mehrere Überladungen des Plate-Konstruktors zum Erstellen rechteckiger und kreisförmiger Bleche im Dokument. Mithilfe des folgenden Codes wird eine quadratische Platte (100 mm) am Mittelpunkt und am oben erstellten gebogenen Träger erstellt.
|
Code-Region: Hinzufügen einer quadratischen Platte |
//create a plate on the curved beam Point3d plateOrig = arcPoint; plateOrig.x = 100; // 1/2 of curved beam width Plane platePlane = new Plane(plateOrig, Vector3d.kXAxis); Plate myPlate = new Plate(platePlane, plateOrig, 100, 100); myPlate.WriteToDb(); |
Nach Zusammenfügen aller Codeelemente sollte die Datei wie folgt aussehen:
|
Code-Region: Implementierung der CreateElements-Klasse |
using Autodesk.AdvanceSteel.CADAccess;
using Autodesk.AdvanceSteel.DocumentManagement;
using Autodesk.AdvanceSteel.Runtime;
using Autodesk.AdvanceSteel.Geometry;
using Autodesk.AdvanceSteel.Modelling;
using Autodesk.AdvanceSteel.Profiles;
namespace HelloWorld
{
public class CreateElements
{
[CommandMethodAttribute("TEST_GROUP", "CreateElements", "CreateElements",
CommandFlags.Modal | CommandFlags.UsePickSet | CommandFlags.Redraw)]
public void Create()
{
using (DocumentAccess da = new DocumentAccess(null, false)
{
//create column (vertical beam) with a default size
ProfileName profName = new ProfileName();
ProfilesManager.GetProfTypeAsDefault("I", out profName);
Point3d beamStart = Point3d.kOrigin;
Point3d beamEnd = new Point3d(0, 0, 3500);
StraightBeam myBeam = new StraightBeam(profName.Name, beamStart, beamEnd, Vector3d.kXAxis);
myBeam.WriteToDb();
//create a wide flange column
beamStart = new Point3d(0, 3000, 0);
beamEnd = new Point3d(0, 3000, 3500);
myBeam = new StraightBeam("AISC 14.1 W Shape#@§@#W10x33", beamStart, beamEnd, Vector3d.kXAxis);
myBeam.WriteToDb();
//create a curved beam
beamStart = new Point3d(0, 0, 3500);
beamEnd = new Point3d(0, 3000, 3500);
Point3d arcPoint = new Point3d(0, 1500, 5000);
BentBeam myBentBeam = new BentBeam("HEA DIN18800-1#@§@#HEA200", Vector3d.kZAxis, beamStart, arcPoint, beamEnd);
myBentBeam.WriteToDb();
//create a plate on the curved beam
Point3d plateOrig = arcPoint;
plateOrig.x = 100; // 1/2 of curved beam width
Plane platePlane = new Plane(plateOrig, Vector3d.kXAxis);
Plate myPlate = new Plate(platePlane, plateOrig, 100, 100);
myPlate.WriteToDb();
da.Commit();
}
}
}
}
|
Vor dem Ausführen dieses Befehls in Advance Steel müssen Sie die Richtlinien für erforderliche Datenattribute in der Datei AssemblyInfo.cs hinzufügen. Dies wird im Hello World Walkthrough gezeigt.
Nach Ausführung des Befehls CreateElements in Advance Steel sollte in der vergrößerten Ansicht etwa Folgendes angezeigt werden: