- 博客(21)
- 收藏
- 关注
原创 #Revit二次开发# 创建能够循环执行的窗口功能(五)
接上一篇https://blog.youkuaiyun.com/qq_29143307/article/details/116238456?spm=1001.2014.3001.5501在界面上再增加一个按钮,按下按钮时,再循环体内执行功能,即可实现 选择->执行功能->再选择的闭环了再按钮按下后,将状态设置为执行功能,向revit发送退出信息,退出选择状态。 private void button1_Click(object sender, EventArgs e) {
2021-04-28 18:13:31
612
2
原创 #Revit二次开发# 创建能够循环执行的窗口功能(四)
接上一篇https://blog.youkuaiyun.com/qq_29143307/article/details/116237803一个功能可能需要支持不同的选择模式,比如简单的点选,框选,或者不需要选择(选择了全部)集成在一个功能界面。比如:循环体改写如下,实现三种状态: while (true) { try { var con
2021-04-28 17:44:40
478
原创 #Revit二次开发# 创建能够循环执行的窗口功能(三)
接上一篇https://blog.youkuaiyun.com/qq_29143307/article/details/116236773在实际开发过程中,循环使用的功能,必然伴随对revit窗口中构件的操作,所以需要将功能窗口放置再revit窗口的角点位置,四个点中,左上角时最容易实现的,不需要进行计算(坐标系的特性),比如如果想放置再右上角角点,计算到右上角点坐标后,还需要减去功能窗口的宽度,才能得到功能窗口放置的坐标。所以以左上角点为例:首先需要得到revit当前的活动窗口,通过接口得到坐标点
2021-04-28 17:07:27
422
原创 #Revit二次开发# 创建能够循环执行的窗口功能(二)
https://blog.youkuaiyun.com/qq_29143307/article/details/116235371?spm=1001.2014.3001.5501接上一篇,再循环选择的功能窗口中增加自定义的过滤设置:首先,需要实现revit的过滤接口:ISelectionFilter,实现接口内的成员函数在自己实现的AllowElement和AllowReference可以根据需要实现丰富的过滤条件。但根据业务需求可能往往过滤要求各不相同,所以我选择使用委托处理,在委托中根据业务实现
2021-04-28 16:52:40
380
原创 #Revit二次开发# 创建能够循环执行的窗口功能(一)
核心思路是制造循环调用revit选择构件的API;源码: while (true) { try { var refter = Selection.PickObject(ObjectType.Element, "请点选墙体!"); var wall = doc.GetElement(r.
2021-04-28 16:22:13
368
原创 #Revit二次开发#内部单位转化
revit的内部单位是极其丰富的。很多时候需要用到单位转化。内部使用的单位有在Autodesk.Revit.DB.DisplayUnitType类中有200多个数据都在这个类中。通过操作类Autodesk.Revit.DB.UnitUtils 可以进行判断,转化等需要的操作。这两个类可以自己去看API的说明。此次做的一个简单的测试是,界面上输入的1 ,对应的各个类型单位值是多少...
2019-09-17 16:18:33
1365
原创 #Aspose.Words# Aspose.Words插入标签值,复制表格,修改单元格内容,插入图片
/// <summary> /// 给指定的wodr文档的标签插入值 /// </summary> /// <param name="builder"></param> /// <param name="bookmark"></param> ...
2019-09-10 16:09:52
2266
1
原创 #Revit二次开发# 调用RevitAPI实现清理未使用项
首先感谢不知名的某个大神提供的类 PerformanceAdviser,不然都没法研究这个类,明显就是有关性能管理的类,而且是个单例。通过接口,得到所有的规则,可以查看到每个规则代表的意思,1, 名称: 视图剪裁处于禁用状态, 描述: 视图剪裁被禁用。视图可能会生成与图元无关的图形,这需要额外的时间。,Guid: b37b2ae0-6eab-423d-bec7-59c55...
2019-09-09 17:00:17
2026
5
原创 #Revit二次开发# 创建剖面视图
设置box的min和max只是设置box的范围大小。其中min和max的xyz方向的大小实际指的基于剖面视图坐标系。Box的原点和min,max可以确定位置关系;box的原点决定创建的剖面视图的原点。剖面视图的原点在剖面线上的一端。设置一个从左往右看的剖面视图:默认数值的情况下,box的min和maxbox的中心点Orgion是(0,0,0),此时原点:从左往右看,右下角是剖...
2019-09-03 11:22:57
3341
5
原创 WPF Button的属性 Content绑定字符串失败
对于button的使用一般都不会涉及需要将content属性做绑定数据的操作。所以在网上也找到的有关资料也比较少。现在我有一种需要,一个按钮显示的Content是根据绑定的字符串来的。
2017-06-28 11:18:06
5342
原创 新建一个WPF应用程序都有啥
使用VS2013,新建一个类型为WPF应用程序的项目。默认的文件引用如上图。第一行的Properties,其实就是项目的属性,保存项目的设置,AssemblyInfo,项目的版本信息Resources,双击文件可看到说明,这是项目的强制资源类。 /// /// 一个强类型的资源类,用于查找本地化的字符串等。 /// /
2017-06-07 10:19:15
1252
原创 Revit如何判断两个Element是否相交
在Revit中,构件类型的基类是Element的都有这样一个接口 public BoundingBoxXYZ get_BoundingBox(View A_0);获取的就是某个视口下的外包。一般来说使用的时候都选择当前活动视口,如果有其他需要另当别论。但是BoundingBoxXYZ这个类中并不存在判断和另一个外包是否相交的接口,但是我发现Outline这个类型有public
2017-04-13 18:02:42
4122
原创 讲道理,快速排序不是应该比希尔排序更快吗?
但是我写的代码测试出来确实希尔排序比快速排序快得多,这是为什么呢?而且没对快速排序优化之前,两次递归,很容易栈溢出,崩溃这是为什么呢?上代码://希尔排序templatevoid ShellSort(T* pArr ,int nLength){ //设置增量,做插入排序,分组有序,最后全部有序 int i,j,nIncrement=nLength; do { //分组
2016-06-14 14:16:01
1975
2
原创 归并排序
自己写得归并排序,做法有不同,没有构造临时数组接收数据,仍然是在原数组上做数据的交换。不知道性能上有没有影响。//归并排序templatevoid MSort(T * pArr,int nStart,int nEnd){ //划分只有一个的直接返回 if(nStart == nEnd) return; //如果有两个,比较两个数的大小 if(nStart+1 == n
2016-06-13 18:12:05
237
原创 基本的排序算法
时间复杂度都为O(n2),改良的冒泡算法,简单选择排序算法和插入算法//改良的冒泡排序templatevoid BubbleSort(T* pArr,int length){ if(!pArr) return; int i,j; bool flag =true; for (i=0;i<length&&flag;i++) { flag=false; //由后往前比较
2016-06-13 14:56:57
232
原创 我理解的最大堆排序
最近在研究排序算法,自己写了个函数模板templatevoid HeapAdjust(T*pArr,int index, int nLength){ //假设整个数组是以第一个元素为根节点的二叉树,要构成最大堆,调整index位置元素的最终位置 if(!pArr) return; T temp =pArr[index]; //从左子节点开始查找,下标从0开始,左孩子一定是2*i
2016-06-13 13:08:39
378
原创 vs上提示找不到msxml4.dll的解决办法
我在用软件NotePad++编辑过xml文件后,打开vs编译项目不能通过,出现无法打开类型库文件:“msxml4.dll”: No such file or directory的错误提示。网上说是msxml4.dll模块被更高级别的msxml6.dll替代了,把msxml4.dll换成msxml6.dll即可。这是一种解决办法,但如果是多人合作的项目,这并不合适,不可能让别人也随你一起改。还有
2016-05-06 17:32:14
3422
原创 出现LINK状态下无法解析的符号
.h和定义部分和.cpp文件中的声明部分是一一对应的关系,如果在.h中定义了某个函数,在cpp中没有相应的实现。LINK就会找不到对象而出现无法解析的链接错误。还有一种情况是跨模块使用了,一个模块依赖使用另一个模块的函数或者类,被依赖的模块类型就不是导出的。也会在链接阶段找不到对象出现链接错误
2016-05-06 11:26:39
490
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人