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

FAQ/Unigraphics/POST


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

Только что, artem-nafanya сказал:

С этим кодом тоже самое((

Совсем думать не хотите)

if { !$bsearch } {

    lappend list_tool $row_tool

} elseif { ![info exists double_tools($row_tool)] } { set double_tools($row_tool) 0 }

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


15 минут назад, lexincton сказал:

Совсем думать не хотите)

if { !$bsearch } {

    lappend list_tool $row_tool

} elseif { ![info exists double_tools($row_tool)] } { set double_tools($row_tool) 0 }

Я уж битый час думаю.

Пока что несколько строчек кода с вложенными командами это неподъёмно, если только не указать, что конкретно тут не так.

Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, artem-nafanya сказал:

Я уж битый час думаю.

Пока что несколько строчек кода с вложенными командами это неподъёмно, если только не указать, что конкретно тут не так.

Так тоже не работает? В сообщении же указание на ошибку - [info exists double_tools($row_tool)]  обращение без $ должно быть

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, lexincton сказал:

Так тоже не работает? В сообщении же указание на ошибку - [info exists double_tools($row_tool)]  обращение без $ должно быть

Так ошибку не выдаёт.

Я не понимал, если переменная double_tools объявлена, то не значит что он не может быть с символом $ или без него.

 

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

Благодарность @lexincton

Проверка на одинаковые номера инструментов  

#запись

if { ![info exists list_tool] } { set list_tool {} }
set row_tool $mom_tool_number
set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
if { !$bsearch } {
    lappend list_tool $row_tool
} elseif { ![info exists double_tools($row_tool)] } { set double_tools($row_tool) 0 }

 

#чтение

foreach number [array names double_tools]  {
MOM_display_message "ОБНАРУЖЕНЫ ОДИНАКОВЫЕ НОМЕРА ИНСТРУМЕНТОВ T$number"
}

Hide  

 

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

часть #запись поместил в

часть #чтение в репроцесс в завершении программы. Если весь код поместить в "автоматическую смену инструмента", то почему-то дважды выводит одно и тоже сообщение.

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

@lexincton

Объединил преимущества первого и второго вариант кода для формирования и вывода списка инструментов.

 

Показать содержимое  

1) В событии начала программы инициируем массив, в который будем собирать необходимую информацию о применяемом инструменте:

global array_tool_name
global tool_index_max

set tool_index_max ""

for {set i 1} {$i<=$tool_index_max} {incr i} {
set array_tool_name($i) ""
}

 

2) В событии начало программы добавляем команду пользователя:

 

global mom_tool_adjust_register
global mom_tool_number
global list_tool

#НАПОЛНЕНИЕ МАССИВА ДАННЫМИ
set tool_data "; T$mom_tool_number / D$mom_tool_adjust_register"

if { ![info exists list_tool] } { set list_tool {} }
set row_tool $tool_data
set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
if { !$bsearch } { lappend list_tool $row_tool }

 

 

3) В событии конца программы добавляем команду:

 

global list_tool
global ptp_file_name

#НАЧАЛО РЕПРОЦЕССА
set tmp_file_name "${ptp_file_name}_"

if {[file exists $tmp_file_name]} {
MOM_remove_file $tmp_file_name
}

MOM_close_output_file $ptp_file_name
file rename $ptp_file_name $tmp_file_name
set ifile [open $tmp_file_name r]
set ofile [open $ptp_file_name w]


set buf ""
#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА
foreach number [lsort -ascii $list_tool] {
        puts $ofile $number
}
#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП
while { [gets $ifile buf] > 0 } {
       puts $ofile $buf}

close $ifile
close $ofile

MOM_remove_file $tmp_file_name
MOM_open_output_file $ptp_file_name

Hide  

Будет выводить список в таком формате:

Показать содержимое  

; T2 / D1
; T3 / D1
; T3 / D2
; T6 / D1

Hide  
Правда нумерацию кадров сюда "прикрутить" не удалось.
Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, artem-nafanya сказал:

Правда нумерацию кадров сюда "прикрутить" не удалось.

