RevitAPI(四) 移动、旋转、删除、修改

【revit二次开发】一些简单的API 一些简单常用的API //一些简单的API commandData revit封装好的数据源 application 数据源中的属性 找到 ActiveUIDocument 激活的 uidocument commandData.JournalData()//日志数据 commandData.View() //视图 commandData.Application.CreateRibbonPanel() 阅读详情

一 对元素编辑的几种方法


        1.ElementTransormUtils的移动(Move)、旋转(Rotate)和镜像。
        2.文档类Document的Delete()
        3.阵列类型的创建
        4.族编辑的一些基本类和方法
        5.获取Parameter参数进行修改

二 删除

        

using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;

namespace Selection
{
    [Transaction(TransactionMode.Manual)]
    public class Delete : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            //UIApplication表示一个活动的Revit@会话,提供了对UI定制、事件以及活动文档的访问。
            UIApplication uIApplication = commandData.Application;
            //Application类表示一个Revit应用,提供对文档、选项以及其他应用范围的数据的访问和设置。
            Application app = uIApplication.Application;
            //主要包含了跟UI相关的文档信息和操作,比如Active View和ShowElement
            UIDocument uIDocument = uIApplication.ActiveUIDocument;
            //用与存储Revit的元素、管理视图和数据
            Document doc = uIDocument.Document;

            //删除
            Transaction transaction = new Transaction(doc, "删除");
            transaction.Start();
            IList<Reference> references =uIDocument.Selection.PickObjects(ObjectType.Element);
            List<ElementId> eleIds = new List<ElementId>();

            foreach (Reference reference in references) 
            {
                eleIds.Add(reference.ElementId);
            }

            doc.Delete(eleIds);

            
            transaction.Commit();

            //

            return Result.Succeeded;
        }
    }
    
}

三 移动 


ElementTransformUtils类的方法
1.使用给定的向量移动一个元素MoveElement(Document,ElementId,XYZ);
2.使用给定的向量移动多个元素MoveElements(Document,ICollection<ElementId>,XYZ);
Location类的方法
1.移动一个元素bool Move(XYZ);

注意:
1.基于标高的元素不能向上或者向下移动,即不能改变Z轴坐标值,但可以移动元素到同一标高内的。任意位置。
2.当移动一个元素时候,其它元素可能会跟着移动。如移动墙,墙上的窗户会跟着动。
3.如果元素被钉住,即Pinned属性是true时,则表示这个元素不能被移动。
 

using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;

namespace Selection
{
    [Transaction(TransactionMode.Manual)]
    public class Move : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            //UIApplication表示一个活动的Revit@会话,提供了对UI定制、事件以及活动文档的访问。
            UIApplication uIApplication = commandData.Application;
            //Application类表示一个Revit应用,提供对文档、选项以及其他应用范围的数据的访问和设置。
            Application app = uIApplication.Application;
            //主要包含了跟UI相关的文档信息和操作,比如Active View和ShowElement
            UIDocument uIDocument = uIApplication.ActiveUIDocument;
            //用与存储Revit的元素、管理视图和数据
            Document doc = uIDocument.Document;

            //移动
            Transaction transaction = new Transaction(doc, "移动");
            transaction.Start();

            //方向乘以距离=向量
            //移动一个元素
            XYZ trans = XYZ.BasisY * (1000.0.Tofoot());
            ElementTransformUtils.MoveElement(doc,new ElementId(544996), trans);
            //移动多个元素
            IList<Reference> references = uIDocument.Selection.PickObjects(ObjectType.Element);
            
            List<ElementId> elementIds = new List<ElementId>();

            foreach(Reference reference in references)
            {
                elementIds.Add(reference.ElementId);
            }

            //通过 ElementTransformUtils类
            ElementTransformUtils.MoveElements(doc, elementIds, trans);

            //通过location move方法
            foreach(ElementId id in elementIds)
            {
                FamilyInstance  familyInstance=doc.GetElement(id) as FamilyInstance;
                if(familyInstance != null)
                familyInstance.Location.Move(trans);
                

            }

            transaction.Commit();

            //

            return Result.Succeeded;
        }
    }
}

四 旋转

旋转元素
ElementTransammUtils类的方法
1.旋转一个无素
RotateElement Document,ElementId,Line,double);
2.旋转多个元素ElementTransformUtils类的
RotateElements(Document,ICollection<ElementId>,Line,double);
Location类的方法
1.旋转一个元素
bool Rotate(Line,double);

