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

Корректировка элемента построения Cproj


tALEX

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

Здравствуйте уважаемые.

Понадобилось мне в программном режиме покорректировать элемент постр CPROJ

Надо поменять кривые прроецирования, а остальное оставить неизменным.

Функция для этого есть известная

extern int UF_CURVE_edit_proj_curves (

tag_t proj_curve_feature,

int n_curve_refs,

tag_t * curve_refs,

int n_face_refs,

tag_t * face_refs,

UF_CURVE_proj_p_t proj_data );

И вот проблема.

Для чтения кривых и граней функции есть

это , например

--------------------------------------------

UF_CURVE_ask_proj_curve_parents (

tag_t proj_curve,

tag_t * defining_feature,

tag_t * defining_target,

tag_t * defining_curve );

---------------------------------------------

а для чтения UF_CURVE_proj_p_t proj_data таковой не обнаружмлось.

Поможите, чем можете

(Особенно niki или nut)

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


Если заменить кривые, то можно конечно попробовать и через replace ....

Но тут есть проблемы -

1. если заменяемая кривая (или точка) используется и в других фичерах (там она тоже попытается подменится)

2. если заменяемая кривая принадлежит фиче (т/е параметризирована) - например проецировались кривые со скетча, экстракт и тд. - то это будет глюк

Ну а если надо добавить или убрать кривые в фичу (CPROJ)?

Насколько я понимаю, вопрос здесь в определении метода проецирования (и дополнительных тагов в зависимости от метода). В v15 мне надо было написать прогу, которая выдает инфу по фиче CPROJ, где главное - метод проецирования. Скоко я тогда не бился - ничо не вышло. В C на NX4 добавили новые ф-ции, типа UF_CURVE_edit_proj_curves1 и тд, но и там вопрос остался.

Может в API С++ или Jave что-то в в этом вопросе решено лучше.

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

Инфа о проецировании кривой - это секретная ф-я UG/Open :wallbash:

А меня интересовала как раз таки информация о методах проецирования.

Но, видно, не судьба.

Как разработчики, бедные, обходятся.

фу на UG/Open

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

Можно попробовать через "одно место" - KBE Api достучаться до параметров UF_CURVE_proj_p_t

1. Делаем adopt для через UF_KF_adopt_ug_objects для фичера CPROJ ( предварительно можно спросить не был ли этот фичер уже adopted через UF_KF_ask_fusion_object )

2. Потом спрашиваем ref chain этого объекта через UF_KF_ask_name_chain_of_instance

3. И наконец через UF_KF_ask_parameters спрашиваем параметры ( в число которых входят и данные из UF_CURVE_proj_p_t) и формируем данные для UF_CURVE_proj_p_t.

PS Выкладки чисто теоретические, сам не проверял.

Regardzzz ...

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

2 niki

