- 博客(89)
- 收藏
- 关注
原创 Gitea Windows环境下服务搭建
这篇文章没有去分析各大平台的优劣势,仅教学大家搭建一个属于自己的git代码管理器,主要作用在局域网内,办公电脑搭建一个简单的Gitea代码管理器。数据库使用SQLite3,环境是windows10。如果不是这个环境的话,大家可以当做一个操作的参考吧。
2023-02-27 16:06:38
1032
原创 CAD二次开发 解决填充图案(Hatch)填充比例无法自动更新问题
在项目中需要用程序自动修改填充图案Hatch的==填充图案比例==属性(PatternScale属性),把比例10改成比例20,但是修改后发现填充图案比例数值已经修改为20,但是图案显示的比例还是10,并没有刷新。因此有了这篇文章的记录
2023-02-21 18:20:37
1187
原创 CAD二次开发 插件初始化接口IExtensionApplication
在实际项目开发中,我们总会遇到一些问题。比如说在CAD打开之前,修改注册表的内容,或者解决CAD在没有完全加载想要的dll情况下,功能运行报错的bug。因此,下面和大家介绍一下IExtensionApplication接口
2023-02-19 15:39:19
1325
原创 Revit二次开发小技巧(十七)实时监控模型线的生成
项目中需要一个需求,用户想调用出Revit中自带的绘制模型线方法,然后再绘制结束时,可以拿到绘制的模型线,然后实现后面的算法。这里记录一种方法,通过DocumentChange事件+修改Tag的PropertyChanged事件来实现对应的需求。
2023-01-09 00:56:07
929
4
原创 Revit二次开发知识分享(二十三)动态控制按钮是否可用
我们想通过代码动态精确控制PushButton在哪些指定的情况下是不能使用的,哪些情况下是可以使用的 ,下面分享的是相关的api。
2022-12-26 22:40:28
286
原创 Revit二次开发小技巧(十五)构件的最小矩形外轮廓
我们会经常遇到需要计算一个构件的最小外轮廓,一般直接取BoundingBox只有最大和最小值坐标,也是基于x-y坐标系下的。往往不是最小的矩形,所以分享下面的算法来计算最小的外轮廓,条件为法向量是指向Z轴的,暂时没有考虑曲线的情况
2022-12-15 23:12:44
648
1
原创 Revit二次开发知识分享(二十一)修改墙的厚度(楼板同理)
[Transaction(TransactionMode.Manual)] public class ChangeWallThicknessDemo : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIDocument uidoc = command
2022-05-09 00:46:19
3313
原创 Revit二次开发知识分享(二十)控制结构框架的“不允许连接”功能类
在做项目中遇到过创建梁的时候,其中一端需要设置不允许连接。因此找到了这个类(如下图)这个类里面提供了对结构框架的边缘点修改方式,包括“不允许连接”和“翻转结构框架终点”两个主要的功能。同意连接。参数中int值输入“0”或“1”,分别代表起点和终点。不允许谅解。参数同上翻转终点。参数同上然后墙体的不允许连接类是WallUtils,提供了打开和关闭的静态方法。希望这个类能帮助你解决问题,今天分享就到这里了~~...
2022-01-24 00:24:15
1090
转载 (转载)C# 类库中无法创建WPF窗体
类库添加xaml在WPF工程中添加一个类库工程,并且想要在类库中创建xaml窗体,需要做一下配置修改项目的项目类型,需要使用文本编辑器打开项目的 csproj 文件, 在 csproj 文件中的 PropertyGroup/ProjectTypeGuids 节点标识了项目的类型,在此节点中添加{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 这两个项目类型...
2021-12-25 15:29:30
643
原创 Revit二次开发小技巧(十三)共享参数操作封装类
共享参数操作自己封装的一个共享参数操作类,分享出来,希望可以对你有所帮助~~~ public class ShareParameterMethod { /// <summary> /// 文件保存路径 /// </summary> private string DataPath = ""; /// <summary> /// 参数组集合 /// &l
2021-12-12 23:30:50
612
原创 Revit二次开发小技巧(十二)组构件修改方法分享
有时候会涉及到组构件的修改,当是又想通过这一次的修改,可以同步到相同的组构件中。这里给大家分享一个自己封装的组构件修改的类,希望可以给大家点帮助。public class GroupMethod { /// <summary> /// 目标组(名字、相同组名称的集合) /// </summary> private List<Tuple<string, GroupType, IEnumerable&l
2021-10-24 20:18:45
1050
原创 Revit二次开发知识分享(十九)控制轴网“隐藏编号”按钮
这段时间工作有一个新的想法,就是怎样子去操控轴网的编号显示还是隐藏,如下图。花了点时间研究了一番,发现Revit是有提供对应的API给我们去控制的,下面给大家详细讲讲,Just Do It~~~显示编号方法里面需要传入两个参数,DatuEnds是一个枚举值,枚举值中的参数对应修改的位置,选择是起点还是终点。View参数对应的是需要显示编号的视图。隐藏编号方法里面的参数和显示编号的参数是一样的,这里不多加赘述。基本的API就是上面这些,只要是DatumPlane下面的子类都有这个方法,说明标高
2021-10-24 19:58:07
999
4
原创 Revit二次开发小技巧(十二)创建带洞口的墙
这里记录一下项目上遇到的问题,就是创建带洞口的墙的时候,会发现创建接口仅有一个线集合传进去(如下图)。当墙体有洞口的时候,线段就只能再一个集合中传进去了。这时候会遇到一点问题,就是直接把两个轮廓的线传进去,会出现无法创建墙体的错误(如下图)经过一段时间的研究,发现,只要所有的轮廓首尾相连,然后轮廓线的方向都一致,即顺时针或者逆时针,就可以生成墙体了。 public Result Execute(ExternalCommandData commandData, ref string message,
2021-10-04 18:08:44
728
原创 Revit二次开发小技巧(十一)计算点投影到一个平面上的点
在项目中遇到的一个问题,想把管道中的中心点投影到一个剖切视图上面,然后研究了一番,写了一个通用的方法,现在来记录一下。先上代码,后讲解~~~1、点投影到平面的方法(如下) /// <summary> /// 点投影到一个平面 /// </summary> /// <param name=""></param> /// <param name="xyz"></param>
2021-07-12 23:17:14
1511
原创 Revit二次开发知识分享(十八)管道的布管系统知识
这次主要分享的是Revit管线中的布管系统配置相关的API,案例讲解的是弯头的设置,其他的操作步骤是相似的。直接上代码,GoGoGo~~获取数据 //选择管道 Reference selRef = uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element); Pipe selPipe = doc.GetElement(selRef) as Pipe;
2021-05-03 00:58:46
1096
原创 Revit二次开发知识分享(十七)梁板柱开洞的使用
下面使用的API全是2019版本的API噢~~开洞的方法是RevitAPI中直接提供的(如下图),里面一共有四个创建的重载方法。1、给梁,柱子和撑杆来开洞的,现在也仅支持XYZ三个方向上的开洞。2、给屋顶、楼板和天花板开洞,后面的bool属性,提供的是,是否垂直于所在面去开洞3、在两个标高之间竖向开一个洞。4、给墙体开洞示例仅写了梁的开洞示例,如果大家有墙体开洞的需求可以在评论区告诉我,我再添加进去。 UIDocument uidoc = commandData.App
2021-04-12 23:48:01
1177
8
原创 Revit二次开发知识分享(十六)怎样子标注一根线
我们知道API中有提供一个获取点Reference的方法,如下图可是我们每次通过线取的时候,都会报错,取不到对应的Reference。这里我也去试了一下,发现其中的问题,这个对线取点的话,需要是通过构件的Geometry里面的Curve才是可以的。下面演示的是选择一根modelCurve为例。 UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document;
2021-04-03 00:45:25
507
原创 Revit二次开发知识分享(十五)获的与线相交的构件
这里是实现获取相交的一种方法,以选择相交柱子为示例。主要是把线构建成一个实体Solid然后再去计算相交。上代码~~ UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; //收集所有的柱子 FilteredElementCollector columnFC = new FilteredElementCo
2021-04-01 22:14:47
1059
原创 Revit二次开发知识分享(十四) 选择轴网快速生成标注
这次分享的是一个小功能。选择几根相互平行的轴网,然后快速生成标注,内容仅提供学习和参考,延展性很大,可自行开发。上代码Just Do It~~ UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; List<Reference> selRefList = uidoc.Selection.PickO
2021-03-21 00:05:07
741
原创 Revit二次开发小技巧(九)日志文件路径
当我们想记录自己写的插件报错信息或者记录界面的数据。如果是想存储再本地文件夹中,又担心Revit的访问权限不够会导致一些读取和写入文档时的错误,下面这个提供的是,Revit绝对能访问到的路径,Revit的日志文件的存储路径。API:使用:string path = Path.Combine(Path.GetDirectoryName(commandData.Application.Application.RecordingJournalFilename), "测试文档.txt");File.Wri
2021-03-19 06:19:52
759
原创 Revit二次开发知识分享(十三)拆分孤立楼板
项目中会遇到存在多个独立的楼板组合成一个大楼板的情况,去下图:今天分享的知识是把楼板给拆分开,变成单个独立的楼板,如下图:上代码,Just Do It~~~ UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; Reference selRef = uidoc.Selection.PickObject
2021-03-18 00:44:04
2560
2
原创 Revit二次开发小技巧(八)怎样子判断是否开启事务
背景:在开发初期,总是喜欢把Doc对象传入方法中,然后开启事务去生成某些构件(不推荐这样子)。这样子的操作就会导致外部已经开启了事务,然后方法内部又开启一次事务,会导致报错:说xx事务已经开启,但是没有关闭就开启新事务的bug。这样子就需要我们对当前事务做一个判断,当前项目是否开启了事务。Just Do It~~API(如下图)返回值为true的时候,说明已经上面已经开启事务了,这样子可以在方法中加一个判断,是否还需要开启事务去生成构件。...
2021-03-15 15:59:42
618
原创 Revit二次开发小技巧(七) 怎样子判断当前项目是否保存
背景:把用户使用的当前模型复制一份,然后在复制的临时项目中对模型结构进行不需要回退的处理。这时候就会出现一个问题。用户如果刚操作完没有保存,那你复制出去得到的将是旧的数据,会导致后面使用的时候出现误差。因此给大家带来一个API中提供判断的方法,Just Do It~~API(如下图):当返回值为True的时候,表明项目正在处于更改的状态,即没有保存。...
2021-03-15 15:49:21
259
原创 Revit二次开发知识分享(十二)给Revit发送Esc按键
这里提供一个有时可行,有时不灵的办法,仅供参考学习。发现有改进的地方,可以联系博主一起讨论改进,上代码。先整一个帮助的类里面包含键盘的消息 public static class Helper { [DllImport("user32.dll")] private static extern IntPtr SetActiveWindow(IntPtr hWnd); [DllImport("user32.dll")] [ret
2020-10-31 18:57:16
1460
8
原创 Revit二次开发知识分享(十一)放置实例
我们有时候想在选择点放置实例的时候,想和revit本身的放置实例显示一样,有一个实例跟着鼠标去放置。这样子可以更加方便操作者知道自己放置实例的相对位置。先上代码,后解释,Just Do It~~~ try { uidoc.PromptForFamilyInstancePlacement(fs); } catch {
2020-10-30 23:15:01
1393
原创 Revit二次开发小技巧分享(六)怎样子测试线方便
在项目中,会运用到很多内存中的线,即Line类。可是我们只能看到他的点坐标信息,但是并不能直接知道这个线在项目中所在的位置具体在哪里。所以自己封装了一个方法来给自己方便测试。Just Do It~~~ /// <summary> /// 生成详图视图来测试 /// </summary> /// <param name="allLineList"></param> /// <param na
2020-10-24 18:08:02
278
原创 Revit二次开发知识分享(十) 预览界面
需要用到预览界面一般都是在族库,或者想展示正在输入数据是怎样子才会用到。这里只是简单的运用RevitAPI中的方法去实现这个功能,然后把这个功能展示在WPF界面上。而且需要注意的一点是,预览界面调用的时候,是不能手动对Revit做一些操作的,但是代码可以。先上示例代码,后讲解 Just Do It~~主程序中代码:public class PreviewControlCmd : IExternalCommand { public Result Execute(ExternalCo
2020-10-18 15:45:13
1547
原创 Revit二次开发知识分享(九)判断墙与墙是否相连
在运用的时候,会遇到想找收集相链接的墙,用API提供的方法的话,总是会出错。会漏掉一些自己需要的墙,因此,下面封装了一个可以计算墙的是否连接的方法,先上代码后讲解Just Do It!!! public bool IsConnected(Wall judgeWall, Wall proWall) { bool result = false; Line judgeLocationLine = ((judgeWall.Locati
2020-10-02 15:53:45
1345
3
原创 Revit二次开发知识分享(八)控制显示隐藏的图元按钮
在项目中操作的时候,有时候需要到打开“显示隐藏的图元”按钮,然后收集图元等操作。API中也停供了相对应的代码,这里我封装成一个方法,方便日后调用,先上代码后讲解,Just Do It!!!public void OpenRevealHiddenElements(Autodesk.Revit.DB.View view) { var a = view.TemporaryViewModes; if (a.RevealHiddenElements)
2020-10-01 14:10:03
804
原创 revit二次开发知识分享(七)几何体的布尔运算
revitAPI中只提供了几何体相关的布尔运算,是下面的这些方法(如图)方法后缀是否加ModifyingOriginalSolid的区别在于,没加是对几何体进行操作,并且操作完后生成一个新的几何体,而对原本的几何体没有改变任何东西。如果加了,就是直接对原本的几何体进行操作。今天主要是介绍ExecuteBooleanOperation方法的使用。先上操作后讲解 Just Do It!!!Solid s = BooleanOperationsUtils.ExecuteBooleanOperation(s
2020-09-19 15:26:52
3301
原创 revit二次开发知识分享(六)如何新建面积方案
系统自带的面积方案只有这几种(如下图),如果在代码中想实现生成一个新的面积方案的话,我们该怎么操作呢?比如生成一个“标准层面积”的面积方案,并且生成新的面积平面。先上代码后讲解,Just Do It!!!//创建面积方案public static AreaScheme CreateAreaView(Document doc, string name) { AreaScheme areaScheme = new FilteredElementCollector(d
2020-09-19 15:24:55
871
3
原创 Revit二次开发知识分享(五)单位转换问题
我们在实际项目中用代码读取到的数据的单位都是用英尺。如果不清楚这个,在做一些输入数值指定数值的功能时就会出错。因此,RevitAPI中提供了单位转换的方法。DisplayUnitType是一个枚举类,里面有不同的单位的选择,可以自己去了解一下。下面我把经常用到的一些方法放到下面。/// <summary> /// 英尺转毫米 /// </summary> /// <param name="b"></param&g
2020-09-06 16:40:49
837
原创 Revit二次开发知识分享(四) 计算Face的中心点
我们经常会遇到,我们需要一个面上的中心点的时候,API并没有给出一个直接的方法,这样子我们需要自己去用几何知识去计算出一个面的中心点。不管这个面的形状是怎样子的,都可以算出一个在这个面的凸起点围起来的最大轮廓线。先上代码后讲解,Just Do It!!! public static XYZ GetFaceCenter(this Face temFace) { var faceBound = temFace.GetBoundingBox();
2020-09-03 21:59:11
1446
2
Revit二次开发,实现在批量选择完管道,在点击放置标签时,想有一个可视化跟随的动画效果
2023-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