mom_seqnum

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

mom_seqnum

Если добавить сюда:

set tool_data "$mom_seqnum ;T$mom_tool_number / D$mom_tool_adjust_register"

То выводит так:

160 ;T2 / D1
250 ;T2 / D1
390 ;T6 / D1
40. ;T2 / D1
550. ;T3 / D1
640. ;T3 / D2

 

Если добавить сюда:

foreach number [lsort -ascii $list_tool] {
puts $ofile "$mom_seqnum $number"
}

То выводит так:

710 ;T2 / D1
710 ;T2 / D1
710 ;T6 / D1
710 ;T2 / D1
710 ;T3 / D1
710 ;T3 / D2

 

Надо чтобы было так:

100 ;T2 / D1
110 ;T2 / D1
120 ;T6 / D1
130 ;T2 / D1
140 ;T3 / D1
150 ;T3 / D2

А дальнейшие кадры УП начинались со 160 или иного номера кадра, на котором закончится нумерация массива с инструментами.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, artem-nafanya сказал:

А дальнейшие кадры УП начинались со 160 или иного номера кадра, на котором закончится нумерация массива с инструментами.

Если это Fanuc или Siemens, то можно номера кадров не указывать. Или вы уже очень серьёзно настроены победить неправильную нумерацию?:smile: Как вариант, можно сначала постпроцессировать программу без нумерации кадров, а в конце написать процедуру, которая уже, вашу полностью готовую программу со всеми добавлениями, пронумерует.

Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, vicebear сказал:

Если это Fanuc или Siemens, то можно номера кадров не указывать. Или вы уже очень серьёзно настроены победить неправильную нумерацию?:smile: Как вариант, можно сначала постпроцессировать программу без нумерации кадров, а в конце написать процедуру, которая уже, вашу полностью готовую программу со всеми добавлениями, пронумерует.

Да, в принципе оно и так работает на станке. Просто будет подряд несколько кадров с одинаковыми номерами.

Интересно как это можно реализовать, ведь в советском постпроцессоре это как-то сделали, неужели сейчас сложнее или раньше трава была зеленее и программисты сильнее))

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, artem-nafanya сказал:

Интересно как это можно реализовать, ведь в советском постпроцессоре это как-то сделали, неужели сейчас сложнее или раньше трава была зеленее и программисты сильнее))

Как это реализовать @vicebear написал, вот реализация:

 

#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП

global mom_sys_seqnum_start mom_sys_seqnum_incr

set mom_seqnum $mom_sys_seqnum_start

while { [gets $ifile buf] > 0 } {
       puts $ofile "N$mom_seqnum $buf"

       incr mom_seqnum  $mom_sys_seqnum_incr

}
close $ifile
close $ofile

 

Соотв-но в программе выключить нумерацию

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

Эх, а кто же мне поможет с моей трансформацией и вообще с этими расчетами координат. Уж больно "тонкий" этот слой, что в упор не вижу. Печаль...

Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Jobman21 сказал:

Эх, а кто же мне поможет с моей трансформацией и вообще с этими расчетами координат. Уж больно "тонкий" этот слой, что в упор не вижу. Печаль...

Почитайте для начала про переменные mom_kin_* и переменные mom_*_matrix.

Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, lexincton сказал:

Как это реализовать @vicebear написал, вот реализация:

 

Показать содержимое  

#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП

global mom_sys_seqnum_start mom_sys_seqnum_incr

set mom_seqnum $mom_sys_seqnum_start

while { [gets $ifile buf] > 0 } {
       puts $ofile "N$mom_seqnum $buf"

       incr mom_seqnum  $mom_sys_seqnum_incr

}
close $ifile
close $ofile

MOM_remove_file $tmp_file_name
MOM_open_output_file $ptp_file_name

Соотв-но в программе выключить нумерацию

Hide  

Способ хорош и работает, но он нумерует "#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП", с нумерацией которой всё в порядке. Надо чтобы нумеровал только одну строку в массиве "2)" как описано выше.

Изменено пользователем artem-nafanya
Ссылка на сообщение
Поделиться на других сайтах
48 минут назад, artem-nafanya сказал:

