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

Автоматический подсчёт габаритов модели


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



Можно макросом считывать, например, GetMaxBoxSize : http://kelnyproject.ucoz.ru/load/6-1-0-7

Цитата

Макрос для чтение максимального размера модели по оси X, Y и Z. И последующей записи в свойство файла.

 

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

Замечательно, спасибо! не подскажите как его настроить? Чтобы сразу выдавал выбранные значение в мм и AxBxC? Порылся в коде макроса, ничего не понял.

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

Чтобы сразу выдавал выбранные значение в мм и AxBxC?

В самом низу кода формы в процедуре Private Sub UserForm_Activate() установить ComboBox1.ListIndex = 1 и дописать OptionButton1.value = True (или вписать выбор любой другой настройки отображения)

Private Sub UserForm_Activate() 'загрузка формы

'... остальное не стал тут писать

ComboBox1.ListIndex = 1  'Выбор из списка ММ в ComboBox1, в макросе по умолчанию указано 3 - метры, 0 - микрометры, 1 - ММ, 2 - СМ
OptionButton1.value = True 'Выбор самой верхней радиокнопки формата "Пример AxBxC"
'Или задать номер любой другой кнопки:
'OptionButton2.value = True
'OptionButton3.value = True
'OptionButton4.value = True
'OptionButton5.value = True
'OptionButton6.value = True
OptionButton1_Click
End Sub

 

 

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

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

Не совсем, но если модель в осях, то для некоторых этого достаточно.

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

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

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


 

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

но если модель в осях, то для некоторых этого достаточно.

Ради интереса решил проверить работу макроса. Но, ни один р-р не сходится. Модель в осях... sw2016sp5

Показать содержимое  

XYZ.thumb.JPG.b90cf54ffd833bfd1dbecd9123fe1ee2.JPGxxx.JPG.e25aa24fb3ad7782ff0d3078660f61b0.JPG



 

Hide  




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

Ради интереса решил проверить работу макроса. Но, ни один р-р не сходится. Модель в осях... sw2016sp5

За вашу модель не скажу, скиньте, например, в парасолиде попробую глянуть вашу модель. Может размеры на чертеже куда-то не туда зацеплены или всё же модель не совсем в осях и есть смещения. Например визуально на вашей картинке размер 359,2 м не захватывает ножки внизу, может как раз там 0,2 м потерялись на вашем чертеже. Размер 1510 м на вашем чертеже тоже как-то левее правой кромки линия размера почему-то отображается, может здесь потеря в 1,3 м.

 

Накидал модельку похожую на вашу, так всё как в эскизе так и в макросе, если вручную размеры не вводить:

 

GetBox000.png

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

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

 

 

 

model.rar

интересно, что после экспорта в парасолид р-р 1773,61 макрос посчитал верно

Показать содержимое  

xyz.JPG.48b853acfb8bcb32eb422a246ff6544a.JPG
 

Hide  

А вот солиде таже модель, причем, странно что высота отличается на 0,2мм...

Показать содержимое  

xyz_s.JPG.1aefe1a7fd3c61522cfd346c5d69942a.JPG

 

Hide  

 


 

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

интересно, что после экспорта в парасолид р-р 1773,61 макрос посчитал верно

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

 

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

 


'----------------------------------------------

'http://help.solidworks.com/2010/english/api/sldworksapi/get_bounding_box_example_vb.htm

' Preconditions: Model document is open and a feature is selected.

'

' Postconditions: 3D sketch of the bounding box is created.

'

'----------------------------------------------

Option Explicit

