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

Creo API (Си). Как обойти все элементы массива "PRO_E_DTMAXIS_CONSTRAINTS (Array of PRO_E_DTMAXIS_CONSTRAINT)"?


Alex_89

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

Добрый день! Подскажите пожалуйста, как можно обойти программно массив получаемый при обращении к "PRO_E_DTMAXIS_CONSTRAINTS " (Возвращает массив из PRO_E_DTMAXIS_CONSTRAINT)? 

Делю так:

ProError ErrorCreo;

 

ProElement ElementHandleCreo;
ErrorCreo = ProFeatureElemtreeExtract(&m_rFeatureCreo, NULL, PRO_FEAT_EXTRACT_NO_OPTS, &ElementHandleCreo);

 

ProElement* Children{ nullptr };
ErrorCreo = ProArrayAlloc(0, sizeof(ProElement), 1, (ProArray*)&Children);

 

ProElempath Path{};
ErrorCreo = ProElempathAlloc(&Path);
 

ProElempathItem Item[]{ {PRO_ELEM_PATH_ITEM_TYPE_ID, PRO_E_DTMAXIS_CONSTRAINTS}};
ErrorCreo = ProElempathDataSet(Path, Item, std::size(Item));

 

ErrorCreo = ProElementArrayGet(ElementHandleCreo, Path, &Children);

        
int SizeArray{};
ErrorCreo = ProArraySizeGet(Children, &SizeArray);

 

Но не могу понять, как далее обратиться к PRO_E_DTMAXIS_CONSTR_TYPE и PRO_E_DTMAXIS_CONSTR_REF содержащимся в каждом из PRO_E_DTMAXIS_CONSTRAINT полученного массива Children.

 

Дерево

#ifndef PRODTMAXISH
#define PRODTMAXISH

     PRO_E_FEATURE_TREE
       |
       |--PRO_E_FEATURE_TYPE
       |
       |--PRO_E_STD_FEATURE_NAME         (Optional)
       |
       |--PRO_E_DTMAXIS_CONSTRAINTS      (Array of PRO_E_DTMAXIS_CONSTRAINT)     <- нужно обойти этот массив
       |    |--PRO_E_DTMAXIS_CONSTRAINT  <- для каждого 
       |         |--PRO_E_DTMAXIS_CONSTR_TYPE  <- получить это 
       |         |--PRO_E_DTMAXIS_CONSTR_REF   <- и это значение
       |
       |--PRO_E_DTMAXIS_DIM_CONSTRAINTS  (Array of PRO_E_DTMAXIS_DIM_CONSTRAINT)
       |    |--PRO_E_DTMAXIS_DIM_CONSTRAINT
       |         |--PRO_E_DTMAXIS_DIM_CONSTR_REF
       |         |--PRO_E_DTMAXIS_DIM_CONSTR_VAL 
       |--PRO_E_DTMAXIS_FIT              (Optional)
            |--PRO_E_DTMAXIS_FIT_TYPE
            |--PRO_E_DTMAXIS_FIT_REF  If FIT_TYPE = PRO_DTMAXIS_FIT_REFERENCE
            |--PRO_E_DTMAXIS_FIT_LEN  If FIT_TYPE = PRO_DTMAXIS_FIT_LENGTH

Большое спасибо!

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


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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • gemini74
      Вы работаете в конторе, основной CAD - Компас, ну немного в SW. Конструктора делают модели в 3D. Для переноса в CAE нужно эту модель сборки упростить, убрать крепеж, сделать как можно меньше тел, убрать зазоры под сварку, убрать мелкие элементы. Потом еще Вы предлагаете сделать модель в оболочках. Это дополнительное время . А если эту модель еще для тепловых расчетов параллельно исследовать? Тоже в оболочках? Перевод в оболочку тоже не всегда корректно можно сделать. Она упрощается до простых форм . Или  строить в отдельном моделировщике расчетную модель, тоже время. В чем целесообразность оболочек? А для чего контроль сетки в SW, разные Якобианы? Оболочки более упрощенная , абстрактная модель , когда можно отбросить влияние формы , с минимумом поверхностей , больших и мелких в модели. Не так?
    • sapr71
      Если я правильно вас понял, то ось А это YZ, а ось С это XY.   Станок вот с таким столом, как на картинке.  
    • mr_Voden
      Буквально плоскостью) Вектором, вокруг которого поворачивается ось, если понятнее. Нормаль к плоскости постройте и станет ясно какая вам подходит. 
    • sapr71
      Ну да)) Все верно! Сейчас попробую Тогда и А другая Подскажите чем отличается YZ от ZX? Сейчас не выдает ошибку. Завтра проверю. Спасибо!
    • mr_Voden
      @sapr71Тогда у вашего станка реально экзотическая кинематика) Насчет А я конечно не знаю, а вот у С плоскость вращения может XY должна быть? 
    • sapr71
      Это не то. В осях вращения у меня все правильно.   Нужно что бы он вставал в ту же позицию только крутился в другую сторону))   Например: Вместо G68.2 X0. Y0. Z0. I-180. J90. K180. должен выдавать G68.2 X0. Y0. Z0. I180. J90. K90.   Если я правильно понял. Но это не точно)
    • Mixon513
      Станок китаец. VDLS800. как понял выводится выводится на дисплей через r65. https://disk.yandex.ru/d/kmdQBjU9jNKwjw
    • Jesse
      Имхо более правильно исходить из типа НДС: если оно объёмное (как в крюке , рельсе или подшипнике), то оболочками просто невозможно его симулировать. Ну а в остальных ситуациях целесообразность. 
    • mr_Voden
      @sapr71 Плоскости вращения поворотных осей верно настроены? У вас на скриншоте "вращение оси". Захотите изменить направление - выберете "обратный". Только скорее всего дело не в этом.
    • sapr71
      Здравствуйте!  Проблема с постпроцессором.  Фрезерный станок 5ти осевой на Fanuc 30i. Физические ограничения у станка по оси А от -120 до 30 градусов. Так вот когда я пытаюсь постпроцессировать программу выкидывает ошибку: WARNING: unable to determine valid rotary positions  Если убираю ограничения в постпроцессоре по оси А, ошибка уходит. Как сделать что бы постпроцессор закручивал стол в другую сторону?   Прикрепил файл с обработкой и постпроцессор. Версия NX12.   Файл с обработкой (tst.zip) Постпроцессор: ( FANUC_30I_5X.zip ) FANUC_30I_5X.zip tst.zip Вот такие ошибки вываливаются когда пытаюсь постпроцессировать программу  
×
×
  • Создать...