以墨代水 2019-03-18 21:20 采纳率: 33.3%
浏览 1025
已结题

【求助帖】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);
    }

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

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

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-03-23 11:37
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序