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

Макрос для SW файлов для показа куда входит фаил


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

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

Если фаил деталь или сборка входит в многие сборки то хочется как то перечислить эти сборки скажем через примерно так "1#  ВГД002.001.002 СБ",  "2# АБС.001.003хх ##имя конфигурации"

Ну и количество штук входящих туда тоже было бы круто.

Если кто будет делать то по выводу отдельно обсудить нужно...

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


UnPinned posts
11 минут назад, Snake 60 сказал:

не откажет.

Я писал про проблему ему, ну молчит.

Есть там и проблема с именим  конфигурации и номером #1....#n

так как смена перетаскивание или сортировка конфигураций дает не верное соответствие между названием и номером № #n  конфигурации.

 

 

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

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

Если фаил деталь или сборка входит в многие сборки то хочется как то перечислить эти сборки скажем через примерно так "1#  ВГД002.001.002 СБ",  "2# АБС.001.003хх ##имя конфигурации"

 

Что-то типа "спецификации наоборот" ) На картинке внизу строки, которые заносит макрос в "Заметки" на вкладку "Суммарная информация" свойств файла

 

Где используется.jpg

 

Получилось сделать нумерацию строк по типу "001#", (есть в VBA  "Split", который разбивает текст на части). Добавил проверку на существование идентичных строк, чтоб не дублировать записи и не добавлялась запись для исключённого из спецификации компонента.

Макрос

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

    Dim swApp               As SldWorks.SldWorks
    Dim swModel             As ModelDoc2
    Dim myAsy               As AssemblyDoc
    Dim myCmps              As Variant
    Dim Cfg                 As String
    Dim CmpDoc              As ModelDoc2
    Dim bool                As Boolean
    Dim path                As String
    Dim filename            As String
    Dim swComments          As String
    Dim sCurrentDateTime    As Date
    Dim i                   As Long
    Dim j                   As Integer
    Dim k                   As Integer
    Dim TmpStr              As Variant
    Dim CmprStr             As String
    Dim CmprStrA            As Variant
    Dim CmprStrB            As Variant
    Dim CmprStrRes          As Integer
    Dim swCnfMgr            As SldWorks.ConfigurationManager
    Dim AsyCnf              As SldWorks.Configuration
    Dim swSelMgr            As SldWorks.SelectionMgr
    Dim myCmp               As Component2
    Dim swErrors            As Long
    Dim swWarnings          As Long
'2021/04/26
Option Explicit
   Sub main()
   On Error GoTo swMsg
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swCnfMgr = swModel.ConfigurationManager
    Set AsyCnf = swCnfMgr.ActiveConfiguration
    Set myAsy = swModel
    
    path = swModel.GetPathName
    filename = Mid$(path, InStrRev(path, "\") + 1) ' With extension
    filename = Left$(filename, InStrRev(filename, ".") - 1) ' Remove extension

    myCmps = myAsy.GetComponents(False)
    
    Set myCmp = swSelMgr.GetSelectedObject6(1, -1)
        If myCmp Is Nothing Then
            MsgBox ("Выберите решённые компоненты в дереве сборки и запустите макрос")
            Exit Sub
        End If

 

Инфу можно скопипастить в екель, сам ексель связать или просто вложить в файл компонента

 

Где используется-ексель.jpg

 

 

Где используется-проводник.jpg

 

С количеством сложнее. Если сборка многоуровневая и есть исключённые из спецификации компоненты, ни один из попадавшихся макросов не считал количество правильно. У Артёма Татуревича на сайте есть классный макрос (за секунду создаёт одноуровневую спецификацию в виде текста), но и у него детали попадают в общее количество, хотя родительский компонент искючён из спецификации. 

https://www.codestack.net/solidworks-api/document/assembly/compose-flat-bom/

 

В общем, спасибо Майку "ТоталКомандиру" за идею с использованием свойств файла, видимых в проводнике )

 

Где используется-проводник свойства файла.jpg

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

ни один из попадавшихся макросов не считал количество правильно

Правильно считает количество вот этот макрос (причем с учетом всех исключенных, погашенных и даже конвертов)

 

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

ни один из попадавшихся макросов не считал количество правильно.

 

Количество штук.swp вроде считал тоже правильно. и проблем не было.. проверте.

ПРИМЕР РАБОТЫ.gif

Тут отдельно есть общее количество штук и количество в конкретной сборки. Ну и как это выводится в эксель или любой его шаблон.

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

за идею с использованием свойств файла, видимых в проводнике )

Всегда рад тебе помочь.

Но я все равно не могу пользоваться проводником, Надеюсь кто то все же переделает решение Брагина с его командером для Солида и Инвентора в плагин для Тотала и сможем в 20121 солиде и инверторе работать абсолютно одинаково. С Компасом почти уже сделано.

