Revit二次开发,创建系统默认的3D视图,以及3d视图的盒子

Revit提供了一个PostableCommand指令集,通过该指令集可以创建很多Revit支持的默认指令。

using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;

namespace Create3DView
{
    /// <summary>
    /// 创建3d视图
    /// </summary>
    /// <creator>marc</creator>
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
    [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
    public class DefaultCommand : IExternalCommand
    {
        /// <summary>
        /// 执行指令
        /// </summary>
        /// <param name="commandData"></param>
        /// <param name="message"></param>
        /// <param name="elements"></param>
        /// <returns></returns>
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var document = commandData.Application.ActiveUIDocument.Document;

            using (var transaction = new Transaction(document))
            {
                transaction.Start(Guid.NewGuid().ToString());

                //3d视图通过指令创建,该方式可以创建Revit提供的非常多种指令,如创建Revit文件等,都是一样的方式。
                RevitCommandId commandId = RevitCommandId.LookupPostableCommandId(PostableCommand.Default3DView);

                if (commandData.Application.CanPostCommand(commandId))
                {
                    commandData.Application.PostCommand(commandId);
                }

                transaction.Commit();
            }

            return Result.Succeeded;
        }
    }
}

通过外部工具加载到Revit测试后,将产生下面的效果:

将如上图所示,自动生成一个名叫“{三维}”的视图,并自动激活为当前视图。

 

源码中,还有另外一个创建3d视图的指令,可以创建如下的3d盒子效果:

他是使用View3D.CreateIsometric()方法来实现的。

通过这个方法,还可以在winform中创建自己想要的3d预览效果,下图先给出一张效果图,过几天,我会把完整的3d预览效果以工程项目的方式提供一个实际可用的版本给大家下载,下面就先看一下3d预览图吧:

该3d预览是在Winform窗体中进行的,他不是将Revit的内容预览到Winform中,而是在Revit绘制之前,在Winform中先根据界面参数设置一定条件后,先生成预览图。最后再将这些参数整合,绘制到Revit中。

说明这个先后顺序的原因是,也许有读者以为,这个预览仅仅只是将Revit事先绘制好的模型预览到Winform中。实际不是的,是反过来的,事先在Winform预览生成效果,然后才到Revit生成真正的绘制效果。

当然,这个预览图,不论是Revit->Winform,还是Winform->Revit,两种方向都可以的。

过些天,会把这个预览项目开放给大家下载。这将是工程生产中实际可用的项目。

 

下载地址:https://download.csdn.net/download/mazhiyuan1981/12878854

源码下载

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值