Вставка детали в сборку в макросе 3DEXPERIENCE

Есть ли у кого-нибудь опыт вставки детали в сборку в Catia 3DEXPERIENCE? Независимо от того, какой язык используется. Я просто ищу зацепку.

У меня нет проблем с поиском или открытием детали из базы данных, но мне нужно знать, как вставить этот объект в уже открытый продукт.

Буду рад любому ответу или подсказке.

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

    public DatabaseSearch SearchItemInDB(string searchString)
    {
        SearchService oSearchService = (SearchService)CATIA.GetSessionService("Search");

        DatabaseSearch oDatabaseSearch = oSearchService.DatabaseSearch;
        oDatabaseSearch.set_BaseType("VPMReference");
        oDatabaseSearch.AddEasyCriteria("V_Name", searchString);

        oSearchService.Search();

        return oDatabaseSearch;
    }

Заранее спасибо.

Иржи


person Jiří Mancl    schedule 20.10.2020    source источник
comment
Я также был бы рад связаться или порекомендовать кого-то, кто имеет некоторый опыт программирования макросов в Catia 3DEXPERIENCE.   -  person Jiří Mancl    schedule 20.10.2020
comment
Вам может быть трудно получить помощь с этим здесь. Вместо этого попробуйте здесь, пока ждете ответа: cadtutor.net/forum /search/?q=catia&quick=1   -  person braX    schedule 20.10.2020
comment
@braX большое спасибо за совет. я попробую   -  person Jiří Mancl    schedule 20.10.2020
comment
@braX Я пробовал, и ничего полезного. Этот форум в основном для AutoCad. Но спасибо   -  person Jiří Mancl    schedule 20.10.2020
comment
Ну вот еще один возможный ресурс - по крайней мере здесь вы можете спросить о том, куда вы можете направить свои вопросы: facebook.com/shaakzscatiav5forum   -  person braX    schedule 20.10.2020
comment
@braX К сожалению, я нашел массу информации о макросах для Catia V5, но веб-сайта о макросах Catia 3DEXPERIENCE нет. Эта группа FB тоже посвящена V5. Но между сценариями V5 и 3DEXP слишком много различий, особенно в области сборок и самого документа. Основное отличие состоит в том, что 3DEXPERIENCE является платформой на основе базы данных.   -  person Jiří Mancl    schedule 20.10.2020
comment
Что ж, именно поэтому я рекомендовал вам спросить у людей, где можно задать ваши вопросы, относящиеся к этому. Я имею в виду, что можно спросить здесь, но, к сожалению, вы не обнаружите, что многие люди здесь имеют какой-либо опыт в чем-то столь конкретном.   -  person braX    schedule 20.10.2020


Ответы (2)


Попробуйте что-то вроде этого в VB:

Public Function CopyPaste(ByRef MyInObj As AnyObject, ByRef MyOutObj As AnyObject)

    Dim MaSel As INFITF.Selection = CATIA.ActiveEditor.Selection

    '********************
    '* Copy file *
    '********************
     MaSel = CATIA.ActiveEditor.Selection
     MaSel.Clear()
     MaSel.Add(MyInObj)
     MaSel.Copy() 


    '**************
    '* paste file *
    '**************
    MaSel = CATIA.ActiveEditor.Selection
    MaSel.Clear()
    MaSel.Add(MyOutObj)
    MaSel.Paste()


End Sub

Будьте осторожны: нет ошибок

person Rydrake    schedule 21.10.2020
comment
Спасибо за ваш совет. Это не совсем то, что я хотел бы сделать. Да, я могу просто скопировать, но я хочу вставить деталь в сборку сразу после того, как этот элемент будет найден, например, таким способом: - person Jiří Mancl; 23.10.2020

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

        private Editor OpenProductAndGetEditor(DatabaseSearch oDBSearch)
    {
        PLMEntities cPLMEntititiesFound = oDBSearch.Results;

        if (cPLMEntititiesFound.Count > 0 && cPLMEntititiesFound.Count < 2)
        {
            oPLMEntityFound = cPLMEntititiesFound.Item(1);
            
            PLMOpenService oPLMOpenService = (PLMOpenService)CATIA.GetSessionService("PLMOpenService");


            oPLMOpenService.PLMOpen(oPLMEntityFound, out oFoundEditor);

            model.InfoAboutSearching = "Object found: " + oPLMEntityFound.get_Name();
            BItemFound = true;

        }
        return oFoundEditor;
    }

    private void CopyOpenedPart(Editor oEditor)
    {
        PLMProductService oProductService = (PLMProductService)oEditor.GetService("PLMProductService");

        VPMRootOccurrence oCompRootOccur = oProductService.RootOccurrence;

        Selection tempSel = oEditor.Selection;

        tempSel.Clear();
        tempSel.Add(oCompRootOccur);
        tempSel.Copy();
        tempSel.Clear();

        Window oCurrentWindow = CATIA.Windows.Item(2);

        oSel.Add(oVPMOccurSwitchboard);
        oSel.Paste();
        oSel.Clear();

        oCurrentWindow.Close();

    }

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

Спасибо

person Jiří Mancl    schedule 06.11.2020