注意事项:
1.旋转轴是有限线,若是无限线会导致旋转失败。
2.旋转轴一般要求与元素LocationCurve所在的平面垂直,否则很可能会旋转失败。

using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;

namespace Selection
{
    [Transaction(TransactionMode.Manual)]
    public class Rotate : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            //UIApplication表示一个活动的Revit@会话,提供了对UI定制、事件以及活动文档的访问。
            UIApplication uIApplication = commandData.Application;
            //Application类表示一个Revit应用,提供对文档、选项以及其他应用范围的数据的访问和设置。
            Application app = uIApplication.Application;
            //主要包含了跟UI相关的文档信息和操作,比如Active View和ShowElement
            UIDocument uIDocument = uIApplication.ActiveUIDocument;
            //用与存储Revit的元素、管理视图和数据
            Document doc = uIDocument.Document;

            //旋转
            Transaction transaction = new Transaction(doc, "移动");
            transaction.Start();

            Wall wall=doc.GetElement(new ElementId(545157)) as Wall;

            Line line = (wall.Location as LocationCurve).Curve as Line;

            XYZ strat = line.GetEndPoint(0);
            XYZ end=strat.Add(new XYZ(0,0,1));

            Line ro = Line.CreateBound(strat, end);

            ElementTransformUtils.RotateElement(doc, new ElementId(545157), ro,1.57);

            IList<Reference> references = uIDocument.Selection.PickObjects(ObjectType.Element);
            List<ElementId> elementIds = new List<ElementId>();
            foreach (Reference reference in references) 
            {
                elementIds.Add(reference.ElementId);
            }

            ElementTransformUtils.RotateElements(doc,elementIds,ro,1.57);


            doc.GetElement(elementIds[0]).Location.Rotate(ro, 1.57);
            transaction.Commit();

            //

            return Result.Succeeded;
        }
    }
}

五 镜像

镜像ElementTransformUtils类的方法
1.用指定的平面创建一个元素的镜像拷贝
MirrorElement (Document,ElementId,Plane):
2.用指定的平面创建多个元素的镜像拷贝
IList<ElemertId>MirrorElements (Document ,ICollection<ElementId>,Plane,bool)
3.判断一个元素是否可以镜像
bool CanMirrorElement(Document,ElementId);
4.判断多个元素是否可以镜像
bool CanMirrorElements(Document,ICollection<ElementId>);

using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;

namespace Selection
{
    [Transaction(TransactionMode.Manual)]
    public class Mirror : IExternalCommand
    {
        List<ElementId> ids = new List<ElementId>();
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            //UIApplication表示一个活动的Revit@会话,提供了对UI定制、事件以及活动文档的访问。
            UIApplication uIApplication = commandData.Application;
            //Application类表示一个Revit应用,提供对文档、选项以及其他应用范围的数据的访问和设置。
            Application app = uIApplication.Application;
            //主要包含了跟UI相关的文档信息和操作,比如Active View和ShowElement
            UIDocument uIDocument = uIApplication.ActiveUIDocument;
            //用与存储Revit的元素、管理视图和数据
            Document doc = uIDocument.Document;


            //文档监听
            app.DocumentChanged += DocumentChanged;

            //镜像
            Transaction transaction = new Transaction(doc, "删除");
            transaction.Start();
            IList<Reference> references =uIDocument.Selection.PickObjects(ObjectType.Element);
            List<ElementId> eleIds = new List<ElementId>();

            foreach (Reference reference in references) 
            {
                eleIds.Add(reference.ElementId);
            }

            XYZ xyz= uIDocument.Selection.PickPoint();
            Plane plane = Plane.CreateByNormalAndOrigin(XYZ.BasisX, xyz);

            ElementTransformUtils.MirrorElements(doc, eleIds, plane, true);


            uIDocument.Selection.SetElementIds(ids);

            transaction.Commit();
            app.DocumentChanged -= DocumentChanged;

            //

            return Result.Succeeded;
        }

        public void DocumentChanged(object sender,DocumentChangedEventArgs e)
        {
            ids.AddRange(e.GetAddedElementIds());

        }
    }
}

六 阵列


线型阵列LinearArray
将一个元素阵列:
LinearArray Create(Document,View,Elementld,int,XYZ,ArrayAnchorMember);
将多个元素阵列:
LinearArray Create(Document,View,ICollection<Elementld>,int,XYZ,ArrayAnchorMember );

