Fixidea

FAQ/Unigraphics/POST

1,217 posts in this topic
Тема создана для более быстрого поиска ответов по постпроцессорам в Unigraphics NX.

Прошу все вопросы, связанные с созданием постпроцессора в NX, задавать здесь.

Share this post


Link to post
Share on other sites


 

Тема создана для более быстрого поиска ответов по постпроцессорам в Unigraphics NX.
Прошу все вопросы, связанные с созданием постпроцессора в NX, задавать здесь.

 

не посоветуете ли мануал по postbuilder ?

Share this post


Link to post
Share on other sites

Вот есть видеоурок:

 

1 person likes this

Share this post


Link to post
Share on other sites

Ещё :

 

Share this post


Link to post
Share on other sites

ID: 5   Posted (edited)

NX Post Builder 8.5.3 Требуется обрамить блоки с круговыми перемещениями доп командами G08P1 и G08P0, отдельными кадрами

G08P1
X Y I J
X Y I J
X Y I J
X Y I J
G08P0
X Y Z
X Y Z
X Y Z
G08P1
X Y I J
X Y I J
G08P0
Z
X Y
....

Можно ли это сделать через Post Builder ?? Я что только не пробовал - не получается.

G08P1 удаётся хотя бы примерно в нужную позицию поставить через Engage Move, а вот G08P0 - ну никак ...

или только tcl редактировать вручную ??

 

подскажите пожалуйста где и что надо подравить ))

Edited by o_nix

Share this post


Link to post
Share on other sites

NX Post Builder 8.5.3 Требуется обрамить блоки с круговыми перемещениями доп командами G08P1 и G08P0, отдельными кадрами

G08P1
X Y I J
X Y I J
X Y I J
X Y I J
G08P0
X Y Z
X Y Z
X Y Z
G08P1
X Y I J
X Y I J
G08P0
Z
X Y
....

Можно ли это сделать через Post Builder ?? Я что только не пробовал - не получается.

G08P1 удаётся хотя бы примерно в нужную позицию поставить через Engage Move, а вот G08P0 - ну никак ...

или только tcl редактировать вручную ??

 

подскажите пожалуйста где и что надо подравить ))

 

У меня через постбилдер не редактировалось. Вышел из положения так:

 

в ПБ создаешь новые блоки G08P1 и G08P0, даешь им имена (например, circle_start и circle_stop соответственно).

 

Потом сохраняешь свой пост и закрываешь ПБ. Далее в ноутпаде открываешь pui файл своего ПП, находишь в нем раздел #Motions Start, строка {Circular Move} {circular_move} ... Заменяешь во вторых скобках circular_move на circle_start circular_move circle_stop. Сохраняешь и снова открываешь пост в постбилдере

1 person likes this

Share this post


Link to post
Share on other sites

А если вставить в виде текста? Правда, будет выводить после каждого кадра круговой интерполяции.

Share this post


Link to post
Share on other sites

ID: 8   Posted (edited)

оно и по первому способу предложенному undrakot
точно так же выводит в каждом кадре ...

только я делал в circular только в начале G08P1, в linear и rapid  только в начале G08P0

но всё же он натолкнул меня на мысль ))

нужно сделать новый WORD G08P с возможными значениями 1 или 0

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

тогда вывод будет нужными блоками строк....

осталось только понять как такое сделать :D

Edited by o_nix

Share this post


Link to post
Share on other sites

Я тут в Фануковский по быстрому пихнул ваши команды. Вы так хотели?

1 person likes this

Share this post


Link to post
Share on other sites

да так, выводится блоками

 

жаль только что под NX9, постбилдером из 8ки не открывается pui ... 

Share this post


Link to post
Share on other sites
жаль только что под NX9, постбилдером из 8ки не открывается pui ... 
 Не понял проблемы, там же все в одном в инсталяшке идет. Галочку поставить только при установке. Вернее даже, не отжимать.

Share this post


Link to post
Share on other sites

да установлен постбилдер ))

 

но версия другая из nx8.5.3 

 

