Reference r = uiapp.ActiveUIDocument.Selection.PickObject(ObjectType.Element)
Element line = doc.GetElement(r.ElementId);
XYZ vectorAB = (line.Location as LocationCurve).Curve.GetEndPoint(0);
XYZ vectorAC = (line.Location as LocationCurve).Curve.GetEndPoint(1);
TaskDialog.Show("", vectorAB.ToString() + "\n" + vectorAC);
XYZ vectorBC = vectorAC - vectorAB;
XYZ vectorBC_1 = vectorBC * (-2) // B
XYZ vectorBC_2 = vectorBC * 2; //
XYZ vectorBC_05 = vectorBC * .5 //
//
Line line = Line.CreateBound(vectorAB, vectorBC_2); // , XYZ -
doc.Create.NewDetailCurve(doc.ActiveView, line);
XYZ vectorAX = XYZ.BasisX * (2000 / 304.8);
// AF AD
XYZ vectorAF = vectorAC + vectorAX;
XYZ vectorAD = vectorAB + vectorAX;
//
XYZ directionToC = vectorBC.Normalize();
XYZ newC = vectorAC + (directionToC * (1000 / 304.8));
//
XYZ vectorCB = vectorAB - vectorAC;
XYZ directionToB = vectorCB.Normalize();
XYZ newB = vectorAB + (directionToB * (1000 / 304.8));
/*
;* Created by SharpDevelop.
* User: Akunets Aleksandr, www.bim3d.ru
* Date: 27.08.2017
* Time: 20:37
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
namespace Vector
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("17333FA7-9C10-4B4E-A179-7B56E33FC6B3")]
public partial class ThisApplication
{
private void Module_Startup(object sender, EventArgs e)
{
}
private void Module_Shutdown(object sender, EventArgs e)
{
}
public void Vector() {
UIDocument uidoc = this.ActiveUIDocument;
Document doc = uidoc.Document; //
Selection selection = uidoc.Selection;
Reference r = selection.PickObject(ObjectType.Element, " "); //
Element line = doc.GetElement(r.ElementId); //
XYZ vectorAB = (line.Location as LocationCurve).Curve.GetEndPoint(0); //
XYZ vectorAC = (line.Location as LocationCurve).Curve.GetEndPoint(1); //
XYZ vectorBC = vectorAC - vectorAB; // ,
XYZ vectorAX = XYZ.BasisX * (2000 / 304.8); // 2000 ( 2000 )
XYZ vectorAF = vectorAC + vectorAX; // ()
XYZ vectorAD = vectorAB + vectorAX; // ()
XYZ directionToC = vectorBC.Normalize(); // ( ) ,
//
XYZ newC = vectorAF + (directionToC * (1000 / 304.8)); // ()
//
XYZ vectorCB = vectorAB - vectorAC; // , BC
XYZ directionToB = vectorCB.Normalize(); // ( ) B,
//
XYZ newB = vectorAD + (directionToB * (1000 / 304.8)); // ()
Transaction t = new Transaction(doc, "Create Detail Line");
{
t.Start();
Line geomLine = Line.CreateBound(newB, newC);
DetailLine detailline = doc.Create.NewDetailCurve(doc.ActiveView, geomLine ) as DetailLine;
t.Commit();
}
}
#region Revit Macros generated code
private void InternalStartup()
{
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
#endregion
}
}
Source: https://habr.com/ru/post/336502/