ArrayAnchorMember参数说明:
//Second是每个阵列之间距离按照设置的向量来如设置向量距离1000毫米则每个阵列的元素之间距离为1000毫米
//Last是阵列后最后一个到第一个的距离按照向量来如设置向量为1000毫米则阵列的第一个到最后一个距离为1000毫米

using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;

namespace Selection
{
    [Transaction(TransactionMode.Manual)]
    public class LinearArrayTest : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            //UIApplication表示一个活动的Revit@会话,提供了对UI定制、事件以及活动文档的访问。
            UIApplication uIApplication = commandData.Application;
            //Application类表示一个Revit应用,提供对文档、选项以及其他应用范围的数据的访问和设置。
            Application app = uIApplication.Application;
            //主要包含了跟UI相关的文档信息和操作,比如Active View和ShowElement
            UIDocument uIDocument = uIApplication.ActiveUIDocument;
            //用与存储Revit的元素、管理视图和数据
            Document doc = uIDocument.Document;

            //阵列
            Transaction transaction = new Transaction(doc, "阵列");
            transaction.Start();
            IList<Reference> references =uIDocument.Selection.PickObjects(ObjectType.Element);
            List<ElementId> eleIds = new List<ElementId>();

            foreach (Reference reference in references) 
            {
                eleIds.Add(reference.ElementId);
            }
            View view = uIDocument.ActiveView;

            ElementId[] elementIds = eleIds.ToArray();
            ElementId element = elementIds[0];  
            //XYZ xyz= uIDocument.Selection.PickPoint();

            LinearArray linearArray= LinearArray.Create(doc, view, element, 5, XYZ.BasisX*1000.0.Tofoot(), ArrayAnchorMember.Second);
            
            transaction.Commit();

            //

            return Result.Succeeded;
        }
    }
}

七 元素参数Parameter

1)获取参数
        元素都有参数,可以通过Element.Parameters获取所有的参数,然后遍历找到需要的参数。代码片段3-4展示如何遍历找到一个元素的“长度”参数。

        也可以通过Element.get_Parameter(参数)来获取单个参数,这里“参数”有四种选择:string参数名字、BuiltInParameter参数枚举、Definition参数定义和Guid参数的guid。

        注意:使用元素名字查找元素的时候,需要注意本地化的问题,因为不同语言的Revit版本的参数名字是不一样的,比如中文版的叫“长度”的参数,英文叫“Length”,同样的程序(比如上面的例子),在英文里面就会出问题。对此,我们建议尽量使用BuiltInParameter。
        效率上讲,最高的是BuiltlnParameter参数,其次是Definition和Guid,最慢的是使用参数名字。

2)修改参数
获取到参数之后,进行修改就比较简单了,直接调用Parameter.Set(参数)这个函数。

3)共享参数和项目参数
我们知道Revit@除了有内建的参数(BuiltInParameter),还允许用户自定义参数,分别是:共享参数和项目参数。

4)共享参数
共享参数被定义在Revit@之外的一个共享参数文件(.txt)中。删掉这个文件,共享参数就会丢失。
在界面上,共享参数好像是一系列的参数,但是实际上只是一些参数的定义,比如参数的名字、类型、分组等。直到把它们绑定到Category之后,对应的元素才会出现新的参数。而此时,从某种意义上说,绑定之后的共享参数实际上变成项目参数。
在API里面,参数的定义对应的类是Definition。

5)项目参数
项目参数保存在Revit⑩里,所以删除共享参数或者共享参数文件,都不会对项目参数产生影响,哪怕项目参数是通过共享参数创建的。项目参数在创建的时候,就已经和类别绑定了。也就是说和类别对应的元素都加上了新的参数。
 

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

namespace Revit_CreatInstane
{
    public static class ShareParameter
    {
        public static void CreateShareParameter(UIApplication uIApplication, string ParameterName,BuiltInCategory builtInCategory)
        {
            var path = @"E:\Revit02\Revit_SetParameter\Test\para.txt";
            Document  document= uIApplication.ActiveUIDocument.Document;

            CheckPath(path);
            //创建共享参数文件
            uIApplication.Application.SharedParametersFilename = path;
            //打开共享参数文件
            var definitionFile = uIApplication.Application.OpenSharedParameterFile();
            //找到并创建组
            DefinitionGroup group = null;

            if(definitionFile.Groups.get_Item("参数组测试MK3")==null)
            {
                group = definitionFile.Groups.Create("参数组测试MK3");
            }
            //设置参数类型并创建参数名
            var option = new ExternalDefinitionCreationOptions(ParameterName, ParameterType.Text);
            var definitions = group.Definitions.Create(option);

            //绑定到固定元素类型

            var categorySets=new CategorySet();
            var categorySet = document.Settings.Categories.get_Item(builtInCategory);
            categorySets.Insert(categorySet);
            var parameterGroup = BuiltInParameterGroup.PG_LENGTH;

            var binding = uIApplication.Application.Create.NewInstanceBinding(categorySets);
            //参数名,绑定,参数数据类别
            document.ParameterBindings.Insert(definitions, binding, parameterGroup);

        }