pui созданные в более новой версии постбилдера не открываются 

 

Вся суть в общем то в двух функциях 

proc PB_CMD_p1g2p0_end { } {
#=============================================================
global p1p0

if {![info exists p1p0]} {set p1p0 0}

if {$p1p0 == 1} {
set p1p0 0
MOM_output_literal "G08P0"
}
}


#=============================================================
proc PB_CMD_p1g2p0_start { } {
#=============================================================
global p1p0

if {![info exists p1p0]} {set p1p0 0}

if {$p1p0 == 0} {
set p1p0 1
MOM_output_literal "G08P1"
}
}

Share this post


Link to post
Share on other sites
pui созданные в более новой версии постбилдера не открываются 
А, я не так понял просто. Sorry

Share this post


Link to post
Share on other sites

ID: 14   Posted (edited)

собственно 

POSTBUILDER_VERSION=2007.0.3.0

в заголовке pui решил вопрос и всё стало прекрасно открываться старой версией ))

Edited by o_nix

Share this post


Link to post
Share on other sites

собственно 

POSTBUILDER_VERSION=2007.0.3.0

в заголовке pui решил вопрос и всё стало прекрасно открываться старой версией ))

Хм, прикольно. Не знал. Тогда смотрите в постбилдере в перемещениях, эти команды вписаны туда. Если что непонятно, спрашивайте.

Share this post


Link to post
Share on other sites

умеет ли пост распозновать операции?надо для того чтоб при непрерывной обработке не выводил тормоз оси.например операция такая-то делай блокировку операция другая не делай.

 

кто может помочь с постом..не выводит подачу и М3 если используется один и тот же инструмент в другой операции

если можно то покажите на картинках что меняли.

файлы прицепляю

Share this post


Link to post
Share on other sites

умеет ли пост распозновать операции?надо для того чтоб при непрерывной обработке не выводил тормоз оси.например операция такая-то делай блокировку операция другая не делай.

 

кто может помочь с постом..не выводит подачу и М3 если используется один и тот же инструмент в другой операции

если можно то покажите на картинках что меняли.

файлы прицепляю

Попробуйте в Operation Stat Sequence - Start of Path вставить пользовательскую команду PB_CMD_start_of_operation_force_addresses

Share this post


Link to post
Share on other sites

спасибо.работает. а как насчёт названий операций..есть ли такое?

Share this post


Link to post
Share on other sites

а как насчёт названий операций..есть ли такое?

 

Про это?

умеет ли пост распозновать операции?надо для того чтоб при непрерывной обработке не выводил тормоз оси.например операция такая-то делай блокировку операция другая не делай.

Share this post


Link to post
Share on other sites

спасибо.работает. а как насчёт названий операций..есть ли такое?

 

Посмотрите эти переменные: mom_template_subtype, mom_template_type и mom_path_name. Делал в посте вывод M02 в зависимости от названия операции в навигаторе. Использовал mom_path_name.

Share this post


Link to post
Share on other sites

ни одна их этих переменных не подходит. variable streamline вобще выдаёт как planar mill.

эта вроде выводит правильно mom_operation_type

Share this post


Link to post
Share on other sites

ни одна их этих переменных не подходит. variable streamline вобще выдаёт как planar mill.

эта вроде выводит правильно mom_operation_type

 

Значит ее используйте

Share this post


Link to post
Share on other sites

искал в нете как активировать авто тормоз поворотной оси но не совсем понял как это сделать именно через пост.

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

вот такая переменная mom_clamp_status.но как применить

 

http://www.eng-tips.com/viewthread.cfm?qid=258025

 

Share this post


Link to post
Share on other sites

искал в нете как активировать авто тормоз поворотной оси но не совсем понял как это сделать именно через пост.

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

вот такая переменная mom_clamp_status.но как применить

 

http://www.eng-tips.com/viewthread.cfm?qid=258025

 

По-моему, значение переменной mom_clamp_status как раз и задается через стандартную UDEшку Clamp. Так что от событий у тебя вряд ли уйти получится. Ну либо отслеживать тип операции. Если пятиосевая, то не выводить блокировку, иначе - выводить

