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

ADN Club => Civil 3D API => Тема начата: Andrey от 16-01-2014, 17:30:49

Название: Необходимо получить список Part Size в Part Family для Part List трубопровода
Отправлено: Andrey от 16-01-2014, 17:30:49
Может кто-нибудь сталкивался с подобной задачей - Как список Part Size в Part Family для Part List трубопровода?
Есть пример http://adndevblog.typepad.com/infrastructure/2013/03/pipe-network-along-water-drop-path.html
в котором Part Size получается как
Код - vb.net [Выбрать]
  1.     Dim partFam As PartFamily = trans.GetObject(idFamily,  OpenMode.ForRead)
  2.     For i As Integer = 0 To partFam.PartSizeCount - 1
  3.     Dim size As PartSize = trans.GetObject(partFam.Item(i),  OpenMode.ForRead)

Мой код на C# для NET.2014 по аналогии с примером
 
Код - C# [Выбрать]
  1.                    Network netwrk = ts.GetObject(NetworkId, OpenMode.ForRead) as Network;
  2.                     ObjectId PartsListId = netwrk.PartsListId;
  3.                     PartsList partlist = ts.GetObject(PartsListId, OpenMode.ForRead) as PartsList;
  4.                    ObjectIdCollection famileIds = partlist.GetPartFamilyIdsByDomain(DomainType.Pipe);
  5.                     foreach (ObjectId id in famileIds)
  6.                     {
  7.                         PartFamily partfamily = ts.GetObject(id, OpenMode.ForRead) as PartFamily;                  
  8.                         for (int s = 0; s < partfamily.PartSizeCount; s++)
  9.                         {
  10.                             PartSize size = ts.GetObject(partfamily.Item(s), OpenMode.ForRead) as PartSize;
  11.                         }                        
  12.                     }

 Error - 'Autodesk.Civil.DatabaseServices.Styles.PartFamily' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'Autodesk.Civil.DatabaseServices.Styles.PartFamily' could be found (are you missing a using directive or an assembly reference?)

Название: Re: Необходимо получить список Part Size в Part Family для Part List трубопровода
Отправлено: Александр Ривилис от 16-01-2014, 17:59:02
Выскажу предположение, что вместо:
Код - C# [Выбрать]
  1. PartSize size = ts.GetObject(partfamily.Item(s), OpenMode.ForRead) as PartSize;
должно быть:
Код - C# [Выбрать]
  1. PartSize size = ts.GetObject(partfamily[s], OpenMode.ForRead) as PartSize;
Название: Re: Необходимо получить список Part Size в Part Family для Part List трубопровода
Отправлено: Andrey от 16-01-2014, 18:04:05
Не помогает
Название: Re: Необходимо получить список Part Size в Part Family для Part List трубопровода
Отправлено: Александр Ривилис от 16-01-2014, 18:11:05
Не помогает
Лаконичность не всегда помогает.  ;) Какое сообщение выдаёт теперь компилятор?
Судя по документации мое предположение должно быть правильным: http://docs.autodesk.com/CIV3D/2014/ENU/API_Reference_Guide/html/279ca94e-2c11-b2fb-4475-14035e3aa726.htm
Название: Re: Необходимо получить список Part Size в Part Family для Part List трубопровода
Отправлено: Andrey от 16-01-2014, 18:28:57
Александр Наумович, не получается побороть!
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs13.postimg.org%2Fyys7n9dmb%2FError.jpg&hash=249a522471b7b3d13f0a34ad229f50ff) (http://postimg.org/image/yys7n9dmb/)
Название: Re: Необходимо получить список Part Size в Part Family для Part List трубопровода
Отправлено: Александр Ривилис от 16-01-2014, 18:32:07
Андрей. Будь внимательнее!!! Снова посмотри что я тебе написал. Не нужен там метод Item. В C# вместо PartFamily.Item(i) пишется PartFamily[ i ]
Название: Re: Необходимо получить список Part Size в Part Family для Part List трубопровода
Отправлено: Andrey от 16-01-2014, 18:40:12
Что-то я сегодня заработался...
СПАСИБО!