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

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


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

@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>" . Может есть способ, чтоб он сразу подхватывал значения фаски одной кнопочкой??

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


@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:

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

@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:

 

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

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

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

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

 

Ссылка на сообщение
Поделиться на других сайтах
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.

 

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

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

Ссылка на сообщение
Поделиться на других сайтах
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
 

 

Ссылка на сообщение
Поделиться на других сайтах
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

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

 

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

 

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

 

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
Только что, 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:

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

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

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

Спойлер

Clip092.png

 

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

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

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

Clip092.png

 

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

Снимок.JPG

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

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

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

Clip096.png

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

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

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

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

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

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

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

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

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

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

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

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

    • sasha_zao


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