SPLITING BEAMS AT COLUMN INTERSECTION

SPLITING BEAMS AT COLUMN INTERSECTION

AGYEMANG.OFOSU
Advocate Advocate
781 Views
0 Replies
Message 1 of 1

SPLITING BEAMS AT COLUMN INTERSECTION

AGYEMANG.OFOSU
Advocate
Advocate
 

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());
								
}
			
										
0 Likes
782 Views
0 Replies
Replies (0)