Sub main()

    Dim swApp                       As SldWorks.SldWorks

    Dim swModel                     As SldWorks.ModelDoc2

    Dim swSelMgr                    As SldWorks.SelectionMgr

    Dim swFeat                      As SldWorks.Feature

    Dim vBox                        As Variant

    Dim swSketchPt(8)               As SldWorks.SketchPoint

    Dim swSketchSeg(12)             As SldWorks.SketchSegment

    Dim bRet                        As Boolean

    

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swSelMgr = swModel.SelectionManager

    Set swFeat = swSelMgr.GetSelectedObject5(1)

    

    Debug.Print "Feature = " & swFeat.Name

    bRet = swFeat.GetBox(vBox): Debug.Assert bRet

    Debug.Print "  Pt1 = " & _
            "(" & _
            vBox(0) * 1000# & ", " & _
            vBox(1) * 1000# & ", " & _
            vBox(2) * 1000# & _
            ") mm"

    Debug.Print "  Pt2 = " & _
            "(" & _
            vBox(3) * 1000# & ", " & _
            vBox(4) * 1000# & ", " & _
            vBox(5) * 1000# & _
            ") mm"

    swModel.Insert3DSketch2 True

    swModel.SetAddToDB True

    swModel.SetDisplayWhenAdded False

    

    ' Draw points at each corner of bounding box

    Set swSketchPt(0) = swModel.CreatePoint2(vBox(3), vBox(1), vBox(5))

    Set swSketchPt(1) = swModel.CreatePoint2(vBox(0), vBox(1), vBox(5))

    Set swSketchPt(2) = swModel.CreatePoint2(vBox(0), vBox(1), vBox(2))

    Set swSketchPt(3) = swModel.CreatePoint2(vBox(3), vBox(1), vBox(2))

    Set swSketchPt(4) = swModel.CreatePoint2(vBox(3), vBox(4), vBox(5))

    Set swSketchPt(5) = swModel.CreatePoint2(vBox(0), vBox(4), vBox(5))

    Set swSketchPt(6) = swModel.CreatePoint2(vBox(0), vBox(4), vBox(2))

    Set swSketchPt(7) = swModel.CreatePoint2(vBox(3), vBox(4), vBox(2))

    

    ' Now draw bounding box

    Set swSketchSeg(0) = swModel.CreateLine2(swSketchPt(0).X, swSketchPt(0).Y, swSketchPt(0).Z, swSketchPt(1).X, swSketchPt(1).Y, swSketchPt(1).Z)

    Set swSketchSeg(1) = swModel.CreateLine2(swSketchPt(1).X, swSketchPt(1).Y, swSketchPt(1).Z, swSketchPt(2).X, swSketchPt(2).Y, swSketchPt(2).Z)

    Set swSketchSeg(2) = swModel.CreateLine2(swSketchPt(2).X, swSketchPt(2).Y, swSketchPt(2).Z, swSketchPt(3).X, swSketchPt(3).Y, swSketchPt(3).Z)

    Set swSketchSeg(3) = swModel.CreateLine2(swSketchPt(3).X, swSketchPt(3).Y, swSketchPt(3).Z, swSketchPt(0).X, swSketchPt(0).Y, swSketchPt(0).Z)

    

    Set swSketchSeg(4) = swModel.CreateLine2(swSketchPt(0).X, swSketchPt(0).Y, swSketchPt(0).Z, swSketchPt(4).X, swSketchPt(4).Y, swSketchPt(4).Z)

    Set swSketchSeg(5) = swModel.CreateLine2(swSketchPt(1).X, swSketchPt(1).Y, swSketchPt(1).Z, swSketchPt(5).X, swSketchPt(5).Y, swSketchPt(5).Z)

    Set swSketchSeg(6) = swModel.CreateLine2(swSketchPt(2).X, swSketchPt(2).Y, swSketchPt(2).Z, swSketchPt(6).X, swSketchPt(6).Y, swSketchPt(6).Z)

    Set swSketchSeg(7) = swModel.CreateLine2(swSketchPt(3).X, swSketchPt(3).Y, swSketchPt(3).Z, swSketchPt(7).X, swSketchPt(7).Y, swSketchPt(7).Z)

    

    Set swSketchSeg(8) = swModel.CreateLine2(swSketchPt(4).X, swSketchPt(4).Y, swSketchPt(4).Z, swSketchPt(5).X, swSketchPt(5).Y, swSketchPt(5).Z)

    Set swSketchSeg(9) = swModel.CreateLine2(swSketchPt(5).X, swSketchPt(5).Y, swSketchPt(5).Z, swSketchPt(6).X, swSketchPt(6).Y, swSketchPt(6).Z)

    Set swSketchSeg(10) = swModel.CreateLine2(swSketchPt(6).X, swSketchPt(6).Y, swSketchPt(6).Z, swSketchPt(7).X, swSketchPt(7).Y, swSketchPt(7).Z)

    Set swSketchSeg(11) = swModel.CreateLine2(swSketchPt(7).X, swSketchPt(7).Y, swSketchPt(7).Z, swSketchPt(4).X, swSketchPt(4).Y, swSketchPt(4).Z)

    

    swModel.SetDisplayWhenAdded True

    swModel.SetAddToDB False

    swModel.Insert3DSketch2 True

End Sub

[Нажмите и перетащите, чтобы переместить]
Ссылка на сообщение
Поделиться на других сайтах

А есть ли где то в самой модели эти значения без макроса? Или как то в виде функции вписывать? Хочется видеть или искать по размерам сразу среди 1000 файлов.

Скажем как реализовать поиск геометрии?

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

А есть ли где то в самой модели эти значения без макроса?

Вероятно можно поковырять: SolidWorks Document Manager API Help

Но данный компонент API предоставляется на свой страх и риск, т.к. затрагивает потроха файлов без открытия файла в программе Solidworks.

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

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

Пытаюсь разобраться в работе вашего макроса, и понимаю, что он считает, беря за основу оси инерции тела (возможно ошибаюсь)

Если всё таки идёт просчёт по осям инерции, есть ли возможность направить просчёт по основной системе координат детали/файла?

В 03.07.2017 в 14:42, Kelny сказал:

Можно макросом считывать, например, GetMaxBoxSize : http://kelnyproject.ucoz.ru/load/6-1-0-7

 

 

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

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

image.png

@Kelny Добрый день, подскажите пожалуйста почему макрос не хочет запускаться SW2019? Макрос скачан с вашего сайта ни чего не менялось, второй макрос который более простой работает нормально, но мне нужна запись в свойства моделиimage.png

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

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

Скорее всего не переподключили потерянные библиотеки на свою версию Solidworks #### Type Library и Solidworks #### Constant Type Library:

https://kelnyproject.ucoz.ru/publ/1-1-0-1

 

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

Скорее всего не переподключили потерянные библиотеки на свою версию Solidworks #### Type Library и Solidworks #### Constant Type Library:

https://kelnyproject.ucoz.ru/publ/1-1-0-1

 

Добавил, к сожалению не помоглоimage.png

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

Вот, попробуйте:GetMaxBoxSize_mod_by_Snake-60.zip

Библиотеки тоже проверьте, должно быть вот так:

изображение.png

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

Вот, попробуйте:GetMaxBoxSize_mod_by_Snake-60.zip

Библиотеки тоже проверьте, должно быть вот так:

изображение.png

Спасибо огромное, всё заработало)

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

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

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

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

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

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

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

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

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

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

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




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