Jump to content

Макрос экспорта из сборки файлов IGS с пользовательскими свойствами в именах файлов.


Recommended Posts

Всем здравствуйте!

Для файлов DXF довольно много прекрасных макросов, и с GUI, и -без, а вот для IGS (SAT, STEP,Parasolid) - как-то скудно (или плохо искал).

Пользуемся простеньким макросом (по сути - файл/сохранить как/IGS) для экспорта IGS для лазерного трубореза , который при активации в сборке вываливает в то же место, и сборка, файлы (с учетом конфигураций добавляется -01, 02 в имя файла).

Потом долго и нудно удаляем ненужные, сопоставляя спецификацию с отображённым материалом, количеством и добавляя Материал и Количество к имени файла (так уж привыкли на производстве).

 

Вопрос  в том, чтобы в имя файла добавлять пользовательские свойства, после этого просто удаляются из общей массы ненужные файлы, глядя на Материал в названии файла.  Ну а количество берется тоже из свойств (макрос записывает значение для макроса DXF)

Кто-то может помочь с макросом? Или, возможно, идеей? (в древней теме про такой же вопрос @Kelny отсылал к хелпу, но моих компетенций, видимо недостаточно для осовения этой науки) 

 

Макрос, который создает DXF выдает нам название файла и формирует папки в виде:

Const OUT_NAME_TEMPLATE As String = "[Развертка]\Толщина <$CLPRP:Толщина листового металла>мм\<_FileName_> (исп.<_ConfName_>) - <$PRP:SWP-Материал> - <$CLPRP:Толщина листового металла>мм - R <$CLPRP:Радиус сгиба> - K <$CLPRP:Допуск сгиба>  <$PRP:Qty> шт..dxf"
 

Вот что-то примерное и хотелось бы для IGS.

Сейчас вот это работает:

 

Option Explicit

Dim swApp        As SldWorks.SldWorks
Dim swModel      As SldWorks.ModelDoc
Dim nPath        As String
Dim FileName     As String
Dim NewFileName  As String
  
Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
        If swModel Is Nothing Then
        swApp.SendMsgToUser2 "Please open a SolidWork Part/Assembly first and try again!!", swMbWarning, swMbOk
    Exit Sub
End If
    
        If swModel.GetType = swDocDRAWING Then
        swApp.SendMsgToUser2 "Please open a SolidWork Part/Assembly first and try again!!", swMbWarning, swMbOk
    Exit Sub
End If

    
        nPath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, ".") - 1)
        swModel.SaveAs nPath & ".igs"
           
        FileName = nPath & ".igs"

End Sub

Link to post
Share on other sites


UnPinned posts
Kelny
27 минут назад, dicty сказал:

Макрос, который создает DXF выдает нам название файла и формирует папки в виде:

Const OUT_NAME_TEMPLATE As String = "[Развертка]\Толщина <$CLPRP:Толщина листового металла>мм\<_FileName_> (исп.<_ConfName_>) - <$PRP:SWP-Материал> - <$CLPRP:Толщина листового металла>мм - R <$CLPRP:Радиус сгиба> - K <$CLPRP:Допуск сгиба>  <$PRP:Qty> шт..dxf"
 

Вот что-то примерное и хотелось бы для IGS.

Пробовали заменить .DXF на .IGS и запустить макрос?

Link to post
Share on other sites
19 минут назад, Kelny сказал:

Пробовали заменить .DXF на .IGS и запустить макрос?

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

Razvertka All_example.swp

UPD: Пробовал, не отрабатывает, выдаёт ошибку

Edited by dicty
Link to post
Share on other sites

@dicty  Я как-то писал на заказ макрос очень подходящий под Ваши требования. Если Вы предоставите пример модели сборки в Solidworks, укажите версию программы и более подробное описание задачи, то за некоторое вознаграждение и в короткие сроки можно реализовать Ваши требования.

Вам нужен макрос наподобие этого ?

Скрытый текст

 

Edited by Chuvak
Link to post
Share on other sites
Snake 60

@Chuvak А он выравнивает трубы созданные под углом+ скосы на концах труб? Имею ввиду, чтобы поменялась система координат в такой детали одной из осей вдоль самого длинного размера?

Link to post
Share on other sites

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

@Snake 60 , я забыл сказать, что данный макрос отбирает из главной сборки только детали, сделанные с помощью инструментa сварные детали ( метод IsWeldment), и сохраняет в них отдельно тела в файл igs.

Link to post
Share on other sites

Насчёт скосов не совсем понял, но реализовать выравнивание системы координат вдоль самой длинной стороны трубы скорее всего возможно, почему бы и нет)

Link to post
Share on other sites
Snake 60
1 час назад, Chuvak сказал:

Насчёт скосов не совсем понял

Я имел ввиду трубы, которые являются раскосинами, допустим в фермах. У них система координат наследуется от многотельной детали и в ней труба повернута на произвольный угол (согласно ее положения в сборке) + такая труба имеет подрезку на концах. Такую деталь скармливать труборезу черевато, Обычно народ делает новую систему координат, так чтобы одна из осей была параллельна длине (желательно чтобы это была Х координата, хотя не обязательно) и только потом экспортируют в IGS с выбором этой СК. Вопрос, реализуемо ли создание СК || длине трубы средствами API? Есть пример, хотелось бы глянуть...

Link to post
Share on other sites
16 часов назад, Chuvak сказал:

@dicty  Я как-то писал на заказ макрос очень подходящий под Ваши требования. Если Вы предоставите пример модели сборки в Solidworks, укажите версию программы и более подробное описание задачи, то за некоторое вознаграждение и в короткие сроки можно реализовать Ваши требования.

Вам нужен макрос наподобие этого ?

 

Да, очень похоже на то, что нужно. В ЛС озвучьте, пожалуйста, условия.

SW2022.

ТЗ очень простое: запуск макроса из сборки, сохраняем все активные детали всех уровней сборки в IGS, в имя файла IGS добавляем пользовательские свойства.

Link to post
Share on other sites

@Snake 60 По моему мнению, в этой операции нет большого смысла, т.к. трубы скорее всего выравнивают в программе. которая идет в придачу к станку. В Solidworks это сделать можно, но геморройно)

Link to post
Share on other sites
  • 1 month later...
04.07.2024 в 00:25, Snake 60 сказал:

Я имел ввиду трубы, которые являются раскосинами, допустим в фермах. У них система координат наследуется от многотельной детали и в ней труба повернута на произвольный угол (согласно ее положения в сборке) + такая труба имеет подрезку на концах. Такую деталь скармливать труборезу черевато, Обычно народ делает новую систему координат, так чтобы одна из осей была параллельна длине (желательно чтобы это была Х координата, хотя не обязательно) и только потом экспортируют в IGS с выбором этой СК. Вопрос, реализуемо ли создание СК || длине трубы средствами API? Есть пример, хотелось бы глянуть...

 

@Snake 60  Да, то что Вы хотите можно реализовать с помощью API, т.е. автоматически создать новую систему координат для любого профиля в сварной детали, сделать ось Х параллельной отрезку эскиза, вдоль которого был вытянут определенный профиль, и затем сохранить в полученной системе координат в формате igs. Вот только я не знаю, важно ли расположение нулевой точки СК для производства, т.к. я совмещаю эту точку с любой из точек линии эскиза. Просто я как раз тестирую код и перебираю возможные варианты исходной модели, потому что нужно учесть как можно больше нюансов.

Edited by Chuvak
Link to post
Share on other sites
Snake 60

@ChuvakЗависит от того софта, который использует труборез. Одним заказчикам было всё равно где исходная точка (главное чтобы ось Х была || длинной стороне), другим важно была, чтобы исх.точка находилась в центре профиля, например трубы.

PS Ваш софт коммерческий или выложите для комьюнити?

Link to post
Share on other sites

