Размеры, прикрепленные к деталям или родовым моделям Revit

Я хотел бы измерить все мои общие модели, то есть панели и детали. Я выбрал способ сделать это. Но единственная проблема, которую я вижу, состоит в том, что при повторной настройке стены она не будет переопределять измерение.

private static void CreateDimension (начало XYZ, конец XYZ, представление View, текст строки, dir XYZ, двойное смещение) { try { if (!start.IsEqual(end)) { using (Transaction 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 ответ

Вы нашли способ решить эту проблему вручную через пользовательский интерфейс? Это в основном лучшее место для начала при решении задачи Revit API. Если вы можете решить эту проблему с помощью пользовательского интерфейса, велики шансы, что она также может быть автоматизирована. Если решение по пользовательскому интерфейсу не найдено, автоматизация также практически невозможна.

Я бы проанализировал точные различия, вызванные в базе данных Revit по задействованным элементам и их параметрам, выполнив ручную модификацию. Как только вы обнаружили, что именно изменилось в результате взаимодействия с пользовательским интерфейсом, вы, вероятно, сможете программно воспроизвести те же изменения через API. Вот более полное описание того, как решить задачу программирования Revit API:

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

Другие вопросы по тегам