在 3DEXPERIENCE 宏中将零件插入装配体

Insert part to assembly in 3DEXPERIENCE macro

有人有在 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;
    }

提前致谢。

智日

在 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

注意:没有任何错误提示

我非常感谢为本次讨论做出贡献的人们所付出的努力。 我得出的结论是无法直接从数据库搜索中将项目插入程序集,我通过简单地从另一个编辑器复制项目来做到这一点。

        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();

    }

如果有人知道这个问题的解决方案,我会很乐意与我联系。

谢谢