Share this post


Link to post
Share on other sites

на том форуме что приципил как раз и сделали без событий..только через сам пост..вот толька как он сделал..

Share this post


Link to post
Share on other sites

на том форуме что приципил как раз и сделали без событий..только через сам пост..вот толька как он сделал..

Кстати автор того топика и на этом форуме есть (во всяком случае ник и имя совпадаю). И еще ваша ссылка в России не работает, приходится на этот ресурс переходить через анонимайзеры (пэдээф не смотрел в начале).

По задаче, вам по сути надо сделать следующее (поправьте если не так): необходимо при подходе в операции включить блокировку осей (типа М25 в HH), а в конце операции разблокировать (M26), но это все безобразие надо делать только при 2+3, при много осевой такой блокировки делать не надо?

Если так, что здесь можно поступить по разному, например, при пяти осеовой обработки вводить UDE, которое подавляет вывод блокировки/разблокировки или каким-либо образом "узнавать", что идет непрерывная много осевая обработка и так подавляет. Также есть всегда метод имени рабочего и крестьянки - постпостпроцессинг (но это вообще не интересно).

Вопрос как узнавать также можно решить по разному.

По своему опыту использования много осевой обработки (проще использовать UDE).

 

П.С. Интресно что вам заокеанские коллеги посоветуют? Напишите если будет что-то интресное.

Share this post


Link to post
Share on other sites

я потом понял что кто то русский пишет там..да ты всё правильно понял что мне нужно сделать..но только пока для 3+1.мне надо распознание где позиционная обработка а где неприрывная..хочется как можно меньше вмешиваться в сам файл prt поэтому нехочу делать через EDE

я создал там новую тему..старая уже закрыта..ответят отпишусь

Share this post


Link to post
Share on other sites

я потом понял что кто то русский пишет там..да ты всё правильно понял что мне нужно сделать..но только пока для 3+1.мне надо распознание где позиционная обработка а где неприрывная..хочется как можно меньше вмешиваться в сам файл prt поэтому нехочу делать через EDE

я создал там новую тему..старая уже закрыта..ответят отпишусь

В принципе это реально сделать (я так думаю), нужно заготовку поста и примеры prt и что и куда вставлять

Share this post


Link to post
Share on other sites

выкладываю хасовский пост и файл..в нём нужно сделать автоматическую блокировку и разблокировку.

теперь другая проблема появилась..на nx 8 все работало. пост синумерик

там пост выводит наименьшую координату по z и потом перемешает её в начало программы.на на nx 9 не перемешает то что нужно в начало программы

Share this post


Link to post
Share on other sites

кто подскажет переменную для выводы радиуса фрезерного инструмента..именно радиуса а не радиус скрулления

Share this post


Link to post
Share on other sites

mom_tool_diameter. Пополам. 

Share this post


Link to post
Share on other sites

спасибо разобрался..только теперь как кол-во знаков уменьшить..

 

Share this post


Link to post
Share on other sites

спасибо разобрался..только теперь как кол-во знаков уменьшить..

Первый вариант (имхо не красивый, по программистки)

MOM_output_text "G90 G10 L12 P1 R[format %1.3lf expr[$mom_tool_diameter/2]] # не проверял

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

 

global radii_tool mom_tool_diameter

set radii_tool expr[$mom_tool_diameter / 2]

MOM_output_text "G90 G10 L12 P1 R[format %1.3lf $radii_tool]"

 

Второй вариант

Настроить BLOCK с необходимыми WORD и на R настроить вывод числа

Share this post


Link to post
Share on other sites

спасибо второй вариант сработал

Share this post


Link to post
Share on other sites