Как в проводнике искать по этим данным более гибко? Или более сложный запрос кроме наличие одного из свойств. А еще лучше сортировать и тд.

Вот пример геометрического поиска кстати не во всех даже PDM он вообще предусмотрен.

На фото не просто поиск а фильт показа файлов чтоб соответствовал размерам!

Шаблон файлов по геометрии.gif

А это быстрый поиск или лучше сказать быстрый фильтр шаблон  по различным данным, которые выводятся в колонке, делается через программу расширению к ТС .

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

Быстрый поиск по Обозначениям.gif

 

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

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

Ну назови его по другому как тебе хочется.

 

 

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

Количество штук.swp вроде считал тоже правильно. и проблем не было.. проверте.

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

12 часов назад, Maik812 сказал:

Надеюсь кто то все же переделает решение Брагина с его командером для Солида и Инвентора в плагин для Тотала и сможем в 20121 солиде и инверторе работать абсолютно одинаково. С Компасом почти уже сделано

 

Тотал не показывает общие свойства солидовского файла, которые в проводнике винды смотреть можно? Без плагина свойствами нельзя пользоваться?

 

Из проводника винды можно екселевские ячейки просматривать/копировать, не открывая ексель

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

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

Надо что то придумать, а вопщем идея то нормальная была. С

 

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

общие свойства солидовского файла, которые в проводнике винды смотреть можно? 

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

 

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

Без плагина свойствами нельзя пользоваться?

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

Я же не просто смотрю я могу и менять и передавать их..

Плагин нужен однозначно по типу Solidworks.wdx с функцией изменения атрибутов, по сути это позволяет именно изменять значения в самом файле.. Преводить например "Наименование" в латиницу или стандарт ГОСТ изменит на DIN , пошаблону естественно ГОСТ->DIN или добавть дополнительную строчку пользователя в фаил для спецификации под DIN. Щас это работает но с 2014 и ниже форматом.

На фото вношу данные из Solidworks файла посредством плагина SolidWorks.wdx в плагин mPdm.wdx который пишет в поток ntfs, значения. Для чего это делается, так как в проекте бывает тысяча форматов и из разных сапр и фото и тд. mPDM по сути приравнивает все к одному стандарту данных ДЛЯ ЛЮБЫХ ФОРМАТОВ ФАЙЛОВ, как карточка документа в PDM системе делается. Не важно что за формат DXF на резку лазером или сборка из Компас файла преданная или STEP фаил конвертнули Вам с сайта модель, фотографии прототипов или конкурентов и тд. Все в проекте работатет как упорядочить например такой "винегрет," как вписать пояснения или еще куча всего даже просто проверен фаил и сдан в архив..

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

Изменить в атрибутах.gif

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

 

Но и не забываю просмотр фалов хотя в вин 10 многое сделали намного лучше, но я например в 7 сижу . Все равно в винд 10 нет аналога нормального быстрого просмотра как ТС, даже близко

История.gif

 

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

Но и в ХР было давно у меня было показ эскизов и разных форматов очеь быстро.

Проводничек стал лучше в вин 10, каждый раз запускать фаил чтоб посмотреть что там уже наверное отпало в 10? Но вот у меня еще 13 лет назад отпало.

Total.jpg

 

 

Понимаю многое лишнего, но я пытаюсь объяснить идеологию, или то по чему так важно а не иначе. Одно тянет другое, WDX плагин это не просто данные видеть, это их использовать и юзать. А среде ТС это все умножается на возможность видеть еще и картинки и файлы.

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

Как работает плагин SolidWorks.wdx 

Это плагин CDocProp
-------------------------------------------------------------------------------
CDocProp is the content plugin for properties of Compound Documents (like old MS
Office documents)
Plugin allows to add to the TC custom view standard and custom document properties.
Custom properties should be confugured in the CDocProp.ini file in the section
[Config], i.e.

[Config]
Title=PropertyName

where "Title" is the string to display in TC header and "PropertyName" is the
property name in the file.
File CDocProp.ini should be in the same directory where CDocProp.wdx file.

 

Написал его наш чел.

Работает очень просто и тупо просто пишешь

Наименование=Наименование
Обозначение=Обозначение
Сборка=Сборка
Раздел=Раздел
Раздел спецификации=Раздел спецификации
Количество штук=Количество штук
Общее количество штук=Общее количество штук
Материал=Материал
Разработал=Разработал
Разраб=Разраб
Документация=Документация
Детали=Детали
Стандартные изделия=Стандартные изделия

 

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

 

 

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

Без плагина свойствами нельзя пользоваться?

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

Я же не просто смотрю я могу и менять и передавать их

 

Вот эти свойства (и ещё Description/Описание) можно считывать/менять из проводника, поэтому и спрашивал про тотал.

