Revit二次开发——Ribbon菜单的创建以及各种不同的button(按钮)的代码总结

目录

一、创建普通的一个panel里面三个32px*32px的pushbutton,剩下两个写法一样

 二、创建三个层叠按钮 层叠按钮图标需为16px*16px 层叠按钮最多为一列放三个,这个也要创建个panel,具体看我效果图,不然就添加在第一个panel里面。

 三、创建下拉按钮,我是同样创建了panel,也可以添加到上面的panel里面。 

 四、创建下拉记忆按钮(可记忆上次使用的)下拉记忆按钮的SplitButton无需设置图标,选择哪个button会自动使用它的图标。

 五、创建单选按钮  意思就是两个或多个按钮,你只能选择其中一个。

 六、创建组合按钮

七、帮助  WIKI  chm这些的一个链接方式,这个简单搞定

​ 八、创建一个文本框

 九、我这里面的地址全部写死的,别人用就得重新编译。那就用下面的方式写活。

1、新建个文件夹把图片放进去。

2、另一种图片位置获取就是

3、这个方法忘了找不到了,等我找到再补充。(现在找到了)

十、最后就是控制哪个button在哪个视图或者工作集或者模式下不显示的事,就是写个类来控制就行了。做个例子;


解释和说明

先上几个图,以助于理解界面都有哪些按钮我们可以写在revit二开自己的界面上。

我用的revit2018API。不同之处细细琢磨吧!

 这是橄榄山叶雄进叶老师的课件截图。

 这两张是BIMBOX课程的截图。基本就是列出的这些按钮我们可以放在自己的菜单面板上;

零、首先要创建一个自己的Ribbon Tab 页,不然你的菜单放哪儿呢?就放Tab里面啊。

一、创建普通的一个panel里面三个32px*32px的pushbutton,剩下两个写法一样

 二、创建三个层叠按钮 层叠按钮图标需为16px*16px 层叠按钮最多为一列放三个,这个也要创建个panel,具体看我效果图,不然就添加在第一个panel里面。

然后把这三个按钮添加到你创建的panel里面。我是总共添加了六个按钮,所以效果图显示两列;

 

 三、创建下拉按钮,我是同样创建了panel,也可以添加到上面的panel里面。 

三个按钮添加到下拉框,下拉框添加了横的分割线,我总共添加了两边,主要是为了看下拉框添加横向分割线的区别,也演示一下同一个panel里面两个按钮之间的竖向分割线。

 四、创建下拉记忆按钮(可记忆上次使用的)下拉记忆按钮的SplitButton无需设置图标,选择哪个button会自动使用它的图标。

 这个也是添加了两遍哦!这个和第三的区别就是它记忆你上次的选择,你选哪个下次用直接外面点不用进去选一下。

 五、创建单选按钮  意思就是两个或多个按钮,你只能选择其中一个。

同样的创建,不同的是后面的添加方法的使用; 我是创建了三个单选按钮。三选一。每次只能从三个选择一个。

 六、创建组合按钮

注意要添加到自己的组里面,我分了两组。这个相当于下拉按钮里面添加了按钮的分组。

 

七、帮助  WIKI  chm这些的一个链接方式,这个简单搞定

 八、创建一个文本框

 九、我这里面的地址全部写死的,别人用就得重新编译。那就用下面的方式写活。

获取到当前文档dll的路径

然后创建按钮的时候把 @"E:\桌面\编程\CreateRibbonTab\CreateRibbonTab\bin\Debug\CreateRibbonTab.dll"

 全部换成获取到的dll的地址就行了,比如可以换成上面获取到的assemblyPath。

图片也有同样的问题啊,那就只有两种办法,

1、新建个文件夹把图片放进去。

记得设置两个图片的这个属性;

 然后就再一行代码获取到图片的位置

 这样不管谁用程序都不会丢失了。

2、另一种图片位置获取就是

var imageSource1 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Images\3D.png";

这是获取了程序集dll的路径,在此路径下有个Images的文件夹,里面就是要的照片。

3、这个方法忘了找不到了,等我找到再补充。(现在找到了)

这种就是获得本地dll文件的位置,然后再根据名称的替换把想要的图片找到,前提是dll文件和图片放在同一个文件夹内,放在别的文件夹或者放在上级文件夹的话就得自己尝试了。

 第一行是获取本地dll(本地安装的程序)的位置。获得的是插件不是revit的。

第二行是把dll的位置替换成图片的。

十、最后就是控制哪个button在哪个视图或者工作集或者模式下不显示的事,就是写个类来控制就行了。做个例子;

大概就这些内容了吧,以后有看到的想到的摸索到的再补充。

特别感谢叶进雄叶老师和BIMBOX的Kevin老师。

