Создание крыши Roof

Автор Тема: Создание крыши Roof  (Прочитано 1770 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн A.EgorovАвтор темы

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Создание крыши Roof
« : 04-09-2020, 11:20:14 »
Всем привет  ;)
Revit 2020, .NET 4.7
При попытки создать крышу в проекте возникает исключение типа System.AccessViolationException
с сообщением "Attempted to read or write protected memory. This is often an indication that other memory is corrupt".
метод
Код - C# [Выбрать]
  1. public FootPrintRoof NewFootPrintRoof(
  2.         CurveArray footPrint,
  3.         Level level,
  4.         RoofType roofType,
  5.         out ModelCurveArray footPrintToModelCurvesMapping
  6. )
после ковыряния выяснил следующие:
- если проекте есть крыша: все работает
- если создать крышу пользовательским инструментом, удалить, закрыть проект с сохранением: все работает

вопрос: в проекте нужно как-то активировать крыши?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Создание крыши Roof
« Ответ #1 : 04-09-2020, 11:53:42 »
Проверял в 2020.2.3, в 2020.2.1 и до кучи в 2019, воспроизвести не смог. Тестировал на чистом файле, т.е., файл\новый проект, в шаблоне выбирал "нет"

Оффлайн A.EgorovАвтор темы

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Создание крыши Roof
« Ответ #2 : 04-09-2020, 13:48:24 »
Проверял в 2020.2.3, в 2020.2.1 и до кучи в 2019, воспроизвести не смог. Тестировал на чистом файле, т.е., файл\новый проект, в шаблоне выбирал "нет"

Спасибо, тоже попробовал на пустом шаблоне - работает.
В моем проекте - нет.

из сообщения исключения, как понял, что-то не так с профилем

но профиль максимально прост:
   
Код - C# [Выбрать]
  1.         [TransactionAttribute(TransactionMode.Manual)]
  2.         [RegenerationAttribute(RegenerationOption.Manual)]
  3.         class Class1 : IExternalCommand
  4.         {
  5.                 public Result Execute(ExternalCommandData commandData,
  6.                         ref string messege,
  7.                         ElementSet elements)
  8.                 {
  9.                         Document doc = commandData.Application.ActiveUIDocument.Document;
  10.  
  11.                         const double mmToft = 0.00328084;
  12.  
  13.                         CurveArray profile = new CurveArray();
  14.  
  15.                         XYZ p1 = new XYZ(0, 0, 0);
  16.                         XYZ p2 = new XYZ(4000 * mmToft, 0, 0);
  17.                         XYZ p3 = new XYZ(4000 * mmToft, 4000 * mmToft, 0);
  18.                         XYZ p4 = new XYZ(0, 4000 * mmToft, 0);
  19.  
  20.                         profile.Append(Line.CreateBound(p1, p2));
  21.                         profile.Append(Line.CreateBound(p2, p3));
  22.                         profile.Append(Line.CreateBound(p3, p4));
  23.                         profile.Append(Line.CreateBound(p4, p1));
  24.  
  25.                         Level level = doc.ActiveView.GenLevel;
  26.                         RoofType defaultType = doc.GetElement(doc.GetDefaultElementTypeId(ElementTypeGroup.RoofType)) as RoofType;
  27.  
  28.                         using (Transaction t = new Transaction(doc, "CreateRoof"))
  29.                         {
  30.                                 t.Start();
  31.  
  32.                                 ModelCurveArray footPrintToModelCurveMapping = new ModelCurveArray();
  33.                                 FootPrintRoof roof = doc.Create.NewFootPrintRoof(profile, level, defaultType, out footPrintToModelCurveMapping);
  34.  
  35.                                 Parameter roomBoundaring = roof.get_Parameter(BuiltInParameter.WALL_ATTR_ROOM_BOUNDING);
  36.                                 roomBoundaring.Set(0);
  37.  
  38.                                 t.Commit();
  39.                         }
  40.                         return Result.Succeeded;
  41.         }
  42.  

Отмечено как Решение A.Egorov 04-09-2020, 13:59:31

Оффлайн A.EgorovАвтор темы

  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
Re: Создание крыши Roof
« Ответ #3 : 04-09-2020, 13:59:26 »
В общем проблема в файле