Once beams and plates are in place, connect them with bolts, anchors or welds.
This walkthrough will familiarize you with the basic concepts of connecting model elements in an Advance Steel model with bolts, anchors and welds using the API. Refer back to the Hello World walkthrough to create an empty Advance Steel addon project, up to the point of creating the command class. This tutorial assumes you have a new Advance Steel addon project with one class file that implements the IExtensionApplication interface.
Create a new class called CreateConnectors and add the following code:
Code Region: CreateConnectors command class |
using Autodesk.AdvanceSteel.CADAccess; using Autodesk.AdvanceSteel.DocumentManagement; using Autodesk.AdvanceSteel.Runtime; using Autodesk.AdvanceSteel.Geometry; using Autodesk.AdvanceSteel.Modelling; using Autodesk.AdvanceSteel.Profiles; using System.Collections.Generic; namespace HelloWorld { public class CreateConnectors { [CommandMethodAttribute("TEST_GROUP", "CreateConnectors", "CreateConnectors", CommandFlags.Modal | CommandFlags.UsePickSet | CommandFlags.Redraw)] public void Create() { using (DocumentAccess da = new DocumentAccess(null, false)) { da.Commit(); } } } } |
Before we can add connections, we need something to connect. Let's start with two short columns. Add a method called CreateStackedColumns() to the CreateConnectors class to add 2 stacked columns like this:
Code Region: Create stacked columns |
private void CreateStackedColumns(out StraightBeam bottomColumn, out StraightBeam topColumn) { //create 2 stacked columns Point3d beamEnd = new Point3d(0, 0, 350); Point3d beamStart = new Point3d(0, 0, 0); bottomColumn = new StraightBeam("HEA DIN18800-1#@§@#HEA300", beamStart, beamEnd, Vector3d.kXAxis); bottomColumn.WriteToDb(); beamEnd = new Point3d(0, 0, 700); beamStart = new Point3d(0, 0, 350); topColumn = new StraightBeam("HEA DIN18800-1#@§@#HEA200", beamStart, beamEnd, Vector3d.kXAxis); topColumn.WriteToDb(); } |
Connecting objects with bolts
- FinitRectScrewBoltPattern
- InfinitRectScrewBoltPattern
- InfinitMidScrewBoltPattern
- CircleScrewBoltPattern
For this tutorial, we will create a bolt pattern in a rectangular area, defined by diagonally opposite corner points, with 8 bolts. Add a new method to the CreateConnectors class called ConnectColumnsWithBolts as shown below.
Code Region: Construction types namespace |
using Autodesk.AdvanceSteel.ConstructionTypes; |
Code Region: Connect objects with bolts |
private void ConnectColumnsWithBolts(StraightBeam bottomColumn, StraightBeam topColumn) { //create a plate between the columns Point3d plateOrig = topColumn.GetPointAtStart(); Plane platePlane = new Plane(plateOrig, Vector3d.kYAxis); Plate myPlate = new Plate(platePlane, plateOrig, 100, 200); myPlate.WriteToDb(); // create a standard rectangular pattern set of bolts FinitRectScrewBoltPattern boltPattern = new FinitRectScrewBoltPattern(new Point3d(plateOrig.x - 25, plateOrig.y, plateOrig.z - 75), new Point3d(plateOrig.x + 25, plateOrig.y, plateOrig.z + 75), new Vector3d(1, 0, 0), new Vector3d(0, 0, 1)); boltPattern.WriteToDb(); boltPattern.Nx = 2; boltPattern.Ny = 4; // create a 2x4 bolt pattern // connect the objects FilerObject[] objectsToConnect = { bottomColumn , topColumn, myPlate }; boltPattern.Connect(objectsToConnect, AtomicElement.eAssemblyLocation.kOnSite); } |
The code above first creates a plate between the given columns. Then the rectangular bolt pattern is defined based on the plate's location. The number of bolts defined for the local x and y axis can be set after the pattern is created. In this case, it will create a 2x4 pattern of bolts.
The last step is to connect the objects together with the bolt pattern. A HashSet< FilerObject> collection is filled with the objects to be connected and then used by the Connect() method. In this case, the plate and two columns are added to the collection.
Note that the Connect() method takes a parameter indicating the assembly location (on site in the code above). The AtomicElement class used for this parameter is in the Autodesk.AdvanceSteel.ConstructionTypes. Add the following using statement to the top of the class file:
Connecting objects with anchors
Anchors are created very similarly to bolts, using the AnchorPattern class. Add a new method to the CreateConnectors class called CreateBaseplateWithAnchors as shown below.
Code Region: Using anchors |
private void CreateBaseplateWithAnchors(StraightBeam column, out Plate plate) { //create a baseplate Point3d plateOrig = column.GetPointAtStart(); Plane platePlane = new Plane(plateOrig, Vector3d.kZAxis); plate = new Plate(platePlane, plateOrig, 500, 500); plate.WriteToDb(); // create a standard rectangular pattern set of bolts AnchorPattern anchorPattern = new AnchorPattern(new Point3d(plateOrig.x - 150, plateOrig.y - 150, plateOrig.z), new Point3d(plateOrig.x + 150, plateOrig.y + 150, plateOrig.z), new Vector3d(1, 0, 0), new Vector3d(0, 1, 0)); anchorPattern.WriteToDb(); // set a valid combination of properties, like for the bolt anchorPattern.Standard = "ANCHOR CANE";//"French cane anchor"; anchorPattern.Grade = "4.6"; anchorPattern.BoltAssembly = "2M";//"2N"; anchorPattern.ScrewDiameter = 16; // create a 1x2 bolt pattern anchorPattern.Nx = 1; anchorPattern.Ny = 2; // connect the objects FilerObject[] objectsToConnect = { plate }; anchorPattern.Connect(objectsToConnect, AtomicElement.eAssemblyLocation.kOnSite); } |
As seen in the code above, the AnchorPattern is defined the same as the FinitRectScrewBoltPattern was - by diagonally opposite corner points. Rather than using the default anchor type, this code will change the bolts used for the anchor to "French cane anchor". The AnchorPattern properties need to be set to a valid combination of properties. Valid sets of properties can be determined from the Anchors tool in the Advance Steel Management Tools (a separate application installed with Advance Steel).
Connecting objects with welds
Welds are created as weld points (using the WeldLevel class) or weld lines (using the WeldStraight class). Add a new method to the CreateConnectors class called WeldColumnToPlate as shown below.
Code Region: Connect objects with welds |
private void WeldColumnToPlate(StraightBeam column, Plate plate) { // create a weld WeldPoint weld = new WeldPoint(new Point3d(145, 0, 0), new Vector3d(1, 0, 0), new Vector3d(0, 1, 0)); weld.WriteToDb(); // connect the objects FilerObject[] objectsToConnect = { column, plate }; weld.Connect(objectsToConnect, AtomicElement.eAssemblyLocation.kInShop); // create second weld weld = new WeldPoint(new Point3d(-145, 0, 0), new Vector3d(1, 0, 0), new Vector3d(0, 1, 0)); weld.WriteToDb(); weld.Connect(objectsToConnect, AtomicElement.eAssemblyLocation.kInShop); } |
The code above will add two weld points connecting the bottom of the column to the provided plate.
Creating the connectors
Now we can use all the methods created above to create some elements and connect them with various connection types. Update the first Create() method to include the code as shown below:
Code Region: Connect objects with welds |
public void Create() { using (DocumentAccess da = new DocumentAccess(null, false)) { StraightBeam bottomColumn, topColumn; CreateStackedColumns(out bottomColumn, out topColumn); if (null != bottomColumn && null != topColumn) { ConnectColumnsWithBolts(bottomColumn, topColumn); Plate basePlate; CreateBaseplateWithAnchors(bottomColumn, out basePlate); WeldColumnToPlate(bottomColumn, basePlate); } da.Commit(); } } |
Prior to running this command in Advance Steel, you will need to add the necessary Informational Attribute directives in the AssemblyInfo.cs file as shown in the Hello World Walkthrough.
After running the CreateConnectors command in Advance Steel and zooming in, you should see something like this: