自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (4)
  • 收藏
  • 关注

原创 感谢帮我的人们(Revit二次开发)

今天在某网站看到蛋总的免费资源被某些人拿来抄袭后改头换面,并以高价出售,感觉特别来气;作为蛋总免费分享资源的受益者,突然感慨万千,以这篇文章来表达一些自己的看法,希望作为Revit二次开发的爱好者在学习免费资源的同时能够有所自省,请拥有最起码的职业道德。1、从来没有公开对蛋总说过感谢的话,感觉亏欠良久,在这里首先感谢蛋总(DikyEggs)的《小火车Revit二次开发教程 》,感谢蛋总;同时感谢BIMCC云课堂网站。作为Revit二次开发的引路人,从中我从一个零基础的建模员成功入门Revit二次开发,并自

2020-09-23 08:47:00 465

原创 使用NSIS制作多版本Revit插件(Revit二次开发)

因为VisualStudio中微软官方的程序打包工具,无法实现Revit多版本插件的制作,所以我选择了NSIS来制作多版本插件。一、使用NSIS向导创建脚本1.1、打开NSIS的VNISEdit(需要使用管理员权限来运行NSIS)1.2、使用新建脚本:向导创建一个脚本在向导界面,我们可以根据自己的需求,来更改应用程序的相关信息,比如:应用程序名称、应用程序版本、应用程序出版人、应用程序网站、应用程序图标、安装程序图标、安装程序文件名称、安装程序语言、用户图形界面、压缩算法 等信息。1.3、应用

2021-06-19 11:04:31 806

原创 从SQL Server中批量读取数据到Revit(Revit二次开发)

在进行Revit的二次开发中,经常会从数据库中提取数据,来辅助插件的运行,下面就以批量创建墙为例,说说到底该如何从SQL Sever中取出数据。一、在数据库中创建表对于需要从数据库中读取的数据,我们先在数据库中创建对应的表:并且把表的列设计好:二、在类库中创建对应的类在我们写的插件中,创建一个单独的类,来和数据库的各项对应起来:public class WallInformation { //墙的ID public int WallID { get;

2021-06-12 08:50:19 984 7

原创 SQL Server 2019 开启数据库远程访问

连接本地数据库(SQL Server 2019) 时,或者是需要让其他电脑也能访问本机的数据库的时候,出现无法连接到本地服务器的错误。这个时候我们就需要配置远程访问了。我们需要做如下配置:一、开启数据库的服务以及配置SQL Server网络协议1.1 打开开始菜单中的SQL Server配置管理器1.2将SQL Server(MSSQLSERVER)和SQL Server Browser 的启动模式改为自动1.3启用NamdePIpes 以及TCP/IP协议在SQL Server网络配置下拉菜

2021-06-11 10:30:06 8362 4

原创 Revit SDK 及LookUp 各版本下载地址

版本链接RevitLookup源代码(可能需要科学上网)https://github.com/jeremytammik/RevitLookupRevitLookup dll(可能需要科学上网)https://github.com/jeremytammik/RevitLookup/releasesRevit 2021.1 SDK (Update July 29, 2020)https://damassets.autodesk.net/content/dam/autodes...

2021-04-12 18:07:02 2698

原创 获取电脑软件的路径(C#)

需求碰到一个需求,要获取电脑上安装软件的安装路径或者卸载路径,在网上找了一圈,基本都是通过注册表查找计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ 这个项,然后根据应用名,后加后缀“.exe”来取得这个exe文件的路径,但是这就有一个问题,有部分软件无法通过这个来找到,比如说超图(SuperMap),程序已经在电脑上装上了,可是在对应的注册表项里面找不到。思路这时我就想到,通过卸载项来找到文件

2021-01-21 09:59:28 1811 1

原创 从族实例(FamilyInstance)中取得几何对象(GeometryObject)(Revit二次开发)

几何对象(GeometryObject)根据Revit API 文档,我们可以得到下面的结构图。既然是几何,那就逃不过点、线、面、体、这些概念。对应的点、线、面、体:点: Point线: Curve、 Edge、PolyLine、Profile面: Face、Mesh体: SolidGeometryElement 和 GeometryInstance 是GeometryObject的集合。GeometryObject也是这些类的基类。几何实例(GeometryInstance)几何实

2021-01-13 20:02:13 2986 2

原创 编码去0的方法(C#)

遇到了一个需求,要把“12000.00001.00010.00032.00100” ; “00145.00002.12005.07042” ;“05439.07008.02070” 这样的编码转换成“12000.1.10.32.100” ; “145.2.12005.7042” ;“5439.7008.2070” 这样的形式。分析乍一看这个需求并不难,只是简单的把0移除就行了,但是仔细思考一下,如果是简单的用Replace方法来做,那就会让10,100这样的数字变为1,所以得自己写一个方法。先考

2020-12-30 18:59:34 1810 9

原创 通过List创建TreeView(C#)

示例今天需要通过Excel来创建一个TreeView,并且建立相应的节点。我们先建一个自定义类,继承了IComparable接口,可以很方便的比较大小public class WbsNode : IComparable<WbsNode> { public string WBS { get; set; } public string TaskName { get; set; } //此处为比较WBS用,为后期做准备 pu

2020-12-28 17:55:51 1607

原创 Dictionary详解(C#)

Dictionary定义在C#中,Dictionary能提供快速的基于键值的元素查找。我们先来看一下源代码:public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, ID

2020-12-23 16:04:40 6415 2

原创 向量运算(Revit二次开发)

Revit作为一款三维建模软件,表达的是各种结构的空间关系,二次开发中自然也包括大量的向量计算,最后发现,开发到最后都是在跟数学打交道。Revit 的API里提供了很多向量的运算方法,方便开发人员应该熟练使用,让自己以后写方法更得心应手。Revit API文档里面的方法:方法名解释Add向量相加AngleOnPlaneTo向量和指定平面的夹角AngleTo两个向量之间的夹角CrossProduct两个向量之间的叉乘(结果为两个向量构成平面的法向量,遵守右

2020-12-08 15:00:31 1324

原创 创建自适应族(revit二次开发)

自适应族被广大的Revit用户喻为Revit特强大的宝剑之一。关于自适应族的特性请大家看Revit的相关文档。Revit同时也开放了API来创建自适应构件族,也可以用API来生成自适应构件对象。Revit提供了AdaptiveComponentFamilyUtils类来处理与创建族相关的功能,提供了10多个方法。具体请看RevitAPI.chm中的说明。下面列出了如何创建一个自适应构件族的代码。 (摘自RevitAPI.chm)自适应族的创建于普通族很不一样,可以从代码了解创建步骤和用到的方法。p

2020-12-01 19:08:10 1754

原创 StaticResource(静态资源)与DynamicResource(动态资源)(WPF)

一、资源(Resource)的定义资源是保存在可执行文件中的一种不可执行数据。在WPF的资源中,几乎可以包含图像、字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性。也就是说,应用程序中非程序代码的内容,比如点阵图、颜色、字型、动画/影片档以及字符串常量值,可将它们从程序中独立出来,单独包装成"资源(Resource)"。资源的范围(层级):WPF提供一个封装和存取资源(resource)的机制,我们可将资源建立在应用程序的不同范围上。WPF中,资源定义的位置决定了该资源的可用范

2020-11-18 19:01:34 2927

原创 用程序包管理器控制台管理项目的NuGet包

每个项目目录下都有自己的packages.config文件,它用来记录本项目所依赖的程序包,它是一个XML格式的文件,我们可以看下如下的一些内容当我们做项目迁移时,你的NuGet包可能会有丢失的现象,或者你的项目在迁移时没有复制packages这个包包目录,这时,我们可以通过命令将所有packages.config里的包包还原的指定的项目上.用NuGetPowerTools还原你的包包PM> Install-Package NuGetPowerTools //安装工具NuGetPowerToo

2020-11-18 10:24:48 375

原创 使用集合对象作为列表控件的ItemsSource(WPF)

ItemsSource定义WPF中的列表式控件们派生自 ItemsControl类,自然也就继承了 ItemsSource这个属性。ItemsSource属性可以接收一个 IEnumerable 接口派生类的实例作为自己的值(所有可被达代遍历的集合都实现了这个接口,包括数组、List等)。每个 ItemsControl的派生类都具有自己对应的条目容器( Item Container),例如, ListBox的条目容器是 ListBoxItem、 ComboBox的条目容器是ComboBoxItem. I

2020-11-17 10:39:52 3464 1

原创 Binding的数据转换(WPF)

数据转换(Data Convert)原理Binding还有另外一种机制称为数据转换( Data Convert),当 Source 端Path所关联的数据与 Target端目标属性数据类型不一致时,我们可以添加数据转换器( Data Converter)。前面的例子中我们都使用 Binding在 Slider控件与 Textbox控件之间建立关联 Slider控件作为 Source(Pah是 Value属性), Textbox控件作为 Target(目标属性为Text)。 Slider的 Value属性是

2020-11-17 09:57:09 1465

原创 Margin属性详解(WPF)

margin属性代表该控件对于其他控件的距离例如 :margin=“10”代表此控件在上下左右任一方向对于其他控件的距离都为10像素;margin=“10,0”代表此控件在左右、上下两个方向对于其他控件的距离都为10像素;margin=“10,20,30,40”代表此控件在左上右下四个方向对于其他控件的距离分别为10,20,30,40像素。...

2020-11-16 19:46:03 3593

原创 List排序Sort和OrderBy方法(C#)

Sort和OrderBy的定义比较1、List.Sort()排序:Sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和堆排序。系统会根据你的数据形式和数据量自动选择合适的排序方法,这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法,比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的太深,他会选择堆排序。说明:  a. 使用Sort排序时,有可能

2020-11-15 18:21:51 33071

原创 XAML中 x:Name和Name的区别

x:Name的作用有两个:(1)告诉XAML编译器,当一个标签带有x:Name时除了为这个标签生成对应实例外还要为这个实例声明一个引用变量,变量名就是x:Name的值。(2)将XAML标签所对应对象的Name属性(如果有)也设为 x: Name的值,并把这个值注册到UI树上,以方便查找。先说结论:XAML中x:Name与Name并不完全等价。不是所有类型都可以使用Name,但是任何类型都可以使用x:Name。只有拥有Name属性,才可以在XAML中使用Name。不同于x:Name,因为这个是附

2020-11-03 16:30:24 1786

原创 理解Attribute和Property的区别(XAML)

这两个词的混滑由来已久。混淆的主要原因就是大多数中文译本里既把 Attribute译为“属性”,也把 Property译为“属性”。其实,这两个词所表达的不是一个层面上的东西。Property属于面向对象理论范畴。在使用面向对象思想编程的时候,常常需要对客观事物进行抽象,再把抽象出来的结果封装成类,类中用来表示事物状态的成员就是 Property。比如要写个模拟赛车的游戏,那么必不可少的就是对现实汽车的抽象。现实中的汽车身上会带有很多数据,但在游戏中可能只关心它的长度、宽度、高度、重量、速度等有限的几个数

2020-10-30 10:13:17 362

原创 C#参数类型总结

因为有4种参数类型,有时很难记住它们的不同特征。下表对它们做了总结,使之更易于比较和对照参数类型修饰符是否在声明时使用是否在调用时使用执行值类型无系统把实参的值复制到形参引用类型ref是是形参是实参的别名。输出类型out是是仅包含一个返回的值。形参是实参的别名。数组类型params是否允许传递可变数目的实参到方法...

2020-09-29 13:15:02 329

原创 C#参数详解五(参数数组)

参数数组前面所述的参数类型都必须严格地一个实参对应一个形参。参数数组则不同,它允许零个或多个实参对应一个特殊的形参。参数数组的重点如下:在一个参数列表中只能有一个参数数组。如果有,它必须是列表中的最后一个。由参数数组表示的所有参数都必须具有相同的类型。声明一个参数数组必须做的事如下:在数据类型前使用 params修饰符。在数据类型后放置一组空的方括号。下面的方法头展示了int型参数数组的声明语法。在这个示例中,形参 invasi可以代表零个或多个int实参。void ListIn

2020-09-29 13:07:39 2492 1

原创 C#参数详解四(输出参数)

输出参数用于从方法体内把数据传出到调用代码,它们的行为与引用参数非常类似。如同引用参数,输出参数有以下要求:必须在声明和调用中都使用修饰符。输出参数的修饰符是out而不是ref。和引用参数相似,实参必须是变量,而不能是其他类型的表达式。这是有道理的,因为方法需要内存位置保存返回值。例如,下面的代码声明了名称为MyMethod的方法,它带有单个输出参数。void MyMethod ( out int val )//方法声明{........(方法体)}...int y = 1;//实参变量

2020-09-28 17:48:50 3496 2

原创 C#参数详解三(引用类型作为值参数和引用参数)

对于一个引用类型对象,不管是将其作为值参数传递还是作为引用参数传递,我们都可以在方法成员内部修改它的成员。不过,我们并没有在方法内部设置形参本身。本节来看看在方法内设置引用类型形参时会发生什么将引用类型对象作为值参数传递 如果在方法内创建一个新对象并赋值给形参,将切断形参与实参之间的关联,并且在方法调用结束后,新对象也将不复存在。将引用类型对象作为引用参数传递 如果在方法内创建一个新对象并赋值给形参,在方法结束后该对象依然存在,并且是实参所引用的值。下面的代码展示了第一种情况:将引用类型对象作为值

2020-09-28 15:54:07 1946

原创 C#参数详解二(值参数和引用参数)

参数值参数参数有几种,各自以略微不同的方式从方法传入或传出数据。讲到现在的这种类型是默认的类型,称为值参数。使用值参数,通过将实参的值复制到形参的方式把数据传递给方法。方法被调用时,系统做如下操作:在栈中为形参分配空间。将实参的值复制给形参。值参数的实参不一定是变量。它可以是任何能计算成相应数据类型的表达式。例如,下面的方法中展示了两个方法调用。在第一个方法调用中,实参是double类型的变量;在第二个方法调用中,实参是计算成double的表达式。double func1 (double

2020-09-28 15:19:50 2235

原创 C#参数详解一(形参和实参)

参数详解参数形参实参值参数我们知道方法是可以被程序中很多地方调用的命名代码单元,它能把一个值返回给调用代码。返回一个值的确有用,但如果需要返回多个值呢?还有,能在方法开始执行的时候把数据传入方法也会有用。参数就是允许你做这两件事的特殊变量。参数形参形参是本地变量,它声明在方法的参数列表中,而不是在方法体中。下面的方法头展示了参数声明的语法。它声明了两个形参:一个int型,一个double型。public void PrintSum( int x, double y )//此处的xy就是形参的声明

2020-09-28 12:47:55 6347

原创 View 视图解析(Revit二次开发)

View 继承结构所有的视图都是继承自 Autodesk.Revit.DB.View,分别对应各种视图类型。View 的实例以官方给的文件为例:楼层平面:ViewPlan三维视图:View3D立面、剖面、详细视图:ViewSection渲染:ImageView图例:View明细表:ViewSchedule图纸:ViewSheet获取 View 的信息视图的基本信息,包括:视图名称,view.Name视图裁剪区域,view.CropBox视图起始点,view.Origin

2020-09-24 15:33:47 2568

原创 获得当前活动文档的SketchPlane(Revit二次开发)

突然遇到一个需要获取SketchPlane的问题,因为平时很少接触这个类,通过查阅资料,略有所得,故写下来我们一般可以通过UIDocument.Document.ActiveView.SketchPlane 来获得当前活动视角的SketchPlane。另外View.SketchPlane 是一个可读写的。我们可以利用这个特性,来赋值一个新的工作平面。代码示例:using System;using System.Collections.Generic;using System.Text;usin

2020-09-24 14:36:17 1230

原创 FamilyItemFactory族组件工厂之体量的创建(Revit二次开发)

首先说一下Revit体量里的放样都有哪些api:1、通过轮廓和方向生成几何体 (拉伸操作)Form NewExtrusionForm(bool isSolid, ReferenceArray profile, DB.XYZ direction);2、通过轮廓线生成面 (融合操作)Form NewFormByCap(bool isSolid, ReferenceArray profile);3、通过面和向量生成体 (旋转操作)Form NewFormByThickenSingleSurface(b

2020-09-24 12:21:57 1611 1

原创 获取Solid(Revit二次开发)

实体类型定义了一个包含了面和边的三维几何实休Solid,如立方体和长方体,同时可以从它的属性中获取对应的表面积和体积。实体的属性见表。属性描述Edges实体的边Faces实体的面SurfaceArea实体的表面积Volume实体的体积有时API可以取到没有任何边和面的空实体,使用前请先检査对应的属性来确保边和面是所需的。以下代码显示了如何找到元素上非空的Solid并且将几何点获取出来:方法示例:private void GetAndTransfor

2020-09-24 11:43:24 1835

原创 获取洞口边界及在墙上开洞(Revit二次开发)

一、洞口类图#mermaid-svg-8CPGxHq9ZTevDBGx .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-8CPGxHq9ZTevDBGx .label text{fill:#333}#mermaid-svg-8CPGxHq9ZTevDBGx .node rect,#mermaid-svg-8CP

2020-09-24 11:14:23 2285

原创 判断一个族实例是否基于面创建(Revit二次开发)

Revit中有些族是不基于面创建,有些族是基于面创建(如窗户基于墙创建等),这时候需要查看该Family的属性【基于工作平面】这个参数进行判断,可以使用lookup查询到FamilyInstance的主体Family,然后在Parameters里查看。下图中可以看到AsInteger值是1,就表示基于墙下图中可以看到AsInteger值是0,就表示不基于任何面这个属性的AsInteger值和AsValueString 的值是一一对应的,有兴趣的小伙伴可以把各个附着类型自己找来查看一番。判断方法:

2020-09-24 10:27:56 480

原创 C#中this的几种作用

this关键字引用被访问成员所在的当前实例。静态成员函数没有this指针。this关键字可以用来从构造函数,实例方法和实例化访问器中访问成员。不能在静态方法。静态属性访问器或者域声明的变量初始化程序中使用this关键字,这将会产生错误。在类的构造函数中出现的this作为一个值类型表示对正在构造的对象本身的引用。在类的方法中出现this作为一个值类型表示对调用该方法的对象的引用。在结构的实例构造函数中出现的this作为一个变量类型,它表示对正在构造的方法的结构的引用。在实例方法中出现的this作为.

2020-09-23 16:32:54 2279

原创 旋转、镜像、移动、复制元素(Revit二次开发)

有时候会用到需要将元素进行旋转、镜像、移动、复制等操作,由于这个操作不常用,导致很多人不知道怎么做。使用RevitAPI的ElementTransformUtils类进行操作:这是一组实用程序,可用于转换元素(例如,移动,旋转,镜像和复制)。这个类里面的方法都是静态方法,所以使用前不需要实例化。示例:ElementTransformUtils.RotateElement(doc, ElementId, line, angle);为了方便以后使用,现在将这个类公开的方法列出来Name

2020-09-22 20:01:10 2108

原创 Revit中单位转换,英尺转换为毫米(Revit二次开发)

Revit内部基本单位是英尺,如果要获取或设置构件参数数值需要进行单位转换,比如转换为基本的毫米或米等单位此时有两种方法:使用常规方式进行单位换算:1英尺等于0.3047999995367米,等于304.7999995367毫米使用RevitAPI的转换函数进行目标单位的转换:使用UnitUtils函数的public static double Convert(double value,DisplayUnitType currentDisplayUnit,DisplayUnitType desi

2020-09-22 18:32:01 3033

原创 模型坐标系,视图坐标系,族坐标系,链接模型坐标系(Revit二次开发)

在软件操作上看,AutoCAD的所有定位都以坐标来进行。相对的在Revit没有坐标这个概念,Revit里面对象的位置关系都是相对位置关系。但是在Revit内部,坐标是实实在在的。没有坐标无法管理对象的位置。在做Revit二次开发,特别是涉及到几何和位置关系时,需要密切关注对象的坐标,以及不同坐标系之间的坐标转换。Revit里面的几种坐标系:模型坐标系: 也理解为全局坐标系视图坐标系:与模型坐标系之间的转换族坐标系: 在制作族有一个坐标系,族插入到模型中,其中的几何体有自己在模型中的位置,需要进行模

2020-09-22 18:25:08 1260

原创 创建双跑楼梯(Revit二次开发)

今天突然想到,revit中的双跑楼梯对新手来说比较难绘制,于是写了一个小功能来达到这个目的,下面放出没有WPF的代码,如果需要添加WPF界面,请自行添加namespace PersonalTools{ [Transaction(TransactionMode.Manual)] public class CreateStairs : IExternalCommand { public Result Execute(ExternalCommandData comman

2020-09-22 17:40:13 1211

原创 Application、UIApplication、Document、UIDocument的作用详解(Revit二次开发)

Application【指Revit应用】1、获取Revit的版本及产品信息2、共享参数管理UIApplication【指活动的Revit会话】1、UI拓展2、插件管理Document【打开的Revit项目】1、获取位置和场地信息2、管理视图3、获取元素(ElementId、Refenrence、UniqueId)4、文档相关操作(打开、关闭、文件名、路径等)Document类表示打开的Revit的项目。Revit 可以同时打开多个项目,即同时拥有多个Document对象。Doc

2020-09-17 17:21:01 1564

原创 判断点是否在一个闭合轮廓内(Revit二次开发)

用的是几何的线相交的知识,通过以目标点往x轴一个方向做延长线,再判断与这一个闭合轮廓的线相交的情况,通过相交点的数量来最终得出是否在这个闭合轮廓内。方法示例public static class SomeMethod { public static bool IsInsideOutline(this XYZ TargetPoint, List<Line> lines) { bool result = true;

2020-09-17 11:36:30 1239

原创 C#静态变量、局部变量、全局变量、成员变量的区别及使用方法

局部变量:作用域在函数内部,函数执行结束,变量占用的内存会在垃圾回收机制中回收全局变量:作用域在整个类中项目中,使用前需要进行实例化,分配内存空间成员变量:定义在类中的变量静态变量:用statics修饰的变量,通过类名进行调用,不会随着类的多次实例而改变其值,只记录最后一次的值,静态函数只能调用静态变量,静态变量可以被静态函数、非静态函数调用因为C#中没有直接声明全局变量的方法,左移我们可以在一个类中实现静态属性(字段)和静态方法,以此达到C或C++中全局变量和全局函数的效果。public sta

2020-09-17 10:34:07 4728

Revit多版本测试脚本.nsi

NSIS制作多版本Revit插件示例

2021-06-20

Revit与SQLServer数据库的交互(免费下载)

Revit与SQLServer数据库的交互示例文件

2021-06-12

Excel编码工具(免费下载)

Excel编码补0和去0工具源码

2021-01-28

Revit二次开发 Revit2018官方147案例+说明文档+源代码 C#代码(免费下载)

Revit 2018最新二次开发官方案例,147例,含源代码,含说明文档,Revit二次开发学习以及开发必备资源。很多代码都能直接复制使用,代码复用性大,逻辑严谨,值得学习

2020-06-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除