如何将家庭保存到新文件

问题描述 投票:0回答:1

使用 Revit API 且不使用 Revit UI,我想将加载的族保存到新文件中。

我们看一下下面的代码:

 using (Transaction transaction = new Transaction(document))
        {
            transaction.Start("Load and Save Family");


            if (document.LoadFamily(familyFullPath, out Family family))
            {
                Console.Writeline("Load successful")
            }

            transaction.Commit();

            ModelPath newPath = ModelPathUtils.ConvertUserVisiblePathToModelPath("result.rfa");
            SaveAsOptions saveAsOptions = new SaveAsOptions();
         
            family.Document.SaveAs(newPath, saveAsOptions);
            
        }

这段代码的问题是它保存了我们加载族的默认文档,因为

family.Document
返回“元素所在的文档”。

我想要做的就是仅将加载的

Family
保存为新的
.rfa
文档。

为了更好地解释,我将演示使用 Revit UI 时的样子:

我怎样才能实现同样的事情,但纯粹是通过

Autodesk.Revit.DB

c# autodesk-forge revit-api autodesk-designautomation
1个回答
0
投票

好的,解决方案是使用

EditFamily
。 因此,以下代码会将族保存到一个新的单独文档中:

using (Transaction transaction = new Transaction(document))
    {
        transaction.Start("Load and Save Family");


        if (document.LoadFamily(familyFullPath, out Family family))
        {
            Console.Writeline("Load successful")
        }

        transaction.Commit();

        // create new family document by editing family
        var famDoc = document.EditFamily(family);

        ModelPath newPath = ModelPathUtils.ConvertUserVisiblePathToModelPath("result.rfa");
        SaveAsOptions saveAsOptions = new SaveAsOptions();

        // save the new document
        famDoc.SaveAs(newPath, saveAsOptions);
        
    }

解释一下:

EditFamily
“创建家庭的独立副本进行编辑”,当我们拥有独立副本时,我们可以保存它。

© www.soinside.com 2019 - 2024. All rights reserved.