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

#c# #vb.net #catia

#c# #vb.net #catia

Вопрос:

У кого-нибудь есть опыт вставки детали в сборку в 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;
    }
  

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

Иржи

Комментарии:

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

2. Вам может быть трудно получить помощь с этим здесь. Вместо этого, возможно, попробуйте здесь, пока вы ждете ответа: cadtutor.net/forum/search /? q = catiaamp;quick =1

3. @braX большое спасибо за ваш совет. Я попробую

4. @braX Я пробовал, и ничего полезного. Этот форум в основном предназначен для AutoCAD. Но спасибо

5. Ну, вот еще один возможный ресурс — по крайней мере, здесь вы можете спросить о том, куда вы можете направить свои вопросы: facebook.com/shaakzscatiav5forum

Ответ №1:

Попробуйте что-то подобное в 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
  

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

Комментарии:

1. Спасибо за ваш совет. Это не совсем то, что я хотел бы сделать. Да, я могу просто скопировать, но я хочу вставить деталь в сборку сразу после того, как этот элемент будет найден, например, с помощью такого метода:

Ответ №2:

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

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

        if (cPLMEntititiesFound.Count > 0 amp;amp; 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();

    }
  

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

Спасибо