internal BentBeam(Autodesk.DesignScript.Geometry.Point ptStart, Autodesk.DesignScript.Geometry.Point ptEnd, Autodesk.DesignScript.Geometry.Point ptOnArc, Autodesk.DesignScript.Geometry.Vector vOrientation) { //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(); var beamStart = (ptStart == null ? new Point3d() : Utils.ToAstPoint(ptStart, true)); var beamEnd = (ptEnd == null ? new Point3d() : Utils.ToAstPoint(ptEnd, true)); _ptOnArc = Utils.ToAstPoint(ptOnArc, true); if (string.IsNullOrEmpty(handle) || Utils.GetObject(handle) == null) { ProfileName profName = new ProfileName(); ProfilesManager.GetProfTypeAsDefault("I", out profName); var myBeam = new Autodesk.AdvanceSteel.Modelling.BentBeam(profName.Name, Vector3d.kZAxis, beamStart, _ptOnArc, beamEnd); myBeam.WriteToDb(); handle = myBeam.Handle; } var beam = Utils.GetObject(handle) as Autodesk.AdvanceSteel.Modelling.BentBeam; if (beam != null && beam.IsKindOf(FilerObject.eObjectType.kBentBeam)) { beam.SetSystemline(beamStart, _ptOnArc, beamEnd); Utils.SetOrientation(beam, Utils.ToAstVector3d(vOrientation, true)); } else { throw new System.Exception("Not a bent Beam"); } Handle = handle; AdvanceSteel.Services.ElementBinder.CleanupAndSetElementForTrace(beam); } } }
internal BentBeam(Autodesk.DesignScript.Geometry.Point ptStart, Autodesk.DesignScript.Geometry.Point ptEnd, Autodesk.DesignScript.Geometry.Point ptOnArc, Autodesk.DesignScript.Geometry.Vector vOrientation) { lock (access_obj) { using (var ctx = new SteelServices.DocContext()) { string handle = SteelServices.ElementBinder.GetHandleFromTrace(); Point3d beamStart = (ptStart == null ? new Point3d() : Utils.ToAstPoint(ptStart, true)); Point3d beamEnd = (ptEnd == null ? new Point3d() : Utils.ToAstPoint(ptEnd, true)); Vector3d refVect = Utils.ToAstVector3d(vOrientation, true); _ptOnArc = Utils.ToAstPoint(ptOnArc, true); Autodesk.AdvanceSteel.Modelling.BentBeam beam = null; if (string.IsNullOrEmpty(handle) || Utils.GetObject(handle) == null) { ProfileName profName = new ProfileName(); ProfilesManager.GetProfTypeAsDefault("I", out profName); beam = new Autodesk.AdvanceSteel.Modelling.BentBeam(profName.Name, refVect, beamStart, _ptOnArc, beamEnd); beam.WriteToDb(); } else { beam = Utils.GetObject(handle) as Autodesk.AdvanceSteel.Modelling.BentBeam; if (beam != null && beam.IsKindOf(FilerObject.eObjectType.kBentBeam)) { beam.SetSystemline(beamStart, _ptOnArc, beamEnd); Utils.SetOrientation(beam, refVect); } else { throw new System.Exception("Not a bent Beam"); } } Handle = beam.Handle; SteelServices.ElementBinder.CleanupAndSetElementForTrace(beam); } } }