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

подскажите макрос


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

Уважаемые коллеги! 

Нужен макрос делающий следующее:

1. делает выделенную деталь  сборки виртуальной

2. переименовывает деталь, добавляя суффикс имя сборки (например  "имя детали_имя сборки")

3. сохраняет эту деталь во внешний файл в папку со сборкой .

 

 

 

ЗЫ прошу не отвечать по типу " да нафига тебе это надо лучше сделай так то или так то".

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


Есть переименование деталей через дерево в сборке (но там нет виртулизации и суффиксов): http://www.streamdivision.com/pereimenovanie-detaley/

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

Близко но не то. Основное что мне нужно это сохранение из одной папки в папку со сборкой. При этом если данная деталь открыта в других сборках нужно чтобы ссылки не заменялись (для этого деталь делается виртуальной).

 

Есть переименование деталей через дерево в сборке (но там нет виртулизации и суффиксов): http://www.streamdivision.com/pereimenovanie-detaley/

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

Я догадывался)) Только я не владею vba.

 

Здравствуйте,

 

Попробуйте макрос ниже. Минимально поддерживаемая версия 2013:

 

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swSelMgr As SldWorks.SelectionMgr
Dim swComp As SldWorks.Component2

Sub main()

    Set swApp = Application.SldWorks
    
    Set swModel = swApp.ActiveDoc
    
    Set swAssy = swModel
    
    Set swSelMgr = swModel.SelectionManager
    
    Set swComp = swSelMgr.GetSelectedObject6(1, -1)
    
    Dim compName As String
    Dim ext As String
    
    GetDirectoryPath swComp.GetPathName(), compName, ext
    
    Dim outPath As String
    Dim assmName As String
    outPath = GetDirectoryPath(swModel.GetPathName(), assmName, "")
    
    compName = compName & "_" & assmName
    swComp.MakeVirtual
    swComp.Name2 = compName
    
    swComp.SaveVirtualComponent outPath & compName & ext
    
End Sub

