一、草图编辑

草图编辑在Revit中被广泛用于创建各种元素,包括绘制和修改模型的形状。

没有用于创建元素的绘制形状的绘画也属于草图编辑,例如,用鼠标移动的操作画一根曲线,在已经创建好的楼板上绘制褶皱来修改楼板的几何形状等。

草图编辑在用户界面上有专门的窗口区域,不同的元素提供不同的绘制草图的工具集,标准的工具集一•般有两种:

①、绘制形状的工具:直线,曲线,圆,多边形,椭圆,样条曲线。 
②、拾取已有几何图形来创建形状的工具——线,面拾取等。
 
草图编辑需要在一个表面上绘制形状,当这个表面为平面时称之为草图平面(SketchPlane)。草图平面也可以理解成以下几种情形:
•用户界面的工作平面或者详图元素的视图平面。
•标高或者其他的由草图编辑工具所决定的平面。
•元素约束条件所决定的表面。
•鼠标光标所在区域的一个几何面。

草图平面在API中被用于创建草图相关的元素,如模型线;或者用于创建拥有草图属性的元素,如构建的实体。草图平面可以从已存在的元素或者从几何面、平面创建。

注意:
① 创建元素时传入的草图平面未必就是这个元素的实际草图平面,如果传入的草图平面已经被其他用途使用了,Revit就会寻找或者创建一个新的在几何上对等的草图平面。
② 一些草图平面只适合于用在创建详图元素上,比如那些从详图曲线获取到的草图平面,当被用在其他类型的元素上时,将会导致创建失败。

创建草图平面的方法在Autodesk.Revit.DB.SketchPlane类里,三个重载方法如表所示。

方法

描述

public static SketchPlane Create(Document document, ElementId datumId);

从网格、引用平面或者标高等元素创建一个草图平面

public static SketchPlane Create(Document document, Reference planarFaceReference);

从一个几何平面创建一个草图平面

public static SketchPlane Create(Document document, Plane plane);

从一个几何平面的引用创建一个草图平面

