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

ADN Club => Revit API => Тема начата: Art от 24-09-2018, 05:23:24

Название: Создание уровней
Отправлено: Art от 24-09-2018, 05:23:24
Пытаюсь создать уровень и стену на нем в Revit кодом ниже. Код взят из справки. Выдает ошибку Attempt to modify the model outside of transaction. Подскажите, какой логикой я должен действовать, чтобы без проблем создавать объекты и взаимодействовать с ними? И что мне нужно добавить в код, чтобы все работало?

Код - C# [Выбрать]
  1. Autodesk.Revit.ApplicationServices.Application app = commandData.Application.Application;
  2. Document activeDoc = commandData.Application.ActiveUIDocument.Document;
  3. XYZ start = new XYZ(0, 0, 0);
  4. XYZ end = new XYZ(10, 10, 0);
  5. Line geomLine = Line.CreateBound(start, end);      
  6. Level level =  Level.Create(activeDoc, 20.0);    
  7. Wall.Create(activeDoc, geomLine, level.Id , true);
  8. return Result.Succeeded;
Название: Re: Создание уровней
Отправлено: enot от 24-09-2018, 09:52:39
Код - C# [Выбрать]
  1. Autodesk.Revit.ApplicationServices.Application app = commandData.Application.Application;
  2. Document activeDoc = commandData.Application.ActiveUIDocument.Document;
  3. XYZ start = new XYZ(0, 0, 0);
  4. XYZ end = new XYZ(10, 10, 0);
  5. Transaction t=new Transaction  (activeDoc, "transaction");
  6. t.Start();
  7. Line geomLine = Line.CreateBound(start, end);      
  8. Level level =  Level.Create(activeDoc, 20.0);  
  9. Wall.Create(activeDoc, geomLine, level.Id , true);
  10. t.Commit();
  11. return Result.Succeeded;
Название: Re: Создание уровней
Отправлено: Александр Ривилис от 24-09-2018, 11:47:04
Art,
Приветствую на форуме! Прочитайте у меня в подписи как следует форматировать код для форума и соблюдайте это правило.
Название: Re: Создание уровней
Отправлено: Art от 25-09-2018, 14:18:00
Огромное спасибо за ответ. Вернусь с учёбы, проверю и постараюсь найти что то о транзакте.
Так же благодарен модератору за лояльность к новоприбывшим и обязательно учту замечания в будущем. Спасибо!