Если есть требования по выравниванию исходной точки именно с центром профиля, но не с центром масс, то с помощью API это осуществить практически невозможно в случае неоднородного профиля ( с множеством вырезов и скосов). Я макрос выложить не могу, делаю на заказ пока, да и сам макрос индивидуален. Только если конкретно под Ваши задачи, не бесплатно конечно

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.



  • Сообщения

    • Мрачный
      Деталь имеет внешние ссылки, определенные в контексте сборки, которая не является активной. Внешняя ссылка должна относиться к одному из перечисленных типов объектов: Дуга или цилиндрические кромки Неполные цилиндрические грани Дуги или окружности эскиза Оси Плоские грани Линии эскиза (линейные) Цилиндрические поверхности Плоскости Точки эскиза Линейные кромки Справочные точки Вершины
    • Kelny
      Вам закрыли доступ к справке? https://help.solidworks.com/2025/russian/solidworks/sldworks/t_flexible_component_add.htm
    • Alex1986
      меня очень интересует практический опыт реального применения...
    • Alex1986
      @Мрачный , я совершенно не могу понять как гибкий компонент использовать в сборке
    • Fedor
      Если закрыть снаружи кожухом, чтобы создать направленный, то можно в разы меньше вещества.  Так в советской армии учили  :) 
    • AlexKaz
      Обычный курс пластичности и расчёты в динамике. В ОМД есть специальный вид штамповки по советским учебникам. Не всё же листовое в промке роботами формовать и на турецких матрицах за миллион $. Плюс людям могут пригодиться минимальные расчётные навыки городить защиты от подобного.
    • Fedor
      Пособие для террористов готовите ?  :) 
    • AlexKaz
      Это усреднённый диаметр трубы С.П. по вики. Это моё задание для одного из студентов на зачёт. Поскольку я вчера убегая на работу в спешке оставил дома телефон с инетом, народ занервничал что я не отвечаю. Вчера вечером я поправил расчётный файл на обычные константы бетона без плясок с "сверхточными" мехсвойствами и материалами. Судя по даже такой приближённой постановке, бетонную оболочку с трубой точно прорывает 1900 кг TNT, расположенные на поверхности или рядом. Если же нужно расфигачить трубу как нож маслом чтобы аж не осталось стыка - масса должна быть ещё больше в разы.   Короче говоря, дайвер-любитель такое поставить на трубу не осилит. Постарались и организовали опытные.   Поскольку расчёт сильно приближённый, интересна лишь постановка задачи для отчёта и получение опыта работы с явным солвером. Что там было в реальности и какие массы и какие константы, для зачёта не интересно. Кстати, одна из работ была немного про другой случай. Лет 10-15 назад у китайцев тоже что-то случилось, но, вроде, не настолько бесцеремонное, и, вроде, обычный пром. Инфа от китайцев, если поискать, есть в сети в виде статей с расчётами.
    • NDE
      Проблем читать/писать свойства объектов - нет. Проблема в идентификации. В сессии NX уже загружена сборка с компонентами. Соответственно созданы Runtime объекты BOMLine. Как определить, какой BOMLine соответствует конкретному компоненту. Дело в том, что если создавать новый BOMWindow, то его придётся сохранять после записи, это приведёт к тому что будет невозможно сохранить сборку. Если менять свойства в соответствующих PSOccurrence - то при сохранении сборки NX перезапишет свойства из BOMLine. И NX ведёт себя не по человечески - после закрытия сборки и повторного её открытия он не закрывает предыдущий BOMWindow, а создаёт новый, соответственно в сессии может присутствовать несколько дублей BOMLine и я не могу отличить те, которыми пользуется NX в данный момент от тех, которые уже неактуальны. А это предпосылка к ошибке.
    • Bot
      Оригинал на сайте C3D Labs: Расширение возможностей кинематической операции Операция построения кинематического тела путем движения образующей кривой вдоль траектории относится к базовому функционалу геометрического ядра C3D Modeler. Это одна из старейших и проработанных операций построения 3D-объектов. Тем не менее наш заказчик поставил перед разработчиками ядра задачу по расширению функциональности этой операции. Необходимо было предоставить возможность изменять плоское образующее сечение вдоль траектории. В качестве примеров управления сечением можно назвать: изменение длины кривых, ограничения угла между ними, а также требование прохождения сечения через набор кривых или касательно некоторой поверхности. Совокупность подобных требований исключала реализацию кинематической поверхности в аналитическом виде, а многообразие варьируемых параметров делало сложным управление ими. После непростых обсуждений было решено на уровне ядра предоставить абстрактный [...] View the full article
×
×
  • Create New...