Jump to content

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


Recommended Posts

malvi.dp

Прошу помощи знатоков VBA 

Есть файл xls-dbf.xls с макросом в excel 2003 - он формирует определенный отчет из сохраненной спецификации солида в последующую программу в формате *.dbf

C помощью команды 

Shell ("C:\Program Files (x86)\Microsoft Office\Office2003\EXCEL.EXE ")  запускаю excel 2003.

А вот как открыть файл  C:\TCS\xls-dbf.xls  и в нем запустить макрос не пойму.

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

Edited by malvi.dp
Link to post
Share on other sites


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

Shell ("C:\Program Files (x86)\Microsoft Office\Office2003\EXCEL.EXE ")  запускаю excel 2003.

А вот как открыть файл  C:\TCS\xls-dbf.xls

Что бы открыть:

Shell ("C:\Program Files (x86)\Microsoft Office\Office2003\EXCEL.EXE C:\TCS\xls-dbf.xls")

Что бы запустить можно в самом файле Execel зайти в режим редактирования макроса и добавить в ЭтаКнига (WithWorkbook), что бы макрос запускался при открытии файла:

Private Sub Workbook_Open()
   ' Здесь код для запуска, например:
   Module1.Main
End Sub

https://support.microsoft.com/ru-ru/office/автоматический-запуск-макроса-при-открытии-книги-1e55959b-e077-4c88-a696-c3017600db44

 

А если по науке, то вероятно добавить ссылку на Exel (Tools-References...) и перетянуть макрос в Solidworks с подключением к уже запущенному приложению или открытием нового (аналогично работы с самим Solidworks) или запускать макрос через процедуры/функции Exel.

Edited by Kelny
  • Нравится 1
Link to post
Share on other sites
malvi.dp
40 минут назад, Kelny сказал:

Что бы открыть:

Shell ("C:\Program Files (x86)\Microsoft Office\Office2003\EXCEL.EXE C:\TCS\xls-dbf.xls")

Спасибо, получилось!

41 минуту назад, Kelny сказал:

А если по науке, то вероятно добавить ссылку на Exel (Tools-References...) и перетянуть макрос в Solidworks с подключением к уже запущенному приложению

Это было бы вообще супер, но знаний пока не хватает.

Link to post
Share on other sites
Snake 60

@tompsongun Нажимаю кнопку "Очистить список путей" - получаю ошибку:

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

2021-04-30_22-23-09.jpgпо логике

 

по логике вещей там должна быть переменная файлПутей

 

И второй момент. Функция кнопки Обзор... отрабатывает не правильно, не запоминает выбранную папку. Ошибка в коде:

If Not F Is Nothing Then
    BrowseFolder = oWSS.SpecialFolders(szlocation)
End If

Должно быть:

If F Is Nothing Then
    BrowseFolder = oWSS.SpecialFolders(szlocation)
Else
    BrowseFolder = F.Items.Item.path
End If

 

  • Чемпион 1
Link to post
Share on other sites
tompsongun

и снова, Здравствуйте! )

SaveAsCopyReplace 3.1  работа над ошибками. Огромное Спасибо, кто потестил!

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

изменения:

3.0.2

-оптимизация кода,

-исправление регресса по внесению свойств в модель - не записывались обратно наименование_ФБ и игнорилась первая конфига и смещение вообще произошло - жуть

-исправил функцию 'вырезать' контекстного меню,

-символы перенёс в контекстное меню,

-исправление ошибок кнопок обзор и очистки путей. @Snake 60 , спасибо Вам, правда, я чуток иначе сделал изображение.png, т.к. (может из-за, того, что раб.стол у меня на Д перенесён) при выборе в диалоге рабочего стола - выдавало ошибку, а так у меня работает.
3.1

-интерфейс чуть перекомпоновал,

-перенёс очистку путей в доп.настройки,

-добавил оставить прежние наименования в конфигурациях,

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

-очередная попытка не вносить повторы в текстовые списки, вроде уже получше стало

 

