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

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


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

2 часа назад, malvi.dp сказал:

В сборку вставляется файл детали (Н.sldprt), он лежит в определенной папке на диске (D:\WORK).

Можно вставлять макросом при желании.

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

 

2 часа назад, malvi.dp сказал:

Далее этот файл сопрягается по исходной точке (с исходной точкой сборки).

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

 

2 часа назад, malvi.dp сказал:

Далее, вставленный файл делается виртуальным.

При ВСТАВИТЬ КОМПОНЕНТ можно поставить галочку СДЕЛАТЬ ВИРТУАЛЬНЫМ.

 

2 часа назад, malvi.dp сказал:

Этому файлу принудительно (вручную в окошке) назначается определенная масса (она может быть разной).

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

Возможно в назначении плотности может помочь макрос (если не задан материал для модели): https://kelnyproject.ucoz.ru/load/6-1-0-6

 

2 часа назад, malvi.dp сказал:

Дело в том, что эту процедуру мне приходится делать практически в каждой сборке и хотелось бы автоматизировать этот процесс.

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

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


@Kelny , спасибо за ответы.

Все перечисленное вами я применяю в той или иной степени, но 

2 часа назад, malvi.dp сказал:

хотелось бы автоматизировать этот процесс

 

Ссылка на сообщение
Поделиться на других сайтах
25.10.2018 в 13:15, alek77 сказал:

@Docuk1 поправил, что смог, проверьте пожалуйста

конфигурации одной детали с разными разделами теперь сортируются по разделам

гостовские тулбоксовские детали тоже сортируются

 

Не забываем, макрос все еще проверяется и тестируется, что тестировать лучше на копиях файлов, а то как бы чего не вылезло, все таки в макросе имеется команда на удаление выделенного элемента, и как она сработает при ошибке макроса - неизвестно

В случае если макрос выдает ошибку, закрывайте файл без сохранения

 

TreeSorter.Bmp

TreeSorter.swp

спасибо за макрос.

можно как-то отключить удаление папок из дерева конструирования?

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

спасибо за макрос.

можно как-то отключить удаление папок из дерева конструирования?

Что должно происходить с компонентами внутри папок, которые не нужно удалять?

Пример можете привести?

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

Что должно происходить с компонентами внутри папок, которые не нужно удалять?

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

 

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

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

 

Посмотрел, простыми способами не получается, изначально такой функционал не закладывался. Может названия папок неудаляемых какие то специфичные есть? Как код должен понять, что удалить, а что оставить?

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

Посмотрел, простыми способами не получается, изначально такой функционал не закладывался. Может названия папок неудаляемых какие то специфичные есть? Как код должен понять, что удалить, а что оставить?

в основном они имеют название "Крепёж", "Массивы сборки", "Массивы крепежа"

2020-12-07_152440.JPG

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

в основном они имеют название "Крепёж",

Допускается ли если я добавлю фильтр на неудаление по символу в начале папки? Например: "*Крепеж". Т.е. Макрос не будет обрабатывать папки со значком * в начале

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

Допускается ли если я добавлю фильтр на неудаление по символу в начале папки? Например: "*Крепеж". Т.е. Макрос не будет обрабатывать папки со значком * в начале

да, вполне. но может тогда более заметный символ? например # , или %

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

да, вполне. но может тогда более заметный символ? например # , или %

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

Ссылка на сообщение
Поделиться на других сайтах
07.12.2020 в 09:42, malvi.dp сказал:

В сборку вставляется файл детали (Н.sldprt), он лежит в определенной папке на диске (D:\WORK).
Далее этот файл сопрягается по исходной точке (с исходной точкой сборки).
Далее, вставленный файл делается виртуальным

Чтобы автоматом вставлялось, достаточно записать порядок действий в макрос. Сложнее сделать компонент виртуальным - для этого нужно его выбрать в дереве. Если первый раз компонент вставляется, у него солид к имени добавляет ID = 1, тогда выбрать будет просто. А если деталь удалил, потом опять вставил - этот ID неизвестен и хз, как выбрать. Массу когда добавляешь, она никак со свойствами сборки не связана?

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

Массу когда добавляешь, она никак со свойствами сборки не связана?

Нет, это считается отдельно. Это наплавленный металл - считаю вручную, мне так быстрее.

