自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 解决插件加载动态库的冲突问题

Revit插件第三方库dll加载冲突

2023-05-21 23:02:05 815

原创 c# 异步编程async、await和Task

c# 异步编程async、await和Task

2023-03-31 16:08:23 858

转载 c#编码规范

C# 编码约定

2023-02-26 00:08:51 219

原创 WPF TreeView 获取SelectedItem

wpf treeview selecteditem

2023-02-12 22:30:31 1308

原创 c#中事件总线的简单实现

观察者,c#,事件,事件总线

2023-02-11 11:32:23 364

原创 Transaction, Regeneration & Journaling

Revit IExternalCommand Attribute

2023-01-31 09:53:35 357

原创 C++拷贝控制1

拷贝构造函数与移动构造函数

2022-11-02 19:56:26 279

原创 GetHashCode与Equals,==以及IEquatable<T>

GetHashCode与Equals,哈希表,C++STL,c#,Dictionary,Distinct

2022-08-01 21:35:02 335

原创 Git之reset、revert和cherry-pick

git 还原 重置

2022-07-29 15:31:45 892

原创 C++ 用sort和unique实现数据的去重

c++去重

2022-07-26 23:32:28 1410

原创 C++ unique_ptr

智能指针unique_ptr常用函数get用途:获取被管理的裸指针。release用途:释放其关联的原始指针的所有权,并返回原始指针,但是并未delete原始指针。res

2022-06-29 23:02:40 3112

原创 现代计算机图形学02---3D变换

现代计算机图形学02---3D变换

2022-06-21 23:47:10 353

原创 现代计算机图形学01---2D变换

现代计算机图形学01---2D变换

2022-06-21 22:53:28 285

原创 C#中的List<T>作为方法参数时的父类子类问题