что обозначают эти буквы

 set output [format "%-10s %-8.3f %-9.1f %-3d"

Share this post


Link to post
Share on other sites

что обозначают эти буквы

 set output [format "%-10s %-8.3f %-9.1f %-3d"

f - тип данных с плавающей точкой

d - целое число

s - строка

Подробности ИМХО можно смотреть в описании команды sprintf из С http://ru.cppreference.com/w/cpp/io/c/fprintf

Share this post


Link to post
Share on other sites

теперь другая проблема появилась..на nx 8 все работало. пост синумерик

там пост выводит наименьшую координату по z и потом перемешает её в начало программы.на на nx 9 не перемешает то что нужно в начало программы

проанализировав работу поста я выяснил, что команда set file [open $ptp_file_name a] и последующим seek уже не робит. Я изменил ключ а на a+. seek стал "скакать", то он вставляет символы с заменой существующих. ((

Что-то видимо изменилось в TCL

Поэтому можно воспользоваться старым методом - запись в новый файл и переименовывание

 

Вот вариант он работает на 9-ке (я думаю, что и на любой версии)

set temp_dir [MOM_ask_env_var UGII_TMP_DIR]
set temp_file temp.temp
set f [open "$temp_dir\\$temp_file" w+]
set fcom [open $ptp_file_name r]

# shitivaem pervuyou 2 stroku i zapisivaem v fail up
for {set i 0} {$i < 2} {incr i } {
  gets $fcom inLine
  puts $f "$inLine"
}

# zapisivaem vremya
puts $f  "(MACHINE TIME: $mtime)"
puts $f  "$co----MIN Z..[format "%.2f" $coord_z]---- $ci"
puts $f  "$co TOTAL TIME:[format "%.2f" $mom_machine_time] $ci"

# zapisivaem ostalnuya chast UP
while { [gets $fcom inLine] >=0 } {
    puts $f "$inLine"
}

close $f
close $fcom

file rename -force "$temp_dir\\$temp_file" $ptp_file_name
file delete -force "$temp_dir\\$temp_file"

Минус только в том, что в окне NX немного выглядит не так))

 

Share this post


Link to post
Share on other sites

выкладываю хасовский пост и файл..в нём нужно сделать автоматическую блокировку и разблокировку.

Один из вариантов

global mom_tool_axis_type

#0=None, 1=Fixed Vector, 2=Normal to Part, 3=Swarf Relative to Part Surface(+U), 4=Swarf Relative to Drive Surface(+V), 5=Swarf Relative to Part Surface(-U), 6=Swarf Relative to Drive Surface(-V), 7=Relative to Part Non-Perpendicular, 8=4-Axis Normal to Part, 9=Through or Away from a Point, 10=Towards Point, 11=Away from Line, 12=Towards Line, 13=Surface Ruling, 14=Fan, 15=Same, 16=Normal to Drive Surface, 17=Parallel to Part Surface, 18=Parallel to Drive Surface, 19=Relative to Drive Surface, 20=4-Axis Normal to Drive Surface, 21=4-Axis Relative to Part Surface, 22=4-Axis Relative to Drive Surface, 23=Same as Drive Path, 24=Relative to Vector, 25=Dual 4-Axis or Dual 4-Axis Relative to Part, 26=Dual 4-Axis Relative to Drive, 27=Interpolated Tool Axis, 28 = User Defined to Part, 29 = All
switch $mom_tool_axis_type {
  "0" { MOM_output_literal "mom_tool_axis_type = NONE"}
  "1" { MOM_output_literal "mom_tool_axis_type = Fixed Vector"}
  "2" { MOM_output_literal "mom_tool_axis_type = Normal to Part"}
}

  MOM_output_literal "mom_tool_axis_type = $mom_tool_axis_type"
  MOM_output_literal "M10 (*********************************)"

Здесь в зависимости от типа ориентации оси инструмента вводим блокировку или нет

С разблокировкой оси можно поступить аналогично или выводить всегда... как вашей душеньке угодно.

Ограничение такого способа, состоит в том что в старых версия NX (до 9-ки) он всего не будет работать

Share this post


Link to post
Share on other sites

спасибо огромное ..пока до тормаза оси не добрался но все остальное работает..кстати в том примере с минимальным z как сделать чтоб нумерация строчек была..вначало программы бросает но без нумерации строчек

Share this post


Link to post
Share on other sites

кстати в том примере с минимальным z как сделать чтоб нумерация строчек была..вначало программы бросает но без нумерации строчек

не уловил что надо сделать

Вот часть УП

%
O1234 ( 4X TEST.prt )
(MACHINE TIME:    4.6 MINUTES)
(----MIN Z..-6.91---- )
( TOTAL TIME:4.57 )
( CONTROL HAAS )
(------------------------------)
(           TOOLS              )
(------------------------------)
( T#    NAME            LENGTH )
(------------------------------)
(------------------------------------)
( DATE: 13/JUN/2014  TIME: 01:10:21  )
( Part File Name: 4X TEST.prt )
N1 G91 G28 Z0.
N2 G91 G28 A0.
N3 G17 G90 G80 G40 G21
N4 M11
N5 (TOOL #1 MILL)
N6 T1 M6
N7 (VARIABLE_CONTOUR)
N8 G0 A0
N9 G90 X50. Y-30. S100 M3
N10 G43 H1 Z18.03 M8

Покажите где надо исправить?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • David123
      Уважаемый @andrey2147 ! Вы уверены, что на станке 1)  PCU-20 с HDD (с жестким диском) 2) NCU 810 D 3) Есть физически контроллер S7-200   Советую разобраться  по документации Сименса, что такое OP, PCU, MCP,  и их функции. 
    • piden
      @ДОБРЯК , кароч, про часы задачу ты ниасилил, теперь про кирпичи в инете нашел? До бесконечности.     Давай про стрелки решай. Или там тяжко - решение нагуглить не получается? 
    • ingener1
      Благодарю за помощь.
    • jul.23059
      Добрый день. Подскажите, пожалуйста, при измерении расстояний между элементами, в программе есть выбор 3D или 2D. Между плоскостями меряем в 3D, между окружностями в 2D. А как необходимо измерять расстояние от окружности до плоскости?  
    • AlexKaz
      Не обязательно, 2-й вариант по-сути аналогичен, но нужна небольшая правка. Физично задать начальный "глубокий плюс" плёнки, а конечную выбрать как "температура каркаса". КТР сильно зависит от температуры, забейте табличный.
    • РоманВ
      во-первых не вижу штрихованной области. во-вторых выделяешь эскиз и пользуешься операцией масштабирование (Инструменты-Инструменты эскиза-Масштабирование)
    • ДОБРЯК
      Если вы не знаете силы натяжения, то вы не решите эту задачу. Если знаете силы натяжения, то начните с простого теста. С квадратной или прямоугольной рамки. Попробуйте для простой рамки правильно промоделировать внешнюю нагрузку. Для начала решите линейную статическую задачу. Если будете моделировать с использованием температур, то решайте стационарную тепловую задачу.
    • ДОБРЯК



           
        Рассмотpим идеальное одноpодное веpтикальное гpавитационное поле. Пусть мы имеем неогpаниченный запас одинаковых идеально одноpодных киpпичей фоpмы пpямоугольного паpаллелепипеда. Один киpпич (А) можно положить на дpугой (Б) так, чтобы центp тяжести киpпича А пpоектиpовался в пpеделах основания киpпича Б (то есть, чтобы киpпич А не падал с киpпича Б). Тепеpь возьмем вместе киpпичи А и Б и положим их свеpху на киpпич В, так, чтобы общий центp масс киpпичей А и Б пpоектиpовался в пpеделах основания киpпича В. Пpи этом констpукция останется устойчивой. Если пpодолжать этот пpоцесс до бесконечности, какого максимального pасстояния по гоpизонтали можно достичь между левыми гpанями самого веpхнего и самого нижнего киpпича, чтобы ни один кирпич не упал?
    • bv87@me.com
      Спасибо Andrey2147 , перезогрузил NC И PLC файлы с архива станок ожил :) ура .
    • boberbob
      Как называется и можно ли уменьшить поле (подогнать размер штрихованной области под вид) вида импортированного dxf?