绘制ModelCurve
/// <summary>
/// 绘制模型线
/// </summary>
/// <param name="doc">文档</param>
/// <param name="line">线</param>
/// <returns>模型线</returns>
public ModelCurve Draw_ModelCurve(Document doc,Line line)
{
if (doc == null || line == null)
return null;
Transaction trans = new Transaction(doc,"modelCurve");
trans.Start();
try
{
Plane plane = new Plane(getNormal(line.Direction), line.Origin);
SketchPlane sp = SketchPlane.Create(doc, plane);
ModelCurve modelCurve = doc.Create.NewModelCurve(line, sp);
trans.Commit();
return modelCurve;
}
catch
{
trans.RollBack();
return null;
}
}
/// <summary>
/// 获取垂直于dir的向量
/// </summary>
/// <param name="dir">方向向量</param>
/// <returns>垂直向量</returns>
private XYZ getNormal(XYZ dir)
{
return new XYZ(dir.Y + dir.Z, -dir.X + dir.Z, -dir.X - dir.Y);
}
绘制ModelArc
public ModelArc Draw_ModelArc(Document doc,Arc line)
{
if (doc == null || line == null)
return null;
Transaction trans = new Transaction(doc,"modelArc");
trans.Start();
try
{
Plane plane = new Plane(line.Norma, line.GetEndPoint(0));
SketchPlane sp = SketchPlane.Create(doc, plane);
ModelArc modelArc = doc.Create.NewModelCurve(line, sp) as ModelArc;
trans.Commit();
return modelArc;
}
catch
{
trans.RollBack();
return null;
}
}
希望能帮到和我一样初学Revit二开的朋友