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

Подарок от Деда Мороза


tALEX

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

Для UGNX2

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

Поэтому сейчас предлагается вашему вниманию новая функция

Заменить кривую

Эта функция, несмотря на ее простоту обладает большими возможностями.

Дополнительные возможности

1. Вы получаете инструмент, который позволит совершенно единообразно корректировать элементы построения.

2. Если на 1 кривую ссылаются 100 элементов построения, то прежде надо было 100 раз выполнить функцию редактирования, а сейчас вы сможете заменить эту кривую за 1 операцию.

3. Вы можете за раз изменить несколько элементов построения.

Диалог

В диалоге мы указываем

1) Кривые, которые хотим заменить

2) Кривые на которые мы хотим заменить

Чуть ниже показывается количество тех и других.

Если тех и других кривых поровну, то активизируются [OK] и [Применить]

По нажатии [Применить] выполняются соответствующая замена.

Заменяемые и заменяющие кривые так же меняются местами, поэтому если еще раз нажать [Применить] то все вернется к состоянию до корректировки(Если повезет)

Некоторые недостатки.

1 Молчаливое удаление имен, атрибутов и разгруппировка используемых кривых

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

3. Эта замена никак не учитывает ориентации кривых, поэтому в тех элементах построения, где это существенно, могут быть изменения ориентации, которые потом должны исправляться стандартными способами.

4.Хотелось бы при ошибках вызывать стандартную процедуру, но пока не сделано.

5. К диалогу могут быть претензии (не реализовано MB3) и так далее...

Где найти

Инструменты-Заменить кривую

Инсталляция

1. Разахивируйте полученный вами архив в какой нибудь каталог.

2 Пусть этот каталог для определенности будет с:\ug_utils\

3. В этом каталоге должны появиться подкаталоги

application

startup

udo

help

4. Ищем в каталоге <там, где установлен UG>\ugii\menus\ файл custom_dirs.dat

5. Добавляем в него строчку с именем каталога (с:\ug_utils\ например).

6. Задаем переменную окружения (Мой компьютер, Свойства, Дополнительно, Переменные Среды) MY_UGII_UTILS ,указывающую на местоположение каталога, в котором все это находится например так. MY_UGII_UTILS=с:\ug_utils\ и у вас заработает маленькая инструментальная панелька с этой функцией и контекстный хелп, вызываемый по F1.(этот текст)

7. Перезапускаем UG

Успехов в использовании

Интересуют отзывы, положительные и отрицательные

Всем помогавшим - спасибо.

tALEX

ps Учел замечания, что мог - исправил

Баг1 - исправлено

Баг2 - кривые только из раб части

Баг3 - эскизы не выбирать вообще

С локализацией не получилось(пока), поэтому идет смесь англо-русских сообщений

-----

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

-----

ug_utils.rar

Изменено пользователем tALEX
Ссылка на сообщение
Поделиться на других сайтах


Поздравляю с выходом на Российский рынок приложений под UG. :clap_1:

Баг №1 Я в обоих шагах выбора ( что заменяем / на что заменяем ) могу выбрать одни и те-же кривые , что ведёт к :

Nonmodal Message:

'*** ERROR code 630073 at line 957 in

g:\user_cad_files\ug-file\programming\replace_curve\my_replace_curve.c:

+++ An internal reference to object was found

UF_OBJ_replace_object_array_data (num_CRV_rpl,selCRV_std ,selCRV_rpl );'

Соответственно надо пошаманить в select_proc ( ту, которую регистрировал в UF_UI_set_sel_procs () ) при помощи UF_UI_add_to_sel_list (), UF_UI_remove_from_sel_list () и UF_UI_remove_all_from_sel_list ().

Совет №1 НИКОГДА в dlg файлах не называй имена объектов ( кнопок, состав выпадающего списка и т.д. по русски ). Лучше писать по английски и использовать language file для динамисческого перевода. А то будешь получать это ( см pic )

За прицепленную справку по F1 - пять баллов. У меня до справки руки никогда не доходят... :wink:

А так, для начала нормально.

Regardzzz ...

post-646-1134626977_thumb.png

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

Бага №2

1. Пусть мы работаем в контексте сборки типа :

asm

|

|---detail.

2. В detail имеем 3 кривые и extrude на них.

