Ресурсы Unigraphics: Экскурс в историю.

   Разработчики UniGraphiCS - однажды приняли простое гениальное решение: они решили внедрить в прослойку между решателем (ядром Parasolid) и пользователем своеобразную программную среду. В качестве одной из такой оболочки они выбрали Tcl\Tk.  Надо признать, что в 1987 году Джон Оустерхаут разрабатывал Tcl как интерфейс, для программного обеспечения CAD проектов PCB и IC. Tcl стал очень популярным в этой области, которое в те времена называлось "ECAD" (Electronics CAD) или EDA (Electronic Design Automation).

   Не побоюсь написать, но огромное количество языков поздней заделки многое почерпнули и взяли от него. Tcl - был создан в 1988 году, а появление Perl, Python, можно отнести к середине 90 гг. Это простой скриптовый язык, предназначенный для обработки строк, а библиотеки Tk - стали непременным атрибутом Perl, Python и многих других.
   Разработчики в ?97-98 гг.? приобрели лицензию у Scriptics Corporation на коммерческое использование Tcl\Tk.

Немного о Tcl.

 Почитать о природе и развитии скриптовых языков Вы можете здесь: 2001_11_144.pdf (Журнал "Мир ПК", #11, 2001 год // Издательство "Открытые Системы" (www.osp.ru). Постоянный адрес статьи: http://www.osp.ru/pcworld/2001/11/144.htm ).
  •  Литература:
          Основы Tcl :    tcl_base.pdf
          А. Петровский. Командный язык программирования Tcl : tcl_petrovskyi.pdf

          В журнале Хакер, номер #030, стр. 030-062 - можно найти статью об основах программирования.
         Найдите обязательно книгу: "Брент Уэлш и Кен Джонс. Практическое программирование на Tcl и Tk".

    Practical Programming in Tcl and Tk: Practical.rar
      Brent Welch <welch@acm.org>
    http://www.beedub.com/
      CD-ROM, ISO 9660 (UNIX/Windows), Version 1.0, April 24, 1997
      - эту часть человек собирал из разных источников, я обрезал (слишком много
    >120мб)
      Источники:  
    www.neosoft.com  hpux.cae.wisc.edu ftp.sunlabs.com ftp.cs.princeton.edu www.sublabs.com cd-toolkit.crd.ge.com catless.ncl.ac.uk netlab-c.mscs.mu.edu
  •   Программы:
       Если Вы хотите выучить Tcl или получить представление о нём, то здесь найдете программу для обучения (очень старая) -  instl097.zip
       Для создания Tk - окон (GUI-приложений), я до сих пор использовал SpecTcl1_1.zip - старая проверенная временем программа, также как и Юниграфикс, не понимающая русского языка.
    На сайте проекта http://sourceforge.net/projects/spectcl/ , Вы, можете найти 2-ую версию этой программы объединенную по формату хранения для использования в редакторе Komodo.
    Хотя подобные приложения можно создавать в Komodo (заплатив деньги) или как Вам удобнее.
    Могу еще порекомендовать проект vtcl.
    Для создания приложений есть проект CrowTDE : http://got7.org/crowtde/ - со встроенным музыкальным проигрывателем. Мне понравился.
       Вот программа пример из разряда простейших. По-моему из какой то книги.
    Подсчет CRC суммы файла (VC и Tcl/Tk). Исходники:  checksumfile_С_TCL.zip
     

  •  Сайты о Tcl\Tk:
       http://tclstudy.narod.ru/ -
    Tcl  на Народе.
      
    http://tcl-tk.ru  - русский ресурс от Tcl\Tk
       http://ru.wikipedia.org/wiki/Tcl - Tcl на Wikipedia (история, основные форматы, ссылки....).
       http://www.tcl.tk/
      - основной сайт разработчиков.
       мобильный  - http://wiki.tcl.tk/15260
       http://tcl.sourceforge.net/  - исходники.
     
      http://www.tkdocs.com  - появился в 2007 году, Mark Roseman
    .
      http://sf.net  - много проектов на Tcl.
       http://www.crossplatform.ru/sources/tcltk - кроссплатформенные проекты.
  • FTP - сервер : ftp://ftp.tcl.tk/ - На этом ftp-сервере, Вы сможете найти многие интересующие Вас вещи (исходники, книги).

   Ребята на сайте www.delphi-jedi.org даже описали основной интерфейс Tcl - интерпретатора для Дельфи.

    

 

Ниже я выложил файлы презентация от самого John Ousterhout. Сами файлы были сделаны в старом формате .ppt, поэтому наотрез отказались открываться в MS Office 2003 и 2007. Для того чтобы привести их читабельному виду, пришлось установить любимый мой Office XP, и сохранить  в нужном формате. К сожалению, у меня только 4 файла, вместо обещанных 5-и.


This directory contains course materials for a one-day Tcl/Tk short course that John Ousterhout has given over the last few years. The course consists of five talks:

An overview to introduce the main ideas of Tcl and Tk and show how all the pieces fit together.
An introduction to writing Tcl scripts. This talk doesn't consider Tk or any specific Tcl applications, just the language syntax and built-in commands.
A description of how to create user interfaces by writing Tcl scripts that use Tk's facilities in addition to the built-in Tcl commands.
This talk describes how to write new Tcl-based applications in C, using the C interfaces provided by Tcl to create interpreters, execute scripts, and add new commands.

Unigraphics

 UniGraphiCS имеет 2 - типа постпроцессоров.
   - Graphics Postprocessor Module (GPM) - на основе связки gpm (собственно постпроцессор) + mdf(a)  (файл описания оборудования).
   - Manufacturing Output Manager (MOM) - под управлением модуля МОМ ([ Machine Output Manager ] = Модуль управления выводом). Этот модуль преобразует параметры операций и внутреннюю геометрию в переменные языка (Tcl), используя в качестве файла описания станка скрипт, сгенерированный системой на языке описания сценариев Tcl.  Постпроцессор этого типа - можно написать вручную, а можно создать\изменять через генератор постпроцессоров (PostBuilder).

  • До 14 - версии UnigraphiCs, основным постпроцессором являлся GPM ( gpm.exe + mdf ).
  • 15-ой версии появились первые признаки присутствия Tcl: Unigraphics15.zip - обратите внимание, что не было разделения и все лежало в одной папке MACH. Интересно, что  скрипты для отладки были написаны немецкими программистами ( mom_debug_wish.tcl,... ). В файле ugpost.dat - содержались списки постпроцессоров.
  • В 16-ой версии, окончательно были сформирована схема "ядра", а в 18-ой доведена до совершенства, на котором она работает по сей день.
 Документация и презентации (старые):
  1. 2000 год, на англ. (Stan S.) и русском (перевод Чижа Олега): ppt_eng.zip   ppt_rus.zip
  2. Создание UDЕ событий : fs_ude_condensed.html

 Кхм, хотя вот, не обходиться без накладок. В ugpost_base.tcl - для NX6 (обновление) я обнаружил вот такой код:
global tcl_version
if { [string compare "$ptp_file_name" "$pre_ptp_name"] } {
  if { $tcl_version < 8.0 } {
   MOM_close_output_file $ptp_file_name
  } else {
   MOM_close_output_file [file nativename $ptp_file_name]
  }
}

  Первые вопросы, возникшие в голове: -"Кто?Когда?Как?Почему? Использует в ядре постпроцессоров tcl ниже 8-версии - в 2009 году?". Tcl - версий 7.2 7.6 7.8 - "рулит"

Насколько глубоко Tcl внедрен в Ug можно понять по простому примеру:    
  включите в одну из процедур постпроцессора команду exit
  Вы увидите, как Unigraphics не сказав и ничего не спросив, тихо и быстро закроется.

Кратко рассмотрим состав дистрибутива Юниграфики:

/UGS/
  Unigraphics не любит, не понимает, и не работает с кириллицей. ( Болезнь от Unix ).
 Поэтому кириллицы не должно быть:
 - не в пути файлов,
 - не в названии файлов и папок,
 - не в имени компьютера.
  .../  
  CMM_INSPECTION

  - эта папка появилась в NX7. Почти полная копия папки /MACH/resource.  Есть также папка постпроцессоров: /postprocessor/
 
NX CMM Inspection Programming это прикладное решение для Координатных измерительных машин [ Coordinate Measuring Machines (CMMs) ] и NC. (Особенно для оборудования Siemens).
 Используя инспекционный файл, который работает в синхронизации с файлом части (модели), NX CMM Inspection объединяет мир производственного цеха с производством планирования и проекта так, чтобы операторы цеха и инженеры проекта могли легко разделить однозначные
измерительные данные.

  MACH/ - основная папка ресурсов, постпроцессоров, ...,  для модуля Обработки
    auxiliary/
vnc_Plugin/ - папка для библиотек и плагинов CNC (симуляция программ)
gpm.exe - постпроцессор GPM
mdfg.exe

- Редактор файла описания оборудования.
 В 16-ой версии его можно было запустить свободно, даже не покупая лицензии, для этого были нужны всего лишь 2-е библиотеки: 
libsyss.dll  и libugmath.dll ( см. auxiliary16.zip)

mom_pause.tcl - пример, как запускать Tcl-скрипт используя ugwish и Пауза в симуляции :))) .
mom_source.dll

