Jump to content

Сделай свою работу в Solidworks эффективнее


Recommended Posts

17 часов назад, alek77 сказал:

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

 

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


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

 

Описание работы:
- Скопировать исходную модель и дать новое имя, скорректировать геометрию.
- Скопировать чертеж исходной модели в папку новой модели, переименовать новый чертеж по имени новой модели.
- Из новой модели запустить макрос.
Откроется новый чертеж, ссылки на новую модель будут перезаписаны автоматом.

 

Выявленные косяки приветствуются! Тестировал не много, не проверяйте на рабочей документации.

OpenDrwAndChangeRef.swp 72 \u041a\u0431 · 2 скачивания OpenDrwAndChangeRef.bmp 3 \u041a\u0431 · 2 скачивания

Там выше есть макрос ПЕ-КО, делает тоже самое плюс еще несколько функций. Очень удобный. 

Link to post
Share on other sites
  • 2 weeks later...


livedten

а НЕ поможет кто переделать данный макрос (сохранение в pdf)

Сейчас он сохраняет как ИмяДокумента-ИмяЛистаЧертежа1.pdf, ИмяДокумента-ИмяЛистаЧертежа2.pdf и т.д.

 

У меня обычно имя листов выглядит так: DRW1, DRW2, DRW3..., SP1, SP2.

Мне бы сохранять DRW1, DRW2, DRW3... как один PDF -> ИмяДокумента СБ.pdf,

а SP1, SP2... как второй (если они есть) PDF -> ИмяДокумента СП.pdf

 

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

 


'*********************************************************************************************
'Copyright(C) 2020 Xarial Pty Limited
'Reference: https://www.codestack.net/solidworks-api/import-export/export-sheets-pdf/
'License: https://www.codestack.net/license/
'*********************************************************************************************
' Изменения и дополнения: Дербуш Олег aka Snake 60 (snake-60@bk.ru)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Последние изменения :: (18.11.2021) ::
''' в версии 1.0.4 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' - Убрал косяк при сохранении чертежей в папку
''' в версии 1.0.3 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' - Убрал дублирование открытых папок при каждом сохранении
''' в версии 1.0.2 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' - Если в чертеже 2 или более страниц, то создаются файлы в формате ИмяФайла - ИмяЛиста.pdf
' - Если в чертеже 1 страница, то создается файл в формате ИмяФайла.pdf
''' в версии 1.0.1 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' - макрос сохраняет чертеж в формате PDF, создает папку PDF и открывает ее после сохранения
'*********************************************************************************************

Const INCLUDE_DRAWING_NAME As Boolean = True
Const FOLDER_FOR_SAVING As String = "" 'сохраняем в папку с чертежем
'Const FOLDER_FOR_SAVING As String = "PDF" 'сохраняем в указанную папку, папка создается автоматически

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Dim outFile As String
Dim outFolder As String
Dim outFolderStrip As String

Sub main()

    Set swApp = Application.SldWorks
    
