零件或通用型号附带的尺寸Revit

时间:2017-03-06 17:35:18

标签: revit-api revit revit-2015

我想对所有通用型号进行尺寸标注,即面板和零件。我已经选择了一种方法来实现这一目标。但我能看到的唯一问题是,当将墙壁拆开时,它不会覆盖尺寸。

private static void CreateDimension(XYZ start,XYZ end,View view,string text,XYZ dir,double offset)         {             尝试             {                 if(!start.IsEqual(end))                 {                     使用(交易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);
        }
    }

还有其他办法吗?

谢谢, 罗布

1 个答案:

答案 0 :(得分:0)

您是否找到了通过用户界面手动解决此问题的方法?这是解决Revit API任务时最好的起点。如果你可以通过用户界面来解决它,那么机会很好也可以自动化。如果没有找到UI解决方案,那么自动化也几乎是不可能的。

我将通过执行手动修改来分析Revit数据库中涉及的元素及其参数的确切差异。一旦您确切地发现了手动UI交互所发生的变化,您就可以通过API以编程方式复制相同的更改。以下是有关如何解决Revit API编程任务的更详尽的说明:

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