- очень интересная библиотека. Появилась негласно еще в NX1. Сначала для декодирования файлов ISV - Machine Tool Drivers (MTD) - (\MACH\resource\postprocessor\vnc_base_xxxx_tcl.txt) . Затем её возможности распространили для декодирования постпроцессора с помощью экспортируемой её функции:
  
MOM_decrypt_source <tcl-script>
( UF_MOM_extend_xlator ( mom_obj, "MOM_decrypt_source", mom_decrypt_source ).
 Своеобразное кодирование на основе лицензии выполняется в PostBuilder. Появилось это только в версии NX6.0.0.2.
Вообще, о кодировании \ декодировании ПП - менеджеры компаний по продаже UG - заикались еще в 2003-2004 гг. Цель и мотив Этого, неясен до сих пор.

ugpadvkins.dll
 (ugp_adv_kins.dll)

- библиотека расширенной кинематики. (Advanced Kinematics Module <!<UGPKIN>!>)
     \src\ugpadvkins\no\ind\uf_mom_add_ufun_tclexts.c
 - Зачем эта кинематика? Реализует неортогональную кинематику - но всегда можно подстроить её (опытным путем). Зачем этот геморрой с IKS в PostBuilder ?. Зачем расширения кинематической схемы именно в таком виде, без включения в ядро решателя.? Вопросов больше - чем ответов. Да и пересчет, странный, с точки зрения математики.
 Экспортирует следующие МОМ - функции ( для применяемых типов станков - 5_axis_head_table 5_axis_dual_head 5_axis_dual_table):

UF_MOM_extend_xlator ( mom, "MOM_exit_kinematics_module", mom_exit_kinematics_module )
UF_MOM_extend_xlator ( mom, "MOM_map_to_rotated_csys", mom_map_to_rotated_csys )
UF_MOM_extend_xlator ( mom, "MOM_rotate_mach_csys", mom_rotate_mach_csys )
UF_MOM_extend_xlator ( mom , "MOM_get_tool_attribute", mom_get_tool_attribute )
UF_MOM_extend_xlator ( mom, "MOM_convert_point", mom_convert_point )
UF_MOM_extend_xlator ( mom, "MOM_load_kinematics", mom_load_kinematics )

в Dll усиленно применяют функции:

UF_VEC3_cross
UF_VEC3_scale
UF_VEC3_is_parallel
UF_VEC3_distance
UF_VEC3_is_zero
UF_VEC3_affine_comb
UF_VEC3_is_equal
UF_VEC3_sub
UF_VEC3_dot
UF_VEC3_copy
UF_VEC3_angle_between
UF_VEC3_add
UF_VEC3_unitize
UF_MTX3_rotate_about_axis
UF_MTX3_multiply
UF_MTX3_z_vec
UF_MTX3_vec_multiply_t
UF_MTX3_copy
UF_MTX3_x_vec
UF_MTX3_y_vec
UF_MTX4_edit_rotation
UF_MTX4_vec3_multiply_t
UF_MTX4_rotation
UF_MTX4_ask_rotation
UF_MTX3_vec_multiply
UF_MTX4_vec3_multiply
UF_MTX4_multiply
UF_MTX4_vec_multiply
UF_MTX4_csys_to_csys

 по характеру которых можно понять функциональность модуля.

 Почитать больше - здесь >>Создание постпроцессора
 

ugwish.exe

- а это обычный - Tk DLL tk82.dll (версии 8.2.2.2) Tk 8.2 for Windows  Scriptics Corporation
 собранный и сжатый upx.exe http://upx.sourceforge.net , выполняемый файл (после распаковки размером > 1.5 мб). Смело его заменяйте на более новую версию wish. Хотя я бы рекомендовал сборки:
  http://www.equi4.com/tclkit/  - единственный файл, включающий в себя runtime - скрипты, GUI (Tk), объектную систему (IncrTcl), Tcl Virtual File System (TclVFS).

  Для того, чтобы русифицировать ugwish (Tcl8.2) вы должны установить библиотеку динамически - подгружаемых файлов, содержащих в себя таблицу соответствий между символами данной кодировки и Unicode. Эти библиотеки символов в стандартном интерпретаторе Tcl (версии 8.2) лежат в папке: \lib\tcl8.2\encoding . Для русификации необходимо просто скопировать папку lib, в папку в которой интерпретатор ugwish ищет модули для подключения. Куда ее устанавливать, Вы можете узнать, запустив ugwish, и набрав в командной строке
set a $tcl_libPath
      (переменная tcl_libPath содержит список всех директорий, где производится поиск библиотек.)
Поэтому, для русификации (под Unigraphics), просто скопируйте папку lib в папку \%UGII_BASE_DIR%\Mach и перезапустите интерпретатор
, или в иное место.

ugpost.exe  - вариант внешнего постпроцессора. Есть Gui-оболочка для его запуска - runugpost.exe.
 Запускается используя командную строку:
 'Usage: ugpost <partname> -p <postname>',
 '{-o <output filename>}, default = <postname>.ptp',
 '{-tp <program name>}, default = NC_PROGRAM',
 '{-e <error filename>}, default = <postname>.err',
 '{-u <units>}, 0 = same as part, 1 = inch, 2 = metric, 3 = post defined, default = same as part',
 '{-v} = verbose output to standard output, default = OFF',
 '{-h} = print this help message',0

 - Алгоритм работы можно представить следующими функциями

int main(int argc,const char **argv,const char *envp)
  UF_MISC_set_program_name
  UF_initialize
    UF_get_fail_message
  UF_PART_open
  UF_CAM_init_session
  UF_SETUP_ask_setup
  UF_SETUP_ask_program_root
  UF_NCGROUP_ask_object_of_name
  UF_SETUP_generate_program
         "Post %s generated successfully\n"
  UF_terminate

 Вспомогательные функции : 
   UF_free_string_array
   UF_free
   UF_PART_ask_units

 Псевдокод ugpost смотрите тут
 

    custom/ - хотя эта папка, и её содержимое предназначено для настройки пользовательских переменных, ресурсов - я НИКОГДА её не использовал. Не приходилось.
    resource/
configuration\  - это очень важная папка.
debug\  - всё для отладки постпроцессора ))).
feature\  - для тех, кто создает постпроцессоры, здесь ничего интересного
library\  - библиотека станков, инструментов, оправок, режимов, и остального.
 При редактировании форматов и классов, нужно проявлять осторожность, так как почему то - эта часть Юга загружается в память при запуске ugraf.exe, а не при входе в модуль Обработки.
