EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 413|回复: 1
打印 上一主题 下一主题

澄清创建参考面函数参数含义

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-15 13:30:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用API创建族的时候,常常用到创建参考面,可以用 Autodesk.Create.Document.FamilyCreate.NewReferencePlane()方法和NewReferencePlane2() 方法创建. 这里我们只谈第一个函数。因为它有一个向量参数的含义比较模糊。方法二需要指定参考面上的三个点即可。

NewReferencePlane定义如下:
  1. <p>
  2. </p><p>[c-sharp] view plaincopy</p><p>public ReferencePlane NewReferencePlane(  </p><p>    XYZ bubbleEnd,  </p><p>    XYZ freeEnd,  </p><p>    XYZ cutVec,  </p><p>    View pView  </p><p>)  </p><p></p>
复制代码
他可以用两个点外加一个向量在指定的视图上创建参考面。



这里第三个参数的向量在RevitAPI.chm中的解释是:The cut vector apply to reference plane, should perpendicular to the vector (bubbleEnd-freeEnd).    cut vector 的含义好像不是一个专有名词,无法找到解释。这个cutVec向量参数的含义是这个向量必须在需要创建的参考平面的里面,相当于切线向量吧。而不是需要创建参考面的法向量。这一点最容易误解。



知道这个含义就简单了。



例如我们想创建一个水平面上45度斜参考平面。如下参考面。





可以用下面的代码。


  1. [c-sharp] view plaincopy
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Text;  
  5. using System.Windows.Forms;  
  6.   
  7. using  Autodesk.Revit .DB;  
  8. using Autodesk.Revit.UI;  
  9. using Autodesk.Revit .ApplicationServices;  
  10. using Autodesk.Revit.Attributes ;  
  11.   
  12.   
  13.   
  14.   [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]  
  15.   [RegenerationAttribute(Autodesk.Revit.Attributes.RegenerationOption.Manual)]  
  16. public class RevitCommand : IExternalCommand  
  17. {  
  18.     public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)  
  19.     {  
  20.   
  21.       UIApplication app = commandData.Application;  
  22.       Document doc = app.ActiveUIDocument.Document;  
  23.       Transaction trans = new Transaction(doc, "ExComm");  
  24.       trans.Start();  
  25.   
  26.   
  27.       // create the reference plane.  
  28.       XYZ bubbleEnd = new XYZ(5,10,0);  
  29.       XYZ freeEnd = new XYZ(10,5,0);  
  30.         
  31.       XYZ cutNorm = new XYZ(0,0,1);  
  32.   
  33.   
  34.       ReferencePlane rp1 = doc.FamilyCreate.NewReferencePlane(bubbleEnd, freeEnd, cutNorm, doc.ActiveView);  
  35.       rp1.Name = "my test43";  
  36.   
  37.       trans.Commit();  
  38.       
  39.         return Result.Succeeded ;  
  40.     }  
  41. }  
复制代码
作者:叶雄进

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

12

主题

854

帖子

1923

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1923
2F
发表于 2014-2-20 14:10:03 | 只看该作者
顶...... 楼下跟上.....
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-16 17:56

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表