例子1:要从文档中找到名字为“Ref.Level”的标高,以此创建了一个新的草图平面,然后用几何点为(0, 0, 0)到点(10, 10, 0)的直线创建了一条模型曲线,可以使用以下代码:

 public void CreateModelCurve(Autodesk.Revit.DB.Document doc){// 在族文档中找到名字为"Ref. Level"的标高 FilteredElementCollector collector = new FilteredElementCollector(doc);collector = collector.OfCategory(BuiltInCategory.OST_Levels);var levelElements = from element in collectorwhere element.Name == "Ref.Level"select element;List<Autodesk.Revit.DB.Element> levels = levelElements.ToList<Autodesk.Revit.DB.Element>();if (levels.Count <= 0)return;Level refLevel = levels[0] as Level;// 创建一条几何直线,一个基于标高的草图平面,然后在这个草图平面上创建一条模型线.using (Transaction trans = new Transaction(doc, "Create model line.")){trans.Start();Line line = Line.CreateBound(XYZ.Zero, new XYZ(10, 10, 0));SketchPlane sketchPlane = SketchPlane.Create(doc, refLevel.Id);ModelCurve modelLine = doc.FamilyCreate.NewModelCurve(line, sketchPlane);trans.Commit();}}

例子2:创建一个原点为坐标原点(0, 0,0),法向量为(0, 0, 1)的几何平面,然后用这个几何平面创建了对应的草图平面,再在这个草图平面上创建了一个圆心为(0,0,0),半径为5的圆形的模型线。可以参考以下代码:

public void CreateSketchPlaneByPlane(Autodesk.Revit.ApplicationServices.Application app, Autodesk.Revit.DB.Document doc){using (Transaction trans = new Transaction(doc, "Create model arc.")){trans.Start();Plane plane = app.Create.NewPlane(XYZ.BasisZ, XYZ.Zero);SketchPlane sketchPlane = SketchPlane.Create(doc, plane);Arc arc = Arc.Create(plane, 5, 0, Math.PI * 2);ModelCurve modelCircle = doc.FamilyCreate.NewModelCurve(arc, sketchPlane);trans.Commit();}}

从一个几何平面的引用来创建草图平面的方法和上面两个示例类似,需要在文档中找到一个几何平面,例如,一个几何实体的平面(PlanarFace. Reference),然后将该平面的引用传入即可。

二、草图
草图(Sketch)是个抽象的概念,由两个最基本的属性构成:草图平面(SketchPlane)和轮廓(Profile)。

在UI用户界面上,进人草图编辑的绘图区域后,草图平面就默认设置好了,用户只需要使用草图编辑工具绘制轮廊就可以;
API中则需要用户创建或者确定草图平面,再提供相应的轮廊。上面的两个示例中的端点为(0,0,0)和(10,10,0)的直线;圆心为(0,0,0)和半径为5的圆形(arc)就可以理解为对应的轮廓。

下图左边部分是族文档中的一个拉伸体(Extrusion),右边部分是这个拉伸体的轮廊,为四根首尾相连的直线构成的线组。
 

API从文档中取到拉伸体及其草图的示例参见以下代码:

public void GetSketchFromExtrusion(Document doc,ElementId extrusionId){Extrusion extrusion = doc.GetElement(extrusionId) as Extrusion;SketchPlane sketchPlane = extrusion.Sketch.SketchPlane;CurveArrArray sketchProfile = extrusion.Sketch.Profile;}

Revit中的三维模型,如拉伸(Extrusion)、融合(Blend )、旋转(Revolution )、放样 (Sweep)、放样融合(SweepBlend),都使用到了草图。不但在创建好的模型中可以获取到它的草图(Sketch属性),而且在创建过程中(比如NewExtunsion等方法)也需要使用到草图平面和轮廊。

=========【更多高级应用请关注公众号】========

==================================

RevitAPI之草图及草图平面相关推荐

  1. UG NX 10 草图之草图基准设置

    草图基准指下图中基准放置位置,这个基准的位置及x和y轴方向,直接关系到进入草图后,实体方向,有时实体方向的准确放置会对绘图者视图绘图带来一定方便,所以我们一定要熟悉基准位置及x和y轴方向调整,知道其中 ...

  2. cad设计草图_草图和乐高积木如何启动您的设计系统

    cad设计草图 Here in the Product Design team at Hotstar, Sketch is our workhorse. Chances are that you us ...

  3. 中望3D 2021“草图”之“使用先前平面”

    草图"使用先前平面" 在草图创建进行放置平面选择时,可以直接使用此按钮,自动使用建模历史的最近一个草图特征的平面.

  4. inventor 波纹阵列_Inventor技巧之草图驱动的阵列图文教程

    继矩形阵列和环形阵列之后,加入了第三种阵列方式,草图驱动的阵列,该命令和其他两个阵列命令一起,位于三维模型标签的阵列面板上. 对于阵列的对象,与另外两个阵列命令一样,可以选择特征或者是实体.每一个阵列 ...

  5. UG NX 12 草图曲线

    曲线是曲面的基础,是曲面造型设计中必须用到的元素,因此了解和掌握曲线的创建方法是学习构建曲面的基本技能. 草图曲线可以由一个或多个草图段,以及一个或多个开放或封闭的环组成.如果将草图曲线用于其他特征, ...

  6. inventor 波纹阵列_Inventor技巧之草图驱动的阵列

    草图驱动的阵列命令位于三维模型标签的阵列面板上. 对于阵列的对象,与另外两个阵列命令一样,可以选择特征或者是实体.每一个阵列引用的放置位置通过草图点来控制,草图点来自确定的一张二维或者三维草图,不能从 ...

  7. 结构建模设计——Solidworks软件入门基本操作初体验(软件功能简介、新建零件、绘制草图、建立实体)

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发> <A ...

  8. SolidWorks 入门笔记01:草图绘制

    全文目录 简介 1. 草图的创建 1.1 在基准面上新建一个二维草图 多学一招:退出草图绘制模式,快捷键切换视图 1.2 从已有的草图派生新的草图. 1.3 在零件的平面上绘制草图 多学一招:Soli ...

  9. [SolidWorks二次开发]草图绘制——总论

    当您打开一新零件时候,您通常第一个生成的特征就是草图.草图是 3D 模型的基础,草图经过拉伸.旋转.扫描和放样等特征操作之后生成实体,然后再对实体进行修饰.这就是SolidWorks通常的造型过程. ...

最新文章

  1. matplotlib-pie-绘制饼状图
  2. 贪心算法之——会场安排(nyoj14)
  3. mysql杨辉三角_实现杨辉三角
  4. C# 语法练习(2): 字符转义
  5. 推荐系统——Wide Deep
  6. Qt6 在线安装图文步骤
  7. Java中的接口与抽象类的区别
  8. 阿里云推出首个数据库云上跑分平台,背后是什么逻辑?
  9. Python入门--代码调式
  10. verilog语法记录(一)
  11. 如何批量将 webp 格式的图片转换为 jpg 格式
  12. 软件测试常用的测试方法有哪些?
  13. 16、先天八卦与后天八卦各自有什么用途?
  14. cgcs2000大地坐标系地图_测绘人必备!从地方坐标系到2000国家大地坐标系的转换...
  15. java接口回调、同步回调、异步回调
  16. iOS Presenting view controllers on detached view controllers is discouraged
  17. PS 学习笔记 03-移动工具图层概念
  18. 更简单的非递归遍历二叉树
  19. 数据恢复软件EasyRecovery16下载安装步骤教程
  20. Unity使用AVProVideo播放透明视频

热门文章

  1. POJ2502 Subway 最短路
  2. HTML5全球普及加速 预计将终结iOS与Android界限 转载
  3. 时间序列预测——双向LSTM(Bi-LSTM)
  4. centos7安装Nginx、使用nginx记录
  5. 【GIS】Mapbox-json配置
  6. 35的程序员被辞了可以自己接外包啊?为什么都那么悲观呢?
  7. 外包接单经验谈-寻找客户
  8. 小程序购物车页面wxml部分代码
  9. 让我听听您的浏览器讲话:使用语音合成API
  10. h.264 NALU详细分析2