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

萧闫子 发表于 2014-1-15 13:30:32

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

用API创建族的时候,常常用到创建参考面,可以用 Autodesk.Create.Document.FamilyCreate.NewReferencePlane()方法和NewReferencePlane2() 方法创建. 这里我们只谈第一个函数。因为它有一个向量参数的含义比较模糊。方法二需要指定参考面上的三个点即可。

NewReferencePlane定义如下:<p>
</p><p> 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度斜参考平面。如下参考面。





可以用下面的代码。

view plaincopy
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

usingAutodesk.Revit .DB;
using Autodesk.Revit.UI;
using Autodesk.Revit .ApplicationServices;
using Autodesk.Revit.Attributes ;





public class RevitCommand : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
    {

      UIApplication app = commandData.Application;
      Document doc = app.ActiveUIDocument.Document;
      Transaction trans = new Transaction(doc, "ExComm");
      trans.Start();


      // create the reference plane.
      XYZ bubbleEnd = new XYZ(5,10,0);
      XYZ freeEnd = new XYZ(10,5,0);
      
      XYZ cutNorm = new XYZ(0,0,1);


      ReferencePlane rp1 = doc.FamilyCreate.NewReferencePlane(bubbleEnd, freeEnd, cutNorm, doc.ActiveView);
      rp1.Name = "my test43";

      trans.Commit();
      
      return Result.Succeeded ;
    }
}作者:叶雄进文章来源:http://blog.csdn.net/joexiongjin/article/category/782739

AK47 发表于 2014-2-20 14:10:03

顶......
楼下跟上.....

页: [1]
查看完整版本: 澄清创建参考面函数参数含义