Revit 二次开发 元素创建与修改练习

摘要:
学习地址:https://www.bilibili.com/video/BV1mf4y1S72o?p=11示例练习I使用系统;使用System.Collections。通用的使用系统。Linq;使用系统。文本使用Autodesk.Revit。UI;使用Autodesk.Revit。数据库;使用Autodesk.Revi

学习地址:https://www.bilibili.com/video/BV1mf4y1S72o?p=11

实例练习一

Revit 二次开发 元素创建与修改练习第1张

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using System.Windows.Forms;
using Autodesk.Revit.UI.Selection;

namespace RevitDevTV
{
    /// <summary>
    /// 实现文件中的修改与创建
    /// </summary>
    [TransactionAttribute(TransactionMode.Manual)]
    [RegenerationAttribute(RegenerationOption.Manual)]
    public class BasicCreation : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            //=====创建墙
            //开启事务
            Transaction t1 = new Transaction(doc, "创建");
            t1.Start();
            //创建墙
            Wall wall = Wall.Create(doc, Line.CreateBound(new XYZ(), new XYZ(0, 10, 0)), Level.Create(doc, 0).Id, false);
            t1.Commit(); //提交事务
            TaskDialog.Show("t1", "结构墙已创建完成");

            //====复制墙到指定位置
            Transaction t2 = new Transaction(doc, "复制");
            t2.Start();
            //复制
            ElementTransformUtils.CopyElement(doc, wall.Id, new XYZ(30, 30, 30));
            t2.Commit(); //提交复制墙
            TaskDialog.Show("t2", "结构墙已复制");

            //====移动墙
            Transaction t3 = new Transaction(doc, "移动");
            t3.Start();
            ElementTransformUtils.MoveElement(doc, wall.Id, new XYZ(10, 20, 10));
            t3.Commit(); //提交移动墙
            TaskDialog.Show("t3", "结构墙已移动");

            //====镜像
            Transaction t4 = new Transaction(doc,"镜像");
            t4.Start(); //开启事务
            if (ElementTransformUtils.CanMirrorElement(doc, wall.Id)) //判断是否可以镜像,true为可镜像
            {
                Plane p1 = Plane.CreateByNormalAndOrigin(new XYZ(0, -1, 0), XYZ.Zero);
                ElementTransformUtils.MirrorElement(doc,wall.Id, p1);
            }
            t4.Commit();
            TaskDialog.Show("t4", "结构墙已镜像");
            return Result.Succeeded;
        }
    }
}
实例练习二

Revit 二次开发 元素创建与修改练习第2张

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using System.Windows.Forms;
using Autodesk.Revit.UI.Selection;

namespace RevitDevTV
{
    /// <summary>
    /// 尝试不同类型元素的创建方法
    /// </summary>
    [TransactionAttribute(TransactionMode.Manual)]
    [RegenerationAttribute(RegenerationOption.Manual)]
    public class MoreCreation : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            Transaction trans = new Transaction(doc, "LS");
            trans.Start();
            Curve c1 = Line.CreateBound(new XYZ(0, 0, 0), new XYZ(0, 10, 0));
            Curve c2 = Line.CreateBound(new XYZ(0, 10, 0), new XYZ(10, 10, 0));
            Curve c3 = Line.CreateBound(new XYZ(10, 10, 0), new XYZ(10, 0, 0));
            Curve c4 = Line.CreateBound(new XYZ(10, 0, 0), new XYZ(0, 0, 0));
            CurveArray curveArray = new CurveArray();
            curveArray.Append(c1);
            curveArray.Append(c2);
            curveArray.Append(c3);
            curveArray.Append(c4);
            CurveArrArray curveArr = new CurveArrArray();
            curveArr.Append(curveArray);
            //图形的拉伸创建
            doc.FamilyCreate.NewExtrusion(true, curveArr, SketchPlane.Create(doc, Plane.CreateByOriginAndBasis(new XYZ(20, 20, 20), new XYZ(20, 20, 20),new XYZ(20, 20, 20))), 10);
            doc.FamilyManager.NewType("我创建的类");
            trans.Commit();
            return Result.Succeeded;
        }
    }
}

这块Plane.CreateByOriginAndBasis(new XYZ(20, 20, 20), new XYZ(20, 20, 20),new XYZ(20, 20, 20))有问题,功能没实现

免责声明:文章转载自《Revit 二次开发 元素创建与修改练习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#跨线程修改控件——从MSIL和汇编看Invoke, 多线程, 事件与事件委托MFC中使用Picture Control控件显示OpenCV图像几种方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker 安装 activemq

1、先下载镜像信息到本地服务器。 这里不加版本号,那么安装的就是最新版本。 docker pull docker.io/webcenter/activemq 2、检查下镜像情况 docker images 3、安装activemq 映射端口与之前原来的一致 // 安装这里可以是镜像名称加版本号,也可以是镜像IDdocker run -d --name...

七牛镜像的使用

前段时间,team使用了七牛镜像的功能,用到了,就决定了解一下。 七牛官网的说明如下: 设置镜像存储,源站资源(文件/图片等)根据初次访问自动同步到七牛云存储,数据平滑迁移。可使用绑定的自定义域名访问镜像存储的源站资源。 配置镜像存储后,因为镜像源和镜像空间内容基本一致,将可能导致搜索引擎对源站进行封锁,可配置搜索引擎的 robots.txt 文件避免此情...

OpenStack云计算快速入门之三:OpenStack镜像管理

第三部分OpenStack镜像管理 一、简介 很多源都有为OpenStack已经编译好的各种镜像了,您可以直接下载并通过使用这些镜像来熟悉OpenStack。 不过如果是为生产环境进行部署的话,您一定需要构建含有定制软件或配置的镜像文件。不要着急,本章将引领您完成几种较为流行的Linux发行版镜像,最后也将制作一份Windows的镜像。 由不同的Lin...

Docker 安装、卸载、启动、停止

1.1 查看当前系统的内核版本 查看当前系统的内核版本是否高于 3.10 英文文档:https://docs.docker.com/ 中文文档:https://docs.docker-cn.com/ (最近无法访问) 1.2 安装 Docker 服务 使用镜像仓库进行安装,采用 yum 命令在线安装(即电脑需要联网) root 用户运行以下命令: 1....

【译】在Asp.Net中操作PDF – iTextSharp列表

在前文中,我们已经知道了如何利用iTextSharp创建PDF文档,设置字体样式和风格.本文开始讲述iTextSharp中的有序列表和无需列表.如果你还没阅读我前面的文章,那么地址是: 在ASP.NET中创建PDF-iTextSharp起步 在Asp.Net中操作PDF - iTextSharp - 使用字体 在Asp.Net中操作PDF – iTextS...

Window10下的Docker Desktop安装(保姆级教程)

Docker Desktop Installation For Windows 1.启用Windows的Hyper-V功能 控制面板->程序 打开Hyper-V功能 重启电脑 2.下载 Docker Desktop For Windows 2.安装 3.配置阿里云镜像加速 阿里云容器镜像服务ACR 创建个人实例 获取镜像加速地址 在D...