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

Функции 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 пользователей

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




  • Сообщения

    • IgP
    • soulnuun
      @the Devil incarnate действительно так, благодарю!  
    • madalik
      Мне неоднократно помогло для такого случая следующее - в диалоге открытия ЧЕРТЕЖА можно выбрать листы для загрузки, отметив их галочками. Так можно открыть не все листы в документе, а поштучно. И если нормально открылось - удалить в чертеже другие листы и сохранить только текущий лист (ы) в другой документ. Предварительно на сам проблемный документ нужно поставить атрибут "только для чтения", чтобы случайно не затереть его. Обычно оказывается, что битым является 1-2 листа, и их остается перечертить, а остальные можно спасти.   Если речь о модели или сборке - можно попробовать открыть их чертеж, а из него вызвать модель/сборку, иногда прокатывает. Либо открыть сборку в сокращенном режиме, а из нее  модель - пару раз так открылись детали, которые напрямую Солид не открывал. И наоборот - открыть все детали из сборки, потом саму сборку
    • IgP
      Сначала, надо ответить на простой вопрос: SW - 3.14ратский, или нет ?
    • Bot
      АСКОН представляет новую, 23-ю версию своего флагманского продукта — системы трехмерного проектирования КОМПАС-3D. Ориентиром в ее разработке стали потребности предприятий высокотехнологичных отраслей промышленности. Вместе с базовыми инструментами 3D и 2D-проектирования обновлены отраслевые приложения для КОМПАС-3D. Смотреть полностью
    • Artem CAD-is
      Всем, привет!  Решил написать небольшую заметку про DriveWorks PRO (DW), а именно про модуль Autopilot. Долго расписывать не буду про данный модуль, скажу кратко: модуль отрабатывает генерацию новых документов (задания) и отвечает за email рассылку. Как и любой модуль DW PRO можно из него запустить проект.  Исходя из выше перечисленного, очевидным функционалом является запуск проектов из вне по событию. Такой функционал реализован через Connectors. Как видно. есть 4 дополнительных способа взаимодействовать с ПО. Самым простым является 1 способ "Folder Watcher" и последний "Scheduler"
    • Snake 60
      https://cloud.mail.ru/public/KqYB/7KDx9KfRw
    • AlexKaz
      Есть вариант не лечить файл, а использовать софт для восстановления данных с диска (или отдать диск в фирмы-реаниматоры). Комп вырубить, загрузиться с внешней системы, в идеале создать полный побайтный дамп диска перед всеми манипуляциями. Файл искать по расширению/примерному разбросу размера, примерному расположению. Есть приличная вероятность, что в файловой системе осталось несколько промежуточных копий, в том числе во временных папках операционки. Или даже в Корзине. Ещё бывает народ включает резервирование в системе, сам того не зная, и контрольные точки восстановления создаются. Останется откатить систему на нужную дату. Не забывая снять полный дамп диска перед этим.
    • davidovka
      Может Creo, T-Flex, NX, Компас, KeyShot, 3ds max.....
    • hlibhlib
      Spannmittelkonfiguration.pdf
×
×
  • Создать...