源代码在这(13条消息) Revit二次开发——Ribbon菜单的创建以及各种不同的button(按钮)的代码总结-C#文档类资源-CSDN文库

  • 7
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 我们可以使用 Revit API 来创建楼板。下面是一个示例代码:// 创建一个新的楼板 Floor floor = Floor.Create(doc, lineArray); // 设置楼板的高度 floor.get_Parameter(BuiltInParameter.FLOOR_HEIGH_PARAM).Set(10); // 设置楼板的类型 floor.get_Parameter(BuiltInParameter.FLOOR_ATTR_THICKNESS_PARAM).Set(floorType.Id); ### 回答2: Revit二次开发是指在Revit软件的基础上,使用API(Application Programming Interface)进行编程,以创建自定义功能、定制工具和插件。以下是展示Revit二次开发创建楼板的示例代码: ```csharp using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.Attributes; [Transaction(TransactionMode.Manual)] public class CreateFloorCommand : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { // 获取Revit文档 Document doc = commandData.Application.ActiveUIDocument.Document; // 获取楼层板类型 ElementId floorTypeId = null; FilteredElementCollector floorTypeCollector = new FilteredElementCollector(doc) .OfClass(typeof(FloorType)); foreach (FloorType floorType in floorTypeCollector) { if (floorType.Name == "楼板类型名称") { floorTypeId = floorType.Id; break; } } if (floorTypeId != null) { // 获取楼层高度 double floorHeight = 3000; // 楼层高度为3000毫米 // 获取边界线 Line floorBoundaryLine = Line.CreateBound(new XYZ(0, 0, 0), new XYZ(5000, 0, 0)); CurveArray floorBoundary = new CurveArray(); floorBoundary.Append(floorBoundaryLine); // 创建楼板 using(Transaction trans = new Transaction(doc, "创建楼板")) { trans.Start(); Floor floor = doc.Create.NewFloor(floorBoundary, false); floor.get_Parameter(BuiltInParameter.FLOOR_HEIGHTABOVELEVEL_PARAM) .Set(floorHeight); floor.FloorType = doc.GetElement(floorTypeId) as FloorType; trans.Commit(); } return Result.Succeeded; } else { message = "找不到指定的楼板类型"; return Result.Failed; } } } ``` 以上代码使用了Revit API中的相关类和方法,通过获取Revit文档,楼板类型,楼层高度和边界线等信息,创建了一个自定义的楼板。需要替换代码中的`楼板类型名称`为实际楼板类型的名称,在使用该代码之前,请确保已经正确安装并配置了Revit API开发环境。 ### 回答3: Revit二次开发创建楼板的代码如下: 首先,我们需要导入Revit API的命名空间,包括`Autodesk.Revit.DB`和`Autodesk.Revit.UI`。 然后,创建一个继承自`IExternalCommand`接口的类,以便我们可以在Revit中运行这个命令。我们将命令命名为"CreateFloor"。 在类中,我们需要实现`Execute`方法,该方法将在运行命令时被调用。在这个方法中,我们将创建楼板并将其添加到当前项目中。 以下是示例代码: ```csharp using Autodesk.Revit.DB; using Autodesk.Revit.UI; public class CreateFloor : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { // 获取当前文档 Document doc = commandData.Application.ActiveUIDocument.Document; // 创建标高 Level level = new FilteredElementCollector(doc) .OfClass(typeof(Level)) .FirstOrDefault(e => e.Name.Equals("Level 1")) as Level; // 定义楼板的几何形状 CurveArray curveArray = new CurveArray(); XYZ p1 = new XYZ(0, 0, 0); XYZ p2 = new XYZ(10, 0, 0); XYZ p3 = new XYZ(10, 10, 0); XYZ p4 = new XYZ(0, 10, 0); Line line1 = Line.CreateBound(p1, p2); Line line2 = Line.CreateBound(p2, p3); Line line3 = Line.CreateBound(p3, p4); Line line4 = Line.CreateBound(p4, p1); curveArray.Append(line1); curveArray.Append(line2); curveArray.Append(line3); curveArray.Append(line4); // 创建楼板 using (Transaction transaction = new Transaction(doc, "Create Floor")) { transaction.Start(); Floor floor = doc.Create.NewFloor(curveArray, false); floor.get_Parameter(BuiltInParameter.FLOOR_HEIGHTABOVELEVEL_PARAM).Set(0); // 设置楼板高度 transaction.Commit(); } return Result.Succeeded; } } ``` 以上示例代码演示了如何使用Revit API创建楼板。我们首先获取当前文档,然后创建一个标高。接下来,我们定义了楼板的几何形状,最后创建了楼板并将其添加到项目中。在事务中运行代码,以确保操作的完整性和一致性。 以上是简单的创建楼板代码示例,该代码仅供参考。在实际开发过程中,可能需要根据具体需求进行更多的参数设置和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值