        private static string CheckPath(string path)
        {
            if (File.Exists(path))
            {
                return path;
            }
            else
            {

                StreamWriter newPath = File.CreateText(path);
                newPath.Close();
                return path;
            }
        }
    }
}


八 认识向量和方向


1.向量是XYZ ,向量是包含距离的,向量就是 方向*距离即XYZ.BasY*100mm即为向上100毫米
2.方向也是XYZ,方向没有距离,XYZ.BasY就是方向
3.线是点组成的,Line的也有方向,方向是点1到点2,即0点到1点
4.XYZ BasisX、  XYZ BasisY 、XYZ BasisZ、XYZ Zero表示  向右方向、平面向上方向、三维向上方向、0点
5.Negate()表示反方向  如XYZ.BasisX.Negate()==-X
6.  点+方向*距离=新的点如XYZ*(XYZ.BasisX)*100MM=XYZ2
7.(点+点2)/2=两个点的中心点,即(XYZ+XYZ2)/2=XYZ3
8.点-点2=点到点2的向量,即XYZ-XYZ2=XYZ向量.也可用Subtract方法

Revit二次开发—获取内置参数对应的中文字符串,并导出Excel;举例(BuiltParameterGroup、ParameterType和BuiltInCategory) 参考文章: 原文链接: http://blog.youkuaiyun.com/joexiongjin/article/details/10149127 作者: 叶雄进 , Autodesk ADN 实现代码 using Autodesk.Revit.DB; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Selection; using Autodesk.Revit.Attrib. 阅读详情

相关推荐

Autodesk Revit软件二次开发:Revit二次开发中的事件处理机制

Revit提供了多种事件类型,涵盖了从模型操作到用户界面的各个方面。理解这些事件类型是有效利用Revit API的关键。在Revit二次开发中,我们不仅可以监听和响应Revit内置的事件,还可以创建自定义事件,以满足特定的开发需求。

kkchenjj的博客 1183

Revit API之镜像变换研究【BIM】

在这篇文章中,我们将研究Revit API中的Instance.GetTransform方法。 Revit API 中的Instance.GetTransform方法 不包括反射,下图展示了一个被镜像的族实例以及等效的 GetTransform 值: 下面是Python代码: import sys import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * data= UnwrapEle

新缸中之脑 908

Revit 2020 API 文档说明书

Autodesk Revit 2020 API官方帮助文档,里面有Revit所有的API接口调用方法及说明,能够帮助开发者快速查询Revit API的类和方法,对Revit二次开发很有帮助。

显示ParameterType和Parameter Group中文标签

本篇文章我们来聊聊 ParameterType 和 Parameter Group 这两个节点,因为每次使用的时候,都特别的痛苦,明明 Revit 里是显示中文的,可是这两个节点显示下拉菜单里,显示的却是英文,而且 Parameter Group 显示的更是 Butitin Parameter,是以 PG 开头的显示方式,对于英文不好的我,简直是太痛苦了。。。 那么,有没有办法,获取 ParameterType 和 Parameter Group 的中文名称?答案,当然...

BIM的乐趣 707

Revit 2014 API 帮助文档.chm

Revit 2014的API文档。二次开发必备

【小宁学习日记6 PCB】电路原理图

本文系统讲解了电子硬件设计中原理图的阅读与绘制技巧。首先剖析原理图的四大核心要素(元件符号、连接线、结点、注释),强调注释对可读性的重要性。然后提出三步读懂法:查看图纸信息、分模块分析、结合芯片手册验证,并列举5个典型芯片案例(CH224K、CH343P等)进行实战解析。最后给出6条绘制规范:模块化布局、详细标注、规范命名、信号流布局、符号封装匹配、版本管理。文章指出原理图是电子设计的"地基",掌握规范阅读与绘制方法能大幅提升设计效率,避免常见错误。新手应从开源项目分析和简单电路绘制入手