Способ хорош и работает, но он нумерует "#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП", с нумерацией которой всё в порядке. Надо чтобы нумеровал только одну строку в массиве "2)" как описано выше.

global mom_sys_seqnum_start mom_sys_seqnum_incr
set mom_seqnum $mom_sys_seqnum_start

 

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА
foreach number [lsort -ascii $list_tool] {
        puts $ofile "N$mom_seqnum $number"

        incr mom_seqnum  $mom_sys_seqnum_incr
}
#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП
while { [gets $ifile buf] > 0 } {
       puts $ofile "N$mom_seqnum $buf"

       incr mom_seqnum  $mom_sys_seqnum_incr

}

close $ifile
close $ofile

MOM_remove_file $tmp_file_name
MOM_open_output_file $ptp_file_name

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

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

18 минут назад, lexincton сказал:

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА
foreach number [lsort -ascii $list_tool] {
        puts $ofile "N$mom_seqnum $number"

        incr mom_seqnum  $mom_sys_seqnum_incr
}

Изменено пользователем artem-nafanya
Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, artem-nafanya сказал:

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

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА

set i 1
foreach number [lsort -ascii $list_tool] {

        set seq_temp ""

        if { $i < 2 } {                

                incr i

        } else {

                set seq_temp "N$mom_seqnum " 

                set i 1

                incr mom_seqnum  $mom_sys_seqnum_incr

        }
        puts $ofile "$seq_temp$number"       
}

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

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА

Показать содержимое  

set i 1
foreach number [lsort -ascii $list_tool] {

        set seq_temp ""

        if { $i < 2 } {                

                incr i

        } else {

                set seq_temp "N$mom_seqnum " 

                set i 1

                incr mom_seqnum  $mom_sys_seqnum_incr

        }
        puts $ofile "$seq_temp$number"       
}

Hide  

Нумеруется так же первая строка, но теперь через одно значение массива. 

Пример:  

T2

D1

;
N10 T2

D1

;
T6

D1

;

N20 T6

D1

;

T7

D1

;

N20 T3

D1

Hide  
Изменено пользователем artem-nafanya
Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, artem-nafanya сказал:

Нумеруется так же первая строка, но теперь через одно значение массива

Про какую строку речь?

Ссылка на сообщение
Поделиться на других сайтах
Только что, lexincton сказал:

Про какую строку речь?

В примере выше строка с индексом "T".

 

Надо что бы было так
 

T2
N10 D1
;
T2
N20 D1
;
T6
N30 D1
;
N40 T6
D1
;
N50 T7
D1
;
N60 T3
D1