3. В asm мы тоже нарисовали 3 кривые.

Запустили replace curve, на 1м шаге выбрали 3 кривые "в детали",

а на 2м шаге выбрали 3 кривые в сборке и получили ...

Nonmodal Message:

'*** ERROR code 1105005 at line 957 in

g:\user_cad_files\ug-file\programming\replace_curve\my_replace_curve.c:

+++ The second parameter passed in was invalid

Чтобы победить эту ошибку, надо или проводить анализ кривых на предмет того что они в одном prt сидят или запретить selection в контексте сборки через редактирование dlg ( там во вкладке selection надо выбрать WorkPart Only ), хотя может в API есть ф-ция для переключения контекста выбора.

Тормоза №1

При работе в контексте сборки, когда включен шаг 1 и я кликаю мышой в кривую мой 3 Ghz P IV задумывается ~ на 3-5 сек прежде чем подсветить кривую... Видимо анализ кривой надо сделать шустрее...

Regardzzz ....

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

2 niki

Спасибо за отзыв и, прежде всего за баги

У самого то глаз быстро замыливается и очевидного не замечаешь

Баг 1. С ним понятно что делать.Исправлю.

Баг 2 Работа в контексте сборки (Ну тут я схалтурил маленько, предполагая, что замены будут делаться внутри одной части но не сделал соответствующие проверки)

Совет про русские буквы в диалоге. Ну тут мне понятно, как подготовить большой файл русификации и потом его использовать. Но хотелось бы другого... использовать стандартный файл русификации плюс свой на дополнительные приложения. А можно ли такое сделать в документации не написано(Или читал не там или не то)

А хотелось бы.

tALEX

Изменено пользователем tALEX
Ссылка на сообщение
Поделиться на других сайтах

... Ну и на десерт

Бага № 3

Пусть у нас есть построения типа

sketch (1)

extrude(2)

sketch(3)

extrude построен с кривой в скетче 1

При попытке замены этой кривой на кривую из sketch (3) получаем :

Nonmodal Message:

'*** ERROR code 630072 at line 957 in

g:\user_cad_files\ug-file\programming\replace_curve\my_replace_curve.c:

+++ A record was found on object that is not permitted for this operation

UF_OBJ_replace_object_array_data (num_CRV_rpl,selCRV_std ,selCRV_rpl );'

Несмотря на то что после ошибки extrude перепрыгивает на новую кривую, старая кривая выносится из skecth(1) зато в sketch (3) получаются 2 кривые друг на друге ...

Regardzzz ...

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

2 niki

За

UF_TEXT_load_translation_file ()

отдельное спасибо

А баг 3 вообще ввел меня в некоторое недоумение

Ибо кривые эскиза по идее вообще выбираться не должны

Для UF_UI_set_sel_procs () фильтр писал, писал...

А можно пример с эскизами в студию

(или на astept@rambler.ru)

А то как то непонятненько ...

tALEX

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

Пример то простой.

1. Insert->Sketch

2. В нем рисуешь отрезок

3. Выходишь из скетча

4. Insert-> Form Feature -> Extrude -> Выбираешь кривую ->OK

5. Смещаешь WCS вдоль оси Z ( чтобы следующий эскиз не прицепился к уже построенным датумам )

6. Insert->Sketch

7. В нем рисуешь отрезок

8. Выходишь из скетча

9. Запускаешь replace curves

10 На первом шаге выбираешь кривую из скетча 1 ( та , на которой extrude построен ), на втором шаге выбираешь кривую из второго скетча и жмешь OK.

Тут проблема в TimeStamp. Т.е. extrude нельзя перецепить на скетч, который построен ПОСЛЕ этого extrude-a. Если ты руками попробуешь для extrude-a поменять его кривую - то для "старого extrude-a" ( как в NX1 ) получишь сообщение типа unable to replace curve on feature with later timestamp, а для нового extrude-a ( как в NX3 или при определенных манипуляциях в NX2 ) UG тебе просто не даст выбрать кривую из позднего скетча.

Regardzzz ...

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

Небольшой enhancement request.

Неплохо бы добавить "карту подмены кривых" типа эта кривая 1 заменится кривой 3, а кривая 2 заменится кривой 4, чтобы избежать ситуаций , когда на подменяемых объектах висят несколько фичеров.

Пример простой:

