Команда смещения в Revit API

Как я могу использовать команду смещения в моем плагине C#? У меня есть список линий/дуг для включения в смещение и значение смещения. Я не могу найти команду для использования.

Я думал, что класс ElementTransformUnit содержит что-то для этого, но кажется, что это не так...

Спасибо


person Tobia Zambon    schedule 04.09.2014    source источник


Ответы (1)


Насколько мне известно, нет команды Offset, но я думаю, что вы могли бы сделать ее довольно легко, используя вместо этого метод ElementTransformUtils.CopyElement. Попробуйте что-то вроде этого:

    static ElementId Offset(this Element originalelement, double offsetamount, string offsetdirection)
    {
        ElementId newelement = null;
        Document curdoc = originalelement.Document;
        LocationPoint elp = originalelement.Location as LocationPoint;
        XYZ elem_location = null;

        switch(offsetdirection.ToUpper())
        {
            default:
                break;

            case "X":
                elem_location = new XYZ(offsetamount, 0.0, 0.0) + elp.Point;
                break;

            case "Y":
                // code for Y
                break;

            case "Z":
                // code for Z
                break;
        }

        try
        {
            using (Transaction tr_offset = new Transaction(curdoc, "Offsetting element"))
            {
                tr_offset.Start();
                newelement = ElementTransformUtils.CopyElement(curdoc, originalelement.Id, elem_location).FirstOrDefault();
                tr_offset.Commit();
            }
        }

        catch (Exception e)
        {
            Console.WriteLine("Command Failed. See below: \n" + e.StackTrace.ToString());
        }

        return newelement;
    }

может быть лучше, если вы сделаете перечисление Direction или что-то в этом роде, но я думаю, что это должно работать для ваших целей.

person prestonsmith    schedule 18.04.2015