创建图纸
/// <summary>
/// 创建图纸
/// </summary>
private void CreateViewSheet2()
{
FilteredElementCollector elements = new FilteredElementCollector(document);
List<FamilySymbol> familySymbols = elements.OfCategory(BuiltInCategory.OST_TitleBlocks).OfClass(typeof(FamilySymbol)).Cast<FamilySymbol>().ToList();
//指定图框
FamilySymbol familySymbol = familySymbols.FirstOrDefault(t => t.Name.Equals("A1"));
//创建图纸
ViewSheet viewSheet = ViewSheet.Create(document, familySymbol.Id);
//名称
viewSheet.Name = "图纸1";
//编号
viewSheet.SheetNumber = "zjzl";
}
图纸中加入视图
/// <summary>
/// 图纸中加入视图
/// </summary>
/// <param name="viewSheet"></param>
/// <param name="viewPlan"></param>
/// <param name="point"></param>
private void CreateViewport(ViewSheet viewSheet, ViewPlan viewPlan, XYZ point)
{
bool isok = Viewport.CanAddViewToSheet(document, viewSheet.Id, viewPlan.Id);
if (isok)
{
//图纸加入视图
Viewport.Create(document, viewSheet.Id, viewPlan.Id, point);
}
}
得到图框中心点
/// <summary>
/// 得到图框中心点
/// 这里计算的是整个图框的中心点,里面内容框的中心点需要根据指定的图框类型去加减上下左右的边距
/// </summary>
/// <param name="viewSheet">图纸</param>
/// <returns></returns>
private XYZ GetPoint(ViewSheet viewSheet)
{
UV loc = new UV((viewSheet.Outline.Max.U + viewSheet.Outline.Min.U) / 2, (viewSheet.Outline.Max.V + viewSheet.Outline.Min.V) / 2);
XYZ point = new XYZ(loc.U, loc.V, 0);
return point;
}