public void dimLevels() { UIDocument uiDoc = this.ActiveUIDocument; Document doc = uiDoc.Document; // Filter by name FilterByNameElementType myFilter = new FilterByNameElementType(new List <string>() { "Level" }); // Select Grids // S1: Pick an element List <Reference> myListRef = uiDoc.Selection.PickObjects(ObjectType.Element, myFilter, "Pick Levels...") as List <Reference>; ReferenceArray ra = new ReferenceArray(); //List<Reference> myListRef_2 = new List<Reference>(); foreach (var myRef in myListRef) { Level myLevel = doc.GetElement(myRef) as Level; Reference myLevelRef = new Reference(myLevel); ra.Append(myLevelRef); //myListRef_2.Add(myLevelRef); } setCurrentViewAsWorkPlan(); XYZ myDimPoint_1 = uiDoc.Selection.PickPoint("Pick Point To Place Dimension...."); XYZ myDimPoint_2 = new XYZ(myDimPoint_1.X, myDimPoint_1.Y, myDimPoint_1.Z + 5); Line dimLine = Line.CreateBound(myDimPoint_1, myDimPoint_2); using (Transaction trans = new Transaction(doc, "Create linear Dimension")) { trans.Start(); Dimension myDim = doc.Create.NewDimension(doc.ActiveView, dimLine, ra); trans.Commit(); } }
public void dimGridsOrLevels() { UIDocument uiDoc = this.ActiveUIDocument; Document doc = uiDoc.Document; // Filter by name FilterByNameElementType myFilter = new FilterByNameElementType(new List <string>() { "Grid", "Level" }); // Select Grids // S1: Pick an element List <Reference> myListRef = uiDoc.Selection.PickObjects(ObjectType.Element, myFilter, "Pick Grids or Levels....") as List <Reference>; // Group Type Referent List <Reference> listRef_Level = new List <Reference>(); List <Reference> listRef_Grid = new List <Reference>(); foreach (Reference myRefChecking in myListRef) { if (doc.GetElement(myRefChecking) is Level) { listRef_Level.Add(myRefChecking); } else { listRef_Grid.Add(myRefChecking); } } if (listRef_Grid.Count >= 2) { dimGrids_Para(uiDoc, listRef_Grid); } if (listRef_Level.Count >= 2) { dimLevels_Para(uiDoc, listRef_Level); } }
public void getAllRefOfDims_2() { UIDocument uiDoc = this.ActiveUIDocument; Document doc = uiDoc.Document; // Filter by name FilterByNameElementType myFilter = new FilterByNameElementType(new List <string>() { "Dimension" }); // Select Grids // S1: Pick an element List <Reference> myListRef = uiDoc.Selection.PickObjects(ObjectType.Element, myFilter, "Pick Dimensions....") as List <Reference>; ReferenceArray ra = new ReferenceArray(); List <XYZ> myListDirectLine = new List <XYZ>(); Dimension firstDim = doc.GetElement(myListRef[0]) as Dimension; Line firstDimAsLine = firstDim.Curve as Line; List <ElementId> myDeleteElemIds = new List <ElementId>(); List <Reference> test = new List <Reference>(); List <string> stableRepRefList = new List <string>(); foreach (Reference myRef in myListRef) { Dimension myDim = doc.GetElement(myRef) as Dimension; foreach (Reference refOfDim in myDim.References) { string refStable = refOfDim.ConvertToStableRepresentation(doc); if (!stableRepRefList.Contains(refStable)) { stableRepRefList.Add(refStable); } } Line dimAsLine = myDim.Curve as Line; if (dimAsLine == null) { TaskDialog.Show("Error", "Chỉ hỗ trợ Linear Dimensions, hãy chọn cẩn thận..."); return; } //myListDirectLine.Add(dimAsLine.Direction); myDeleteElemIds.Add(myRef.ElementId); } foreach (string stableRepRef in stableRepRefList) { ra.Append(Reference.ParseFromStableRepresentation(doc, stableRepRef)); } Autodesk.Revit.DB.View view = firstDim.View; TaskDialog.Show("Break", "Point" + ra.Size.ToString()); using (Transaction trans = new Transaction(doc, "Merge Dimensions")) { trans.Start(); Dimension myMergeDim = doc.Create.NewDimension(view, firstDimAsLine, ra); // Delete dimensions doc.Delete(myDeleteElemIds); trans.Commit(); } }
public void mergeDims() { UIDocument uiDoc = this.ActiveUIDocument; Document doc = uiDoc.Document; // Filter by name FilterByNameElementType myFilter = new FilterByNameElementType(new List <string>() { "Dimension" }); // Select Grids // S1: Pick an element List <Reference> myListRef = uiDoc.Selection.PickObjects(ObjectType.Element, myFilter, "Pick Dimensions....") as List <Reference>; ReferenceArray ra = new ReferenceArray(); List <XYZ> myListDirectLine = new List <XYZ>(); // Getline of first Dimension Dimension firstDim = doc.GetElement(myListRef[0]) as Dimension; Line firstDimAsLine = firstDim.Curve as Line; //Line firstDimAsLine = firstDimAsLine_2.CreateOffset(4,new XYZ(1,1,1)) as Line; // ICollection<ElementId> myDeleteElemIds = null; foreach (Reference myRef in myListRef) { Dimension myDim = doc.GetElement(myRef) as Dimension; foreach (Reference refOfDim in myDim.References) { ra.Append(refOfDim); } Line dimAsLine = myDim.Curve as Line; if (dimAsLine == null) { TaskDialog.Show("Error", "Chỉ hỗ trợ Linear Dimensions, hãy chọn cẩn thận..."); return; } //myListDirectLine.Add(dimAsLine.Direction); // myDeleteElemIds.Add(myRef.ElementId); } // if(! isListLineParallel(myListDirectLine)) // { // TaskDialog.Show("Error", "Các dimensions bạn chọn không cùng phương, hãy chọn cẩn thận..."); // return; // } //setCurrentViewAsWorkPlan(); Autodesk.Revit.DB.View view = firstDim.View; // // XYZ myDimPoint_1 = uiDoc.Selection.PickPoint("Pick Point To Place Dimension...."); // // //TaskDialog.Show("check", XYZtoString(doc.ActiveView.ViewDirection)); // // XYZ viewDirect = doc.ActiveView.ViewDirection; // // XYZ plusXYZ = new XYZ(); // // if (Math.Round(viewDirect.Z, 6) == 0) // { // plusXYZ = new XYZ( - viewDirect.Y, viewDirect.X, viewDirect.Z); // // } // // else{ // // Grid firstGrid = doc.GetElement(myListRef[0]) as Grid; // Line gridLine = firstGrid.Curve as Line; // XYZ girdLineDirect = gridLine.Direction; // plusXYZ = new XYZ( - girdLineDirect.Y, girdLineDirect.X, girdLineDirect.Z); // //plusXYZ = new XYZ(0,1,0); // } // XYZ myDimPoint_2 = myDimPoint_1 + plusXYZ; // Line l = Line.CreateBound(myDimPoint_1, myDimPoint_2); using (Transaction trans = new Transaction(doc, "Merge Dimensions")) { trans.Start(); Dimension myMergeDim = doc.Create.NewDimension(view, firstDimAsLine, ra); // Delete dimensions //doc.Delete(myDeleteElemIds); trans.Commit(); } }
public void dimGrids() { UIDocument uiDoc = this.ActiveUIDocument; Document doc = uiDoc.Document; // Filter by name FilterByNameElementType myFilter = new FilterByNameElementType(new List <string>() { "Grid" }); // Select Grids // S1: Pick an element List <Reference> myListRef = uiDoc.Selection.PickObjects(ObjectType.Element, myFilter, "Pick Grids....") as List <Reference>; ReferenceArray ra = new ReferenceArray(); List <XYZ> myListDirectLine = new List <XYZ>(); foreach (var myRef in myListRef) { Grid myGrid = doc.GetElement(myRef) as Grid; Reference myGridRef = new Reference(myGrid); Line gridAsLine = myGrid.Curve as Line; if (gridAsLine == null) { TaskDialog.Show("Error", "Chỉ hỗ trợ Grid dạng Line song song với nhau, hãy chọn cẩn thận..."); return; } myListDirectLine.Add(gridAsLine.Direction); ra.Append(myGridRef); //myListRef_2.Add(myGridRef); } if (!isListLineParallel(myListDirectLine)) { TaskDialog.Show("Error", "Chỉ hỗ trợ Grid dạng Line song song với nhau, hãy chọn cẩn thận..."); return; } setCurrentViewAsWorkPlan(); XYZ myDimPoint_1 = uiDoc.Selection.PickPoint("Pick Point To Place Dimension...."); //TaskDialog.Show("check", XYZtoString(doc.ActiveView.ViewDirection)); XYZ viewDirect = doc.ActiveView.ViewDirection; XYZ plusXYZ = new XYZ(); if (Math.Round(viewDirect.Z, 6) == 0) { plusXYZ = new XYZ(-viewDirect.Y, viewDirect.X, viewDirect.Z); } else { Grid firstGrid = doc.GetElement(myListRef[0]) as Grid; Line gridLine = firstGrid.Curve as Line; XYZ girdLineDirect = gridLine.Direction; plusXYZ = new XYZ(-girdLineDirect.Y, girdLineDirect.X, girdLineDirect.Z); //plusXYZ = new XYZ(0,1,0); } XYZ myDimPoint_2 = myDimPoint_1 + plusXYZ; Line l = Line.CreateBound(myDimPoint_1, myDimPoint_2); using (Transaction trans = new Transaction(doc, "Create linear Dimension")) { trans.Start(); Dimension myDim = doc.Create.NewDimension(doc.ActiveView, l, ra); trans.Commit(); } }