2017-03-06 52 views
0

我想确定所有通用型号,即面板和零件。我选择了一种方法来实现这一点。但我能看到的唯一问题是,在修复墙时,它不会覆盖维度。部件或一般型号附加的尺寸Revit

私有静态无效CreateDimension(XYZ开始,XYZ结束,观景,字符串文本,XYZ目录,双胶纸) { 尝试 {如果(!start.IsEqual(完)){ 使用 (交易t =新的交易(AppMain.Settings.ActiveDoc,“添加维度”)) t.Start();

    Curve c = Line.CreateBound(start, end); 

        XYZ normal = dir.Multiply(offset); 

        Line tranformed = c.CreateTransformed(Transform.CreateTranslation(normal)) as Line; 

        if (null != tranformed) 
        { 
         XYZ ai = start; 
         XYZ ao = tranformed.GetEndPoint(0); 
         Line lineA = Line.CreateBound(ai, ao); 
         DetailCurve modelcurveA = AppMain.Settings.ActiveDoc.Create.NewDetailCurve(view, lineA); 

         XYZ bi = end; 
         XYZ bo = tranformed.GetEndPoint(1); 
         Line lineB = Autodesk.Revit.DB.Line.CreateBound(bi, bo); 
         DetailCurve modelcurveB = AppMain.Settings.ActiveDoc.Create.NewDetailCurve(view, lineB); 

         ReferenceArray ra = new ReferenceArray(); 
         ra.Append(modelcurveA.GeometryCurve.Reference); 
         ra.Append(modelcurveB.GeometryCurve.Reference); 

         Line lineAB = Line.CreateBound(ao, bo); 
         Dimension dimension = AppMain.Settings.ActiveDoc.Create.NewDimension(view, lineAB, ra); 
         dimension.Below = text; 
        } 


        t.Commit(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      AppMain.Settings.LogErrorMessage(ex.Message); 
     } 
    } 

有没有其他方法可以做到这一点?

感谢, 罗布

回答

0

你找到一种方法,通过用户界面手动解决这个问题?在处理Revit API任务时,这通常是最好的开始。如果你可以通过用户界面来解决问题,那么这个机会很好,它也可以被自动化。如果找不到UI解决方案,自动化也是不可能的。

我会通过执行手动修改来分析Revit数据库中所涉及元素及其参数在Revit数据库中的确切区别。一旦您准确发现了手动UI交互所做的更改,您可以通过API以编程方式复制相同的更改。下面详细介绍如何解决Revit API编程任务:

http://thebuildingcoder.typepad.com/blog/2017/01/virtues-of-reproduction-research-mep-settings-ontology.html#3