machining_knowledge\  
postprocessor\ - собственно, сама папка постпроцессоров.
shop_doc\ - шаблоны для вывода документации.
spreadsheet\  
template_dir\  
template_part\ - папка шаблонных файлов для операций Юга. Очень важна, если вы скажем пытаетесь войти в модуль обработки, а Вас не пускают:):) - значит забыли обновить шаблоны.
template_set\  
tool_path\ - здесь всё для производства CLSF.
ug_library\  - тоже важная папка, можно менять обработчики работы с Базой Данных: Инструмент, Станки, .....
user_def_event\ - еще одна важная папка для использования в постпроцессировании.
wizard\  
   
  .../  
  UGII/ - ядро UniGraphiCS
    ugtcl.dll - 8.1.2.0 - 452кб (32x)  , обычный tcl81 дополненный одной функцией,  Tcl 8.1 for Windows  Copyright (c) 1999 by Scriptics Corporation. Библиотека подгружается в память при запуске ugraf.exe ( смотрите лог-файл Юга).
    ...
libcams.dll
libcamsint.dll
libcamsmom.dll
libcamsobj.dll
libcamsproc1.dll
libcamsproc2.dll
libcamsutil1.dll
libcamsutil2.dll
libcamsutilint.dll
....
librout.dll
.....

  - все библиотеки с именем libcam*.dll отвечают за обработку. Среди них - особое место занимают libcams.dll, libcamsmom.dll и libcamsint.dll. Именно в них происходит создание обработчика и МОМ команд.




 
  POSTBUILD/
 - папка ПостБилдера
( исходные коды в 16-ой версии -
> POSTBUILD16.zip. Самая главная функция PB_Main зашита в exe-файл). Чтобы запустить без лицензии в 17-ой версии Юга - было необходимо аж 11 системных библиотек!!!!!!
   Мне очень понравился PB 16-версии Юга. Он был ближе по духу (к Tcl\Tk)  и лучше по удобству редактирования.
 
  UNISIM/ - папка Юнисима, своеобразная симуляция управляющих программ (проверка наподобие Vericut ). Построен был на Tcl/Tk, в версиях Юга v.16-18. Не получил развитие. Не знаю, почему.. Вместо него, в NX2 стали включать ISV (см. PostBuilder). Вообще строго говоря, возможности ISV стали появляться еще в 18-ой версии Юниграфики.
  UGSHEET/ - еще одна папка, достойная упоминания. В старых версиях Юга - в ней проводилось развитие направление Оптимального раскроя, со своим собственным вызовом постпроцессора (правда, только GPM + mdf(a) ).
  .../  
       

Copyright © 2001—2009 че