1 час назад, Kir95 сказал:

Сложнее сделать компонент виртуальным - для этого нужно его выбрать в дереве.

А если сделать выбор по имени файла - он не меняется.

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

А если сделать выбор по имени файла - он не меняется

Проверь, как работает. В тексте можешь поменять путь к файлу и значение массы по умолчанию (100)

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

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swComp As Component2
Dim swRefDoc As SldWorks.ModelDoc2
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim longstatus As Boolean, longwarnings As Long

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

If swModel.GetType <> swDocASSEMBLY Then
MsgBox "Откройте сборку"
Exit Sub
End If

' Insert Component
Dim AssemblyTitle As String
AssemblyTitle = swModel.GetTitle
Dim tmpObj As ModelDoc2
Dim errors As Long
Set tmpObj = swApp.OpenDoc6("D:\Work\H.SLDPRT", 1, 32, "", errors, longwarnings)
Set swModel = swApp.ActivateDoc3(AssemblyTitle, True, 0, errors)
Dim swInsertedComponent As Component2
Set swInsertedComponent = swModel.AddComponent5("D:\Work\H.SLDPRT", 0, "", False, "", 0, 0, 0)

swModel.ClearSelection2 True
swApp.CloseDoc "D:\Work\H.SLDPRT"

val = InputBox("Ввести значение массы", "Окно ввода значения", "100")

Set swComp = swModel.GetComponentByName("H-1")
Set swRefDoc = swComp.GetModelDoc2
Set swCustProp = swRefDoc.Extension.CustomPropertyManager("")
longstatus = swCustProp.Add3("Масса", swCustomInfoText, val, 2)
longstatus = swComp.MakeVirtual2(False)
swModel.EditRebuild3
End Sub

 

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

Проверь, как работает.

 

При первой вставке в сборку все отрабатывает без ошибки.

Файл вставляет, но не сопрягает и не фиксирует.

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

 

При повторной попытке - файл вставляет, но не сопрягает и не фиксирует.

После ввода значения в окошке выскакивает ошибка

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

HM1.JPG

HM.JPG

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

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

При первой вставке в сборку все отрабатывает без ошибки.

Файл вставляет, но не сопрягает и не фиксирует.

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

 

При повторной попытке - файл вставляет, но не сопрягает и не фиксирует.

После ввода значения в окошке выскакивает ошибка

Выше я об этом и писал, что с повторной вставкой меняется id компонента и выбрать его будет сложнее (для меня). Макросом выбирается компонент "Имя+ID", пока не нашёл как сделать повторный выбор, может кто подскажет. А значение просто вставляется в свойство детали "Масса", это не реальное значение "SW-Mass", которое макросом не изменяется. Ты где вручную массу прописываешь?

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

Ты где вручную массу прописываешь?

Через массовые характеристики, предварительно выбрав компонент в дереве

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

Добрый вечер, подскажите, пожалуйста, есть ли способ как то сделать быстрее импорт большой сборки stp в солид 2020? а то грузит от получаса и более, с компасом такой проблемы нет

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

Добрый вечер, подскажите, пожалуйста, есть ли способ как то сделать быстрее импорт большой сборки stp в солид 2020? а то грузит от получаса и более, с компасом такой проблемы нет

Попробуйте открыть STP в компасе, а из компаса сохранить в формат X_T (это формат ядра парасолид, более близкий к Солиду. если можно так сказать) и уже X_T открывайте в SolidWorks. О результатах отпишитесь, помогло или нет :) меня в некоторых случаях такой подход выручал.

Ссылка на сообщение
Поделиться на других сайтах
07.12.2020 в 12:31, jon_nik сказал:

можно как-то отключить удаление папок из дерева конструирования?

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

Ссылка на сообщение
Поделиться на других сайтах
07.12.2020 в 09:42, malvi.dp сказал:

В сборку вставляется файл детали (Н.sldprt), он лежит в определенной папке на диске (D:\WORK).
Далее этот файл сопрягается по исходной точке (с исходной точкой сборки).
Далее, вставленный файл делается виртуальным.
Этому файлу принудительно (вручную в окошке) назначается определенная масса (она может быть разной).