qq_74376834的博客 2356

Revit API输出内置参数BuiltInParameter和内置类别BuiltInCategory

【代码】Revit API输出内置参数BuiltInParameter和内置类别BuiltInCategory。

硬核小青年的博客 1778

从SPI协议到文件系统:手把手教你用HAL库给W25Q16移植FATFS(附扇区管理优化方案)

本文详细介绍了如何在STM32平台上,通过HAL库的SPI接口为W25Q16 Flash芯片移植FATFS文件系统。文章从SPI通信基础讲起,深入解析了FATFS底层驱动(diskio.c)的移植要点,并重点探讨了针对W25Q16的4KB物理扇区特性进行扇区管理优化的两种方案,旨在帮助开发者构建稳定高效的文件存储方案。

happy2的博客 1043

RevitAPI之深入了解组(Group)和应用组

关于组的概念

广州比目鱼的博客 4868

DSP28377内存不够用?手把手教你合并RAM/FLASH块,解决CCS20链接器报错

本文详细介绍了在CCS20开发环境中解决DSP28377内存不足问题的方法,通过合并RAM/FLASH块优化CMD文件配置,有效解决链接器报错。文章包含内存布局对比、改写步骤、FreeRTOS集成注意事项及调试技巧,帮助开发者提升内存利用率与项目性能。

weixin_42524762的博客 143

DOTween回调函数的隐藏技巧:优化你的Unity动画流程

本文深入探讨了DOTween回调函数在Unity动画开发中的高级应用技巧,帮助开发者优化动画流程。通过分析回调机制、链式应用模式和大规模动画系统管理,提升性能与可维护性,特别适合需要高效处理复杂动画场景的Unity开发者。

weixin_27945229的博客 319

【Revit二次开发】旋转元素的方法

ElementTransformUtils.RotateElement(doc, ElementId, line, angle); Line:Line line = Line.CreateBound(xyz , xyz + XYZ.BasisZ * 1); xyz为元素自身的坐标点 ,即在XY平面内元素以自身插入点为中心旋转。 ...

qq_36208169的博客 2911

CANoe.DiVa的应用——生成测试用例过程流程详解(一)

Diva 生成用例过程

LOVE135149的博客 7926

RevitAPI: 注意Revit 2016事件注册和注销行为的改变

在以前的Revit版本中, 我们可以在一个非模态对话框中注册或者注销一个事件,但是Revit 2016做了一些改变,不再允许这样做,凡是在非Revit主线程里面的注册或者注销事件,系统会抛出异常,如果您没有捕获这个异常,将会导致系统崩溃。 官方的原话是这样的: API events - behavioral change Although the Revit API has

BIM背后的技术 5361

大模型风电功率预测:短期,超短期,中长期的完整实现与代码详解

本文全面介绍了基于深度学习大模型的风电功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)三种时间尺度。文章详细阐述了数据准备与特征工程,包括数据收集、预处理和可视化分析。针对不同时间尺度,分别介绍了Temporal Fusion Transformer (TFT)、Informer和N-BEATS模型的构建、训练与评估方法,并提供了完整的开源代码实现。此外,文章还探讨了模型部署与生产环境集成,包括模型保存与加载、实时预测API以及模型监控与再训练。最后,文章总结了关键创新

专注AI大模型,软件混淆,授权 1892

Unreal5 从入门到精通之 如何实现 离线语音识别

本文介绍了如何使用离线语音识别插件 Offline Speech Recognition 进行本地语音转文本处理。该插件支持离线运行,用户可以通过下载并运行语言服务器(如 Vosk)来处理语音数据。文章详细说明了如何设置语言服务器、下载语言模型,并在虚幻引擎(UE)项目中配置麦克风和语音捕获。此外,还介绍了如何将 SoundWave 作为输入,以及如何通过节点将语音数据发送到语言服务器进行处理。最后,提供了相关文档链接以供进一步参考。

TxNet 907

Revit二次开发之 有点时间 分析一下Reference

Reference 是Revit对象的引用 也是二次开发必须了解和熟练掌握的技能之一,对象引用包括 图元基础引用 可以根据此引用 实现图元转化 参数信息过滤和设置,此外对于标注来说更重要的是 Face-面引用 Curve-线引用 Point-点引用。 那么根据Revit版本的不同对象的引用获取 也会有所不同 需要查找API做相应的匹配,如 轴线的引用在2014版时还可以通过点引用获得Grid g...

