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

Как читать переменные mom


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

Добрый день!

Возникла необходимость, чтобы через DLL'ку читать переменные mom (например mom_tool_name)

Написал библиотеку которая содержит функцию следующего содержания:

int User_start_of_program(void *client_data,void *interp,int argc,char **argv)

{

const char *val;

AnsiString Tool_name;

UF_MOM_id_t mom_id_tag;

mom_id_tag = ( UF_MOM_id_t )client_data;

UF_MOM_ask_string (mom_id_tag,"mom_tool_name", &val);

Tool_name=AnsiString(*val);

return 1;

}

В постпроцессоре (процедуре Start_of_path) ee вызываю. При выводе программы на пост, NX выдает следующую ошибку и вылетает:

post-16807-1241204242_thumb.jpg

Я думаю часть проблем в строчке, выделенной красным цветом, т.к. при ее отсутствии функция выполняется успешно.

Вопрос к знатокам С++: как правильно прочитать переменные такого плана, чтобы потом была возможность их использовать?

Использую NX4, библиотеку написал в C++Builder 6. Проблем с передацей информации в TCL интерпритатор нет.

З.Ы. Передавать mom переменные как параметры в функцию не хочется :)

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


Какой-то "волк в овечьей шкуре"... Сначала спрашивал как писать постпроцессоры, а теперь про dll....

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

Какой-то "волк в овечьей шкуре"... Сначала спрашивал как писать постпроцессоры, а теперь про dll....

я просто любознательный и люблю упрощать себе жизнь.

З.Ы. А я смотрю Вы всем прозвища придумываете, кто спрашивает много? :)

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

Я думаю часть проблем в строчке, выделенной красным цветом, т.к. при ее отсутствии функция выполняется успешно.

Вообще, правильно:

Tool_name=AnsiString(val);

Хотя, скорее всего проблема возникает при обращении к переменной, а не при её преобразовании.

И зачем использовать тип AnsiString?

Проще надо, тот же char* чем плох?

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

Добрый день!

Возникла необходимость, чтобы через DLL'ку читать переменные mom (например mom_tool_name)

Написал библиотеку которая содержит функцию следующего содержания:

int User_start_of_program(void *client_data,void *interp,int argc,char **argv)

{

const char *val;

AnsiString Tool_name;

UF_MOM_id_t mom_id_tag;

mom_id_tag = ( UF_MOM_id_t )client_data;

UF_MOM_ask_string (mom_id_tag,"mom_tool_name", &val);

Tool_name=AnsiString(*val);

return 1;

}

В постпроцессоре (процедуре Start_of_path) ee вызываю. При выводе программы на пост, NX выдает следующую ошибку и вылетает:

post-16807-1241204242_thumb.jpg

Я думаю часть проблем в строчке, выделенной красным цветом, т.к. при ее отсутствии функция выполняется успешно.

Вопрос к знатокам С++: как правильно прочитать переменные такого плана, чтобы потом была возможность их использовать?

Использую NX4, библиотеку написал в C++Builder 6. Проблем с передацей информации в TCL интерпритатор нет.

З.Ы. Передавать mom переменные как параметры в функцию не хочется :)

Я предполагаю что не надо использовать данную функцию

О причинах неоднократно писалось мной ранее

Используйте сертифицированние компиляторы соответствующих версий

Собирайте только в release варианте и пользуйтесь std::string

и не будет у Вас никаких проблем

Builder давно уже не является компилятором c++ (не соответствует текущим стандартам)

В программу добавте UF_free

Ссылка на сообщение
Поделиться на других сайтах
  • 5 месяцев спустя...

Добрый день!

Возникла необходимость, чтобы через DLL'ку читать переменные mom (например mom_tool_name)

Написал библиотеку которая содержит функцию следующего содержания:

int User_start_of_program(void *client_data,void *interp,int argc,char **argv)

{

const char *val;

AnsiString Tool_name;

UF_MOM_id_t mom_id_tag;

mom_id_tag = ( UF_MOM_id_t )client_data;

UF_MOM_ask_string (mom_id_tag,"mom_tool_name", &val);

Tool_name=AnsiString(*val);

return 1;

}

В постпроцессоре (процедуре Start_of_path) ee вызываю. При выводе программы на пост, NX выдает следующую ошибку и вылетает:

post-16807-1241204242_thumb.jpg

Я думаю часть проблем в строчке, выделенной красным цветом, т.к. при ее отсутствии функция выполняется успешно.

Если кому интересно, проблему решил!! Времени нехватало поковыряться...

Так вот проблема не в Tool_name=AnsiString(*val), а строке UF_MOM_ask_string (mom_id_tag,"mom_tool_name", &val)

