如何快速导出FBX文件

该代码示例演示了如何使用Revit API创建3D视图,并批量导出选定构件的3D视图以及FBX文件。用户首先选择构件,然后程序将为每个构件创建一个3D视图,设置其围框,并导出到指定文件夹。最后,每个3D视图单独导出为FBX文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Creat3DView
{
    [Transaction(TransactionMode.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            UIApplication uiapp = uidoc.Application;
            Selection sel = uidoc.Selection;
            View view = commandData.View;
            List<Reference> referlist = sel.PickObjects(ObjectType.Element, "选择构件").ToList();
            List<ElementId> ids = new List<ElementId>();

            //声明一个视图集合
            ViewSet views = new ViewSet();//特点是集合内容在一个视图文件内

            //声明一个视图list集合
            List<View3D> view3Ds = new List<View3D>();

            //新建事件并启动事件
            Transaction ts = new Transaction(doc, "创建围框");
            ts.Start();
            foreach (var reference in referlist)
            {
                Element ele = doc.GetElement(reference);
                BoundingBoxXYZ boundingBox = ele.get_BoundingBox(view);
                Transform transform = Transform.Identity;

                BoundingBoxXYZ box = new BoundingBoxXYZ();
                box.Transform = transform;
                box.Min = boundingBox.Min;
                box.Max = boundingBox.Max;

                View3D view3D = View3D.CreateIsometric
                    (doc, new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType))
                    .Cast<ViewFamilyType>().Where(m => m.ViewFamily == ViewFamily.ThreeDimensional)
                    .First().Id);

                //设置三维剖面框      
                view3D.SetSectionBox(box);
                views.Insert(view3D);
                view3Ds.Add(view3D);
            }
            ts.Commit();

            FBXExportOptions options = new FBXExportOptions();
            string fileFolder = @"D:\作品准备\FBX导出";
            string fileName = "水厂项目三维构件综合";

            doc.Export(fileFolder, fileName, views, options);

            for (int i = 0; i < view3Ds.Count; i++)
            {
                ViewSet viewSet = new ViewSet();
                viewSet.Insert(view3Ds[i]);
                string filename = "水厂项目三维构件" + i;
                FBXExportOptions pts = new FBXExportOptions();

                doc.Export(fileFolder, filename, viewSet, pts);

            }
            return Result.Succeeded;
        }
    }
}

导出文件格式参考文档

关于导出各文件格式API使用实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值