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

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

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

Можно попробовать запись через Пуск-...-Solidworks####-Инструменты Solidworks - Solidworks RX и там Запись ошибки.

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

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

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


Подскажите пожалуйста. Мне необходимо сохранить твердые тела как детали , плюс сборка к ним. В справке нашел вот это http://help.solidworks.com/2017/english/api/sldworksapi/Create_Split-body_Feature_Example_VB.htm

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

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swFeat As SldWorks.Feature
Dim swFeatMgr As SldWorks.FeatureManager
Dim swSplitBodyFeat As SldWorks.SplitBodyFeatureData
Dim boolstatus As Boolean
'Dim BodyFolder As String

Sub main()
    
    Dim vBodiesToMark As Variant
    Dim vBodyNames As Variant
    Dim vBodyOrigins As Variant
    
    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    Set swSelMgr = swModel.SelectionManager
    Set swFeatMgr = swModel.FeatureManager
    Set swModelDocExt = swModel.Extension
  
    
    fileName = swModel.GetPathName
    num = InStrRev(fileName, "\", Len(fileName)) '
    Folder = Mid(fileName, 1, num - 1) '

Set swFeat = swModel.FirstFeature
Do While Not swFeat Is Nothing
        Debug.Print swFeat.GetTypeName
        If swFeat.GetTypeName = "SolidBodyFolder" Then
            Exit Do
         End If
    Set swFeat = swFeat.GetNextFeature
Loop

Set BodyFolder = swFeat.GetSpecificFeature2
    BodyFolderTypeE = BodyFolder.Type '2
    BodyCount = BodyFolder.GetBodyCount
    vBodies = BodyFolder.GetBodies 'тела
    
ReDim bodyNames(UBound(vBodies)) As String
ReDim bodyOrigins(UBound(vBodies)) As Object

For i = LBound(vBodies) To UBound(vBodies)
        bodyNames(i) = Folder & "\" & vBodies(i).Name & ".sldprt"
        Set bodyOrigins(i) = Nothing
Next
    vBodiesToMark = vBodies
    vBodyNames = bodyNames
    vBodyOrigins = bodyOrigins

    Set swFeat = swFeatMgr.PostSplitBody((vBodiesToMark), True, (vBodyOrigins), (bodyNames))
End Sub

Разделения не происходит. Может метод не тот?

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

не совсем то что надо

что-то типа этого:

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

Option Compare Text
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim swFeatMgr As SldWorks.FeatureManager
Dim swBodyFolder As SldWorks.BodyFolder
Dim i As Long
Dim nummer As String
Dim count As Integer
Dim bret As Boolean
Dim iets As IFeature
Dim v1 As Variant
Dim myBodies() As Body2
Dim nB As Integer
Dim fileName() As String
 

Sub GetVariantOfBody(swFeature As SldWorks.Feature, bodyList As Variant)
    Dim tt As Variant
    bodyList = Empty
    Set swBodyFolder = swFeature.GetSpecificFeature2
    count = swBodyFolder.GetBodyCount
    If (count < 1) Then
        'MsgBox ("There are no bodies. Please create a body.")
    Else
        bodyList = swBodyFolder.GetBodies
    End If
End Sub

 Sub main()
 Dim subFeat As Feature
 
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swFeat = swModel.FirstFeature
    Set swFeatMgr = swModel.FeatureManager
 
    a = 0
 
    nB = -1
    Do While Not swFeat Is Nothing
        Dim Name As String
        Name = swFeat.GetTypeName2
        If (Name = "SolidBodyFolder") Then
            Set subFeat = swFeat.GetFirstSubFeature
            While Not subFeat Is Nothing
                Name = subFeat.GetTypeName2
                If (Name = "CutListFolder") Then
                    GetVariantOfBody subFeat, v1
                    If IsEmpty(v1) = False Then
                        nB = nB + 1
                        ReDim Preserve myBodies(nB)
                        Set myBodies(nB) = v1(0)
                    End If
                End If
                Set subFeat = subFeat.GetNextSubFeature
            Wend
            Exit Do
        End If
        Set swFeat = swFeat.GetNextFeature
    Loop

    v1 = myBodies
    count = UBound(v1)

    ReDim fileName(0 To count)
    Dim vFileName As Variant
    Dim myTitle As String
   
    myTitle = Replace(swModel.GetTitle, ".sldprt", "")

    For i = 1 To count + 1
        naam = Left(myTitle, Len(myTitle) - 2) & Format(i, "00")
        fileName(i - 1) = "C:\temp\" & naam & ".SLDPRT"
    Next

    vFileName = fileName
   
    Set swFeat = swFeatMgr.CreateSaveBodyFeature((myBodies), vFileName, "C:\temp\" & myTitle & ".SLDASM", False, False)

End Sub

 

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

 

Отлично. Спасибо за наводку.

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

    Set swFeat = swFeatMgr.CreateSaveBodyFeature((myBodies), vFileName, "C:\temp\" & myTitle & ".SLDASM", False, False)

А как на счет визуальных параметров?

 Propagate visual properties - в русской локализации "распространить свойства видимости"

 

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

Да. Я тоже обратил внимание. Думал может дополнительно существует команда.

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

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

Set myDisplayDim = Part.AddDimension2(x1 , y1 , 0)

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

@Sla_68

IDisplayDimension^dimВ = (IDisplayDimension^)detal->AddDimension2(0.1,0.1,0.1);
IDimension^ cDimВ = dimВ->IGetDimension();
cDimВ->DrivenState = (int)swDimensionDrivenState_e::swDimensionDriven;//установили управляемым!!!!

управляемость определяется параметром размера.

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

Добрый вечер. Возник вопрос следующий. Можно ли использовать самописные функции для использования их в уравнениях solidworks?

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

Здравствуйте дорогие форумчане.

Чем больше изучаю solid тем больше поражаюсь глубиной и качеством проработки данной замечательной программы.  Сегодня работал с методом "GetIntersectionEdges". Сам по началу не заметил как данный метод создал дополнительные плоскости и края на телах. И вот в чем загвоздка. После того как макрос отработал, края и плоскости остались. а также документ можно сохранить в таком виде.(Я  то думал что данные края образуются временно в памяти) Получается что существует метод ручного разделения а также удаления таких краев.  А теперь вопрос. как можно идентифицировать данный край и удалить его?

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

Нет ли у кого для примера макроса сохраняющего спецификацию (вставленную на модель или в чертеж) в формат ексель?

Нужно для создания перечней всяких-разных деталюшек.

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

Нет ли у кого для примера макроса сохраняющего спецификацию (вставленную на модель или в чертеж) в формат ексель?

Нужно для создания перечней всяких-разных деталюшек.

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

var featCount = swActiveDoc.GetFeatureCount(); // количество фич в дереве
BomFeature bomFeature = null;
            // пробегаемся по всему дереву сборки, через фичи
            for (var i = 0; i < featCount; i++)
            {
                Feature folderFeature = swActiveDoc.FeatureByPositionReverse(featCount - i);

                // папка с таблицами
                if (folderFeature != null && folderFeature.GetTypeName2() == "TableFolder")
                {
                    var tableFeature = folderFeature.GetFirstSubFeature();
                    if (tableFeature != null)
                    {
                        bomFeature = tableFeature.GetSpecificFeature2();
                        break;
                    }
                }
            }

А потом пробежаться по  bomFeature:

TableAnnotation swTable = bomFetures.GetTableAnnotations()[0];
            var swBomTable = (BomTableAnnotation)swTable;

            var nNumRow = swTable.RowCount; // количество строчек в таблице
            var configurationName = HelperConfiguration.GetConfigurationNameFromModel(_swActiveDoc); // необходимая конфигурация

            for (var j = 0; j <= nNumRow - 1; j++)
            {
                string itemNumber;
                string partName;

                swBomTable.GetComponentsCount2(j, configurationName, out itemNumber, out partName);
                var components = (object[])swBomTable.GetComponents2(j, configurationName);
                if (components != null && components.Length > 0)
                {
                    foreach (var component in components)
                    {

                        var swComp = (IComponent2)component;
 						// ну и делаем что хотим.......

Ну может немного коряво, но вполне работает... 

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

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

 

59d1eecf9a846_swasexcel.JPG.516c9f0e085d67483f6815288fb1ffad.JPG

ExportBOM_AsExcel.swp

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

А можно ли через API обрабатывать данные визуализации?

При использовании совмещенной спецификации в графе количество нет полного количества повторяющихся деталей в повторяющихся сборках, а при использовании визуализации и сохранении в совмещенном виде полное количество повторяющихся деталей есть. Как подцепиться к визуализации найти не могу. Подскажите пожалуйста, в какую сторону копать? Запись макросов и журнал не помогают, работа с визуализацией - в коде пустое место.

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

нет полного количества повторяющихся деталей

а здесь галка есть?

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

detailedbom.JPG.ededcb80e0e35e12310b7300fc7c1ca4.JPG

 

Ссылка на сообщение
Поделиться на других сайтах
В 04.10.2017 в 13:28, Kir95 сказал:

а здесь галка есть?

у меня SW2017, тут такой галки вообще нет

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

 

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

тут такой галки вообще нет

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

 

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

59dcf16c9cd41_.JPG.7051cabd6b3ff89dab63da9c2a3c1384.JPG

 

59dcf2e09dc40_.JPG.f81c215d3c65c99522e46564548affc9.JPG

 

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

Да, эта галка только для многотельных сварных конструкций

Собственно, вопрос мой был не в этом. Суть - получить полный перечень каких либо деталей из общей сборки.

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

сборки 01 000 допустим 5 штук и количество входящих в нее деталей 01 001 по 1 шт, что некорректно

к полному количеству детали 01 001 во всей сборке.

А визуализация выдает сборок 01 000 - 5 штук, деталей 01 001 - 5 штук.

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

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

Вот и вопрос: можно ли с визуализацией работать через АПИ, чтобы исключить одинаковые операции ручками из своей работы?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      а вот тут все уже расписано  
    • MagicNight
      Да дело не в бедности, ищу оптимальный ноут, пока не могу найти.
    • Bot
      АСКОН объявляет о старте открытого бета-тестирования новой версии КОМПАС-3D и приложений. Коммерческая версия КОМПАС-3D v23 выйдет летом 2024 года, но уже сейчас испытать новинки может любой желающий. Бета-тестирование — это проверка новой функциональности в «полевых» условиях, когда пользователи знакомятся с нововведениями на собственных проектах и сценариях работы, а также проверяют совместимость со своим программно-аппаратным обеспечением. Новая версия создавалась в соответствии с дорожной картой АСКОН для задач проектирования изделий высокотехнологичных отраслей и стала еще более функциональной и производительной. При разработке учитывались предложения пользователей по темам трехмерного моделирования, подготовки чертежей и спецификаций, приложений для машиностроения, приборостроения и строительства. Бета-версия КОМПАС-3D открыта для всех. Дистрибутив предоставляется бесплатно на время проведения тестирования. *** Период проведения бета-тестирования: с 6 [...] View the full article
    • fenics555
      Уважаемые Дамы и Господа!  Есть библиотечные изделия, которые почему-то очень доооооолго грузятся в сборках. Я хочу попросить Вас потестить их и сказать в чем причина, ибо совсем невозможно работать. gost18829-73.prt.1 pin_split.prt.1 Как это всё можно ускорить?
    • gudstartup
      а вы хоть станок проверяли по программе на изделии на точность прежде чем товарищей этих выгнать? если нет то грешите на самих себя! система в наших краях еще не распространенная поэтому и тем тут нет надо в поднебесную писать
    • AlexArt
      Ну допустим, ты и на другом ресурсе это опубликовал. А не коммуниздил. Но вот продвигать воровство от государства, ворующее из Вики, это верх мерзости.
    • maxx2000
      Ах, да. Фильтры выбора добавили. Теперь можно выбрать только то что видно на первом плане, а не вместе с тем что с обратной стороны детали. В общем надо обновляться. Как раз работёнка на прессформу нарисовалась 
    • maxx2000
      Причина того - Кроилово. Кроилово всегда приводит к попадалову. Месяц простоял сколько мильонов деревянных потеряли? Вопрос риторический. И ещё будет стоять. Как памятник человеческой глупости и жадности.
    • AlexKaz
      "9 июля 1968 года на мышах был проведен самый знаменитый эксперимент американского ученого-этолога Джона Кэлхуна «Вселенная-25». Суть опыта заключалась в создании идеальных условий, где мыши могли бы жить и размножаться, не ведая никаких забот, вдали от хищников и в отсутствие эпидемий и заболеваний. Для этих целей ученый построил специальный загон, куда были помещены четыре пары белых мышей (самцов и самок). В распоряжении мышей всегда была чистая вода и еда в изобилии, специальные гнезда, где можно обустроить себе жилище ― гнезд в загоне хватало для проживания нескольких тысяч мышей. Температура в загоне в среднем составляла около 20 ℃ и была комфортной для мышей. Животные не подвергались никаким влияниям извне и жили в идеальных условиях в свое удовольствие. А дальше началось самое интересное. На первом этапе эксперимента мыши хорошо размножались, вели активный образ жизни, охотно играли. На следующей фазе эксперимента мыши стали есть меньше, перестали наедаться до отвала. На третьей фазе эксперимента, когда в загоне были уже сотни мышей, произошло распределение социальных ролей, стала ярко выраженной иерархия, клановость. Появились так называемые отверженные ― молодые особи, которых другие, взрослые мыши сгоняли в центр загона, не давали им вести нормальный образ жизни, причиняли физический вред. В природе такое, наверное, было бы невозможно, ведь эти мыши-агрессоры просто не дожили бы до старости: их бы съели хищники. Но в загоне Кэлхуна хищников не было, и взрослые мыши начали попросту издеваться над молодняком. Образовались две большие группировки: самцы-одиночки и самки-одиночки. При этом самки-одиночки отказывались спариваться <с менее статусными многочисленными молодыми самцами и с оставшимися старыми статусными> и отвергали ухаживания самцов. У мышей стал проявляться тотальный индивидуализм, мыши не стремились создать семью. На последней, четвертой стадии мышиная популяция стала сокращаться. Появились самцы, которых сам Кэлхун назвал «красивыми» (англ. beautiful ones), из-за отсутствия ран и рубцов. <В оригинале: They never engaged in sexual approaches toward females, and they never engaged in fighting, and so they had no wound or scar tissue. Thus their pelage remained in excellent condition. - Дословный перевод: Они никогда не прибегали к сексуальным подходам к самкам, и они никогда не участвовали в боях, и поэтому у них не было ран или рубцовой ткани. Таким образом, их шерсть сохранилась в отличном состоянии.> Эти мыши не вступали в борьбу за самок и территорию, не проявляли активности к размножению и только питались, спали и чистили шёрстку. У мышей стали проявляться различные формы девиантного поведения, вспышки агрессии. Самки стали проявлять агрессию, защищать себя сами, стали умерщвлять своих детенышей, а затем окончательно отказались размножаться. На пике эксперимента в загоне одновременно проживало чуть более двух тыс. мышей. Еды и гнезд было достаточно для дальнейшего роста популяции, но через четыре года после начала эксперимента Кэлхун остановил свой опыт, потому что в загоне осталось чуть более сотни мышей, и все они уже вышли из репродуктивного возраста. По итогам эксперимента Кэлхун пришел к выводу, что достижение определенной плотности населения и заполнение социальных ролей в популяции приводит к распаду общества" https://physicsoflife.pl/dict/pic/calhoun/calhoun.. https://scientificrussia.ru/articles/utopiya-dlya-mys.. https://ru.wikipedia.org/wiki/Кэлхун,_Джон_(этолог)
    • gudstartup
      @Koels вот в чем дело пока ds609 это предупреждение поэтому F может и не появится если sv601 это значит ошибка. возможно при нагреве радиатора серво определяет это как предупреждение или ваш вентилятор крутиться медленнее чем оригинальный и серва думает что он встал хотяпри этом обычно на экране в строке состояния FAN.мигает больше у меня вариантов нет....  
×
×
  • Создать...