Программирование (ObjectARX, ARX, .NET, LISP и др.)

Программирование (ObjectARX, ARX, .NET, LISP и др.)

Ответить
Moderator
Сообщения: 128
Зарегистрированный: ‎06-05-2009
Сообщение 21 из 64 (603 просмотров)

Re: Revit API

08-17-2012 06:00 AM в ответ на Sadykov

Это сделано для того чтобы избежать повторения стандартной нуммерации Ревит. Можно название Альбома делать невидимыми символами. Формула составления номера листа ревит Альбом.Номер листа. Можно попробовать вместе найти компромис. Еще как вариант создать марку с произвольным текстом. Чисто как обозначение и все

 

Активист сообщества
Active Member
Сообщения: 12
Зарегистрированный: ‎03-29-2012
Сообщение 22 из 64 (579 просмотров)

Re: Revit API

09-14-2012 02:00 PM в ответ на kart1984

Артур, в начале темы Вы говорили, что пишите статью для чайников. Готова ли она?

Active Member
Сообщения: 12
Зарегистрированный: ‎03-29-2012
Сообщение 23 из 64 (556 просмотров)

Re: Revit API

10-06-2012 06:58 AM в ответ на kart1984

С помощью какого метода создать линию детализации? В справке к SDK не нашёл 2012-я версия)

 

Что означает надпись "Overloaded" в описании некоторых методов?

 

Снимок.PNG

Moderator
Сообщения: 128
Зарегистрированный: ‎06-05-2009
Сообщение 24 из 64 (546 просмотров)

Re: Revit API

10-07-2012 11:52 PM в ответ на otmoroz

Доброго времени суток! Да, статья есть (точнее перевод статьи ))), но в данный момент ждем пока ее разместит Autodesk. Как только это случится я сразу же сообщу на своем блоге и продублирую здесь.

По поводу надписи Overloaded. Она означает что метод перегружен. То есть у него есть несколько вариантов вызова. Например:

Один и тот же метод GetElement в качестве данных может принимать как ElementId так и Reference. То есть у него два варианта написания. Или в классе DialogBox метод Show вообще имеет не только разные типы атрибутов но и разное их количество! Но задача у этих методов одинаковая.

Надеюсь объяснил понятно )))
С уважением, Артур.

Активист сообщества
Active Member
Сообщения: 12
Зарегистрированный: ‎03-29-2012
Сообщение 25 из 64 (538 просмотров)

Re: Revit API

10-08-2012 09:00 AM в ответ на kart1984

Статью жду с нетерпением, очень мало информации на русском языке.

 

По поводу Overloaded пока ещё не до конца разобрался, наверное с практикой придёт понимание.

 

С линией детализации разобрался, оказалось всё просто )

Описание тут: http://blog.rodhowarth.com/2011/02/revit-api-how-to-draw-detail-line-on.html

Active Member
Сообщения: 12
Зарегистрированный: ‎03-29-2012
Сообщение 26 из 64 (527 просмотров)

Re: Revit API

[ Изменено ]
10-16-2012 12:37 AM в ответ на otmoroz

Сделал линию детализации, но работает только в планах. На разрезах не хочет работать, вываливается с ошибкой.

 

 

Спойлер

using System;

using System.Collections.Generic;

using Autodesk.Revit.ApplicationServices;

using Autodesk.Revit.Attributes;

using Autodesk.Revit.DB;

using Autodesk.Revit.DB.Structure;

using Autodesk.Revit.UI;

 

namespace

Draw_Line