u010585773的专栏 3622

【CAN总线测试】——使用VH6501 进行Busoff快慢恢复测试

即在IDBase中填标准帧11位二进制ID,如果不满11位,高位补零,凑齐11位,并将下方CurrTriggerField设置干扰前一位AckSlot位,Triggeroffset设置为0。首先确认环境支持VN6501,6501硬件连接成功后,工程的小闪电是正常黄色状态,若是灰色证明缺少License,或者软件安装环境不正确。填写干扰报文ID、干扰位置 注意这里的干扰位置是实际干扰的前一位,TriggerOffset表示偏移量,可以干扰某个字节的具体位.找到并打开Panel后,开启工程,并且配置面板。

LOVE135149的博客 5633

关于ElementTransformUtils.RotateElement方法的顺时针/逆时针旋转

Revit API 二次开发 ElementTransformUtils RotateElement 旋转 顺时针 逆时针

ct3747的专栏 1653

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Revit API 开发 (6): 构件的复制移动旋转等操作 - ElementTransformUtils Class

摘要 通过 Revit API 来对模型中的构件进行移动和旋转等操作是一个非常基本的需求。Revit API 当然也提供了这个功能,并且把它打包在一个类中,方便开发者使用。这个类就是 ElementTransformUtils。 细节 先从一个例子开始,然后介绍类 ElementTransformUtils。 例子 可以直接打开 Revit 的“宏”这项功能,把下面这段代码贴上去,编译完成之后,就...

极客BIM工作室 2486

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Revit二次开发之移动元素【比目鱼原创】

API提供了移动元素的方法,可以把一个或者几个元素从一个地方移动到另一个地方 使用起来比较简单,但是有几个需要注意的地方:

广州比目鱼的博客 2531

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RevitAPI之镜像(Mirror)一个元素

要镜像一个元素,首先判断这个元素是否支持镜像。 可以使用两个辅助方法

广州比目鱼的博客 1794

【RevitAPI】BuiltInParameter 枚举项

偶然间看到jeremytammik博客【Built-in Parameter Name and LabelUtils】点此链接 发现Revit中枚举项,都可以用LabelUitls转成本地语言(中文) 参数枚举(BuiltInParameter.Model)如下: (请注意:Revit2017版本) REBAR_SHAPE_ENDTREATMENT_END_TYPE 终点的端...

piao110liang的博客 5733

RevitAPI: Level标高无法被删除

有Revit用户发现,创建的标高始终无法删除,不管是使用界面还是API。 使用API的话,会抛出下面的异常: Autodesk.Revit.Exceptions.ArgumentException: ElementId cannot be deleted. 答案 Revit工程里面必须至少有一个标高,所以,最后一个标高是永远无法删除的。除非我们再创建另外一个标高,方可把本标高删除。

BIM背后的技术 4671

怎么对Revit族三个方向旋转

对revit族三个方向旋转 做原始族: 放到基于面的族模板上: 创建公制常规模型, 左视图方向如下: 注意: 使用工作平面; 先画角度, 再标注角度, 创建 “绕X轴旋转角度” 参数; 使用点面约束将模型线的一端约束到原点, 以约束工作平面使它通过原点; 设置工作平面, 并放置到工作平面上; 放到基于面的族模板上, 并设置工作平面为XY平面, 并导出参数, 做法同步骤2 使用公制常规模型, 创建 “绕Y轴旋转角度” 参数, 前视图方向, 做法同步骤3 使用公制常规模型, 将参数

闭目鸽的天空 8562

Revit API 开发(13): Revit API 文件打开、关闭和保存操作

*如果是最后一个打开的文件,那么,它是不能被关闭的。文件的关闭和保存,本质上是连在一起的。通常,如果用到了这些事件,那么说明你的应用已经相当复杂了,很可能实现的方式采用的是IExternalApplication。// 在 OnStartup 的时候添加,处理函数,在 OnShutdown 的时候去掉自己添加的处理函数。// 这里是 DocumentOpened,那么是文档已经被打开了,所以它的内容应该是有效的。然而,很多时候打开文件的时候,我们还想做一些其它的操作,那么该怎么办呢?

biyusr的专栏 892
上一篇: RevitAPI(三) 过滤器
下一篇: RevitAPI(五) 建筑建模
DaggerL2
博客等级 码龄3年 94粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值