Программирование (ObjectARX, ARX, .NET, LISP и др.)
- Подписка на RSS-канал
- Отметить тему как новую
- Отметить тему как прочитанную
- Отслеживать эту тему на первой позиции списка
- Закладка
- Подписаться
- Страница в формате печати
Re: Revit API
- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Это сделано для того чтобы избежать повторения стандартной нуммерации Ревит. Можно название Альбома делать невидимыми символами. Формула составления номера листа ревит Альбом.Номер листа. Можно попробовать вместе найти компромис. Еще как вариант создать марку с произвольным текстом. Чисто как обозначение и все
Re: Revit API
- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Артур, в начале темы Вы говорили, что пишите статью для чайников. Готова ли она?
Re: Revit API
- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
С помощью какого метода создать линию детализации? В справке к SDK не нашёл 2012-я версия)
Что означает надпись "Overloaded" в описании некоторых методов?
Re: Revit API
- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Доброго времени суток! Да, статья есть (точнее перевод статьи ))), но в данный момент ждем пока ее разместит Autodesk. Как только это случится я сразу же сообщу на своем блоге и продублирую здесь.
По поводу надписи Overloaded. Она означает что метод перегружен. То есть у него есть несколько вариантов вызова. Например:
Один и тот же метод GetElement в качестве данных может принимать как ElementId так и Reference. То есть у него два варианта написания. Или в классе DialogBox метод Show вообще имеет не только разные типы атрибутов но и разное их количество! Но задача у этих методов одинаковая.
Надеюсь объяснил понятно )))
С уважением, Артур.
Re: Revit API
- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Статью жду с нетерпением, очень мало информации на русском языке.
По поводу Overloaded пока ещё не до конца разобрался, наверное с практикой придёт понимание.
С линией детализации разобрался, оказалось всё просто )
Описание тут: http://blog.rodhowarth.com/2011/02/revit-api-how-t
Re: Revit API
[ Изменено ]- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Сделал линию детализации, но работает только в планах. На разрезах не хочет работать, вываливается с ошибкой.
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.Re
[Autodesk.Revit.Attributes.Regeneration(Autodesk.R
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");
}
}
}
Re: Revit API
- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Re: Revit API
[ Изменено ]- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Получилось разместить линию аннотации в плоскостях фасадов/разрезов с помощью задания координат точек, полученных из
doc.ActiveView.RightDirection и doc.ActiveView.UpDirection
Re: Revit API
- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Добрый день!
Пробую программировать на 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.Re
arguments
Argument '1': cannot convert from 'Autodesk.Revit.DB.ElementArray' to
'Autodesk.Revit.DB.Element'
Помогите разобраться.
Re: Revit API
[ Изменено ]- Отметить как новое
- Закладка
- Подписаться
- Подписка на RSS-канал
- Выделить
- Печать
- Электронная почта другу
- Сообщить о недопустимом содержимом
Приветствую!
Все очень просто. Вы пытаетесь преобразовать массив элементов SelElementSet в объект одного элемента Element. Естественно это не возможно. То есть переменная sel уже сама по себе является массивом элементов. Если вам нужно получить один элемент то нужно его забрать из массива сначала, даже если он в нем единсвенный.
На скорую руку пока так. Если нужно разжевать то позднее все распишу.