Дело в том, что эту процедуру мне приходится делать практически в каждой сборке и хотелось бы автоматизировать этот процесс.
Если это не займет много времени, может кто сподобится написать макрос?

 

3 часа назад, malvi.dp сказал:
4 часа назад, Kir95 сказал:

Ты где вручную массу прописываешь?

Через массовые характеристики, предварительно выбрав компонент в дереве

Пробуй новую версию - на 21 солиде всё работает)

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

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDocExt As ModelDocExtension
Dim swComp As Component2
Dim swRefDoc As SldWorks.ModelDoc2
Dim swRefDocName As String
Dim AssemblyTitle As String
Dim AssemblyName As String
Dim boolstat As Boolean
Dim strings As Variant
Dim matefeature As SldWorks.Mate2
Dim FirstSelection As String
Dim SecondSelection As String
Dim strCompName As String
Dim mateError As Long
Dim MyMassProp As SldWorks.MassProperty2
Dim OvProp As SldWorks.MassPropertyOverrideOptions
Dim val As String
Dim massval As Double
Dim longstatus As Boolean, longwarnings As Long

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

If swModel.GetType <> swDocASSEMBLY Then
MsgBox "Îòêðîéòå ñáîðêó"
Exit Sub
End If

AssemblyTitle = swModel.GetTitle
strings = Split(AssemblyTitle, ".")
AssemblyName = strings(0)

Dim tmpObj As ModelDoc2
Dim errors As Long
Set tmpObj = swApp.OpenDoc6("D:\Work\H.SLDPRT", 1, 32, "", errors, longwarnings)
Set swModel = swApp.ActivateDoc3(AssemblyTitle, True, 0, errors)
Dim swInsertedComponent As Component2
Set swInsertedComponent = swModel.AddComponent5("D:\Work\H.SLDPRT", 0, "", False, "", 0, 0, 0)
    
    ' Make the component virtual
    longstatus = swInsertedComponent.MakeVirtual2(True)
 
    ' Get the name of the component for the mate
    strCompName = swInsertedComponent.Name2()
    
    longstatus = swModel.Extension.SelectByID2(strCompName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    swModel.UnfixComponent

swModel.ClearSelection2 True
swApp.CloseDoc "D:\Work\H.SLDPRT"

val = InputBox("Ââåñòè çíà÷åíèå ìàññû", "Îêíî ââîäà çíà÷åíèÿ", "100")

Set swComp = swModel.GetComponentByName(strCompName)

Set swRefDoc = swComp.GetModelDoc2
    Set MyMassProp = swRefDoc.Extension.CreateMassProperty2
    Set OvProp = MyMassProp.GetOverrideOptions
    OvProp.OverrideMass = True
    OvProp.SetOverrideMassValue (val)
    
'        Debug.Print "Mass properties before override"
'    massval = MyMassProp.Mass
'    Debug.Print "Mass: " & massval
    
        MyMassProp.SetOverrideOptions OvProp, swThisConfiguration, Empty
    MyMassProp.Recalculate

'    Debug.Print ""
'    Debug.Print "Mass properties after override"
'    massval = MyMassProp.Mass
'    Debug.Print "Mass: " & massval
    
    swModel.ClearSelection2 (True)
    
    Set swModel = swApp.ActivateDoc3(AssemblyTitle, True, 0, errors)
    Set swDocExt = swModel.Extension
    
'        ' Create the name of the mate and the names of the points to use for the mate
    FirstSelection = "Point1@Origin@" + strCompName & "@" + AssemblyName
    SecondSelection = "Point1@Origin" '+ AssemblyTitle 'AssemblyName

    ' Select the points to mate
    boolstat = swDocExt.SelectByID2(FirstSelection, "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
    boolstat = swDocExt.SelectByID2(SecondSelection, "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
'
'    Debug.Print " name1 - " & FirstSelection
'    Debug.Print " name1 - " & SecondSelection

    ' Add the mate
    Set matefeature = swModel.AddMate5(swMateType_e.swMateCOORDINATE, swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, True, 0, mateError)
'    Debug.Print "Mate added: " & matefeature.Name

    swModel.ViewZoomtofit2
    swModel.EditRebuild3

End Sub

 

Не знал, что массу можно вручную менять

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

вирт деталь-масса-фиксация.jpg

 

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...