代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.UI.Events;
using Autodesk.Revit.DB.Events;
using Autodesk.Revit;
using System.Drawing;
namespace Bridge_design
{
class ThreeD_Building
{
public void Middle_beam_left_building(ExternalCommandData commandData)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Autodesk.Revit.DB.Document Rdoc = uidoc.Document;
//族样板路径
String filePath = @"C:\ProgramData\Autodesk\RVT 2018\Family Templates\Chinese\公制常规模型.rft";
UIApplication uiapp = commandData.Application;
Autodesk.Revit.ApplicationServices.Application app = uiapp.Application;
//创建族文档
Autodesk.Revit.DB.Document familyDoc = app.NewFamilyDocument(filePath);
Transaction familyTrans = new Transaction(familyDoc, "family");
//familyDoc.FamilyManager.NewType("1");
CurveArrArray curveArrArr = app.Create.NewCurveArrArray();
CurveArray curveArr = app.Create.NewCurveArray();
//创建轮廓线
Curve curve1 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(0, 0, 0), new XYZ(Windows_Canvas.b_zd_zl_out[0], 0, Windows_Canvas.h_zd_zl_out[0]));
Curve curve2 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_out[0], 0, Windows_Canvas.h_zd_zl_out[0]), new XYZ(Windows_Canvas.b_zd_zl_out[11], 0, Windows_Canvas.h_zd_zl_out[11]));
Curve curve3 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_out[11], 0, Windows_Canvas.h_zd_zl_out[11]), new XYZ(Windows_Canvas.b_zd_zl_out[10], 0, Windows_Canvas.h_zd_zl_out[10]));
Curve curve4 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_out[10], 0, Windows_Canvas.h_zd_zl_out[10]), new XYZ(Windows_Canvas.b_zd_zl_out[9], 0, Windows_Canvas.h_zd_zl_out[9]));
Curve curve5 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_out[9], 0, Windows_Canvas.h_zd_zl_out[9]), new XYZ(Windows_Canvas.b_zd_zl_out[8], 0, Windows_Canvas.h_zd_zl_out[8]));
Curve curve6 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_out[8], 0, Windows_Canvas.h_zd_zl_out[8]), new XYZ(0, 0, Windows_Canvas.h_zd_zl_out[8]));
Curve curve7 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(0, 0, Windows_Canvas.h_zd_zl_out[8]), new XYZ(0, 0, Windows_Canvas.h_zd_zl_in[4]));
Curve curve8 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(0, 0, Windows_Canvas.h_zd_zl_in[4]), new XYZ(Windows_Canvas.b_zd_zl_in[4], 0, Windows_Canvas.h_zd_zl_in[4]));
Curve curve9 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_in[4], 0, Windows_Canvas.h_zd_zl_in[4]), new XYZ(Windows_Canvas.b_zd_zl_in[5], 0, Windows_Canvas.h_zd_zl_in[5]));
Curve curve10 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_in[5], 0, Windows_Canvas.h_zd_zl_in[5]), new XYZ(Windows_Canvas.b_zd_zl_in[6], 0, Windows_Canvas.h_zd_zl_in[6]));
Curve curve11 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_in[6], 0, Windows_Canvas.h_zd_zl_in[6]), new XYZ(Windows_Canvas.b_zd_zl_in[7], 0, Windows_Canvas.h_zd_zl_in[7]));
Curve curve12 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(Windows_Canvas.b_zd_zl_in[7], 0, Windows_Canvas.h_zd_zl_in[7]), new XYZ(0, 0, Windows_Canvas.h_zd_zl_in[7]));
Curve curve13 = Autodesk.Revit.DB.Line.CreateBound(new XYZ(0, 0, Windows_Canvas.h_zd_zl_in[7]), new XYZ(0, 0, 0));
curveArr.Append(curve1);
curveArr.Append(curve2);
curveArr.Append(curve3);
curveArr.Append(curve4);
curveArr.Append(curve5);
curveArr.Append(curve6);
curveArr.Append(curve7);
curveArr.Append(curve8);
curveArr.Append(curve9);
curveArr.Append(curve10);
curveArr.Append(curve11);
curveArr.Append(curve12);
curveArr.Append(curve13);
curveArrArr.Append(curveArr);
Element element = null;
//新建事务,创建拉伸体
using (Transaction transaction1 = new Transaction(familyDoc))
{
if (transaction1.Start("融合") == TransactionStatus.Started)
element = familyDoc.FamilyCreate.NewExtrusion(true, curveArrArr, SketchPlane.Create(familyDoc, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), XYZ.Zero)), 40);
transaction1.Commit();
}
Family family = familyDoc.LoadFamily(Rdoc);
}
}
}
在最后一句将族导入项目文档的地方报错:该文档当前处于只读状态.LoadFamily可能无法执行。
别的地方与其相关联的代码如下,目的就是为了点击按钮建模。
private void Bridge_modeling_Click(object sender, RoutedEventArgs e)
{
ThreeD_Building threeD_Building = new ThreeD_Building();
threeD_Building.Middle_beam_left_building(m_revit);
}
请问导致文档处于只读状态的原因可能有哪些,这个问题出在了哪里。
因为我想不通,族也打开了,项目也打开了怎么还会处于只读