Jump to content
Rich

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

Recommended Posts

nicomed

День добрый.

Переделал немного макрос.

Запуск можно сделать одновременно с  SW, или запустив EXE-шник при запущенном SW.

Редактирование размера в ЧЕРТЕЖЕ( в деталь и сборку не лезу пока) происходит по двойному клику на размере.

Более-менее корректно редактирует пока все еще только линейные размеры.

Что изменилось:

-Немного изменил саму форму.

-Добавил меню на  правую кнопку:

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

-Добавляет x45` при выборе фасок (но пока не удаляет при смене на другой тип элемента).

-Добавил допуски метрической резьбы.

 

Закрыть макрос можно или из активного окна (меню вверху формы), или из диспетчера задач прибив процесс EditDimension, или он сам закроется вместе с закрытием SW.

 

З.Ы.  Как запустить макрос вместе с SW - смотри здесь -> Старт макроса вместе с SW)

Да и вообще интересный сайтик и на ютубчике канал есть одноименный там два очень пользительных видео на русском по созданию AddIns-ов для SW (Может есть еще где, но что первое нашел, то в голову и запало :smile:). После отработки макроса "как есть", буду переделывать на Addins. Пока проблемы с правами на компе, при компилированиии DLL-ки AddIns-а много где регистрирует ее в реестре.

EditDimension.0.1.2.zip

Edited by nicomed
  • Нравится 3

Share this post


Link to post
Share on other sites


Docuk1

@nicomed задумка хорошая. Попытался с помощью этого макроса оформить чертёж. нашёл несколько моментов:

1. Запускаешь экзешку, два раза тыкаешь на размер, закрываешь крестиком и макрос больше не появляется, пока из диспетчера не удалишь и заново не запустишь.

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

3. Не хватает в окне макроса вставки символов диаметр, градус, плюс-минус

4. Не хватает кнопки что-то типа формат как в Rdim, то есть копировать эти доп надписи на другой размер

5. Не пишет во вторую строку значения для диаметров и радиусов. В rdim это реализовано через <stack size=0.25 divider=no> <stack size=4 divider=no>

6. Местоположение окна не запоминается при полном закрытии макроса

7. При нажатии энтер и эскейп ничего не происходит, а хотелось бы "ок" и "отмена"

8. При проставлении допустим верхнего допуска "+0,3" на чертеже появляется "+0,300". Понятно, что берётся это из настроек, но хотелось бы чтоб лишние нули в конце не писались. Если я ручками выбираю двунаправленный и ввожу 0,3, то на чертеже появляется +0,3 без всяких нулей.

9. Хотелось бы к выпадающему списку (отверстий, фаскок, радиусов и тд) добавить "мест". Типа чтоб было допустим "4 места"

10. По интерфейсу: непонятно зачем нужны 5 кнопок сверху (без допуска, номин в прямоуг и тд.). Сделать галки аналогично "show value". Также лично для меня скобки тоже оформить галкой.

 

Всё вышесказанное моё личное мнение. Сам макрос по своей идее замечательный, автор красавчик =)

 

ПС 

кто как оформляет размер с фаской? Допустим отверстие с фаской сделано с помощью команды "отверстие под крепеж". Я ставлю диаметр на центральное отверстие, а потом ручками дописываю "/<MOD-DIAM>6,6х90<MOD-DEG>" . Может есть способ, чтоб он сразу подхватывал значения фаски одной кнопочкой??

Share this post


Link to post
Share on other sites
Rich

@nicomed 

слегка протестировал твой макрос. Писать о том что он стал универсальным писать не стоит так как это очевидно.
Опишу лучше о проблемах и возможных доработках. Тестировал на SW2018, по этому может некоторые функции и не работают.
1. Не удалось расположить количество под размерной линией. Не вижу куда он ее вообще записывает, хотя при считывании этого размера макрос это находит.
2. Считывание размера, это то что требует еще серьезной доработки.
2.1 Символ перед размером (диам., R,  М...) он остается от предыдущего размера. К примеру редактирую размер с диаметром, выполнил все действия, перешел к линейному размеру, а у него уже стоит значок диаметра.
2.2 Не считывает надпись типа
<MOD-DIAM><DIM>
<stack size=1>2 отв.
это универсальная запись размера для размещения количества под размерной линией, работает еще с ~2004 года.
2.3 И снова о количестве. Надпись просто считывается в поле и нет ее обработки. Что должно произойти (опять же по моему мнению). Включатся "Опции текста" - "Кол-во", заполняются поля в которых ты выбираешь число и тип, а фокус переходит на поле числа. Тогда у тебя сразу убирается множество действий. Об этом я упомяну в конце повествования.
3. Не корректная работа с симметричны допуском. Почему то могу вставить только целые значения 1,2,5 все десятичные включая 1.5 не вносятся в поля допуска.
4. Массив обычно используется от 4 элементов (3 пролета). По этому значения 1 и 2 думаю в массиве не уместны.
5. Отключи крестик (выход из программы) справа вверху. Постоянно если нажимаешь на него программа выходит и повторно ее не возможно запустить только с перезапуском SW

Ну и в целом о программе, сугубо личное мнение. Для меня пока эта программа пока пригодиться только как справочник по допускам (это сделано отлично). Основное, что я использую в чертежах это на первом месте количество, на втором 2-3 симметричных допуска (которые забиты в стили). Ничего не могу сказать о тех кто работает с "механикой" (станки, пресс формы и прочие), но думаю что у них допусков 5-10 используется + количество. 
Подойди к программе с творчески. Подумай для чего ты ее делаешь, что ты хочешь от нее получить. 
Продумай про оптимизацию работы программы, ведь все эти действия можно сделать и в закладке "размеры" самого Солида. Набить себе стилей в шаблон один раз и потом слегка корректировать сам размер. Сделай так что бы программа предугадывала действия пользователя. Я макросы начинал писать со второго года работы, когда сформировал понятие, что мне необходимо, и эти макросы еще дописывались в течении лет четырех, пока не приобрели свою универсальность. До сих пор ими пользуюсь, привык уже к ним.:biggrin:

Share this post


Link to post
Share on other sites
nicomed

@Docuk1 , спасибо за комментарии...

а теперь по пунктам:

1 - просто не знаю как убрать свойствами WindowsForms реакцию на кнопку ЗАКРЫТЬ форму (крестик), если подскажете как- сделаю.

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

3 - диаметр, радиус, плюс-минус ставит - перед окошком со значением размера специальный комбобокс

4 - ранее не думал в эту строну,  подумаю что из параметров копировать и как это регулировать ...

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

6 - это да, "красивости и удобности" в виде положения окна вообще не смотрел.

7 - принято

8 - пока более-менее работает только точность самого размера, как ее допилю - транслирую настройку и на допуск.

9 - можно и добавить, на настоящий момент можно в самом комбобоке написать нужный элемент (позже сделаю пользовательский список)

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

 

@Rich , день добрый.

тоже по пунктам:

1 - пишет в LowerText по этому методу -> ТЫЦ он есть и в более ранних версиях SW.

2.1 - да есть такое - спасибо ...

2.2 - сейчас да, опять же потому что используется LowerText. В планах есть мысли о чтении и таких форматов, но это после добавления угловых размером и диаметров.

3 - х.з. проверял только на 2019 солидах - проблем не было...

4 - это разумно, но на данный момент, не первостепенно...

5 - про крестик писал выше :smile:

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

Ну и про  дописывание в течении 4-х лет .... тут пока только до месяца добрался :smile:

 

Share this post


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

1 - просто не знаю как убрать свойствами WindowsForms реакцию на кнопку ЗАКРЫТЬ форму (крестик), если подскажете как- сделаю.

Убери его вообще :biggrin:

В свойствах окна ControlBox=False

 

  • Нравится 1

Share this post


Link to post
Share on other sites
Kelny
12 часов назад, Docuk1 сказал:

кто как оформляет размер с фаской? Допустим отверстие с фаской сделано с помощью команды "отверстие под крепеж". Я ставлю диаметр на центральное отверстие, а потом ручками дописываю "/<MOD-DIAM>6,6х90<MOD-DEG>" . Может есть способ, чтоб он сразу подхватывал значения фаски одной кнопочкой??

https://kelnyproject.ucoz.ru/load/uslovnoe_oboznachenie_otverstij_calloutformat_txt/2-1-0-27

 

 

10 часов назад, nicomed сказал:

1 - просто не знаю как убрать свойствами WindowsForms реакцию на кнопку ЗАКРЫТЬ форму (крестик), если подскажете как- сделаю.

Если вы не планируете закрывать своё приложение зачем вам вообще форма, задвиньте этот инструмент в  Панель задач, обычно по умолчанию справа:

http://help.solidworks.com/2010/russian/SolidWorks/sldworks/LegacyHelp/Sldworks/UI/Task_Pane.htm?id=0c3b4c038e0d45e3b2970e85d6138750#Pg0

помниться для этого приложение должно быть в виде DLL.

 

  • Нравится 1

Share this post


Link to post
Share on other sites
alek77

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

  • Нравится 1

Share this post


Link to post
Share on other sites
Kir95
3 часа назад, alek77 сказал:

кусочек кода для вставки габаритных размеров вида чертежа

Получить  габарит и позицию вида в чертеже:

Get View Bounding Box and Position Example (VBA)

 

Код для получения габарита вида

Спойлер

Option Explicit
    Dim swApp As SldWorks.SldWorks
    Dim swDraw As SldWorks.DrawingDoc
    Dim swView As SldWorks.View
    Dim outline() As Double
    Dim pos() As Double
    Dim fileName As String
    Dim errors As Long
    Dim warnings As Long
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim Length As Double
    Dim Heght   As Double
    Dim vTitle   As String
Sub main()
    Set swApp = Application.SldWorks
    Set swDraw = swApp.ActiveDoc
    Set swSelMgr = swDraw.SelectionManager
  If swSelMgr.GetSelectedObjectCount2(0) = 0 Then
        MsgBox "Выберите чертёжный вид."
        Exit Sub
  End If
    Set swView = swSelMgr.GetSelectedObject6(1, 0)
        outline = swView.GetOutline
        Length = Format(((outline(2) - outline(0)) * 1000), "0.00")
        Heght = Format(((outline(3) - outline(1)) * 1000), "0.00")
        vTitle = "Габарит вида"
        MsgBox swView.Name & vbCrLf & "Длина вида  " & Length & " mm" & vbCrLf & "Высота вида " & Heght & " mm", vbOKOnly, vTitle
End Sub
 

 

Share this post


Link to post
Share on other sites
alek77
2 минуты назад, Kir95 сказал:

Получить  габарит и позицию вида в чертеже:

Get View Bounding Box and Position Example (VBA)

 

Код для получения габарита вида

  Скрыть контент

Option Explicit
    Dim swApp As SldWorks.SldWorks
    Dim swDraw As SldWorks.DrawingDoc
    Dim swView As SldWorks.View
    Dim outline() As Double
    Dim pos() As Double
    Dim fileName As String
    Dim errors As Long
    Dim warnings As Long
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim Length As Double
    Dim Heght   As Double
    Dim vTitle   As String
Sub main()
    Set swApp = Application.SldWorks
    Set swDraw = swApp.ActiveDoc
    Set swSelMgr = swDraw.SelectionManager
  If swSelMgr.GetSelectedObjectCount2(0) = 0 Then
        MsgBox "Выберите чертёжный вид."
        Exit Sub
  End If
    Set swView = swSelMgr.GetSelectedObject6(1, 0)
        outline = swView.GetOutline
        Length = Format(((outline(2) - outline(0)) * 1000), "0.00")
        Heght = Format(((outline(3) - outline(1)) * 1000), "0.00")
        vTitle = "Габарит вида"
        MsgBox swView.Name & vbCrLf & "Длина вида  " & Length & " mm" & vbCrLf & "Высота вида " & Heght & " mm", vbOKOnly, vTitle
End Sub
 

 

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

Сейчас делаю так:

- вставляю все размеры в вид отмеченные для чертежа через swDraw.InsertModelAnnotations3

- вставляю все размеры через swDraw.AutoDimension

- сравнение значений размеров и удаление всех кроме двух максимальных (еще не сделал)

 

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

 

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

 

Share this post


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

- сравнение значений размеров и удаление всех кроме двух максимальных (еще не сделал)

ИМХО не пойдет допустим у вас длинная деталь, он у вас два размера по длине оставит, а ширину удалит.

Share this post


Link to post
Share on other sites
alek77
Только что, vasyam сказал:

ИМХО не пойдет допустим у вас длинная деталь, он у вас два размера по длине оставит, а ширину удалит.

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

Share this post


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

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

В модели я по моему через https://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2~rayintersections.html

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

Через https://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldocextension~selectbyray.html

Вроде как можно выделить грани, по лучу

Как быть с видом фиг знает

Если совсем нет вариантов можно попробывать выделить грани в модели поставить размер, отметить его для чертежа :biggrin:

Share this post


Link to post
Share on other sites
Plumber
1 час назад, alek77 сказал:

... поставить два размера габаритных на виде чертежа...

А может попробовать как-то использовать граничную рамку

Спойлер

Clip092.png

 

Share this post


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

А может попробовать как-то использовать граничную рамку

  Скрыть контент

Clip092.png

 

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

Share this post


Link to post
Share on other sites
Kir95
6 часов назад, alek77 сказал:

Мне не габарит вида надо получить

Подозревал, что не всё так просто )

 

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

Сейчас делаю так:

- вставляю все размеры в вид отмеченные для чертежа через swDraw.InsertModelAnnotations3

В модели нельзя поставить габаритные размеры для импорта?

Share this post


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

В модели нельзя поставить габаритные размеры для импорта?

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

http://help.solidworks.com/2017/english/api/sldworksapi/Select_Entity_in_Drawing_View_Example_VB.htm

Да и не кромку надо выбирать, а точки экстремумы

Edited by alek77

Share this post


Link to post
Share on other sites
Kir95

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

1412680696__2.jpg.aeb686eb08daa40dde7db1    851328520__1.jpg.ad3aa4bacbb984b0b38266b

 

Спойлер

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swSelectionMgr As SldWorks.SelectionMgr
Dim swDisplayDimension As SldWorks.DisplayDimension
Dim status As Boolean
Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    Set swSelectionMgr = swModel.SelectionManager
    Set swDisplayDimension = swSelectionMgr.GetSelectedObject6(1, -1)
    'Change angle to supplementary angle
    status = swDisplayDimension.SupplementaryAngle
End Sub

 

Share this post


Link to post
Share on other sites
DuS

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

Или может быть кто то может написать такой макрос)

Share this post


Link to post
Share on other sites
Plumber
4 часа назад, DuS сказал:

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

А что есть горизонтальная/вертикальная? :dntknw:

Share this post


Link to post
Share on other sites
DuS
44 минуты назад, Plumber сказал:

А что есть горизонтальная/вертикальная? :dntknw:

Надо что бы типа осевые линии )

Снимок.JPG

Share this post


Link to post
Share on other sites
Plumber

Здесь уже как-то возникал подобный вопрос, я правда не помню чем закончилось, помню только что основная масса населения задавала один и тот же вопрос - ЗАЧЕМ?

Если так сильно хочется макрос, то наверное можно его самому и написать при помощи встроенного инструмента "Макрос"

Clip096.png

Я не шибко разбираюсь в этом, но в течении пары секунд трудов макрос с горем пополам работал, правда там была загвоздка с опциями "Бесконечная длина" и "Справочная геометрия".

Может знатоки подскажут как это сделать

Edited by Plumber

Share this post


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

Здесь уже как-то возникал подобный вопрос, я правда не помню чем закончилось, помню только что основная масса населения задавала один и тот же вопрос - ЗАЧЕМ?

Если так сильно хочется макрос, то наверное можно его самому и написать при помощи встроенного инструмента "Макрос"

Clip096.png

Я не шибко разбираюсь в этом, но в течении пары секунд трудов макрос с горем пополам работал, правда там была загвоздка с опциями "Бесконечная длина" и "Справочная геометрия".

Может знатоки подскажут как это сделать

Это я знаю)) Думал , может есть что то готовое или легко написать, потому что запись макроса это дело не очень правильное (так мне когда то рассказывали). А про знатоков и вопрос зачем, это частая проблема.

Share this post


Link to post
Share on other sites
Plumber

У меня получилось как-то так:

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim skSegment As Object
Set skSegment = Part.SketchManager.CreateLine(0#, -500, 0#, 0#, 500, 0#)
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.CreateLine(500, 0#, 0#, -500, 0#, 0#)
Part.ClearSelection2 True
End Sub

Рисует две перпендикулярные линии длиной 1000 м (больше всё равно не получится из-за ограничений SW), с пересечением в базовой точке. Осталось только как-то указать, что это вспомогательная геометрия.

Line Macro.swp

Edited by Plumber

Share this post


Link to post
Share on other sites
DuS
3 минуты назад, Plumber сказал:

У меня получилось как-то так:


Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim skSegment As Object
Set skSegment = Part.SketchManager.CreateLine(0#, -500, 0#, 0#, 500, 0#)
Part.ClearSelection2 True
Set skSegment = Part.SketchManager.CreateLine(500, 0#, 0#, -500, 0#, 0#)
Part.ClearSelection2 True
End Sub

Рисует две перпендикулярные линии длиной 1000 м (больше всё равно не получится из-за ограничений SW), с пересечением в базовой точке. Осталось только как-то указать, что это вспомогательная геометрия.

Line Macro.swp 32 \u043a\u0411 · 0 загрузок

Вот что рисует мне макрос полученный в режиме записи макроса (см вложение) , может быть у вас получится его подредактировать.
Как я делал. Сначала нарисовал две бесконечные вспомогательные линии, но макрос после этого рисует только две линии(типа буквы Г). Тогда я нарисовал четыре бесконечные линии и получил вот такой макрос (см вложение).Macro2.swp

Всё вопрос закрыт. Записанный макрос работает.

Всем большое спасибо!

Share this post


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

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

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

Edited by Plumber

Share this post


Link to post
Share on other sites
Kir95
17 часов назад, alek77 сказал:

Да и не кромку надо выбирать, а точки экстремумы

У Татуревича есть пример на сайте (пока ещё не всё монетизирует)

https://www.codestack.net/solidworks-api/document/drawing/sheet-context-sketch/

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

 

6 часов назад, DuS сказал:

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

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

Спойлер

Option Explicit
Dim swapp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swSketchMgr As SldWorks.SketchManager
Dim swSketchLine As SldWorks.SketchLine
Dim boolstatus As Boolean

Sub Main()
    Set swapp = Application.SldWorks
    Set swModel = swapp.ActiveDoc
    Set swModelDocExt = swModel.Extension
   ' boolstatus = swModel.Extension.SelectByID2("", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
    Set swSketchMgr = swModel.SketchManager
    'swSketchMgr.InsertSketch True
    Set swSketchLine = swSketchMgr.CreateCenterLine(0#, 0#, 0#, 1, 0#, 0#)
    boolstatus = swSketchLine.MakeInfinite
    swModel.SketchAddConstraints "sgFIXED"
    Set swSketchLine = swSketchMgr.CreateCenterLine(0#, 0#, 0#, 0#, 1, 0#)
    boolstatus = swSketchLine.MakeInfinite
    swModel.SketchAddConstraints "sgFIXED"
    swModel.SetPickMode
    swModel.ClearSelection2 True
End Sub

 

 

 

 

  • Нравится 4

Share this post


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

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

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

2 минуты назад, Kir95 сказал:

Держи.

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

7 минут назад, Kir95 сказал:

Держи.

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

 

Короче, все работает отлично! Спасибо!

Share this post


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

Короче, все работает

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

Share this post


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

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

А зачем ее убирать? Это как раз то что нужно.

Share this post


Link to post
Share on other sites
Kir95
2 минуты назад, DuS сказал:

А зачем ее убирать? Это как раз то что нужно.

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

Share this post


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

А зачем ее убирать?

Я бы убрал бесконечность по причине того, что в SW существуют ограничения на размеры объектов в 1000000 мм (это не AutoCAD)

Share this post


Link to post
Share on other sites
Kir95
1 час назад, Plumber сказал:

в SW существуют ограничения на размеры объектов в 1000000 мм

это для детали 1км, а в сборке ограничения в 100км (вдруг  кому мостик в 100км захочется спроектировать в солиде))

sketch_assy.jpg

Share this post


Link to post
Share on other sites
Plumber
3 минуты назад, Kir95 сказал:

... мостик в 100км

Тогда придется еще 4 клика сделать :biggrin:

Share this post


Link to post
Share on other sites
Snake 60
В 14.07.2020 в 13:00, alek77 сказал:

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

Сейчас делаю так:

- вставляю все размеры в вид отмеченные для чертежа через swDraw.InsertModelAnnotations3

- вставляю все размеры через swDraw.AutoDimension

- сравнение значений размеров и удаление всех кроме двух максимальных (еще не сделал)

 

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

 

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

 

А почему бы не использовать функцию 3D-граничной рамки?

Share this post


Link to post
Share on other sites
DuS
15 часов назад, Plumber сказал:

Я бы убрал бесконечность по причине того, что в SW существуют ограничения на размеры объектов в 1000000 мм (это не AutoCAD)

Извините, не понимаю чем плоха бесконечность. 

Share this post


Link to post
Share on other sites
Kelny

 

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

Рисует две перпендикулярные линии длиной 1000 м

 

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

Цитата

    boolstatus = swSketchLine.Infinite

    Debug.Print "Infinite line: " & boolstatus

    boolstatus = swSketchLine.MakeInfinite

 

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

 

 

Edited by Kelny
  • Нравится 1

Share this post


Link to post
Share on other sites
Plumber
4 часа назад, Kelny сказал:

нарисовать короткий отрезок, а бесконечность задать галочкой бесконечности?

Я бы вообще такими глупостями не занимался - писать макрос на действия, которые занимают пару секунд :wink:

А за наводку на пример спасибо :good:

 

 

Share this post


Link to post
Share on other sites
Kir95
8 часов назад, Snake 60 сказал:

почему бы не использовать функцию 3D-граничной рамки?

Можно как-то в чертеже автоматом образмерить граничную рамку?

 

Share this post


Link to post
Share on other sites
Snake 60
В 16.07.2020 в 15:40, Kir95 сказал:

Можно как-то в чертеже автоматом образмерить граничную рамку?

В чертеже не знаю, но есть макрос который прописывает эти размеры в свойства. Может поможет чем.

Спойлер

'Определяем переменные
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swFeat As SldWorks.Feature
Dim swDeleteFaceFeature As SldWorks.DeleteFaceFeatureData
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim names As Variant
Dim textexp As String
Dim evalval As String
Dim PartName1 As String
Dim swPart As Object

Dim featureName As String
Dim boolstatus As Boolean
Dim opt As Long

'Основная подпрограмма (точка входа)
Sub main()

    'Активируем основные переменные
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    
    
    ' Определяем самый первый элемент (фичерс) в дереве
    Set swFeat = swModel.FirstFeature
    
     'Пробегаем цыклом по дереву пока не закончатся все элементы (фичерсы)
     Do While Not swFeat Is Nothing
        
        If swFeat Is Nothing Then
            Exit Do
        End If
 
        'Записываем в переменную featureName имя текущего элемента (фичерса)
        featureName = swFeat.Name
        ' Присваиваем переменной swPart активный документ
        Set swPart = swApp.ActiveDoc
        'Получаем имя документа (файла)
        PartName1 = swPart.GetTitle
        'Выводим его для проверки
        'MsgBox PartName1
                    
        'Проверяем содержит ли имя файла расширение или нет (это зависит от настроек windows) если содержит, то убираем его
        PartName1 = Replace(PartName1, ".SLDPRT", "")
        PartName1 = Replace(PartName1, ".sldprt", "")
        'Выводим имя для проверки
        'MsgBox PartName1
        
        'Проверяем имя элемента (фичерса) и если оно совпадает с CutListFolder, то
        If swFeat.GetTypeName2 = "CutListFolder" Then
             
            boolstatus = swModelDocExt.SelectByID2(featureName, "SUBWELDFOLDER", 0, 0, 0, False, 0, Nothing, 0)
            'Создаем 3D-граничную рамку
            swModelDocExt.Create3DBoundingBox
            'высвечиваем возможные погашенные элементы развертки листового металла
            UnsupresseFlatternFeatures.UnsupresseFlatternFeatures
            'Присваиваем переменной swCustPropMgr значение swFeat.CustomPropertyManager (активируем свойства элементов списка вырезов)
            Set swCustPropMgr = swFeat.CustomPropertyManager
            'Добавляем в список свойств вырезов свойство - Габарит детали ДхШхВ
            swCustPropMgr.Add3 "Габарит детали ДхШхВ", swCustomInfoType_e.swCustomInfoText, """SW-3D-Длина граничной рамки@@@" & swFeat.Name & "@" & PartName1 & ".SLDPRT""" & " x " & """SW-3D-Ширина граничной рамки@@@" & swFeat.Name & "@" & PartName1 & ".SLDPRT""" & " x " & """SW-3D-Высота граничной рамки@@@" & swFeat.Name & "@" & PartName1 & ".SLDPRT""", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
            'Добавляем в список свойств вырезов свойство - Развертка ДхШ
            swCustPropMgr.Add3 "Развертка ДхШ", swCustomInfoType_e.swCustomInfoText, """SW-Длина граничной рамки@@@" & swFeat.Name & "@" & PartName1 & ".SLDPRT""" & " x " & """SW-Ширина граничной рамки@@@" & swFeat.Name & "@" & PartName1 & ".SLDPRT""", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd
        End If
    
        'Выводим значение имени элемента (фичерса) в окно Immediate
        Debug.Print swFeat.GetTypeName2
        'Переходим к следующему элементу
        Set swFeat = swFeat.GetNextFeature
    'Метка цикла
    Loop
    
    'Выводим сообщение
    MsgBox "В свойства списка вырезов добавлены свойства Габарит детали ДхШхВ и Развертка ДхШ!"

'Завершение подпрограммы
End Sub

 

Полный макрос здесь: AddGabaritProperty.swp

Edited by Snake 60
  • Нравится 1

Share this post


Link to post
Share on other sites
Авто-кот

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

Рисую в soliworks уже много лет. Недавно освоил catia и мне понравилось. Из явных плюсов catia для себя нашел следующий способ проектирования - 3 эскиза (3 основных вида) которые содержат все основные линии, профили и размеры и из этого эскиза уже делаю детали. То есть строю управляющую модель по аналогии с catia. Решил попробовать сделать нечто подобное в solidworks 2018.

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

   В итоге приспособил проекты solidworks под это проектирование, но есть неудобства, которые как решить я пока не додумался - 1) необходимый поиск по элементам эскиза - линиям, отверстиям, точкам и тд (иногда надо найти линию на которую ссылаются другие элементы внутри детали) - визуальный способ в sw предусмотрен (подсветка линий) но не всегда удобен, особенно при большом кол-ве элементов, хотелось бы иметь возможность находить по номеру элементов из мэнеджера или дерева построения или приближать к элементу экран как в catia, 2) тормознутость solidworks касательно больших эскизов - это уже оптимизация самой программы, тут можно решить видимо только гася элементы эскиза.

 

Кто нибудь так проектирует? Поделитесь опытом. Спасибо.

 

Edited by Авто-кот

Share this post


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.

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   0 members

    No registered users viewing this page.



  • Сообщения

    • GalielO
      Антиалиасинг в каркасном режиме (Wireframe); Логические операции OpenGL позволяют отображать поверх 3Д сцен без потери производительности; Аппаратное ускорение удаления невидимых областей (Clip Regions) под накладывающимися друг на друга окнами и панелями программ; Аппаратное ускорение отсекающих плоскостей (Clip Planes) для создания сечений геометрических тел; Двустороннее освещение (Two sided Lighting). NVIDIA Mosaic NVIDIA Quadro P4000 vs GeForce GTX 1070 (3D Rendering Siemens NX, Catia) What’s the Difference Between GeForce and Quadro Graphics Cards? Легким движением руки GeForce GTX 690 превращается в Quadro K5000 или Tesla K10 Преимущества профессиональной графики NVIDIA Quadro при работе с САПР приложениями Powerful GPU Rendering Performance with NVIDIA Quadro RTX Если у вас в SolidWorks серенький квадратик с 5к отверстий, то толку от проф карты не много, а если используете RealView то заметите разницу.
    • Zloy_Ded
      Я это знаю. Не работает. Видео полезное, спасибо!
    • Maik812
      Ну поясни зачем тогда нужны квадры ? И что они дают ?
    • Jesse
      @Chardash аа вижу.. круто, спасибо)) ну да, действительно.. где-то просто напросто удобен тот или иной тип функций, как в этой цитате свет клином не сошёлся на полиномах
    • Chardash
      @Jesse вот. https://scadsoft.com/help/SCAD/FEMLib/ru/FEMLib1049_rtf/General_Issues.htm Здесь просто упоминается. Еще есть книга, Расчетные модели сооружений и возможность их анализа Авторы: Анатолий Перельмутер, Владимир Сливкер Известный источник @Fedor  http://www.pinega3.narod.ru/, здесь много информации по теме мкэ и аппроксимации   вот еще диссер https://www.dissercat.com/content/lineinoe-i-nelineinoe-deformirovanie-uprugikh-tel-na-osnove-trekhmernykh-ke-pri-variativnoi- Можно качнуть, есть и другие ресурсы с диссерами, подешевле. И как и говорил в другой теме, где нас разогнали), специально математику в МКЭ глубоко не изучал, времени нет
    • grOOmi
      Если в PLANE SPATIAL использовать SEQ+ или SEQ- то стойка выбирает приоритетное направление движения в зависимости от знака. Попробуйте.    Заодно вот видео где всё подробно рассказано https://www.youtube.com/watch?v=nZFy0MVtHxE
    • Zloy_Ded
      Мне это нужно в начале PLANE SPATIAL что бы верикат и станок крутили стол в одинаковые стороны. Реальный станок почему то крутит стол то против то по часовой стрелке.
    • Maze
      предположу, что модель сделана через инструмент "Сварная деталь", я бы так делал.
    • grOOmi
      Хоспади.... Обычно эта задача возникает в начале траектории, поэтом у в end_of_path   global mom_out_angle_pos set mom_out_angle_pos(0) 0 set mom_out_angle_pos(1) 0
    • Ветерок
      Я не про возможности софта, а про методику проектирования.
×
×
  • Create New...