Hide  
Ссылка на сообщение
Поделиться на других сайтах
  • SHARit закрепил это тему

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • mactepnew
      Вот я тоже так думал, пока не столкнулся с обратным) Как еще столкнусь, пришлю скриншот. Хаос еще в том, что порядок в дереве построения весьма условный. операция, которая стоит перед групой, имеет бОльший timestamp(пардон, не знаю как это в переводе), чем эта группа, и выполняется позже. При этом все операции в группе имеют timestamp на пару сотен меньше и выполняются раньше, чем две группы, стоящие перед ней. Логика?  Если в эскизе все элементы определены, то можно поставить еще один размер (хочешь переопределить эскиз - да пожалста!), изменить его - и NX самостоятельно выберет, какой размер или ограничение отпустить и весь эскиз летит к чертям. Это ли не хаос?   Назовете хоть один CAD, которым можно пользоваться так? Любой из встреченных мной имеет много неочевидных нюансов, которые конечно не проявляются при выполнении университетского или базового курса. В Creo я на протяжении 5 лет находил всё новые фишки, которые не прописаны в документации. Огромная благодарность Ruslan за пояснения тонкостей. Даже Компас и Solidworks, которые считаются самыми дружественными, оказалось непросто обуздать, когда проходил собеседования и делал тестовые. А ведь университетский курс знал на отлично!   Возвращаясь к NX - вот сегодняшний пример. Утром деталь была оранжевая, единая. Изменил пару уклонов и толщин, стала желтая с элементами оранжевого и частично твердотельной, частично листовой. Я даже не знаю, как сформулировать вопрос в поддержку. 
    • Mikhail_Podgornyj
      Добрый день, кто может поделиться SKF Bearing V1.6 (ANSYS App)? Заранее благодарен!
    • kkk
      Короче, как сделать автоматом не нашел. Раскрасил нужные грани нужными цветами. Затем на вкладке с цветом модели можно выбирать нужный цвет, тогда в модели выбираются грани, покрашенные этим цветом. Можно еще сохранить выбор этих граней, но смысла не вижу, т.к. все легко выбирается по цвету. Затем либо в инструменте Измерить смотрим площадь и как-то ее используем, либо можно макросом (что выкладывал Kir95 ) внести площадь в свойства (на вкладку Конфигурации). Можно еще внести выбранные грани в датчики, но как использовать их в свойствах не нашел.    Макрос прикрепляю.     Площадь выбранных граней в свойства.swp
    • IgnatvKudrin
      Для нашего производства требуются постоянно инструментальные пружины для штампов. Сейчас заказы обрабатываются довольно долго - до 2-х месяцев. А у нас сроки на штампы 1-2 месяца с испытанием, доработкой и т.п. Хотелось бы найти поставщика, у которого уже есть склад с данными пружинами или кто может доставить за 1 месяц.   Пружины стандартные по ISO, но на всякий случай приложил каталог. Вот список пружин, которые нужны очень срочно:   LR 32 x 44 - 1 шт. LR 25 x 51 - 2 шт. LB 63 x 89 - 7 шт. LB 32 x 102 - 10 шт. LB 32 x 89 - 20 шт. LB 32 x 76 - 12 шт. LB 32 x 51 - 6 шт. LB 25 x 127 - 9 шт.   Готов выслушать все предложения. Возможно даже есть те, кто сможет изготовить подобные пружины с такими же параметрами. 20231101.pdf
    • bubblyk
      Знатоки форума, подскажите, как смоделировать простую (на первый взгляд) задачу термомеханики в упругой постановке.   Есть брусок правильный формы ака кирпич, в котором генерируется НЕРАВНОМЕРНОЕ удельное тепловыделение (HGEN). Задняя и передняя поверхности конвективно охлаждаются с известными (но различными) коэффициентами теплоотдачи и температурами жидкости/газа. Свойства кирпича (теплофизика + механика) принимаются зависящими от температуры. Постановка - стационарная Собственно вопрос : как грамотно смоделировать температурное поле в кирпиче с учетом температурного расширения?   Исходный код приложил.     Надеюсь на коллективный разум и опыт! EPTH2D.mac p.s.   Если есть опыт решения этой задачи в Ansys WB, тоже можно сюда приложить командные вставки.
    • OutXL
      Это было давно использовал NC-Link  и данную инструкцию. The Maho.docx
    • Mikhail_Podgornyj
      Добрый день, кто может поделиться SKF Bearing V1.6 (ANSYS App)? Заранее благодарен!
    • alexqwq10
      В данных корпусах ничего лишнего быть не должно. Максимум шпильки заземления, в количестве предусмотренном для конкретного корпуса. Рассматривал очень много подобных корпусов разных производителей и данная проблема актуальна для подавляющего большинства.
    • MFS
      Коллеги, приветствую, нужно штамповать на горячую из алюминиевого сплава (АК6 или около того) заготовки размером 280*180*12. Подскажите, пожалуйста, параметры пресса для такой заготовки - размеры, усилия. А есл дадите пример такой марки и модели, более менее подходящей для этой работы (нашего или импортного), то будет и еще лучше. Заранее спасибо!
    • Elbaro
      Добрый день. Уже несколько дней пытаюсь найти на просторах инета макрос, позволяющий менять материал выделенных деталей в сборке. У меня есть макрос это делающий, но только в открытой детали, заставить его работать в сборке не получается. Может кто поделится ссылкой или часть кода? Спасибо.
×
×
  • Создать...