Message 1 of 1
SPLITING BEAMS AT COLUMN INTERSECTION
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
The code works till the second split which the elementID is not recognized. The Idea is to get all beams in a model and split at column intersection to identify each beam with MARK. Tried to use a transaction method Arnobel
using(TransactionGroup transgroup = new TransactionGroup(doc,"split")) { using(Transaction trans = new Transaction(doc)) { try { transgroup.Start(); trans.Start("First"); splittedElementId= eleinstance.Split(pa); Element splittedelement= doc.GetElement(splittedElementId); doc.Regenerate(); joinedcolumnstosplitbeams=JoinedElementUtils.GetJoinedColumns(doc,splittedelement); if (trans.Commit() != TransactionStatus.Committed) { TaskDialog.Show("Fail", Result.Failed.ToString()); } trans.Start("Second"); if (joinedcolumnstosplitbeams.Count>2 ) { foreach (var coll in joinedcolumns) { if(JoinedElementUtils.IsColumnJoinedToBeamEnds(doc,splittedelement,coll)==false) { Curve newmaincurve = geo.GetElementCurve(splittedelement); Solid newcosolid = geo.GetSolid(coll); Curve newinterse = geo.GetIntersectedCurve(newmaincurve,newcosolid); FamilyInstance splitinstance = (FamilyInstance)splittedelement; double paranorm= geo.GetNormalizedParameterColumnBeamIntersection(newmaincurve,newinterse); splitinstance.Split(paranorm); trans.Commit(); } } } if (trans.Commit() != TransactionStatus.Committed) { TaskDialog.Show("Failed", Result.Failed.ToString()); } transgroup.Assimilate(); } catch { TaskDialog.Show("Failing", Result.Failed.ToString()); } } TaskDialog.Show("Success", Result.Succeeded.ToString()); }