1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Revit二次开发】模型线

【Revit二次开发】模型线

时间:2020-07-07 21:24:18

相关推荐

【Revit二次开发】模型线

模型线

模型线示例

模型线

与之前的创建轴网和标高不同,没有特意去设置Revit参数。另外,在创建之前要首先创建一个成为草图平面的图元来承载模型线。因为在revit中普通的模型线图元是基于面的。综合我们已经创建的标高、轴网和模型线,在建立这些模型时,都需要一些几何信息,如点,线,面等。对于几何信息在Revit API中的相关类将会在最后一节中介绍,这些类的操作都支持中学的几何知识,主要涉及到三维正交坐标系,极坐标系,线段、弧的表达,点、线、面关系等等。

在Revit二次开发中,模型线是Revit中最基本的几何元素之一,用于表示Revit构件的几何形状和位置。可以使用Revit API中提供的类来创建、修改和删除模型线。

模型线(ModelLine):在Revit中,模型线是由起点和终点坐标定义的直线。可以使用ModelLine类来表示一个模型线,如下所示:

XYZ startPoint = new XYZ(0, 0, 0);XYZ endPoint = new XYZ(10, 0, 0);Line line = Line.CreateBound(startPoint, endPoint);ModelLine modelLine = doc.Create.NewModelCurve(line, SketchPlane.Create(doc, plane));

其中,startPoint和endPoint是模型线的起点和终点坐标,line是模型线的线段对象,plane是模型线所在的平面。

模型线的属性:模型线有许多属性,例如线型、颜色、权重等。可以使用ModelLine类的属性来获取或设置模型线的属性值。例如,可以使用ModelLine.LineStyle属性来获取或设置模型线的线型,使用ModelLine.Color属性来获取或设置模型线的颜色。

将模型线添加到文档中:创建模型线后,您需要将它们添加到文档中。可以使用Document类的方法来添加模型线或其他几何元素。例如,您可以使用doc.Create.NewModelCurve方法将模型线添加到文档中。

总的来说,模型线是Revit二次开发中最基本的几何元素之一,它可以用于定义Revit构件的几何形状和位置。可以使用Revit API中提供的类和方法来创建、修改和删除模型线,从而实现对Revit模型的几何操作和修改。

示例

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Autodesk.Revit.DB;using Autodesk.Revit.UI;namespace ElementBasicDemo{[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]public class CreateSimpleModelLineCmd : IExternalCommand{public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){try{Document doc = commandData.Application.ActiveUIDocument.Document;using (Transaction transaction = new Transaction(doc)){if (transaction.Start("简单模型线") == TransactionStatus.Started){try{SketchPlane sketch = CreateSketchPlane(doc, XYZ.BasisZ, XYZ.Zero);CreateArc(sketch, XYZ.BasisX, XYZ.BasisY, XYZ.BasisX + XYZ.BasisY);CreateLine(sketch, XYZ.BasisX, XYZ.BasisY);if (mitted != mit()){TaskDialog.Show("简单模型线", "事务提交失败");}else{TaskDialog.Show("简单模型线", "事务提交成功");}}catch (Exception exception){transaction.RollBack();throw exception;}}}return Autodesk.Revit.UI.Result.Succeeded;}catch (Exception ex){message = ex.Message;return Autodesk.Revit.UI.Result.Failed;}}/// <summary>/// 创建模型线所在的草图平面./// </summary>/// <param name="normal">草图平面的法向量</param>/// <param name="origin">草图平面上的任一点</param>private SketchPlane CreateSketchPlane(Document doc, XYZ normal, XYZ origin){try{//几何平面Plane geometryPlane = Plane.CreateByNormalAndOrigin(normal, origin);if (null == geometryPlane){throw new Exception("创建平面失败.");}// 由几何平面生成草图平面SketchPlane plane = SketchPlane.Create(doc, geometryPlane);if (null == plane){throw new Exception("创建草图平面失败.");}return plane;}catch (Exception ex){throw new Exception("无法创建草图平面,出错原因: " + ex.Message);}}/// <summary>/// 创建线性模型线 /// </summary>/// <param name="workPlane">模型线所在的草图平面</param>/// <param name="startPoint">模型线起点</param>/// <param name="endPoint">模型线终点</param>public ModelLine CreateLine(SketchPlane workPlane, XYZ startPoint, XYZ endPoint){try{Document doc = workPlane.Document;if (startPoint.Equals(endPoint)){throw new ArgumentException("起点与重点重合");}// create geometry lineLine geometryLine = Line.CreateBound(startPoint, endPoint);if (null == geometryLine){throw new Exception("创建几何线失败");}ModelLine line = doc.Create.NewModelCurve(geometryLine, workPlane) as ModelLine;if (null == line){throw new Exception("创建模型线失败.");}return line;}catch (Exception ex){throw new Exception("无法创建模型线,出错原因: " + ex.Message);}}public ModelArc CreateArc(SketchPlane workPlane, XYZ startPoint, XYZ endPoint, XYZ thirdPoint){try{Document doc = workPlane.Document;if (startPoint.Equals(endPoint) || startPoint.Equals(thirdPoint)|| endPoint.Equals(thirdPoint)){throw new ArgumentException("起点,重点和辅助点三点存在重合.");}Arc geometryArc = Arc.Create(startPoint, endPoint, thirdPoint);if (null == geometryArc){throw new Exception("创建弧失败.");}ModelArc arc = doc.Create.NewModelCurve(geometryArc, workPlane) as ModelArc;if (null == arc){throw new Exception("创建模型线(弧)失败.");}return arc;}catch (Exception ex){throw new Exception("无法创建模型线(弧),出错原因: " + ex.Message);}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。