try_:
    
    On Error GoTo catch_
    
    Dim swDraw As SldWorks.DrawingDoc
    
    Set swDraw = swApp.ActiveDoc
    
    Set swModel = swDraw
        
    If swModel.GetPathName() = "" Then
        Err.Raise vbError, "", "Пожалуйста, сохраните чертеж!"
    End If
        
    Dim vSheetNames As Variant
    
    Dim i As Integer

    Dim swSelMgr As SldWorks.SelectionMgr
    
    Set swSelMgr = swModel.SelectionManager
    
    Dim selSheetNames() As String
    
	'узнаем кол-во листов чертежа в документе
    For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
        
        If swSelMgr.GetSelectedObjectType3(i, -1) = swSelectType_e.swSelSHEETS Then
            
            If (Not selSheetNames) = -1 Then
                ReDim selSheetNames(0)
            Else
                ReDim Preserve selSheetNames(UBound(selSheetNames) + 1)
            End If
            Dim swSheet As SldWorks.Sheet
            Set swSheet = swSelMgr.GetSelectedObject6(i, -1)
            
            selSheetNames(UBound(selSheetNames)) = swSheet.GetName()
            
        End If
    Next
    
	'задаем количество листов
   Debug.Print "swSheet = " + Str(swSheet)
   Debug.Print "swSheet.GetName() = " + Str(swSheet.GetName()) переменной
    If (Not selSheetNames) = -1 Then
        vSheetNames = swDraw.GetSheetNames
    Else
        vSheetNames = selSheetNames
    End If
    
    'запускаем цикл обработки по кол-ву листов чертежа
    For i = 0 To UBound(vSheetNames)
        
        Dim sheetName As String
        sheetName = vSheetNames(i)
        
        Dim swExpPdfData As SldWorks.ExportPdfData
        Set swExpPdfData = swApp.GetExportFileData(swExportDataFileType_e.swExportPdfData)
        
        Dim errs As Long
        Dim warns As Long
        
        Dim expSheets(0) As String
        expSheets(0) = sheetName
        
        swExpPdfData.ExportAs3D = False
        swExpPdfData.ViewPdfAfterSaving = False
        swExpPdfData.SetSheets swExportDataSheetsToExport_e.swExportData_ExportSpecifiedSheets, expSheets
        
        Dim drawName As String
        drawName = swModel.GetPathName()
        drawName = Mid(drawName, InStrRev(drawName, "\") + 1, Len(drawName) - InStrRev(drawName, "\") - Len(".slddrw"))
        
        outFile = swModel.GetPathName()
        outFile = Left(outFile, InStrRev(outFile, "\"))
        'outFile = outFile & IIf(INCLUDE_DRAWING_NAME, drawName & "_", "") & sheetName & ".pdf"
		
        If FOLDER_FOR_SAVING = "" Then
            outFolder = outFile & FOLDER_FOR_SAVING
            outFolderStrip = outFolder
        Else
            outFolder = outFile & FOLDER_FOR_SAVING & "\"
            outFolderStrip = outFile & FOLDER_FOR_SAVING
        End If
        
        'если папка не существует, то
        If Not DirExists(outFolder) Then
            'создаем ее
            MkDir (outFolder)
        End If
        
        'если листов в чертеже 1, то
        If UBound(vSheetNames) = 0 Then
            'сохраняем PDF-файл в формате ИмяФайла.pdf
            outFile = outFolder & IIf(INCLUDE_DRAWING_NAME, drawName, "") & ".pdf"
        'иначе
        Else
            'сохраняем PDF-файл в формате ИмяФайла - ИмяЛиста.pdf
            outFile = outFolder & IIf(INCLUDE_DRAWING_NAME, drawName & "-", "") & sheetName & ".pdf"
        End If
        
        'если ошибка не произошла, то выполняем сохранение
        If False = swModel.Extension.SaveAs(outFile, swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Silent, swExpPdfData, errs, warns) Then
            'иначе выводим сообщение об ошибке
            Err.Raise vbError, "", "Не удалось сохранить PDF в " & outFile
        End If
        
    'переходим к следующему листу чертежа
    Next
    
    If False <> swDraw.GetSaveFlag() Then
        If False = swDraw.Save3(swSaveAsOptions_e.swSaveAsOptions_Silent, errs, warns) Then
            Err.Raise vbError, "", "Не удалось сохранить чертеж"
        End If
    End If
    
	'открыть папку в которую сохраняется .pdf
    'OpenFolder
    
    GoTo finally_
    
catch_:
    
    swApp.SendMsgToUser2 Err.Description, swMessageBoxIcon_e.swMbStop, swMessageBoxBtn_e.swMbOk
    
finally_:


'автоматическое закрытие чертежа (кому это не нужно комментируем или удаляем строку)
'swApp.CloseDoc swDraw.GetTitle
    
End Sub

Function OpenFolder()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
    IsFolderOpen (outFolder)

End Function

Function IsFolderOpen(folderpath$)

    With CreateObject("Shell.Application")
        Dim iWin As Object
        Dim PathCompare As String
        For Each iWin In .Windows
            PathCompare = Replace(iWin.LocationURL, "file:///", "")
            PathCompare = Replace(PathCompare, "%20", " ")
            PathCompare = Replace(PathCompare, "/", "\")
             If iWin.LocationName = FOLDER_FOR_SAVING And PathCompare = outFolderStrip Then
             'If iWin.LocationURL = "file:///C:/Имя%20папки" Then
                .Open iWin.LocationURL
                GoTo step1_
             End If
         Next
    End With
    OpenExplorerWithFileSelected (outFile)
step1_:
End Function

Function OpenExplorerWithFileSelected(filepath$)
'Проверка наличия файла
retval = Dir(filepath$)
    If retval <> "" Then
            Shell "explorer.exe /select, " & """" & filepath$ & """", vbNormalFocus
    End If
End Function

'Функция проверки существования дирректории
Function DirExists(outFolder As String) As Boolean
    On Error GoTo ErrorHandler
    DirExists = GetAttr(outFolder) And vbDirectory
ErrorHandler:
'Завершение функции
End Function

 

Edited by livedten
Link to post
Share on other sites
madalik

Уважаемый АвтоматТомпсона, а можно ли попросить Вашей подсказки по проблеме:

- есть список вырезов сварного изделия, типа рис.1

- там  свойствах Солид автоматом ставит в поле количества в спецификации пункт ДЛИНА

- в итоге в сборке, полученной из сварной детали через "Создать сборку", рис2, в спецификацию (рис 3) на чертеже периодически вместо количества попадает ДЛИНА. И выглядит как Деталь, 1234.56 шт 

 

Заметил, что длина как количество начинает глючить в производной детали, если редактировать свойства файла этой детали

 

Задолбался в свойствах списка вырезов ставить вариант -Нет- (тогда экспорт нормальный)

 

Можно ли как то прогнать список вырезов через макрос и проставить всем профилям вариант - Нет -?

Перерыл кучу макросов, к сожалению НИАСИЛИЛ рабочий вариант макроса. Искал и у буржуев - тоже проблема не решена

1.jpg

2.jpg

3.jpg

Link to post
Share on other sites
  • 2 weeks later...
Dmitriy618

Здравствуйте, уважаемые пользователи форума, подскажите есть ли решения на следующие вопросы:

1.  Есть ли измененный макрос Roughness (столкнулся с проблемой, что данный макрос ставит слишком большой знак шероховатости (не по гост) )

2. Как изменить размер шрифта в TT (мне нужно, чтобы он ставил 5 шрифтом обозначения)

3.Есть ли библиотека стандартных изделий, которая подойдет под макрос SpecEditor (просто Solid лицензионный и нет Toolbox, а каждую модель не хочется переименовывать с помощью MProp)

4. Может ли SpecEditor группировать стандартные изделия по ГОСТ (Спецификация от iTools почему-то не подбирает наименования с моделей стандартных изделий (скорее всего из-за Toolbox))

Извиняюсь за глупые вопросы (только начинаю входить в профессию).

Спасибо за ответы!!

Link to post
Share on other sites
13.10.2023 в 15:01, madalik сказал:

Уважаемый АвтоматТомпсона, а можно ли попросить Вашей подсказки по проблеме:

- есть список вырезов сварного изделия, типа рис.1

- там  свойствах Солид автоматом ставит в поле количества в спецификации пункт ДЛИНА

- в итоге в сборке, полученной из сварной детали через "Создать сборку", рис2, в спецификацию (рис 3) на чертеже периодически вместо количества попадает ДЛИНА. И выглядит как Деталь, 1234.56 шт 

 

Заметил, что длина как количество начинает глючить в производной детали, если редактировать свойства файла этой детали

 

Задолбался в свойствах списка вырезов ставить вариант -Нет- (тогда экспорт нормальный)

 

Можно ли как то прогнать список вырезов через макрос и проставить всем профилям вариант - Нет -?

Перерыл кучу макросов, к сожалению НИАСИЛИЛ рабочий вариант макроса. Искал и у буржуев - тоже проблема не решена

1.jpg

2.jpg

3.jpg

вы смотрели китайские решения по сварным деталям?

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

вы смотрели китайские решения по сварным деталям?

Ужасы говорите какие :)

Китайским к сожалению не владею, поэтому решений не видел

Link to post
Share on other sites
  • 2 weeks later...
Alex_72

 

Добрый день, прошу помощи в вопросе применения сварных швов в SW2019.

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

 

Спасибо за ответ.

Link to post
Share on other sites
malvi.dp
1 час назад, Alex_72 сказал:

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

 

В дереве проектирования все сварные швы находятся в папке сварных швов и в ней они сортируются по условному катету шва. Т.о., чтобы швы т1-к4 и н1-к4 в таблице на чертеже отобразились как разные, нужно при создании делать их с разными катетами, например, у т1-к4 ставить катет 4, а у н1-к4 ставить  катет 4,1, и т.д. Реальные же свойства швов нужно прописывать в окошке "св-ва сварных швов" - там можно задать его массу на единицу длины, стоимость и прочее.

Но, как по мне это все очень трудоёмко, легче посчитать все, например в Экселе, а на чертеже сделать табличку и перенести расчеты.

  • Нравится 2
Link to post
Share on other sites
Alex_72

Спасибо,  хотя немного странно, что не используется в явном виде тип сварки, как это показано в Help.

Можно еще пару вопросов на злобу дня:

1. Возможно ли заполнять св-ва сварных швов поля: материал или процесс из списка значений.

2. Какая логика в порядке распределения номеров позиций в таблице сварных швов на чертеже, и можно ли их отразить на чертеже. 

 

Link to post
Share on other sites
nicomed
2 часа назад, Alex_72 сказал:

1. Возможно ли заполнять св-ва сварных швов поля: материал или процесс из списка значений.

По ощущениям Dassault прилепили сварку по ГОСТ, как наклейку, сбоку, полноценно не интегрируя в систему. Ибо текст через API прочитать еще возможно, а вот записать не получается. Я делал макрос и аддин с использованием WinAPI.

 

2 часа назад, Alex_72 сказал:

2. Какая логика в порядке распределения номеров позиций в таблице сварных швов на чертеже, и можно ли их отразить на чертеже. 

В свое время тоже пытался использовать "нестандартными" способами сварку из модели, и пытался делать штатными свойствами таблицу сварных швов - увы ничего не вышло. Общая таблица сортируется по столбцам, а таблица сварных швов - нет.

Link to post
Share on other sites
malvi.dp
7 часов назад, Alex_72 сказал:

Можно еще пару вопросов на злобу дня:

1. Возможно ли заполнять св-ва сварных швов поля: материал или процесс из списка значений.

2. Какая логика в порядке распределения номеров позиций в таблице сварных швов на чертеже, и можно ли их отразить на чертеже. 

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

2. Логика простая - как швы расположены в дереве проектирования, в том же порядке и в таблице на чертеже.

- Никаких сортировок, объединения ячеек и прочего нет - минимальный набор инструментов форматирования таблицы и текста.

- Можно добавлять только столбцы, скрывать(удалять) столбцы/строки и настраивать ширину/высоту столбца/строки. Вот и все.

Link to post
Share on other sites
  • 2 weeks later...

Может кто видел макрос для сохранения чертежа в ПДФ, чтобы имя ПДФ-файла формировалось из Обозначения и Наименования. Ну и текущую дату, как опцию. 

У меня то система построена, когда имя файла равно обозначению, но на текущем месте работы народ зависает, когда файлы из одних цифр состоят. Просят Наименование добавлять, а мне вручную этого делать вообще неохота. :)

Edited by kkk
Link to post
Share on other sites
Ветерок
35 минут назад, kkk сказал:

У меня то система построена, когда имя файла равно обозначению, но на текущем месте работы народ зависает, когда файлы из одних цифр состоят. Просят Наименование добавлять, а мне вручную этого делать вообще неохота. :)

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

Link to post
Share on other sites
55 минут назад, Ветерок сказал:

И не будет проблем с именем файла pdf.

Зато будут другие проблемы, т.к. у меня имя файла = Обозначение.

Link to post
Share on other sites
Ветерок
2 минуты назад, kkk сказал:

у меня имя файла = Обозначение

Это у тебя. Но им-то требуется другое. Или ты им передаешь только pdf, без моделей?

Link to post
Share on other sites
Павлуха
29 минут назад, kkk сказал:

Зато будут другие проблемы, т.к. у меня имя файла = Обозначение.

 

По хорошему, имя файла = Обозначение_Наименование

Тогда никакой каши не будет.

Link to post
Share on other sites
36 минут назад, Ветерок сказал:

Или ты им передаешь только pdf, без моделей?

Именно.

11 минут назад, Павлуха сказал:

По хорошему, имя файла = Обозначение_Наименование

Тогда никакой каши не будет.

Вопрос религиозный, на данном форуме обсуждался неоднократно. Я много лет работаю по системе имя файла = Обозначение. Никакой каши нет.  

В текущем месте работы бардак и хаос, потихоньку ставлю их на правильные рельсы, но их мозг пока впадает в ступор при виде голых Обозначений. :)

Link to post
Share on other sites
Павлуха
2 минуты назад, kkk сказал:

Именно.

Вопрос религиозный, на данном форуме обсуждался неоднократно. Я много лет работаю по системе имя файла = Обозначение. Никакой каши нет.  

В текущем месте работы бардак и хаос, потихоньку ставлю их на правильные рельсы, но их мозг пока впадает в ступор при виде голых Обозначений. :)

 