1. Нарисовали rectangle, внутри него нарисовали circle. Из rectangle-a вытянули extrude на 50 мм, а из circle-a вытянули extrude на 25 мм и сразу вычли из параллелепипеда.

2. Рядом нарисовали похожий rectangle, и внутри него эллипс.

3. Запустили replace curves.

4. На первом шаге выбрали circle, line, line, line, line.

5. На втором шаге выбрали line, line, line, line, ellipse. ( т.е. в обратном порядке )

6. После нажатия на OK получили

Nonmodal Message:

'*** ERROR code 670024 at line 962 in

g:\user_cad_files\ug-file\programming\replace_curve\my_replace_curve.c:

+++ Update undo happened.

UF_MODL_update ( );'

из за того что нарушилась последовательность переноса кривых.

Поэтому неплохо бы добавить в диалог "карту подмены" примерно в таком виде: ( см pic ) с возможностью редактирования этих последовательностей.

Regardzzz ...

post-646-1134635701_thumb.png

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

2 niki

по поводу

Небольшой enhancement request

Улучшить конечно можно.

Но для упорядочения кривых надо придумывать какой нибудь красивый диалог.

А еще был бы неплох предварительный просмотр.

А еще в случае ошибки надо бы вызывать стандартную процедуру редактирования

А у меня пока не получилось даже использование локализации.

Повидимому надо написать библиотечку, которая при загрузке UG

загружает локализацию функцией

UF_TEXT_load_translation_file ()

А это я пока не делал :(

Собственно говоря уже и локализация получилась.

Если у кого есть желание выложу локализацию (Ну тут просто было дело принципа. Для функционильности перевод 3 слов роли не играет)

tALEX

Изменено пользователем tALEX
Ссылка на сообщение
Поделиться на других сайтах

... публичная порка продолжается ... :bleh:

Совет №2:

НИКОГДА не оставляй ( для enduser-ов == заказчиков ) в своем коде комментарии как в ... startup\setup.men:

!EDIT UG_TOOLBOX

EDIT UG_GATEWAY_MAIN_MENUBAR

Совет №3:

Назови свой диалог как-нибудь ... а то видеть безымянный диалог после клика в replace curves - как-то непрофессионально ... :dry:

Совет №4:

после загрузки *.men файла, UG "знает" ( из custom_dirs.dat ) все пути, откуда можно грузить dll-ки ( + UG "знает" что dll - это dll ),

поэтому, можно заменить в ]<там, где установлен твой софтец>\startup\setup.men

ACTION ${MY_UGII_UTILS}\application\obj_feature.dll

на

ACTION obj_feature

Баг № 4 (незначительный):

1. Загружаем пустую сессию UG (без загрузки файлов)

2. Видим свой toolbar.

3. В toolbar-e можем нажать на "replace curves" - и не получить никакого ответа (кнопка "молчаливо откликивается" обратно) а в лог файле видим :

+++ This dialog requires a part for selection.

[и ~ 25 строк ошибок в trace-е log файла ]

Исправить можно через механизм подключения твоей аппликухи к конкретному модулю UG, см в справке ... <справка> -> Menu Script Users Guide-> Menu Files ...

... или на пальцах:

... в <там, где установлен твой софтец>\startup\<что-то-там>.men:

MODIFY

    APPLICATION_BUTTON UG_APP_MODELING

    MENU_FILES/APPEND t_alex_modeling_addons.men

END_OF_MODIFY

... а в <там, где установлен твой софтец>\application\t_alex_modeling_addons.men :

AFTER UG_TOOLBOX_EXPRESSION

      BUTTON MY_REPLACE_CURVE

      LABEL Replace Curve

      BITMAP edit.bmp

      ACTIONS replace_curve.dll

END_OF_AFTER

Баг № 5 (незначительный):

Твой toolbar и пункт в меню видны в drafting-e, в котором я могу построить 2 скетча, запустить replace curves, и в итоге, после выбора кривых из первого и второго скетча получить...

Nonmodal Message:

'*** ERROR code 630072 at line 982 in

g:\user_cad_files\ug-file\programming\replace_curve\my_replace_curve.c:

+++ A record was found on object that is not permitted for this operation

UF_OBJ_replace_object_array_data (num_CRV_rpl,selCRV_std ,selCRV_rpl );'

