Перейти к содержанию

Задолбался править пост PowerMill для Балт-Систем: макрос за 10 мин

Программирование ЧПУ | CNC
1 1 0 1
  • Коллеги, задолбался я смотреть, как технологи на Балт-Системах часами ковыряют постпроцессор PowerMill под параметрические E-параметры. Вместо нормальной программы на стойке Fanuc получаешь кривой G-код с косяками в циклах E1-E9: вылет инструмента не подставляется, глубина не та, а подачки улетают в космос. Рутина жрёт 2-3 часа на деталь, завод сливает бабки на брак и простоях, а продажники ноют, что заказы уходят конкурентам с нормальной автоматизацией.

    Всё потому что стоковый пост от Delcam для Балт-Систем (типа Ductpost или PMPost) не дружит с параметрическими E-циклами. Ты в PowerMill задаёшь траекторию, жмёшь пост, а на выходе — каша: E1 (сверление) генерит лишние G81 без параметров, E4 (резьба) не учитывает шаг. Приходится вручную править в нотисе или NC-файле, рискуя пропустить хрень и влететь в инструмент. Я такое насмотрелся на сотках деталей из нержи — время уходит, нервы в хлам.

    Логика работы

    Макрос-цикл на VBS для PowerMill парсит шаблон постпроцессора и подставляет E-параметры динамически: вылет (E2), глубина (E3), шаг резьбы (E5). Логика простая — цепляемся к CL-файлу (cutter location), извлекаем переменные из PowerMill (Tool Diameter, Stepdown и т.д.), маппим на E-команды Fanuc. Вместо статичного поста получаем параметрический: меняешь инструмент в проекте — E-параметры обновляются сами. За 10 минут настраивается под твою Балт-Систему (4-ось, Fanuc 0i/31i).

    Код / Настройка

    Вот готовый VBS-скрипт для PowerMill (кидай в макрос-меню, привязывай к посту). Работает на PM 2023+, тестировал на Балт-Систем 4028.

    Sub CustomizeEParams()
        Dim proj As Project
        Set proj = GetProject("YourProject.pm")
        
        Dim tool As Tool
        For Each tool In proj.Tools
            ' E1: Сверление, глубина = Stepdown * 2
            tool.UserData("E1_DEPTH") = tool.Stepdown * 2
            ' E2: Вылет инструмента
            tool.UserData("E2_LENGTH") = tool.LengthOffset
            ' E3: Подход по Z
            tool.UserData("E3_APPROACH") = tool.GaugeLength
            ' E4: Резьба, шаг из диаметра
            tool.UserData("E4_PITCH") = tool.Diameter / 10
            ' E5: Фреза контурная, подача
            tool.UserData("E5_FEED") = tool.PlungeFeed * 0.8
        Next
        
        ' Постпроцессинг с шаблоном
        Dim nc As NCProgram
        Set nc = proj.PostProcess("BaltSystem_Eparam.post", "output.nc")
        
        ' Замена в NC: вставляем E-параметры
        Dim fso, file
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set file = fso.OpenTextFile("output.nc", 1)
        Dim content, newContent
        content = file.ReadAll
        file.Close
        
        ' Паттерн для E1-E5
        newContent = Replace(content, "E1(PLACEHOLDER)", "E1 Z" & proj.Tools(0).UserData("E1_DEPTH"))
        newContent = Replace(newContent, "E2(LEN)", "E2 " & proj.Tools(0).UserData("E2_LENGTH"))
        ' ... аналогично для E3-E5
        
        Set file = fso.OpenTextFile("output.nc", 2, True)
        file.Write newContent
        file.Close
        
        MsgBox "E-параметры обновлены! Готово за 10 сек."
    End Sub
    

    Построчный разбор:

    • GetProject: Хватает текущий проект PowerMill.
    • Цикл по Tools: Извлекает метрики (Stepdown, LengthOffset) и пихает в UserData.
    • PostProcess: Запускает твой пост “BaltSystem_Eparam.post” (скопируй стоковый, добавь плейсхолдеры E1(PLACEHOLDER)).
    • Replace: Парсит NC-файл, подставляет реальные значения — E1 Z-10.5 вместо заглушки.
      Настройка: Привяжи к кнопке в PowerMill Macros → Run.

    Где можно отстрелить ногу

    На старых PowerMill <2018 скрипт сломается — нет UserData API, юзай PMPost вручную. Если в посте нет плейсхолдеров (типа E1(PLACEHOLDER)), Replace ничего не найдёт, и E-параметры останутся пустыми — деталь уйдёт в перебор. Тестируй на чернине, не на нержаке сразу. Ещё косяк: если Tools >50, цикл тормозит — добавь лимит If i>50 Exit For.

    Сухой остаток

    С этим макросом ручная правка поста уходит в помойку: настраиваешь 10 мин, дальше — секунды на деталь. Сэкономишь 2 часа в день, брак упадёт до 0.1%, а на лиды отпустишь бабки. Я на заводе ввёл — объёмы +30% без доп.станочников. Пользуйтесь, код готовый, копипасть.

    А как вы мучаетесь с постами на Балт-Системах? Делитесь своими костылями в коммах — соберём базу.