Props-summary.jpg

 

 

 В "Комментарии" записываем "Где использовался". Без плагина, одним тоталом эти свойства пробовал менять? У солидовского файла 5 видимых свойств и, если с "автором" и "названием" понятно, то ещё 3 свойства мало кем, используются. Попробуй их Shelldetals.wdx или ещё чем редактировать, типа, как в проводнике

 

Props-summary-edit.jpg

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

из них только Description вносит данные в деталь.. и появляется как запись пользовательская в файле строчка с именим Description и значение что ввел.

из проводника можно вводить данные и менять все что были в ТС они видны, но у меня вин 7х64 и солид 2014.

Solid_reg.jpg

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

проще будет впереди # , тогда поиск и детект строки сразу .

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

из них только Description вносит данные в деталь

 

Description вноосится на вкладку "Суммарная информация", а остальные в "Общие"

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

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

Это касается и размеров и массы и пути и куда входит и количество.

То есть мне нужны строчки и раздельно все, так же связь с плагином ТС и он зачитывает только в области "настройки", "конфигурации" мне не зачитать пока...

Что у тебя "Общее" я не знаю..

Главное это обратная совместимость я считаю с тем что зачитывает Тотал и Солид или приложения к ниму типа всяких спецификаций.

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

Так что наверно обратно совместим вариант только в раздел "Настройки" который так называется в Солиде.

Так как смена версий солида учитывает наверно это то нужно придерживаться этого.  Иначе после конвертации мы потеряем инфу. Так что стандарт записи данных должен быть как у Солида 2014 .

Jpeg_0004.jpg

Jpeg_0050.jpg

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

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

проще будет впереди # , тогда поиск и детект строки сразу

 

Это недолго, там в коде и сам глянуть можешь. Вот так поменял

 

Где используется-001.jpg

 

Макрос

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

    Dim swApp               As SldWorks.SldWorks
    Dim swModel             As ModelDoc2
    Dim myAsy               As AssemblyDoc
    Dim myCmps              As Variant
    Dim Cfg                 As String
    Dim CmpDoc              As ModelDoc2
    Dim bool                As Boolean
    Dim path                As String
    Dim filename            As String
    Dim swComments          As String
    Dim sCurrentDateTime    As Date
    Dim i                   As Long
    Dim j                   As Integer
    Dim k                   As Integer
    Dim TmpStr              As Variant
    Dim CmprStr             As String
    Dim CmprStrA            As Variant
    Dim CmprStrB            As Variant
    Dim CmprStrRes          As Integer
    Dim swCnfMgr            As SldWorks.ConfigurationManager
    Dim AsyCnf              As SldWorks.Configuration
    Dim swSelMgr            As SldWorks.SelectionMgr
    Dim myCmp               As Component2
    Dim swErrors            As Long
    Dim swWarnings          As Long
