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

Как получить список деталей в сборке


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

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

 

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

спасибо

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


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

А просто открыть нужную деталь религия не позволяет? К чему такие извращения?

Да и по сути "сборка, состоящая из одной детали"- это не сборка.

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

   :biggrin: А что, кто-то когда-то указывал на неработающий?

 

 

на каждую деталь в сборке нужно создать отдельную конфигурацию, со скрытыми остальными деталями  сборки.

 

Конфигурация детали никак не зависит от видимости компонентов сборки. Вам нужно создавать конфигурации сборки.

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

Очень извиняюсь может сумбурно написал, торопился с работы), еще и знаний пока неочень)

 

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

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

 

Так вот с помощью записи макроса удалось получить код процесса на выделенные детали. а вот перебрать все детали сборки автоматически в VB как то неудается. Может кто подскажет?)

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

Не занимайтесь онанизмом! И не читайте всякую ерунду! А если уж прочитали, то хоть немного подумайте...

 

Чертёж детали - это чертёж детали. Это отдельный файл (ОДИН файл!) чертежа, который привязан к конкретной детали, а не к сборке.

 

И не пытайтесь сделать из Солида Автокад или работать в Солиде, как в Автокаде. НЕЛЬЗЯ! В Солиде надо работать по-другому - так, как это надо делать в СОлиде.

 

Постарайтесь сперва понять как работает Солид, и как надо в нём работать - работать правильно и эффективно. А потом уже занимайтесь макросами.

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

 

Ох уж эти макросописатели)))

http://help.solidworks.com/2012/russian/SolidWorks/sldworks/C_Exploded_Views_in_Multibody_Parts.htm?id=fe39a69b7fcb47648257a82cc3275d35#Pg0&ProductType=&ProductName=

http://help.solidworks.com/2012/russian/SolidWorks/sldworks/c_Exploded_Views_in_Assemblies.htm?id=7f669604f91e4618a7e567a3b6c57213#Pg0

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

Оттуда: ...•Равномерно разместить разнесенные комплекты твердых тел.

Это как,руками что-ли? Типа

Не занимайтесь онанизмом!

Изменено пользователем zloyuri
Ссылка на сообщение
Поделиться на других сайтах
Это как,руками что-ли?
 мышку можно двигать любой частью тела. На кнопку не любой нажмёшь  :biggrin:
Ссылка на сообщение
Поделиться на других сайтах

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

 

А вот когда проявляешь креатив вроде веселее становится).

вот тут код обращается к детали

boolstatus = Part.Extension.SelectByID2("Шайба 6402-10@NRDEZ00006", "COMPONENT", 0, 0, 0, True, 0, Nothing, 0)

 

хотелось бы вместо Шайбы подставить переменную, а как загнать список в массив незнаю(.

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

мышку можно двигать любой частью тела. На кнопку не любой нажмёшь  :biggrin:

О том разговор: тему можно переносить.
Ссылка на сообщение
Поделиться на других сайтах
Да про список деталей)

 

http://help.solidworks.com/2012/English/api/sldworksapi/traverse_assembly_at_component_level_example_vb.htm

 

http://help.solidworks.com/2012/English/Api/sldworksapi/Traverse_FeatureManager_Design_Tree_VB.htm

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

 

Так делать нельзя.. Вот как надо:

 

1. Открыть модель детали.

2. Меню Файл->Создать чертеж из детали..

Ну или то же самое, но программно..

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

 

Так делать нельзя.. Вот как надо:

 

1. Открыть модель детали.

2. Меню Файл->Создать чертеж из детали..

Ну или то же самое, но программно..

 

Если просто наоткрывать все детали входяцие в сборку по отдельности  тогда они потеряют свою ориентацию в сборке и это будет просто хаотичный набор деталей

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

@K_SW, Вы можете объяснить ЧТО Вы хотите получить в результате?

Вы хотите получить чертежи всех деталей на одном листе? Это неправильно. Вам объяснили как делать правильно.

Вы хотите получить сборку в разнесённом состоянии? Вам объяснили как делать правильно.

Или есть ещё какие-то задачи, которые не понятны никому, кроме Вас?

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

Ок вопрос всетаки простой.

Есть сборка с деталями

47da441a1afb.jpg

 

Нужно получить массив PART(i) со списком типа

 

PART(1) = hvac duct end-1

PART(2) = hvac duct end-2

PART(3) = hvac duct end-3

 

PART(6) = HVAC Ducting1

 

итд

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

Ок вопрос всетаки простой.

Есть сборка с деталями

47da441a1afb.jpg

 

Нужно получить массив PART(i) со списком типа

 

PART(1) = hvac duct end-1

PART(2) = hvac duct end-2

PART(3) = hvac duct end-3

 

PART(6) = HVAC Ducting1

 

итд

API SW. Один из вариантов. Пройтись по дереву сборки.

 

private void FindTreeItem()
{
    SldWorks swApp = GetSolidWorks(false); //
    if (swApp == null)
        return;
    IModelDoc2 swModel = swApp.IActiveDoc2;
    if (swModel.GetType() != (int)swDocumentTypes_e.swDocASSEMBLY)
        return;

    IFeatureManager swFeatureMgr = swModel.FeatureManager;
    ITreeControlItem swTreeCtrItemRoot = swFeatureMgr.GetFeatureTreeRootItem();

    ITreeControlItem swTreeCtrItem = swTreeCtrItemRoot.GetFirstChild();

    List<string> listName = new List<string>(); // список имен компонентов
    while (swTreeCtrItem != null)
    {
        int objType = swTreeCtrItem.ObjectType;
        
        if (objType != (int)swTreeControlItemType_e.swFeatureManagerItem_Component)
        {
            swTreeCtrItem = swTreeCtrItem.GetNext();                        
            continue;
        }

        // ********* вариант с компонентом ==============================
        IComponent2 swComponent = swTreeCtrItem.Object as IComponent2;
        if (swComponent == null)
        {
            swTreeCtrItem = swTreeCtrItem.GetNext();
            continue;
        }

        string nameComponent = swComponent.Name2;
        listName.Add(nameComponent);


        swTreeCtrItem = swTreeCtrItem.GetNext();
    }
}
Ссылка на сообщение
Поделиться на других сайтах

спасибо всем запомощь)

дело движется но есть вопросики

 

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

      For Each vChildComp1 In vChildCompArr1
        Set swChildComp1 = vChildComp1
    
    swChildComp1.Visible = swComponentVisible
    
    For Each vChildComp In vChildCompArr
        Set swChildComp = vChildComp
   
     

        If swChildComp.Name2 <> swChildComp1.Name2 Then
            swChildComp.Visible = swComponentHidden
        End If
      

    Next

 bRet = swModel.AddConfiguration2(swChildComp1.Name2, "", "", False, False, False, True, 256)

'   TraverseComponent swRootComp, 1
  Next
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




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