转载附原文链接:https://blog.csdn.net/Oneal5354/article/details/109263417
在项目中,会运用到很多内存中的线,即Line类。可是我们只能看到他的点坐标信息,但是并不能直接知道这个线在项目中所在的位置具体在哪里。所以自己封装了一个方法来给自己方便测试。Just Do It~~~
/// <summary>
/// 生成详图视图来测试
/// </summary>
/// <param name="allLineList"></param>
/// <param name="doc"></param>
public static ViewDrafting DLineTest(this List<Line> allLineList, Document doc, string name)
{
var v = new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType)).Cast<ViewFamilyType>().Where(x => x.ViewFamily == ViewFamily.Drafting).FirstOrDefault();
ViewDrafting vd = new FilteredElementCollector(doc).OfClass(typeof(ViewDrafting)).Cast<ViewDrafting>().Where(x => x.Name == name).FirstOrDefault();
if (vd == null)
{
Transaction trans = new Transaction(doc, "创建绘图视图");
trans.Start();
vd = ViewDrafting.Create(doc, v.Id);
vd.Name = name;
trans.Commit();
}
else
{
List<ElementId> curves = new FilteredElementCollector(doc, vd.Id).OfClass(typeof(CurveElement)).OfType<CurveElement>().Select(x => x.Id).ToList();
Transaction trans3 = new Transaction(doc, "删除详图线");
trans3.Start();
doc.Delete(curves);
trans3.Commit();
}
Transaction trans2 = new Transaction(doc, "创建详图线");
trans2.Start();
allLineList.CreateDetailLine(doc, vd);
trans2.Commit();
return vd;
}
在今后对线的调试中可以用这个方法去调试,会生成一个新的详图视图,可以去对应观察,不影响原本视图中的东西哦。这是一个粗略的操作,原则上需要避免事务在方法中开启,这里仅仅调试需要,希望可以帮到你