【求助帖】Revit二次开发 族载入到项目文档里报错:该文档当前处于只读状态.LoadFamily可能无法执行。

代码如下:

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);
    }

请问导致文档处于只读状态的原因可能有哪些,这个问题出在了哪里。

因为我想不通,族也打开了,项目也打开了怎么还会处于只读

https://blog.csdn.net/bbkxw001/article/details/78985388