{

[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]

[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

publicclassDraw_Line: IExternalCommand

{

Application app;

Document doc;

public Result Execute(ExternalCommandData commandData, refstringmessage, ElementSet elements)

{

UIApplication rvtUIApp = commandData.Application;

UIDocument uiDoc = rvtUIApp.ActiveUIDocument;

app = rvtUIApp.Application;

doc = uiDoc.Document;

 

Draw_Annotation_Line();

returnResult.Succeeded;

}

publicvoidDraw_Annotation_Line()

{

doublex1 = 5.0;

 

doubley1 = 5.0;

 

doublez = 0.0;

 

doublex2 = 117.0;

 

doubley2 = 115.0;

XYZ point1 = app.Create.NewXYZ(x1, y1, z);

XYZ point2 = app.Create.NewXYZ(x2, y2, z);

Line line = app.Create.NewLineBound(point1, point2);

DetailCurve detailCurve = doc.Create.NewDetailCurve(doc.ActiveView, line);stringa = doc.ActiveView.Category.Name;

TaskDialog.Show("Done", "Line Created");

 

}

 

}

}

 

Moderator
Сообщения: 128
Зарегистрированный: ‎06-05-2009
Сообщение 27 из 64 (515 просмотров)

Re: Revit API

10-16-2012 05:10 AM в ответ на otmoroz

Все опорные точки в АПИ рисуются в 3Д пространстве. В связи с этим на разрезах используется координата z в зависимости от плоскости разреза x или y.

Активист сообщества
Active Member
Сообщения: 12
Зарегистрированный: ‎03-29-2012
Сообщение 28 из 64 (483 просмотров)

Re: Revit API

[ Изменено ]
10-22-2012 11:51 PM в ответ на kart1984

Получилось разместить линию аннотации в плоскостях фасадов/разрезов с помощью задания координат точек, полученных из

doc.ActiveView.RightDirection и doc.ActiveView.UpDirection

Contributor
Сообщения: 17
Зарегистрированный: ‎03-17-2013
Сообщение 29 из 64 (417 просмотров)

Re: Revit API

03-17-2013 02:32 AM в ответ на kart1984

Добрый день! 

Пробую программировать на visual studio 2010 c# для Revit 2011. Возникла сложность объединения элементов  в линейный массив для их последующего копирования (аналог функции ревита). Для начала решил объединить в массив.

Код:

 

Спойлер
public Autodesk.Revit.UI.Result Execute(
       ExternalCommandData commandData,
       ref string message, 
       ElementSet elements)
{
       try
       {
          var uidoc = commandData.Application.ActiveUIDocument;
          var sel = doc.Selection.Elements;
          ElementArray e = sel as Element;
          ElementArray elementList = new ElementArray();
          elementList.Append(e);

       return Result.Succeeded;
       }
       catch (Exception ex)
       {
          return Result.Failed;
       }
}

 

 

Выдает следующие ошибки:

sel as Element - Cannot implicitly convert type 'Autodesk.Revit.DB.Element' to 'Autodesk.Revit.DB.ElementArray'

 

                          Cannot convert type 'Autodesk.Revit.UI.Selection.SelElementSet' to 'Autodesk.Revit.DB.Element' via

                          a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null

                          type conversion

 

 

elementList.Append(e) - The best overloaded method match for

                                        'Autodesk.Revit.DB.ElementArray.Append(Autodesk.Revit.DB.Element)' has some invalid

                                        arguments

 

                                        Argument '1': cannot convert from 'Autodesk.Revit.DB.ElementArray' to

                                        'Autodesk.Revit.DB.Element'

 

Помогите разобраться.

 

Moderator
Сообщения: 128
Зарегистрированный: ‎06-05-2009
Сообщение 30 из 64 (392 просмотров)

Re: Revit API

[ Изменено ]
03-17-2013 05:00 AM в ответ на kart1984

Приветствую!

Все очень просто. Вы пытаетесь преобразовать массив элементов SelElementSet в объект одного элемента Element. Естественно это не возможно. То есть переменная sel уже сама по себе является массивом элементов. Если вам нужно получить один элемент то нужно его забрать из массива сначала, даже если он в нем единсвенный.

На скорую руку пока так. Если нужно разжевать то позднее все распишу.

Активист сообщества

You are not logged in.

Войдите под своим именем, чтобы задавать и отвечать на вопросы, делиться идеями и т.п. Еще не зарегистрировались? Зарегистрироваться

Need installation help?

Start with some of our most frequented solutions to get help installing your software.

Спросить Сообщество