public Class1() { var parents = new List<Parent>(); Test1(parents); Test2(parents); Test3(parents); var children = new List<Child>(); Test1(children); ...

2021-10-21 22:23:28 1384

原创 c#中的值类型与引用类型

c#中的五大数据类型:1.类(class)2.结构体(strcuture)3.枚举(enumeration)4.接口(interface)5.委托(delegate)其中类、接口和委托属于引用类型,结构体和枚举属于值类型。堆内存与栈内存的知识补充:1.栈(stack),调用方法时,就是在栈中进行的。栈比较小,一般只有1、2M,不小心就会发生stack overflow;2.堆(heap),用来存储对象的实例,可以有几个G大小。3.内存泄露,一个对象如果不再被使用.

2021-05-06 20:23:20 367

原创 c#中的委托与事件

c#中的委托,对应的关键词是delegate,是函数指针的升级版。在这里,先提一个说法:一切皆地址。大概解释一下,1.变量(数据)是以某个地址为起点的一段内存中所存储的值;2.函数(算法)是以某个地址为起点的一段内存中所存储的一组机器语言指令。再来了解一下对于函数(或者叫方法)的直接调用与间接调用的区别。1.直接调用,通过函数名来调用函数,CPU通过函数名直接获得函数地址并开始执行;2.间接调用,通过函数指针来调用函数,CPU通过读取函数指针存储的值获得函数地址并开始执行。委托就

2021-05-06 20:13:23 237

原创 WPF 数据验证

界面中用户输入的参数,有时候需要进行数据验证,若是输入格式不符合要求,我们希望在输入的时候,界面中就可以有所体现。以下是Demo,View中,需要新增:ValidatesOnDataErrors=True<TextBox Text="{Binding LevelId, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChang.

2021-03-28 19:34:11 395

原创 Sql中的DateTime 溢出错误解决方案

现象:在向Sql数据库插入数据的时候,对于时间类型(DateTime)字段,容易报错"SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间"原因:原来在数据库中DateTime类型的字段最小值为1/1/175312:00:00,而.NET Framework框架中,DateTime类型的最小值为1/1/0001 0:00:00,超出了Sql的值的最小范围,导致在数据插入的时候发生溢出的错误。所以如果一开.

2021-03-04 23:39:43 2756 2

原创 C#中的事务Transaction

实际项目中,遇到一个问题:软件界面中,有个提交按钮,点击后,做了2个动作:1.更新数据库中的对应字段;2.向另外一个服务器发送请求;开发过程中,第一步完成了,第二步失败了,但是我希望如果第二步失败的话,第一步最好也别执行。所以就想到了Sql中,以及Revit二次开发中,都有事务这个处理方式,将需要绑定在一起的几个方法,包裹在事务中,实现要成功一起成功,要失败一起失败个效果。在.net framework中,也有这样的事务处理。 using (var sco

2021-03-04 23:33:21 1723 2

原创 Nuget的使用说明

在做项目的时候,经常需要添加一些第三方引用,Visual Studio 2019环境下,最推荐的是Nuget安装方式,好处就是可以将所有依赖的包全部打包下载安装。1.nuget.org,搜索需要的nuget包,复制相应的安装命令,如下图2.工具--Nuget包管理器--程序包管理器控制台,调出“程序包管理器控制台”视图,输入第一步中复制的命令,比如:Install-Package Pomelo.EntityFrameworkCore.MySql -Version 5.0.0-alpha.2

2021-02-25 09:41:53 876

原创 epplus读写Excel

using OfficeOpenXml;using OfficeOpenXml.Style;using System;using System.Collections.Generic;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp4{ class Program { .

2021-02-18 10:53:24 927

原创 Revit 二次开发:创建线样式

1.一般创建对象之前,会先检查一遍当前文档中是否已存在对象: /// <summary> /// 初始化线样式 /// </summary> private void InitializeGraphicsStyle() { //获得设置里面的线 var lineCategory = _document.Settings.Categories.get_It

2021-02-15 14:02:55 1633

原创 Revit二次开发:CurveLoop的偏移

CurveLoop的偏移,有两种:1.平面内的偏移,意思是对CurveLoop进行放大或者缩小,var newLoop = CurveLoop.CreateViaOffset(curveLoop, offset, new XYZ(0, 0, 1));上述代码,对现有的curveLoop进行偏移,按照右手螺旋法则对curveLoop里的每一条curve进行偏移,偏移值为offset2.对CurveLoop进行移动CurveLoop.CreateViaTransform(curve.

2021-02-06 18:06:54 1788 1

原创 dll路径问题

// 运行时的dll所在的文件夹地址,比如:D:\Work Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); // 运行时的dll的完整地址,比如:D:\Work\RevitDemo.dll Assembly.GetExecutingAssembly().Location; /// 运行时的dll的名称,比如:RevitDemo...

2021-01-03 15:40:57 308

原创 Revit二次开发:碰撞检测中用到几个过滤器

首先2个过滤器都算是快速过滤器。BoundingBoxIntersectsFilter可以过滤出与范围框相交或者完全在范围框内部的Element;BoundingBoxIsInsideFilter可以过滤出完全在范围框内部的Element;群里大神给出的另外一个使用情况:如果想获取只与范围框相交,且不是完全在范围框内部的元素,可以2个过滤器一起使用,取2个结果的差集就行。...

2020-12-30 18:27:35 1770 1

原创 C#类库项目创建config文件

我们知道,不管是WPF项目、Winfrom项目或者是Web项目,都有专属于自己的App.config,那么类库项目的config文件如何创建和使用呢?1.添加新建项:应用程序配置文件(Application Configuration File);2.修改新建的配置文件名称:项目名称.dll.config;3.修改配置文件属性:复制到输出目录:始终复制;生成操作:内容调用:// 打开dll所在路径var dllConfig = ConfigurationManager

2020-11-16 16:43:39 3957

原创 npm的安装以及cnpm的使用

cnpm的安装老是出问题,要么就是报错,要么就是没反应。现在有个更好的解决方法:cnpm无非就是为了将国外的下载地址变成国内的淘宝镜像罢了,其实npm也可以做到这一点,只需要:npm config set registry https://registry.npm.taobao.org这样,我们可以使用淘宝镜像还不用更换成cnpm,是不是很爽!虽然实际都是使用的是淘宝镜像。...

2020-11-10 23:11:56 130

原创 Revit二次开发:关于Face的一些常用属性和方法介绍

最近在做高程点标注的时候,抛出异常,提示spot的放置点不在reference上面。摸不着头脑,只能去翻看face的具体api了。这里做个记录(以PlanarFace平面为例):PlanarFace在API中是这样定义的:Planar faces are defined by planes bounded by edge loops. The planes provide natural UV parameterization to the faces. S(u, v) = Origin

2020-10-19 22:28:18 2616

原创 Revit二次开发-曲线三连:判断开放曲线为顺时针还是逆时针,求某点处的外法线方向

我不太清楚是不是在几何领域,只有闭合曲线才有顺时针、逆时针一说。反正在实际开发工作中,经常会碰到需要对开放曲线做判断,是否为顺时针、逆时针方向,比如需要求开放曲线在某一点处的外法线方向,就可能需要。思路:1.前提条件:理想的开放curves(不知道怎么定义哈哈,比如需要你先做排序处理,变成首尾相连的curves);2.做一条辅助线auxiLiaryLine,连接curves的一头一尾使其变成封闭的CurveLoop;3.使用CurveLoop自带的CreateViaOffset偏移功能,以及

2020-10-17 05:33:15 1429

原创 Revit二次开发-曲线三连:对curves进行排序

日常开发工作中,经常会遇到这样的场景:通过手动选择(或其他手段),获取到了一些头尾相连的曲线List<Curves> curves(只限于Line和Arc),现在只知道它们是相连的,但是不知是否沿着一个方向,在集合中是否是按顺序排列?可以根据以下方式对其进行排序,达到真正的首尾相连的结果:1.首先我们找到第一根线L1,满足要求:有一端是没有其他线与其相重合的。并记录L1与其他线重合的那个端点PL1。2.然后找下一根线,满足要求:有一端点与PL1重合,并记录另一端点P2;3.重

2020-10-17 05:19:18 1328 1

原创 Revit二次开发-曲线三连:Curve属性和方法

一、Curve类中,比较让人迷惑的是有些方法中需要参数parameter。比如Curve.Evelate()方法,API中是这样定义的:public XYZ Evaluate(double parameter,bool normalized)对于Curve而言,参数parameter有两种,1.一种是normalized(归一化)类型,对于Evelate方法来说,如果normalized=true,则parameter取值范围为0-1,比如取0的时候,返回值为Curve的起点,取

2020-10-17 05:05:34 3731

原创 Revit 视图范围的知识总结

首先借用了别人的一张图,我们先来解释一下视图范围的几个参数值到底是什么意思。偏移值就不说了,共有四个面:1.顶部(PlanViewPlane.TopClipPlane)2.剖切面(PlanViewPlane.CutPlane)3.底部(PlanViewPlane.BottomClipPlane)4.视图深度(PlanViewPlane.ViewDepthPlane)...

2020-08-27 21:30:37 2372

原创 C#中的 readonly和const

1.const比较简单,相当于声明了一个常量。在常量声明的时候进行赋值,其他任何地方不得更改此值(不然编译器直接报错)2.readonly,用的不多,之前以为和const一样,最近看视频,发现了好几次readonly,但是作者却在其他地方又对这个变量进行赋值了,不是只读么?官方文档这样解释的:可以在字段声明和构造函数中多次分配只读属性。即在变量声明的时候,可以赋值;在类的构造函数中,也可以再次赋值或者更改其值。但是在其他方法函数中,是不可以更改只读变量/属性的...

2020-08-03 10:53:24 162 1

原创 Revit 二次开发 获取与构件相交或相接触的构件

我们知道,通过过滤器ElementIntersectsElementFilter可以获取到与某构件相交的构件,但是不能获取到与其接触但未相交的元素。比如下图,两面墙都与中间的柱子相交,var column = _document.CollectAll<FamilyInstance>(BuiltInCategory.OST_StructuralColumns) ...

2020-04-29 11:21:52 3974 3

原创 Revit中门、窗的FromRoom和ToRoom属性

1.首先明确一点,经过测试发现,FromRoom和ToRoom属性并不能确定门或者窗的朝向问题,这个属性用来干嘛我也不确定。按照有些博客中的说法,门开向哪个房间,那么ToRoom属性就是哪个房间,若是想更改,可以通过door.FlipFromToRoom方法来变更门窗的这两个属性。2.门的朝向,可以通过familyinstance.FacingOrientation来判定。若在平面图中,门...

2020-04-10 14:44:56 1193 2

原创 prism mvvm中的ViewModelLocator

1.首先必须创建对应的文件夹:Views和ViewModels,分别用来存放我们的view和viewmodel我们的窗口叫HelloView,存放在Views文件夹中,对应的ViewModel命名必须叫:HelloViewModel,且存放在ViewModels文件夹中。也就是和对应的view在名称上只多了一个Model,这个是使用Prism的一个命名约定。2.在HelloVi...

2020-03-21 23:05:56 3095 1

原创 sql server dapper中的事务处理

项目中有这样一种情况,分了几个页面的参数设置,他们对应了数据库中的几张表。当界面中修改了这些参数的时候,对应的数据库中的数据也需要更新。不过有个需求就是,更新的时候,需要这几张表作为一个整体一起更新,实际码代码的时候,碰到这样的Bug,就是第一张表的数据更新成功了,但是其余几张表都失败了。这种情况下,我得到的数据库更新就特别恶心。我不需要这样的更新,我宁愿几张表都更新失败。所以就用上了...

2020-03-12 20:22:58 587 1

原创 sql server 存储过程

存储过程(stored procedure)一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。1.新建自己的存储过程create procedure spPerson_GetAllasbegin select id,FirstName,LastNa...

2020-03-12 17:59:04 236

原创 C#连接数据库及dapper的简单介绍

一、连接数据库1.Standard Security:Server=myServerAddress;DataBase=mDataBase;User Id=myUsername;Password=Password简写:Server=myServerAddress;DataBase=mDataBase;uid=myUsername;pwd=Password2.Trusted Con...

2020-03-07 13:33:53 1588

原创 Visual Studio断点调试的一些小技巧

之前在调试的时候,比较讨厌断点打在for或者foreach中,我是这样操作的,运行程序的时候,代码直接跳到15行,然后检查变量,然后不断的F10,F10,F10一直到下一次循环的该断点处,再检查变啦,然后再不断的F10,F10,F10,每次都好麻烦。现在知道了,直接按continue,或者直接F5,就会在调试过程中直接跳到下一个断点处。应用在循环中,就是直接F5跳到下一次循环的该断...

2020-03-07 00:31:46 2079

空空如也

空空如也

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

TA关注的人

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