Присвоить диаметр объекту PIPE

Автор Тема: Присвоить диаметр объекту PIPE  (Прочитано 2116 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun

Свойство только для чтения
pipe.InnerDiameterOrWidth

Как мне действовать
Присвоить стразу стиль трубе?


Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Присвоить диаметр объекту PIPE
« Ответ #1 : 27-12-2018, 11:49:25 »
Я могу конечно клонировать трубу, которая есть в проекте.
А как быть ели к примеру в проекте нет трубы нужного мне диаметра.
Дополнять руками новую трубу лень.

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Присвоить диаметр объекту PIPE
« Ответ #2 : 27-12-2018, 16:15:11 »
Посмотри в списке PartData.
Сделал тестовую команду для чтения свойств труб и колодцев - выводит все свойства в ком.строку.
Код - C# [Выбрать]
  1.         public void DebugPartParameters(Document doc)
  2.         {
  3.             using (var t = doc.TransactionManager.StartTransaction())
  4.             {
  5.                 Part part = null;
  6.                 var ent = doc.Editor.GetEntity("Выбери трубу или колодец").ObjectId.GetObject<Entity>();
  7.                 switch (ent)
  8.                 {
  9.                     case Pipe p:
  10.                         part = p;
  11.                         break;
  12.                     case Structure s:
  13.                         part = s;
  14.                         break;
  15.                     case ProfileViewPart pvPart:
  16.                         part = pvPart.ModelPartId.GetObject<Part>();
  17.                         break;
  18.                 }
  19.  
  20.                 if (part == null)
  21.                     return;
  22.  
  23.                 $"Типоразмер={part.PartSizeName}".WriteToCommandLine();
  24.                 $"Семейство={part.GetFamilyName()}".WriteToCommandLine();
  25.  
  26.                 foreach (var field in part.PartData.GetAllDataFields())
  27.                 {
  28.                     $"{field.IsReadOnly} {field.Name}={field.Value}, {field.Description}, Context={field.Context}, DataType={field.DataType}, IsFromList={field.IsFromList}, IsFromRange={field.IsFromRange}, units={field.Units}".WriteToCommandLine();
  29.                 }
  30.  
  31.                 t.Commit();
  32.             }
  33.         }
  34.  
« Последнее редактирование: 28-12-2018, 15:32:44 от Вильдар »

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Присвоить диаметр объекту PIPE
« Ответ #3 : 28-12-2018, 14:36:08 »
Вильдар, в точку!
По коду:
Убери, пожалуйста, спойлер. Очень сложно с телефона его раскрыть :). Где-то было уже, что Александр Наумович рекомендовал меньше 500 строк под спойлер не прятать и вообще не злоупотреблять этим. Без логина, например, под спойлер не заглянуть.
PartData реализует интерфейс IDisposable. Зачем это сделано и что происходит в его методе Dispose - мне не ясно, т.к. там идёт работа с нативными объектами. Но я на всякий случай упаковываю использование в конструкцию using.