Гетерогенность.
Или проблема версий UG.


Что значит гетерогенная среда в данном контексте? Это означает, что постпроцессор будет использоваться в разных версиях CAM (Unigraphics).

   Очень часто разные подразделения заводов и институтов применяют разные версии CAM. Одни используют NX4 , другие NX7. Все упирается в лицензии, деньги, а также в обученность технологов.

 

  На Кнаапо проблему лицензий решают просто.
   После отъезда московских представителей путем не хитрых манипуляций и настройками серверов, ~400 лицензий плавно превращаются.... превращаются....  в необходимые ~1200 (и даже больше). Вуаля. Поверьте - застукать или проверить невозможно. Ни теоретически, ни практически.

  Например, мне часто надо решить какую то задачу. Задача не архи-сложная, и я знаю, что применение новых методов и способов обработки не суть важно в решении. Но подготовка к работе NX6-7.5, моя борьба с его дизайном и настройками, забирает у меня много времени, в конце - концов это просто нудно. В таких случаях, я просто достаю из своих запасников UG v18 или v16, rar-архив эдак 160 мб. Распаковка, запуск лицензионного сервера занимают не больше 5 минут.. И все летает на современных компьютерах:)))
  В таких случаях, у меня встает вопрос совместимости постпроцессоров.
Юниграфика не стоит на месте - она постоянно развивается. Появляются новые функции, новые возможности, исчезают не оправдавшие себя. Часто, постпроцессор созданный Вами для NX6-7.5 может начать выдавать ошибку в NX4. Если Вы планируете использовать постпроцессор в гетерогенной среде или создаете постпроцессор для неизвестных машиностроительных заводов - постарайтесь предусмотреть применение постпроцессора в разных версиях Unigraphics.

Посмотрите на таблицу:

Функции\Версии UG UG v18 EDS NX4 Siemens NX6
MOM_string_toupper  -  +  +
MOM_abort_event  -  -  +
MOM_enable_address  -  -  +
MOM_disable_address  -  -  +
...      
...      
...      

- или + - показывает наличие данной MOM-функции в данной версии Юниграфики.

Также, проблему могут усугубить появление новых mom_* - переменных UG\Post или параметры операций, которые Вы захотите использовать в своих постпроцессорах.

Как учитывать это?

Сделать это не сложно. Достаточно в событии , скажем [Start of program], присоединить созданную Вами процедуру с примерным содержимым:

#=============================================================
proc PB_CMD_mom_version { } {
#=============================================================

if {[llength [info commands MOM_string_toupper] ]==0} { 
 uplevel #0 {

  #=============================================================
  proc MOM_string_toupper { str } {
  #=============================================================
   set str1 [ string toupper $str ]
   return $str1
  }

 } ;# uplevel
}


if {[llength [info commands MOM_abort_event] ]==0} { 
 uplevel #0 {

  #=============================================================
  proc MOM_abort_event { str } {
  #=============================================================
   MOM_abort $str
   return 0
  }

 } ;# uplevel
}

###### и так далее...

return 0
}

Учет применения новых mom_* - переменных UG\Post или параметры операций, следует проводить через стандартную конструкцию Tcl:

if {![info exists mom_*]} {   
  ; # определяем mom_*
}
 или библиотечную функцию UG\Post Unigraphics
if {![hiset mom_*]} {   
  ; # определяем mom_*
}

 


Copyright © 2001—2009 че