首页 > 其他 > 详细

关于如何快速导出FBX文件

时间:2021-07-19 09:57:53      阅读:11      评论:0      收藏:0      [点我收藏+]
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使用实例

关于如何快速导出FBX文件

原文:https://www.cnblogs.com/lileiblog/p/15028572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!