一、草图编辑

草图编辑在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. 2018-3-23论文一种新型智能算法--狼群算法(笔记三)实验分析单峰,多峰,可分和不可分函数
  2. Java编程操作Excel的一种方法
  3. Spring MVC漏洞学习总结
  4. 获取拍照图片,显示大图像
  5. QTP中字符串替换函数
  6. java编程彩球滑梯作弊_课内资源 - 基于C++的学生成绩管理系统
  7. 飞鸽传书2010与AM V6.0 功能比较
  8. 阿里云搭建nacos
  9. 工程勘察设计收费标准2002修订版_2020抚顺花海工程设计收费标准
  10. IDEA创建maven聚合项目多模块项目并在Tomcat启动图解详细教程
  11. html自动调用js函数,使用HTML按钮调用JavaScript函数
  12. Linux下添加开机启动,Linux设置程序开机自启动
  13. vscode英文感叹号没出现提示文本解决方法!
  14. Win7系统如何用记事本打开文件?
  15. 增益自适应PI控制器+死区过滤器(Smart PLC向导PID编程应用)
  16. 一、 网络安全基础入门-概念名词
  17. UML(系统分析与设计核心总结)+期末考试例题分析
  18. python中实时查看GPU状况 GPUtil
  19. mac SourceTree 配置比较工具 Beyond Compare 4
  20. .NET 7 预览版 1 发布

热门文章

  1. 进程同步之信号量机制(pv操作)
  2. [c++]std::vector erase 檫除注意事项
  3. 计算机教师试讲结束语,教师招聘面试-试讲经典结尾
  4. 微信小程序地图插件系列(二):微信小程序使用百度地图(不定期补充知识点)
  5. Windows Phone 7 开发系列教程之 初识Windows Phone 7,环境配置
  6. 端点效应的简单复现——附源码
  7. windows7电脑恢复出厂设置如何操作
  8. 创建一个通讯录小项目代码
  9. YaliEditor的主题风格的制作流程
  10. vr全景制作常用的app有哪些,vr全景拍摄真的难吗?