【问题标题】:Insert part to assembly in 3DEXPERIENCE macro在 3DEXPERIENCE 宏中将零件插入装配体
【发布时间】:2020-10-20 06:24:57
【问题描述】:

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

提前致谢。

吉日

【问题讨论】:

  • 我也很乐意联系或推荐给在 Catia 3DEXPERIENCE 中具有宏编程经验的人。
  • 您可能会发现在这里很难获得帮助。相反,也许在等待答案时在这里尝试:cadtutor.net/forum/search/?q=catia&quick=1
  • @braX 非常感谢您的建议。我试试看
  • @braX 我试过了,没什么用。这个论坛主要针对 AutoCad。不过谢谢
  • 这是另一个可能的资源 - 至少在这里您可以询问您可以在哪里提出问题:facebook.com/shaakzscatiav5forum

标签: c# vb.net catia


【解决方案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

小心:没有任何错误提示

【讨论】:

  • 感谢您的建议。这不是我想要做的。是的,我可以简单地复制,但我想在找到此项目后立即将零件插入到组件中,例如使用如下方法:
【解决方案2】:

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

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

    }

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

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多