internal TaperedBeam(Autodesk.DesignScript.Geometry.Point ptStart, Autodesk.DesignScript.Geometry.Point ptEnd, Autodesk.DesignScript.Geometry.Vector vOrientation, double startHeight = 100, double endHeight = 100, double webThickness = 100) { //use lock just to be safe //AutoCAD does not support multithreaded access lock (myLock) { //lock the document and start transaction using (var _CADAccess = new AdvanceSteel.Services.ObjectAccess.CADContext()) { string handle = AdvanceSteel.Services.ElementBinder.GetHandleFromTrace(); Point3d beamStart = Utils.ToAstPoint(ptStart, true); Point3d beamEnd = Utils.ToAstPoint(ptEnd, true); if (string.IsNullOrEmpty(handle) || Utils.GetObject(handle) == null) { var myBeam = new Autodesk.AdvanceSteel.Modelling.BeamTapered(beamStart, beamEnd, Vector3d.kXAxis, startHeight, endHeight, webThickness); myBeam.CreateComponents(); myBeam.WriteToDb(); handle = myBeam.Handle; } BeamTapered beamTapered = Utils.GetObject(handle) as BeamTapered; if (beamTapered != null && beamTapered.IsKindOf(FilerObject.eObjectType.kBeamTapered)) { Utils.AdjustBeamEnd(beamTapered, beamStart); beamTapered.SetSysStart(beamStart); beamTapered.SetSysEnd(beamEnd); Utils.SetOrientation(beamTapered, Utils.ToAstVector3d(vOrientation, true)); } else { throw new System.Exception("Not a tapered beam"); } this.Handle = handle; AdvanceSteel.Services.ElementBinder.CleanupAndSetElementForTrace(beamTapered); } } }
internal TaperedBeam(Autodesk.DesignScript.Geometry.Point ptStart, Autodesk.DesignScript.Geometry.Point ptEnd, Autodesk.DesignScript.Geometry.Vector vOrientation, double startHeight = 100, double endHeight = 100, double webThickness = 100) { lock (access_obj) { using (var ctx = new SteelServices.DocContext()) { string handle = SteelServices.ElementBinder.GetHandleFromTrace(); Point3d beamStart = Utils.ToAstPoint(ptStart, true); Point3d beamEnd = Utils.ToAstPoint(ptEnd, true); Vector3d refVect = Utils.ToAstVector3d(vOrientation, true); Autodesk.AdvanceSteel.Modelling.BeamTapered beam = null; if (string.IsNullOrEmpty(handle) || Utils.GetObject(handle) == null) { beam = new Autodesk.AdvanceSteel.Modelling.BeamTapered(beamStart, beamEnd, refVect, startHeight, endHeight, webThickness); beam.CreateComponents(); beam.WriteToDb(); } else { beam = Utils.GetObject(handle) as BeamTapered; if (beam != null && beam.IsKindOf(FilerObject.eObjectType.kBeamTapered)) { Utils.AdjustBeamEnd(beam, beamStart); beam.SetSysStart(beamStart); beam.SetSysEnd(beamEnd); Utils.SetOrientation(beam, refVect); } else { throw new System.Exception("Not a tapered beam"); } } Handle = beam.Handle; SteelServices.ElementBinder.CleanupAndSetElementForTrace(beam); } } }