Перейти к публикации

Функции Open C Api


irina

Рекомендованные сообщения

Подскажите, если я знаю тэг компонента в подсборке, возможно и если да, то какой командой узнать тэг этого компонента в вышестоящей сборке?

(Тэг компонента получаю после выполнения команды:

UF_CALL(UF_OBJ_cycle_objs_in_part(comp, UF_component_type, &comp_tag))

Ссылка на сообщение
Поделиться на других сайтах


Подскажите, если я знаю тэг компонента в подсборке, возможно и если да, то какой командой узнать тэг этого компонента в вышестоящей сборке?

(Тэг компонента получаю после выполнения команды:

UF_CALL(UF_OBJ_cycle_objs_in_part(comp, UF_component_type, &comp_tag))

Прочитал 3 раза все равно не понял, что надо. Нарисуй картинку (схемку). Я так понимаю задача немного шире стоит, нежели узнать тэги. Просто если задачу поставить полно, может и решение уже есть.
Ссылка на сообщение
Поделиться на других сайтах

Правильно ли я понимаю, что есть сборка

asm

...|___subasm

.............|_______det

у нас есть part occurence для det в конексте asm

а нам надо найти part occurence для det в контексте subasm

это так ?

Regardzzz ...

Ссылка на сообщение
Поделиться на других сайтах

Правильно ли я понимаю, что есть сборка

asm

...|___subasm

.............|_______det

у нас есть part occurence для det в конексте asm

а нам надо найти part occurence для det в контексте subasm

это так ?

Regardzzz ...

У нас есть part occurence для det в конексте subasm

а нам надо найти part occurence для det в контексте asm

Ссылка на сообщение
Поделиться на других сайтах

Подскажите, если я знаю тэг компонента в подсборке, возможно и если да, то какой командой узнать тэг этого компонента в вышестоящей сборке?

(Тэг компонента получаю после выполнения команды:

UF_CALL(UF_OBJ_cycle_objs_in_part(comp, UF_component_type, &comp_tag))

Которая входит в это подсборку?

Советую обратить внимание при конструировании алгоритма что в головной сборке вышестоящей подсборки их может быть много одинаковых и какую Вам надо Ведь не любую же а вероятно ту ветку куда входит тег компонента в подсборке

Посмотрите

UF_ASSEM_ask_parent_component

UF_ASSEM_ask_inst_of_part_occ

UF_ASSEM_ask_part_occurrence

UF_ASSEM_ask_part_occ_of_inst

Может быть еще и эти

UF_ASSEM_is_occurrence

UF_ASSEM_ask_work_occurrence

UF_ASSEM_ask_root_part_occ

UF_ASSEM_ask_work_part

Пример простейшего кода проверяющего является ли данный объект в данном случае в активной подсборке

(не серенький)

Это если дисплейная часть root а рабочая ниже и имеется несколько одинаковых подсборок

одна из которых work

bool instance_data::is_obj_outside_work_part(tag_t obj_tag)

{ int irc; bool ret=false;

  tag_t part_occ_tag, instance_tag, work_occ_tag;



  try

  {

  part_occ_tag = UF_ASSEM_ask_part_occurrence(obj_tag);

  work_occ_tag = UF_ASSEM_ask_work_occurrence();



	if(part_occ_tag != work_occ_tag)

	{

	  while(part_occ_tag != work_occ_tag)

	  {

	  if(part_occ_tag == NULL_TAG) { ret=true; break; }

	  instance_tag=UF_ASSEM_ask_inst_of_part_occ(part_occ_tag);

	  irc=UF_ASSEM_ask_parent_component(part_occ_tag, &part_occ_tag);

	  if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

	  }

	}

  }

  catch(base_err &e) { e.trace(THIS_FILE, __LINE__); throw; }

  catch(...)		 { base_err e(THIS_FILE, __LINE__, "System error"); throw e; }

return ret;

}
Ссылка на сообщение
Поделиться на других сайтах

У нас есть part occurence для det в конексте subasm

а нам надо найти part occurence для det в контексте asm

Простейший алгоритм чтобы что-то начать понимать в этом -

1) Найдите прототип UF_ASSEM_ask_prototype_of_occ

2) Найдите все occ UF_ASSEM_ask_occs_of_entity

3) Выберете из множества occ нужный Вам - например по part_occ в котором лежит occ UF_ASSEM_ask_part_occurrence

Чтобы найти нужный Вым part_occ посмотрите код приведенный в предыдущем моем посте

irc=UF_ASSEM_ask_parent_component(part_occ_tag, &part_occ_tag);

Перемещение по подсборкам к корню

Этот алгоритм прост для понимания и работает если нет множественных вхождений одинаковых компонентов

Ссылка на сообщение
Поделиться на других сайтах

2 irina

Суммируя вышесказанное :)

Итак, если ситуация такая

1. имеем вот такое состояние

subassm (dp, wp)

... |______det

, где dp == displayed part, wp == work part

2. в состоянии (1.) запустили алгоритм поиска part occurences.

3. получили из (2.) occurence det в контексте subassm

4. теперь имеем вот такое состояние

asm (dp, wp)

...|__subassm

...|.......|______det

...|__subassm

...........|______det

т.е. в сборку asm входит 2 одинаковые подсборки subassm

и мы теперь пытаемся найти part occurence для det в контексте asm.

если это так, то задача неразрешима.

если это НЕ так, то приведите правильный алгоритм получения part occurences ...

Regardzzz ....

Ссылка на сообщение
Поделиться на других сайтах

2 irina

Суммируя вышесказанное :)

Итак, если ситуация такая

1. имеем вот такое состояние

subassm (dp, wp)

... |______det

, где dp == displayed part, wp == work part

2. в состоянии (1.) запустили алгоритм поиска part occurences.

3. получили из (2.) occurence det в контексте subassm

4. теперь имеем вот такое состояние

asm (dp, wp)

...|__subassm

...|.......|______det

...|__subassm

...........|______det

т.е. в сборку asm входит 2 одинаковые подсборки subassm

и мы теперь пытаемся найти part occurence для det в контексте asm.

если это так, то задача неразрешима.

если это НЕ так, то приведите правильный алгоритм получения part occurences ...

Regardzzz ....

по п. 4 Смотря по ЧЕМУ искать. Если по тегу парта, то не разрешима - но это в реальной жизни и не надо, а вот если искать по выбранному в det объекту - то очень даже разрешима :)

Ссылка на сообщение
Поделиться на других сайтах

2 dba

Но в этом случае мы найдем два объекта (object occurence) из det ( или два part occurence det ) в контексте asm.

в этом случае непонятно, какой нам нужен.

+ если у нас вообще вот такое ввот

asm (dp, wp)

...|__subassm

...|.......|______det

...|__subassm

...|.......|______det

...|__det

то становится совсем весело :)

PS а вот если ситуация прямо противоположная, т.е. мы выбрали что-то в одной из det в контексте asm и нам надо это что-то пересчитать в

контекст сооветствующей subassm, то тут есть решение.

Regardzzz ...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...