Это выше, чем высший пилотаж :(

Это чем дальше в лес, тем ...

Ну, хоть дебаггером не надо ковыряться...

Но... будем посмотреть еще и там.

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

Дык тут проблемка не только в CPROJ.

Я вот с GRIP и API C уже с 11 версии вожусь. Можно сказать накипело.

По моему мнению API на UG уж очень сильно ( и умело ) кастрирован. Причем, по первой смотришь - елы-палы, как много разных возможностей. А когда начинаешь что-то писать, выясняется, что нужной-то ф-ции и нет, зато на одну и ту же фичу натыкано с десяток , которые разнятся версиями и иногда несущественными отличиями интерфейса. Достаточно посмотреть на ф-ции моделирования extrude, sweep, revolve. Такое впечатление, что там полный бардак и какое-то спешное затыкание заплаток и подмазывание трещин.

Зато вот для построения сплайнов ни хрена нормального нема. По крайней мере, у меня не получилось даже сымитировать интерактивное редактирование полюсов для сплайна, построенного через точки.

Я уж молчю про API на драфтинг.

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

В принципе если так уж нужно я бы предложил восстановить метод проецирования

численно

Я думаю сложного в этом нет

Нужно иметь на входе исходную точку и спроецированную точку и поверхность

Точек можно несколько

Снять их можно с кривых при фиксированных параметрах начала или конца

По поводу функциональности UGOPEN

то видимо вся энергия разработчиков ушла на C++(UGOPENPP), Java и NET

которые все равно проигрывают UGOPEN

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

Немного отвлекшись от CPROJ я увлекся изучением OFFSET_CURVE.

Результат также обескураживает.

Не удалось построить (параметрическую) эквидистантную кривую с offset_type = UF_CURVE_OFFSET_DISTANCE_FILLET;

В качестве одной из попыток был взят пример ufd_curve_ask_offset_dir.c из каталога UGOPEN.

И там для параметрической кривой используется offset_type = UF_CURVE_OFFSET_DISTANCE_TANGENT;

или UF_CURVE_OFFSET_DISTANCE_NO_TRIM;

При замене на UF_CURVE_OFFSET_DISTANCE_FILLET

функции UF_CURVE_create_offset_object(&offset_data,&offset_tag) и UF_CURVE_edit_offset_object(&ask_offset_data,offset_tag) выдают ошибку типа такой

*** ERROR code 1105004 at line 1096 in

ufd_curve_ask_offset_dir.c :

+++ The first parameter passed in was invalid

UF_CURVE_edit_offset_object( & Offset_data_pointer , Feat[0] );

И что делать в этом случае :wallbash:

Ваши предложения, господа

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

2 nut888

Вручную все редактируется и работает.

Да, в том примере (ufd_curve_ask_offset_dir.c) я поменял значения эквидистант

-------------

Было

char distance_str[] = {"0.25"};

char neg_distance_str[] = {"-0.25"};

Стало

char distance_str[] = {"0.05"};

char neg_distance_str[] = {"-0.05"};

-------------

Далее я трогал только offset_type пытаясь создать параметрический элемент с offset_type = UF_CURVE_OFFSET_DISTANCE_FILLET; и

НИЧЕГО НЕ ПОЛУЧАЕТСЯ :wallbash:

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

Если вручную Тебе это удалось построить то спроси у построенного

вручную объекта эту структуру UF_CURVE_ask_offset_parms

и распечатай ее значения

Потом сравни их с тем как Ты инициализизуешь свою структуру UF_CURVE_offset_data_s

при создании

Я обычно всегда так делаю когда у меня подобные вещи происходят

Tag объекта можно получить через debugger в UG

UGII_DISPLAY_DEBUG=1

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

Если вручную Тебе это удалось построить то спроси у построенного

вручную объекта эту структуру UF_CURVE_ask_offset_parms

и распечатай ее значения

Потом сравни их с тем как Ты инициализизуешь свою структуру UF_CURVE_offset_data_s

при создании

Я обычно всегда так делаю когда у меня подобные вещи происходят

Tag объекта можно получить через debugger в UG

UGII_DISPLAY_DEBUG=1

Этот путь уже мною пройден (вещь то достаточно очевидная)

Но при типе скругления UF_CURVE_OFFSET_DISTANCE_FILLET

НЕ РАБОТАЕТ ни создание оффсетной кривой ни редактирование оной

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • WinoX
      Доброго времени суток.  После симуляции нет нормального отображения выбранного материала . Выборка вроде и отображается но визуально сложно читается (все однотонное), хотя во время симуляции все красиво. Ноутбук довольно стары по железу: i7 4800MQ, 16GB, видео AMD FirePro m6100 Пробовал разные драйвера, переустанавливать винду - все равно не отображается. На другой машине этаже сборка PM работает  Один скрин во время расчета ,а второй сразу после завершения <a href="https://ibb.co/bzkxdY2"><img src="https://i.ibb.co/bzkxdY2/image.png" alt="image" border="0"></a> <a href="https://ibb.co/sHFz7CX"><img src="https://i.ibb.co/sHFz7CX/2.png" alt="2" border="0"></a>
    • Иван Ларионов
      А где такая настройка? В окне операции "Зеркально отразить компоненты" -только выбор плоскости симметрии и собственно тела, симметричную копию которого надо получить. Да и в чём смысл такой настройки? В самой операции заложена необходимость симметрирования. Если нужно будет переставить на другую сторону от плоскости симметрии тот же компонент, то проще просто его установить со своими привязками. Вы намекаете, что операция симметрии в SW толком не работает?
    • evgw
      Попытался я рассчитать коническую передачу с круговыми зубьями с формой зуба 2 по ГОСТ 19326-73. Оси пересекаются под прямым углом, у колеса 55 зубов, у шестеренки - 12. Ширина венца - 50мм. Взял внешний окружной модуль 6. Получил по расчетам из ГОСТа средний окружной модуль 4. Потом посчитал углы конуса впадин и они сильно отличаются от того, что получается при расчете модуля зубьев. Если я нарисую зуб с внешним модулем 6 и проведу конус впадин под углом 10,47 градуса, например у меня получилось для шестерни, то по середине зуб получится очень высоким, т.е. там где-то больше 5 будет модуль. Где ошибка? Как сделать, чтобы конус впадин и высота зуба в среднем сечении сошлись? Может ГОСТ неправильный?
    • Guhl
      Ну и поставьте частотник вместо пускателя Это хорошо поможет в диагностике Потом, как почините, вернёте контакторы Таймерами скорость мотора не уменьшите
    • Guhl
    • andrey2147
    • Guhl
      Cancel - отмена (англ.) Start - пуск (англ.)
    • brigval
      Раньше ставили. Только значков шероховатости было два, сверху и снизу. И они наносились не на горизонтальную полку, а на наклонную линию выноску. Это означало, что лист с обеих сторон без обработки. в состоянии  поставки. Всем было понятно и вопросов не возникало.
    • alexncr
      Мотор крутится от пускателя, без частотника Есть таймеры в ледере, но не пойму где они задаются 
    • Guhl
      Попробуйте замедлить руку. Если мотор, то частотником, если гидравлика/пневматика, то дросселями и тп
×
×
  • Создать...