Наименование в свойствах ручками писать будете?

Link to post
Share on other sites
14 минут назад, Павлуха сказал:

Наименование в свойствах ручками писать будете?

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   1 member

    • Neodim



  • Сообщения

    • Oi-Tf
      Добрый день! Привезли новый китайский станок с полностью программируемой задней бабкой, стойка FANUC TF-PLUS. Продавцы станка как ее программировать не знают. Есть две кнопки на стойке перемещение вперед и перемещение назад, и две м-команды так же вперед-назад.  Бабка без пиноли. Если бабка не на концевике, при включение шпинделя ошибка с позицией задней бабки.  Пробовал M35 X10, M35 Z10, M35W10, A10. На команду М35 она перемещается пока не остановишь.  Может кто знает как ее программировать. Возможно что-то подключили не правильно. Но что бы это понять нужно знать как ее программировать. 
    • GS
    • GS
    • brigval
      Надо посчитать вручную и сравнить со значением, полученным программно.      
    • brigval
      Браком 1.00   В версии 1.00    Добавлено: Основная надпись. Редактирование основной надписи чертежа.  Добавлено: Технические требования. Вставка и редактирование технических требований.  Добавлено: Масштаб. Изменение масштабов видов чертежа.    Добавлено: Экспорт чертежей в формат PDF, DWG, DXF.  Добавлено: Экспорт моделей в формат STEP.  Добавлено: Создание изображений чертежей и моделей в формате JPEG.    Добавлено: Разное. Открыть, закрыть документ с атрибутом «Только для чтения».  Добавлено: Разное. Копирование текстов компонентов сборки и объектов чертежа.    Добавлено: Разное. Вставка и редактирование знака шероховатости в углу чертежа.  Добавлено: Разное. Показ/скрытие невидимых линий ассоциированного вида чертежа.  Добавлено: Разное. Скрытие/показ объектов чертежа.  Добавлено: Разное. Общая линия выноска для номеров позиций.  Добавлено: Разное. Показ всего активного листа.  Добавлено: Разное. Изменение шага штриховки.  Добавлено: Разное. Вставка числовых значений предельных отклонений размеров на чертеже.  Добавлено: Разное. Простановка количества отверстий/скруглений у размера на чертеже.  Добавлено: Разное. Редактирование текстов ДО, ПОСЛЕ, ПОД у размеров чертежа.    Добавлено: Разное. Замена компонентов сборки.  Добавлено: Разное. Вставка в сборку локальных деталей с записью для спецификации.  Добавлено: Разное. Переименование компонентов сборки.  Добавлено: Разное. Перемещение точки «Центр масс» в центр масс модели.    Добавлено: Разное. Сравнение номеров позиций спецификации Excel с номерами позиций компонентов сборки.  Добавлено: Разное. Запись номеров позиций из спецификации Excel в сборку.  Добавлено: Разное. Сопряжение (совпадение + соосность) двух компонентов сборки за один шаг.    Добавлено: Разное. Выделение группы компонентов сборки.  Добавлено: Разное. Изменение прозрачности компонентов сборки и элементов детали.  Добавлено: Разное. Показ/скрытие всех компонентов подсборки.  Добавлено: Разное. Включение в расчет/исключение из расчета группы компонентов сборки.  Добавлено: Разное. Включение в спецификацию/исключение из спецификации группы компонентов сборки.  Добавлено: Разное. Объединение в макроэлемент компонентов сборки и разрушение макроэлемента.  Добавлено: Разное. Пересвязывание объектов зависимого исполнения.  Добавлено: Разное. Копирование компонентов из одной сборки в другую.    Добавлено: Разное. Назначение материала детали.   Скачать программу Браком
    • lexa345
      Использовать comment_fx( )
    • lexa345
      Библиотека инструментов.txt
    • lexa345
      Так какой версии и какой именно пост?
    • GEFMS
      Доброго времени. Может кто-то может накинуть теоретического материала для работы электророзии проволочного типа (выбор режимов работы генератора для резки) или просто документации для станков DK7735 или RealRez 450. Обработка идёт в основном твердого сплава. Иногда появляется другие металлы. Волей случая пришлось его обслуживать, вроде все режет, но долго, иногда скорость падает в 4 раза, может порвать совершенно новую проволоку. В электророзии совершено профан. Заранее спасибо   
    • zrs37
      А ошибок никаких, только сброс позиции на ноль? Это характерно для инкрементального датчика.   Сорри, выложенные файлы на телефоне не могу посмотреть.
×
×
  • Create New...