Правильно нужно было написать UF_MOM_ask_string (mom_id_tag,"tool_name", &val). Приставка "mom" автоматически добавляется к имени переменной. А переменной "mom_mom_tool_name" не существует, поэтому и вылетала ошибка.

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Может повторюсь, но ресурс <noindex>http://ugpost.narod.ru/</noindex> очень познавательный по данной теме.

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

Всем доброго дня.

 

У меня похожая задача. Есть деталь, к ней набор оснастки. Нужно получить набор данных для передачи в другое ПО (Вертикаль). Оснастку получил и почти все необходимые параметры. Кроме одного. В отчёте wokrshop он значится как mom_tool_extension_lenght. Не нашел такого свойства в классе ToolBuilder, через который получаю остальные свойства. Может кто знает, что и где искать?

 

Нашёл вот такую функцию theUFSession.Mom.AskString(IntPtr mom_id, string var_name, out string var_val). Если я правильно понимаю, в моём случае var_name = "mom_tool_extension_lenght", var_val - то что я ищу. IntPtr mom_id - не могу понять что такое и от куда берется. Есть функция theUFSession.Mom.AskMom(string param, out IntPtr mom_id), но в ней не ясно что такое param, от куда он берётся.

 

Ещё в этой схеме мне не нравится следующий момент. В своей основной программе я работаю с theSession, перебираю оснастку с помощью массива NXOpen.CAM.NXGroup[], полученного из коллекции Part.CamSetup.CAMGroupCollection. Как theUFSession поймёт, что я сейчас работаю с конкретным экземпляром оснастки через theSession. Предполагаю, что никак. И результат будет соответствующий.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Fedor
      Конечно не нужно. Нужно как Ньютон учил стоять на их плечах :)
    • Dimetil Gidrozin Dnepr
      написал автору лс))
    • gudstartup
      она прямо в меню слева cnc iso
    • gudstartup
      да это не тебе а автору вопроса..
    • Kelny
      https://cccp3d.ru/topic/6622-спецификация-для-sw-по-гост/  
    • ДОБРЯК
      Так я всё жду пока вы объясните почему маркеры скалярного) давления в виде стрелочек. И маркеры скалярных) сил в виде таких же  стрелочек.  А вот маркеры скалярной температуры никому и в голову в виде стрелочек визуализировать. Кроме вашей светлой головы. И нужна ли площадка, чтобы понять куда направлена температура?  Только не нужно прятаться за спины Паскаля и Бернулли. 
    • Viktor2004
      Чего мне там читать? Сфоткайте какое крепежное у вас на Хенденхайне
    • mactepnew
      Здравствуйте, товарищи. Может быть кто-то сталкивался с такой проблемой: экспорт чертежа вместе с моделью из Teamcenter в офлайн? То есть имеется база в TC, причем 3D модель и 2D чертеж - это не один объект, а разные UGPart (как на скрине). Нужно локально изменить чертеж и модель, не затрагивая сохраненный в базе. Да, знаю, что это неправильно, но таковы текущие условия игры... Экспорт 3D можно сделать в формат Parasolid (x_t) - да, при этом теряется история, но хотя бы синхронным моделированием можно что-нибудь поправить. Экспорт чертежа делается в нормальный формат prt, но он не связан ни с каким 3D файлом, то есть править можно только тексты.  А вот как-то по-человечески можно сделать? Перехожу сюда с Creo - там всё это делалось проще простого. А тут ни я не могу найти, ни более опытные коллеги не сталкивались.
    • Dimetil Gidrozin Dnepr
      это интересно. можно подробности? где почитать какие темы кому позадавать вопросы? дайте ссылки.   это тоже интересно. где про это почитать? возникает вопрос что такое PDM/PLM?   ну а как же без модели?)) солид это программа обьемного моделирования ващето)) а не деланья спецификаций)) ясное дело что модель будет)) а потом через три года понадобится изменить ее габариты для другого заказчика и вместо бульбулятора вставить радиатор)) и как поведет себя эта спецификация отдельным файлом?)) впервые слышу это слово и даже не догадываюсь что это)) я модельки пилю просто. а все вот эти чертежи ох как не люблю. я люблю моделировать)) я в интернете ничего не покупаю)) вообще не трачу денег на интернет)) я самый известный в галактике пират)) у меня нет ни одной лицензионной программы и никогда не было)) мне проще в даркнете заказать чтобы взломали КБ2.0 и за копейки дали все шо у них на сервере))
    • Fedor
      https://ru.wikipedia.org/wiki/Барический_градиент#:~:text=Бари́ческий градие́нт — в гидродинамике — вектор,давления сплошной среды в пространстве.    Добряку в помощь. Взял градиент от скалярного давления и получил желанный вектор.  Таким способом можно и векторную температуру получить   :)
×
×
  • Создать...