Regardzzz ...

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

Продолжаем разговор.

2 mark_ka в последней версии обязательно поставлю (с)

2 niki

по совету 2. Учел.(Но где они - скромные и тихие клиенты, которые не лазают, где не велено)

по совету 3. Уже назвал(Не оригинально как то правда)

по совету 4. А тут вынужден не согласиться ибо выделенное жирным

ACTION ${MY_UGII_UTILS}\application\obj_feature.dll

относится не к *.men файлам а к *.tbr и при таком замечательном исправлении

ACTION obj_feature

я получаю злобное сообщение

Невозможно найти файл obj_feature в любом из соответствующих каталогов

И тут сразу вопрос.

Конечно же мне хочется, что бы моя tbr - панель тоже появлялась только при Application Modeling(как и дополнительная строчка в меню). Ну тут наверно в памяти должна сидеть какая то длл и проверять, какое нынче приложение запущено и запускать какой нибудь UF_UI_create_toolbar()

Но как реализовать, пока не очень понятно :g:

Дальше под заголовком

Баг № 4 Здесь идут советы как сделать так, что бы нужный пункт меню, появлялся только тогда, когда надо

Сделано

Баг № 5 исправится сам собой, как только эту ф-ю можно будет вызывать только в разрешенном контексте

Обновленную версию вскорости положу

tALEX

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • jtok
      Он сильно зависит от марки PP, от расчетной температуры и от расчетного срока службы (количества циклов нагружения). Поищите стандарт DVS 2205, части 1 и 2. В нем есть номограммы долговременной прочности. Он на немецком, но ничего лучше нет. Номограммы эти приведены по ссылке, внизу страницы, раздел "Список приложений".  Например, диаграмма для PP type 1 по ссылке: В оригинале же выглядят они вот так (для PP type 1): Также был древний документ на русском по этой теме, прицеплен к сообщению. _raschet_emkosti DVS 2205-2.pdf
    • Andrey_kzn
      - тут возможно смысл сообщения в том, что оси не синхронизированы, только вот зачем синхронизировать  оси X и Y не понятно. В случае двух шпинделей например,  coupled будет означать синхронизацию.
    • niagara39
      Правильно ХУ на этом станке не перпендекулярны. Тормоз оси У включен постоянно, отключается только при перемещении самой оси У. Координаты не  меняются... Знать бы что за параметры, пока ничего подобного не нашли
    • nicomed
      Поднял старые записи. Из того что было максимально похоже на то, что можно было назвать "получалось" :   Самому не совсем понятно поведение СкетчМенеджера при отрисовке линии от координат 0,0,0 - частенько слетает в произвольное место на виде. 
    • maxx2000
      на втором  скрине PLC сообщает что-то типа "старт программы запрещён потому что оси ХУ не связаны". Возможно станок в режиме точения должен заблокировать перемещение У, включить тормоз или что-то ещё для произвольного смещения под нагрузкой. Возможно косяк в тексте программы.
    • maxx2000
      @sneg0vik как это? Если ХУ не перпендикулярны то это уже не У, а скажем ось В. Нет, конечно в теории можно построить станок с неперпендикулярными ХУ. Вопрос зачем? Gildemeister CTX 420 это же токарно-фрезерный с осью У
    • sneg0vik
      На станке ось "X" является наклонной по отношению к оси "Y" (т. е. они не перпендикулярны). Поэтому надо полагать (учитывая текст ошибки) у вас отключена связь оси "Y" с осью "X".   Проверьте меняются ли координаты оси "X", когда вы двигаете ось "Y". И наоборот. Если - нет, то ищите как включить (наверное через параметры) взаимосвязь оси "Y" с осью "X".
    • ДОБРЯК
      Если ваш Заказчик и такую работу примет, то необходимо в шпоночное отверстие добавить и массу воды. Примерно 1/4 от той массы которую вы будете добавлять.  Да и еще и не забыть добавить момент инерции от воды.
    • Soprin
      В функции MOVE по F7.3 должно же из R270 переносить в R278?
    • niagara39
      Причина все еще не найдена... Но заметил, что сразу после включения в меню диагностики появляется следующее предупреждающее сообщение: 10155 M: Y-axis: Y-axis and X-axis not coupled , но причина его появления и его смысл неизвестны
×
×
  • Создать...