Rivet二次开发
Cyril1996
学习C#应用于Revit二次开发的新手小白,记录一下自己代码过程中遇到的问题。
展开
-
RevitApi-几何元素获取几何信息
Revit几何图元关系关于Revit的书籍中已经大致介绍了关于Revit中几何元素的关系,本文根据所建箱梁模型,目标为获得箱梁的几何信息(包含截面尺寸信息,详细到点的坐标,,以及sweep信息等)下图为revitlookup索引元素关系:本人自身理解:图中从左到右,从上到下。在得到planarFace之前,需要利用几何对象进行遍历获得下一层,后续的直接通过“名称.方法”直接获得,需要获得几何对象的信息则一般利用方法和属性即可获得。通过一层一层的嵌套和遍历即可取得几何信息。Element gird原创 2020-12-29 21:49:51 · 981 阅读 · 0 评论 -
Revit api Transaction事务的机制理解
在revit中实现这样的连续梁桥,一开始思考两个零号块左、右是相同的,因此,在创建零号块左跨的时候只用了一个 transaction,于是数据,算法都没有错,但是图形错误,具体为图形地位,长度出错,理解为revit中二次开发,一个事务中,只能trans一个点,不能同时零号块左边跨一起创建instance,因此后续采用左左、左右、右左、右右四个事务实现不会出问题。包括修改symbol属性也是一样,不能合并在一起修改,只能创建4个事务,目前还不理解具体机制,可能与图形连接有关,图形不连接的时候,可以合并创建,.原创 2020-08-04 17:07:49 · 606 阅读 · 0 评论 -
Revit API 解决基于标高的族实例创建以后不在设置标高的问题
**问题:**创建基于标高的族实例,利用NewFamilyInstance(cureve/new xyz, familysymbol,level,structuraltype)方法创建后,实例不在对应于设置的level上,而在0标高处。问题代码:Line span = Line.CreateBound(new XYZ(1, 1, 0), new XYZ(2, 2, 0));FamilyInstance familyInstance = doc.Create.NewFamilyInstance(span原创 2020-07-31 17:35:53 · 716 阅读 · 0 评论 -
无法将类型为“Autodesk.Revit.DB.ElementId”的对象强制转换为类型“System.IConvertible
原版: ElementId pileID = pileList[0].Id; int intpileID = Convert.ToInt32(pileID); FamilySymbol familysymbol = doc.GetElement(new ElementId(intpileID)) as FamilySymbol;出现报错:无法将类型为“Autodesk.Revit.DB.ElementId”原创 2020-07-06 09:35:33 · 1375 阅读 · 0 评论 -
读取文本文件,利用split函数分割文本,再进行string数组转化为double型数组
主题:读取如图所示的文本文件string数组转化为double型数组采用以下代码: string centreLine=centreReader.ReadLine(); double[] douArray; douArray = Array.ConvertAll<string, double>(cenArray, s => double.Parse(s));Regex正则匹配拆分字符串,可以一次性拆分多个空格。引用:原创 2020-06-22 11:34:58 · 1193 阅读 · 0 评论 -
Revit API 中关于单位转换
通常vs中直接输入的数字在编译过后,写入revit中是以英制单位,例如输入10则为10ft,换算在revit中显示为10*304.8=3048mm。以如下代码实现单位换算:double a = UnitUtils.Convert(1,DisplayUnitType.DUT_METERS,DisplayUnitType.DUT_DECIMAL_FEET);double b= UnitUtils.Convert(5, DisplayUnitType.DUT_METERS, DisplayUnitTyp.原创 2020-06-12 15:10:38 · 1079 阅读 · 0 评论 -
Revit二次开发,transaction代码中遇到的问题解决
Revit二次开发进行元素创建时遇到的问题如下:问题1:“不包含采用的两个参数的构造函数”问题解决:解决如下:对应的new plane 改写成Plane.CreateByNormalAndOrigin即可;doc.FamilyCreate.NewExtrusion(true, curveArr, SketchPlane.Create(doc, Plane.CreateByNormalAn...原创 2020-03-13 16:24:06 · 896 阅读 · 0 评论 -
C#语句中命名找不到的小问题。
如图所示光标位置处的多余分号,隔断了上下文之间的联系,因此下文中的“elem”找不到命名。对于此类类型的小问题可以扩展为所有花括号打包语句不能被“;”隔断。...原创 2020-02-18 18:51:18 · 124 阅读 · 0 评论 -
Revit API-图元过滤器中的ID确定与参数名命名
图元过滤器中的ID确定:在Revit中每个图元有专属的ID号,例如窗-ID 297844,窗的参数也有专属ID,"标记”-ID1001203。 ElementId ruleValId = new ElementId(-1001203); FilterRule fr = ParameterFilterRuleFactory.CreateLessRule(ruleValId, "10...原创 2020-02-17 19:06:15 · 787 阅读 · 0 评论