'2021/04/27
Option Explicit
   Sub main()
   On Error GoTo swMsg
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swCnfMgr = swModel.ConfigurationManager
    Set AsyCnf = swCnfMgr.ActiveConfiguration
    Set myAsy = swModel
    
    path = swModel.GetPathName
    filename = Mid$(path, InStrRev(path, "\") + 1) ' With extension
    filename = Left$(filename, InStrRev(filename, ".") - 1) ' Remove extension

    myCmps = myAsy.GetComponents(False)
    
    Set myCmp = swSelMgr.GetSelectedObject6(1, -1)
        If myCmp Is Nothing Then
            MsgBox ("Выберите решённые компоненты в дереве сборки и запустите макрос")
            Exit Sub
        End If

For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
         Set myCmp = swSelMgr.GetSelectedObject6(i, -1)
'          Debug.Print "#" & Format(i, "000") & " " & myCmp.Name2 & " - " & myCmp.ReferencedConfiguration & " " & myCmp.ExcludeFromBOM

    If myCmp.GetSuppression <> swComponentSuppressionState_e.swComponentSuppressed And myCmp.ExcludeFromBOM = False Then
      Set CmpDoc = myCmp.GetModelDoc2
      If Not CmpDoc Is Nothing Then
        Cfg = myCmp.ReferencedConfiguration
    End If

        swComments = CmpDoc.SummaryInfo(swSumInfoComment)
        sCurrentDateTime = Now()
        
        If swComments = "" Then
         CmpDoc.SummaryInfo(swSumInfoComment) = "#000" & vbTab & "Дата записи" & vbTab & "Сборка - конфигурация, где используется" & vbTab & _
         "Используемая конфигурация" & vbTab & "Расположение сборки" & vbCrLf & _
         "#" & "001" & vbTab & Format(sCurrentDateTime, "YYYY-MMM-DD HH:MM:SS") & vbTab & _
         filename & " - " & AsyCnf.Name & vbTab & Cfg & vbTab & Left$(path, InStrRev(path, "\"))
        
        swComments = CmpDoc.SummaryInfo(swSumInfoComment)

        Else
        
        CmprStr = filename & " - " & AsyCnf.Name & vbTab & Cfg & vbTab & Left$(path, InStrRev(path, "\"))
        CmprStrA = Split(swComments, vbCrLf, -1)
            For j = 0 To UBound(CmprStrA)
                CmprStrB = Mid$(CmprStrA(j), 27)
                CmprStrRes = StrComp(CmprStr, CmprStrB, vbTextCompare)
                If CmprStrRes = 0 Then GoTo NextPart
            Next j
         TmpStr = Split(swComments, vbCrLf)
         k = UBound(TmpStr) + 1
         CmpDoc.SummaryInfo(swSumInfoComment) = swComments & vbCrLf & _
         "#" & Format(k, "000") & vbTab & Format(sCurrentDateTime, "YYYY-MMM-DD HH:MM:SS") & vbTab & _
         filename & " - " & AsyCnf.Name & vbTab & Cfg & vbTab & Left$(path, InStrRev(path, "\"))
        End If
      End If
NextPart:
Next i
    swModel.ClearSelection2 True
    bool = swModel.Save3(5, swErrors, swWarnings)
Exit Sub

swMsg:
MsgBox "Выберите решённые компоненты в дереве сборки и запустите макрос"

End Sub

 

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

Я понимаю , мне нужно оперировать строчками и их значениями из раздела "Настройка" что касается дискрипшена или сумарной инфы там нет строчик значений.

Коменетс не выведет отдельно мне значения #002 масса  20 кг. например он высыпит все скопом! а скопом не нужно!.

EXEL s2.gif

Я же каждую строчку как в таблицу заносить буду ?

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

называется плагин файловых тописаний.. но они обычно файл создают с ними.

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

FileDiz.wdx есть такой

Плагин "Файловые описания" для Total Commander
----------------------------------------------
Данный content-плагин позволяет отображать файловые описания:

- текстовые описания из Descript.ion/Files.bbs;
- для текстовых файлов: содержимое файла;
- для исполняемых/dll: информация о версии;
- для HTML файлов: содержимое тэгов Title/Meta;
- для URL файлов: файл назначения.

 

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

 Но работать с данными нормально можно только в разделе настройка и с этими строчками и их значениями. С описанием это все так совсем не интнресно.  Просто нужно делать плагин чтоб зачитывал данные без DM ключа. Брагин сдела через макросы программа юзает макрос как он сделал я не знаю технически . можешь брагинкомандер спросить.

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

@Maik812 По сути тебе надо макрос, который будет зачитывать данные из вкладки конфигурация и дублировать их на вкладку Настройка?

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

дублировать их на вкладку Настройка?

Почти..

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

Если будет их много не удобно хочется обьединить в один макрос чтоб прошелся по библиотеке и все прописал во внутрь. Хочется все таки как то как основной макрос думаю можно вставить все это в один.

Такой мощный аналитический макрос, еще не хватает решения пока по тому что тело листовое, профиль или сварная, монолитная или отливка. Хочется это иметь для поиска, удобно видеть деталь сварная или профиль например , найти размер такой же или увидеть одинаковые детали из целого проекта, а потом  можно оптимизировать по размерам или по сортаменту. Кто то делает проект знает как важно закупать как можно меньше сортамента металла? Вы воните а там говорят 10т. привезем бесплатно только за металл оплатите, а вот если у Вас 1-2 тонны разного нет платите за машину 15 тыс рублей, да еще нет такого а есть только такой и берите у других и там тоже самое... Важно сделать не на уровне конечного проектирования при составлении спецификации а в реале прям видеть при проектировании.

 

Идея кстати твоя хорошая такой макрос тоже нужен ! Даже не пришло че то в голову ведь это будет возможность скрещивать данные солида и ТС с любыми конфигурациями.

Проблема только одна,  если ТС  что он пишет без конфигураций все норм, если конфигураций есть то они не доступны. В идеале иметь плагин как брагиновский командер и писать сразу туда и считывать, ведь тогда можно и переносить или копировать проект есть вариант WCX или WFX плагины , архивный. Есть несколько подобный плагин, .

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

Для листового металла этот параметр и так имеется в уравнениях ТОЛЩИНА, который можно по ссылкой втянуть в свойства файла.

Можно как то добавить свойство еще "Тип детали"  и там прописать при наличие в дереве листового метала прописать "Лист 5мм"   в свойства имеется запись как конфигурация еще.

А как "сварную конструкцию" пометить что это сварная из профиля?

 

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

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

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

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

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

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

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

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

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

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

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




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