Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: shss от 07-10-2014, 12:25:13

Название: Room Separation Line
Отправлено: shss от 07-10-2014, 12:25:13
Добрый день!
Пытаюсь создать Room Separator:
CurveArray curveArr = new CurveArray();
foreach (var point in points)
{
XYZ spt = new XYZ(x1, y1, z1);
XYZ ept = new XYZ(x2, y2, z2);
Line geomLine = Line.CreateBound(spt, ept);
curveArr.Append(geomLine);
}
doc.Create.NewRoomBoundaryLines(doc.ActiveView.SketchPlane, curveArr, doc.ActiveView );
Но после создания массива кривых программа вылетает без какого-либо сообщения.
В чем может быть проблема?

Спасибо
Название: Re: Room Separation Line
Отправлено: Александр Игнатович от 07-10-2014, 13:01:41
А где выполняется код? RevitAPI не поддерживает многопоточность и обращение к модели должно быть из нескольких строго определенных мест. Скорее всего, дело в этом
Название: Re: Room Separation Line
Отправлено: shss от 07-10-2014, 13:12:12
Код выполняется в методе Execute:
public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document doc = commandData.Application.ActiveUIDocument.Document
....
Цитировать
RevitAPI не поддерживает многопоточность
Этого стараюсь избегать
Название: Re: Room Separation Line
Отправлено: shss от 07-10-2014, 13:39:49
Нашел код по созданию комнаты http://thebuildingcoder.typepad.com/blog/2012/06/devlab-and-room-separation.html
Странно, но этот код у меня тоже не работает на Revit 2014.
Название: Re: Room Separation Line
Отправлено: shss от 08-10-2014, 06:51:39
Нашел в чем была проблема,
по умолчанию doc.ActiveView у меня был выставлен 3D View и почему-то код не отрабатывал,
как только я поменял его на FloorPlan View код заработал.