Добавление полей к атрибутам блока, вставленными в пространство модели

Автор Тема: Добавление полей к атрибутам блока, вставленными в пространство модели  (Прочитано 9566 раз)

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


Оффлайн Alexandr1993

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Добрый день! Ознакомился со статьёй, разобрался, свою задачу по аналогии решил.
Но столкнулся с проблемой при создании поля со ссылкой на динамическое свойство. В этом случае строка с формулой имеет вид:

%<\AcObjProp Object(%<\_ObjId 1710562835008>%).Parameter(3).UserVariable \f "%lu2">%

Как оптимальнее/проще всего получить этот самый номер (как я понимаю номер динамического свойства в коллекции)? Если есть пример - то вообще отлично.

Оффлайн Alexandr1993

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
ADSK, очень нужен Ваш профессиональный совет. Самому решить данную проблему не получается. Уже подумываю над отказом от UserVariable в пользу атрибутов.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
А почему Вы не хотите пойти по самому простому пути, просто распарсить строку?
Как то так:
Код - C# [Выбрать]
  1.       string str = @"%<\AcObjProp Object(%<\_ObjId 1710562835008>%).Parameter(3).UserVariable \f ""%lu2"">%";
  2.  
  3.       if (str.Contains("Parameter("))
  4.       {
  5.         var t0 = str.Split("Parameter(".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Last();
  6.         t0 = t0.Split(')').First();
  7.         int n = int.Parse(t0);
  8.       }

Оффлайн Alexandr1993

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Так я это строку должен создать и поместить в конструктор класса Field. И уже Field поместить в атрибут блока. И вот в примере (статья выше) - точно такое же выполняется для ссылки на атрибут блока. А мне нужно не на атрибут, а на UserVariable. И вопрос - как составить эту самую строку, а именно узнать номер Parameter. При этом я тут экспериментировал - это НЕ порядковый номер, потому что в блоках с 2-3 динамическими свойствами встречал Parameter(92), Parameter(103) и т.д.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Обычно такую строку создают руками под конкретный динамический блок... но если Вам очень хочется, то можете поискать тут:
в красной рамке искомые Вами номера. Как соотнести эти номера с названиями  параметров, я не искал, тут уж Вы сами.

Оффлайн Alexandr1993

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Владимир Шу, благодарю за помощь, но я сам не смог найти аналогичное окно с этим Extension Dictionary - искал через MgdDbg -> Snoop Entities, выбрила вставку блока. И там у меня Extension Dictionary null.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Alexandr1993, так бывает если дин. блок не изменяли, т.е. его отресетили или только вставили. Подергайте его за ручки и этот словарик появится.