Подмена видов профилей

Автор Тема: Подмена видов профилей  (Прочитано 8311 раз)

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

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #15 : 03-04-2019, 17:38:46 »
А элементы коллекции ProfileLabelSetStyleCollection какого типа данных?


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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #16 : 03-04-2019, 17:47:52 »
Как-то так у меня получается

Код - C# [Выбрать]
  1.   CIV_DBS.Styles.ProfileLabelSetStyleCollection coll  = civ_doc.Styles.LabelSetStyles.ProfileLabelSetStyles;
  2.                                 CAD_DBS.ObjectId idSetLS = coll[0];
  3.                                 CIV_DBS.Styles.StyleBase lab = (CIV_DBS.Styles.StyleBase)tr.GetObject(idSetLS, CAD_DBS.OpenMode.ForRead);
  4.                                 string SetName = lab.Name;
  5.                                
  6.  
  7.                                 Profile.CreateFromSurface(pr.Name, civ_doc, trs.Name, sur.Name, pr.Layer, pr.StyleName, SetName);

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #17 : 03-04-2019, 18:00:49 »
Я сейчас не у компа и не могу посмотреть, но скорее всего это ProfileLabelSet
В принципе, ты все правильно написал. Если тебе нужен конкретный набор меток, то просто по этой коллекции делаешь цикл и проверяешь имя каждого набора в чертеже и находишь тот, который нужен.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Подмена видов профилей
« Ответ #18 : 03-04-2019, 18:27:53 »
Есть же перегрузка этого метода, которая требует не строки-имена, а ObjectId. И можно будет передать сразу idSetLS, не открывая для получения его имени.
Вообще, очень странно, что перегрузка со строками не помечена как Obsolete.

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #19 : 03-04-2019, 19:08:57 »
Если тебе нужен конкретный набор меток, то просто по этой коллекции делаешь цикл и проверяешь имя каждого набора в чертеже и находишь тот, который нужен.
Ну я вообщем так и сделал. Только пока не могу понять какую метку и коллекции взять. Если беру первую метод возвращает ошибку

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #20 : 03-04-2019, 21:22:19 »
Если беру первую метод возвращает ошибку
Что за ошибка?

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Подмена видов профилей
« Ответ #21 : 04-04-2019, 06:30:58 »
В общем виде получение набора меток профиля будет выглядеть так:
Код - C# [Выбрать]
  1. string ssname = "Полный набор меток";
  2. ObjectId labelsid = civildoc.Styles.LabelSetStyles.ProfileLabelSetStyles[0];
  3.  
  4. foreach (ObjectId id in civildoc.Styles.LabelSetStyles.ProfileLabelSetStyles)
  5. {
  6.     Db.Styles.ProfileLabelSetStyle ss = (Db.Styles.ProfileLabelSetStyle)trans.GetObject(id, OpenMode.ForRead);
  7.  
  8.     if (ss.Name == ssname)
  9.     {
  10.         labelsid = ss.Id;
  11.         break;
  12.     }
  13. }

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #22 : 04-04-2019, 09:59:18 »
Что за ошибка?
Пишет что профиль с таким именем уже существует.

The profile name already exists, Please use a nother one
Это что же получается, что в последнем аргументе я должен использовать что-то новое?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Подмена видов профилей
« Ответ #23 : 04-04-2019, 10:58:20 »
Это что же получается, что в последнем аргументе я должен использовать что-то новое?
В первом. Да, новое и уникальное.

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #24 : 04-04-2019, 11:04:28 »
В первом. Да, новое и уникальное.
Я правильно понял?
Значит я не могу взять имя того профиля (первый аргумент) подменяю
Я должен придумывать каждый раз новое уникальное имя профилю?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Подмена видов профилей
« Ответ #25 : 04-04-2019, 11:25:21 »
Да, всё верно.

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #26 : 04-04-2019, 13:38:19 »
Ура!
Спасибо все огромно все получилось!!!

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #27 : 05-04-2019, 09:47:35 »
В этой теме отметил решение где написано про функцию Profile.CreateFromSurface
Именно эта функция помогла решить проблему.

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Подмена видов профилей
« Ответ #28 : 05-04-2019, 16:14:15 »
И можно будет передать сразу idSetLS
А членом какого класса является поле idSetLS?
Ой что-то я затупил idSetLS это моя переменная.