да, уж предыдущая версия злостная получилась ((, надеюсь эта подобрее

 

SaveAsCopyReplace 3.1.zip

Edited by tompsongun
  • Нравится 4
  • Чемпион 3
Link to post
Share on other sites
tompsongun

3.1.1 исправил списки  - последний введённый, чтобы был первым в списке (пути, фирмы, примечания) - регресс ((

SaveAsCopyReplace.swp

Link to post
Share on other sites
none

К сожалению не помогла версия 3.1.1. Не хочет открывать окно макроса на подсборках :(. Я через какое-то время разгребусь и попробую подразобраться в чем проблема тоже. Повставляю куски кода, чтобы отловить где собака порыта.

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

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

может Мастера подсобят?:worthy:

изображение.png если выбрать подсборку в сборке (пока известа проблема на 2014 солиде, в 2020 отрабатывает) или сварную деталь (в 2020 солиде иногда возникает проблема, зависимость и спровоцировать специально не получается) и запустить макрос, код отрабатывает до этих мест (в 2020 солиде) - на картинке выделено красной рамочкой. в результате, модель открывается, но окно макроса нет. макрос завершается ошибок не выдаёт, если я раскоментирую msgbox - макрос работает. два места - на рабочем компе у коллеги 1-е выделенное, а на моей - второе ( у него если 2й меседжбокс расскоментить - не срабатывает, отсюда появился 1й). виндовс 7. дома у меня отрабатывает без проблем и по подсборкам и по сварным (виндовс 10). перед всем этим макрос получает данные по модели, исходя из которых осуществляется открытие выбранной модели.

Edited by tompsongun
Link to post
Share on other sites
Maik812
1 час назад, tompsongun сказал:

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

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

  • Нравится 2
Link to post
Share on other sites
Kelny
14 часов назад, tompsongun сказал:

может Мастера подсобят?

 

На кнопке PC заявлена отсутствующая процедура/функция ПолучениеФормироваиеСвойств (буква в названии функции пропущена), вероятно должно быть: ПолучениеФормированиеСвойств

                                                                                                     

 

14 часов назад, tompsongun сказал:

код отрабатывает до этих мест (в 2020 солиде) - на картинке выделено красной рамочкой. в результате, модель открывается, но окно макроса нет. макрос завершается ошибок не выдаёт, если я раскоментирую msgbox - макрос работает. два места - на рабочем компе у коллеги 1-е выделенное, а на моей - второе ( у него если 2й меседжбокс расскоментить - не срабатывает, отсюда появился 1й). виндовс 7.

Как вариант в это месте не месаджбокс раскомментировать, а поставить точку остановки (тыкнуть в вертикалью серую полоску слева от кода, например, перед END IF и дальше можно по строчкам добавить, а так же в конце).

Возможно стоит поставить точку остановки в тех местах где активируется закрытие формы: Unload Me, может в какой-то процедуре/функции именно это и приводит к закрытию окна макроса при загрузке/проверке некоторых параметров.

  • Чемпион 1
Link to post
Share on other sites
tompsongun

3.1.2

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

На кнопке PC заявлена отсутствующая процедура/функция ПолучениеФормироваиеСвойств (буква в названии функции пропущена), вероятно должно быть: ПолучениеФормированиеСвойств

и забыл цикл перебора конфигураций в случае, если разбиваем наименование на 2 строки

SaveAsCopyReplace.swp

 

Link to post
Share on other sites
SerDin

Коллеги ,столкнулся с тем, что ГЕоС на PDMe некорректно срабатывает... а именно в свойства не дописывает имя файла из-за чего некорректно в спецификации отображается "БЧ".
Если деталь находится не на PDM, то срабатывает все отлично
 

https://dropmefiles.com/FRXzL

https://dropmefiles.com/FRXzL

Link to post
Share on other sites

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

поставил виртуальную машину oracle vm virtualbox, в нёё виндовс 10 64 бит, и солид 2014 сп5 с api и утилитами солида. (без утилит и апи макросы подцепить нельзя было - при вызовеве редактора макроса солид падал. и с реестром поплясать пришлось. я так понимаю из-за винды (обновления, и что это 10) )

 

SaveAsCopyReplace 3.1.3

 

SaveAsCopyReplace.swp

 

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

блинский, в 3.1.4 не исправил в полной мере.

 

SaveAsCopyReplace 3.1.5

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

- исправил 'обозначение и наименование в свойства' не вносилось в общие свойства (регресс),при отсутствии прочих отметок в блоке 2,

- проверка пустых файлов списков,
- автозамена при сохранении в новом пути / на \,

- возможность указания в новом пути несуществующей папки - создастся (и по сети  тоже).

 

SaveAsCopyReplace.swp

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

Доброе время суток!

Прошу помощи в оригинальной задаче для солида.

Допустим: Есть греющий кабель, который уложен в металлоконструкцию по определенному правилу (синусоида)

Эта синусоида может увеличиваться в частоте, в высоте и в общей длине.

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

Может дополнение какое к SW есть, которое так умеет?

Буду бесконечно благодарен!

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

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

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

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

Есть греющий кабель, который уложен в металлоконструкцию по определенному правилу (синусоида)

 

28 минут назад, Alex_Storm_73 сказал:

Но как менять параметр его длины по синусоиде, чтобы подогнать под определенную мощность.....?

Вот по правилу укладки и определяйте/меняйте.

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

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

tahqcejm.jpg

 

30 минут назад, Alex_Storm_73 сказал:

Может дополнение какое к SW есть, которое так умеет?

Умеет что? Считать перемножение длины на мощность метра кабеля и округлять?

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

Link to post
Share on other sites

Попробую перефразировать вопрос:

Можно-ли, при нарисованном эскизе синусоиды замерять её длину в различных точках, не изменяя эскиз?

От начала синусоиды до любого другого места? 

Если выбирать "цепочку", она выделяется вся...(((

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

Можно-ли, при нарисованном эскизе синусоиды замерять её длину в различных точках, не изменяя эскиз?

От начала синусоиды до любого другого места? 

Такого инструмента нет.

Можно:

1. РАЗБИТЬ ЭСКИЗ в том месте где надо и замерять нужную часть сегментов эскиза:

http://help.solidworks.com/2010/russian/solidworks/sldworks/legacyhelp/sldworks/sw_sketch/split_entities.htm

2. Можно создать ещё один эскиз, выбрать эскиз с синусойдой, на него спроецировать предыдущий эскиз соотвествующей кнопкой ПРЕОБРАЗОВАНИЕ ОБЪЕКТОВ и потом отсечь лишнее, а дальше замерить оставшееся:

http://help.solidworks.com/2010/russian/solidworks/sldworks/legacyhelp/sldworks/sw_sketch/convert_edge.htm

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

Edited by Kelny
Link to post
Share on other sites

Продублирую вопрос тут: не встречал кто способа перенести Наименование компонента в свойства чертежа компонента. Нужно для отображения Наименования чертежа в проводнике Винды.

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

Такого инструмента нет.

Это печально, спасибо за помощь.

Все остальные варианты испробованы. Делал и части укладки массивом и целиком длинный...всё-таки надеялся что есть какое-то решение...

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

Link to post
Share on other sites

@Alex_Storm_73 Один эскиз - твоя синусоида, второй эскиз - её "преобразовываешь".  Крайние точки во втором эскизе надо "оттянуть" от краёв. Они получаются незафиксированныеми. Во втором эскизе делаешь датчик на длину дуги синусоиды.  Включаешь Instant 3D. Не заходя в эскизы тянешь за точки и смотришь на датчик

Деталь1.SLDPRT

Link to post
Share on other sites
Ветерок
6 часов назад, Alex_Storm_73 сказал:

От начала синусоиды до любого другого места? 

Построить точку на заданном расстоянии от нужного конца вдоль кривой.

Edited by Ветерок
  • Нравится 1
Link to post
Share on other sites
Kir95
13.05.2021 в 10:08, kkk сказал:

перенести Наименование компонента в свойства чертежа компонента. Нужно для отображения Наименования чертежа в проводнике Винды

Как коллеге по столярно-мебельному производству и для облегчения жизни новым конструкторам )

Макрос записывает значение свойства модели в свойство чертежа этой модели, в чертеже уже должен быть вид с этой моделью, макрос проверен в солиде 2014 и 2021. Берётся (Get4) значение свойства "Description" с общей вкладки (не конфигурации), но в коде можно заменить на своё название свойства из модели. В чертеже наличие свойства необязательно - макрос его создаст. "Description" видно в проводнике винды, независимо от настроек солида

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

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swRefModel As SldWorks.ModelDoc2
Dim swCustProp As CustomPropertyManager
Dim val As String, valout As String
Dim nErr As Long, nWarn As Long
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel.GetType <> swDocDRAWING Then
MsgBox "Откройте чертёж "
Exit Sub
End If
Set swDraw = swModel
Set swRefModel = swDraw.GetFirstView.GetNextView.ReferencedDocument
Set swCustProp = swRefModel.Extension.CustomPropertyManager("")
swCustProp.Get4 "Description", False, val, valout
swModel.Extension.CustomPropertyManager("").Add3 "Description", swCustomInfoText, valout, 1
swModel.Save3 swSaveAsOptions_Silent, nErr, nWarn
End Sub

 

 

  • Нравится 2
  • Чемпион 1
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   0 members

    No registered users viewing this page.



×
×
  • Create New...