Function GetDirectoryPath(filePath As String, ByRef fileName As String, ByRef extension As String) As String
    
    Const SW_EXT_PATTERN = ".SLDXXX"
    
    GetDirectoryPath = Left(filePath, InStrRev(filePath, "\"))
    fileName = Mid(filePath, InStrRev(filePath, "\") + 1, InStrRev(filePath, ".") - InStrRev(filePath, "\") - 1)
    extension = Right(filePath, Len(SW_EXT_PATTERN))
    
End Function

~A.

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

Здравствуйте,

 

Попробуйте макрос ниже. Минимально поддерживаемая версия 2013:

 

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swSelMgr As SldWorks.SelectionMgr
Dim swComp As SldWorks.Component2

Sub main()

    Set swApp = Application.SldWorks
    
    Set swModel = swApp.ActiveDoc
    
    Set swAssy = swModel
    
    Set swSelMgr = swModel.SelectionManager
    
    Set swComp = swSelMgr.GetSelectedObject6(1, -1)
    
    Dim compName As String
    Dim ext As String
    
    GetDirectoryPath swComp.GetPathName(), compName, ext
    
    Dim outPath As String
    Dim assmName As String
    outPath = GetDirectoryPath(swModel.GetPathName(), assmName, "")
    
    compName = compName & "_" & assmName
    swComp.MakeVirtual
    swComp.Name2 = compName
    
    swComp.SaveVirtualComponent outPath & compName & ext
    
End Sub

Function GetDirectoryPath(filePath As String, ByRef fileName As String, ByRef extension As String) As String
    
    Const SW_EXT_PATTERN = ".SLDXXX"
    
    GetDirectoryPath = Left(filePath, InStrRev(filePath, "\"))
    fileName = Mid(filePath, InStrRev(filePath, "\") + 1, InStrRev(filePath, ".") - InStrRev(filePath, "\") - 1)
    extension = Right(filePath, Len(SW_EXT_PATTERN))
    
End Function

~A.

Спасибо! Сейчас попробую.

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

Ссылка на сообщение
Поделиться на других сайтах
у меня подозрение что я не туда текст вставляю.
Открываете/создаёте макрос  и заменяете весь текст. Например создаёте новый проект VBA (*.swp):

 

Dim swApp As Object
Sub main()

Set swApp = Application.SldWorks
End Sub

заменяете имеющийся код предложенным кодом.

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

Открываете/создаёте макрос  и заменяете весь текст. Например создаёте новый проект VBA (*.swp):

заменяете имеющийся код предложенным кодом.

 

Супер!!!! Работает!  Спасибо!!!!

Единственное пожелание, если деталь не выбрана возникает ошибка. Сделать бы окошко с текстом "выберите элемент".

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

Вот ссылка: (сделал, чтобы выводилось сообщение об ошибке) http://cloud.ic3d.com.au/RenameComponent.swp. Только ошибка на английском, откройте макрос и замените текст (Инструмент-Макрос-Редактировать). У меня макросы не поддерживают юникод почему-то.

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

Вот ссылка: (сделал, чтобы выводилось сообщение об ошибке) http://cloud.ic3d.com.au/RenameComponent.swp. Только ошибка на английском, откройте макрос и замените текст (Инструмент-Макрос-Редактировать). У меня макросы не поддерживают юникод почему-то.

Спасибо! Отлично работает. Потестил даже на файле чертежа, пишет откройте сборку. Это очень хорошо!

Еще раз спасибо!

Вот ссылка на картинку для макроса.

https://yadi.sk/d/98bFdK7tm83rF

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Viktor2004
      Но ведь в NCGUIDE если запустить 0i-MFPlus там уже есть какое-то кастомное PMC Скачать его, открыть в FLader3 посмотреть все что надо, сравнить с реальным PMC
    • Guhl
      Ошибка в теме Какой надо выбрать тип РМС в NCGUIDE для FS0iF+ (и как это сделать), чтобы нормально импортировался файл карты памяти от реальной ЧПУ? В FLADDER 3 при импорте тип РМС определяется как FS0iF+ PMC/L. После копирования этого файла в эмулятор получаю ошибку ER04 PMC TYPE UNMATCH В эмуляторе вообще вижу только типы памяти РМС А/В/С. Ни с одним из них реальный файл не работает    
    • may1on
      Как мне повторить вот эту строчку ? G83 Z-20. R-4. Q4000 F0.07
    • куркуль
      у нас 802 трёх осевая сверлилка. вторая ссылка. там всё расписано.
    • Sabadash
      Подскажите стратегию обработки в 4 осях, когда деталь обрабатывается спирально при этом инструмент ориентирован всегда по нормали к поверхности обрабатываемой детали? Роторная всегда ориентирует инструмент на ось вращения, не подходит в случаях когда деталь выходит за пределы оси вращения. Пока пробую 5Х с заблокированной 4 осью.    
    • may1on
      Посмотрел , но ничего не понял , потому что не знаю английский, а через Яндекс перевод не доходит суть его слов .
    • куркуль
      https://ya.ru/video/preview/6063553017898622447          https://bstudy.net/865175/tehnika/glubokoe_sverlenie_cycle83?ysclid=lzfqywr8k4650207379     посмотри это. 
    • may1on
      Привет , столкнулся с такой проблемой что не понимаю как работает CYCLE83 на стойке 808D токарного станка. Прощу помочь мне и указать какие параметры вбивать на Сименсе что бы получить похожий код как на FANUC .    %  O2244 G28 U0. G28 W0. G40 G80 G90 G21 G97 G18 G95 G50s2500 G54 N1 (SV D18.) T0303 G54 G97M03S800 G00 Z20. G00 X0. Z20. M08 G83 Z-20. R-4. Q4000  F0.07 G80 G00 X0. Z20.  M09 G28U0. G28W0. M05 M01 M30 %   И если есть возможность опишите русским языком что делает каждый параметр, прочитав инструкцию к  циклу я ничего не понял)    
    • gudstartup
      g96 хаас совместим по g кодам с fanuc @gunilla G96 Постоянная скорость резания включена G-код на токарный станок HAAS G96 дает команду системе управления поддерживать постоянную скорость резания на кончике инструмента. Скорость вращения шпинделя зависит от диаметра детали, в которой выполняется рез, и заданного значения S (об/мин = 3,82xSFM/DIA). Это означает, что скорость шпинделя увеличивается по мере приближения инструмента к X0. Когда для настройки 9 установлено значение ДЮЙМЫ, значение S указывает количество футов в минуту. Когда для параметра 9 установлено значение MM, значение S указывает количество поверхностных метров в минуту. ПРЕДУПРЕЖДЕНИЕ Безопаснее всего указать максимальную скорость шпинделя для функции «Постоянная скорость поверхности». Используйте G50, чтобы установить максимальное число оборотов шпинделя. Отсутствие ограничения позволяет увеличить скорость вращения шпинделя по мере того, как инструмент достигает центра детали. Чрезмерная скорость может повредить детали и инструменты. посмотрите здесь https://cnc-maniac.ru/g-kod-na-tokarnyj-stanok-haas/
    • gunilla
      Ни в книге, ни в списке G кодов на станке не значится G69. Не знаю, что это. Видимо, это что-то более новое. Нашему Haas-у лет 15, если не более.
×
×
  • Создать...