CATIA C#选择搜索

时间:2018-02-07 21:51:48

标签: c# .net catia

我想在CATIA中搜索树,并使用C#返回树中部件的名称。我目前的代码如下:

    private void Search(object sender, EventArgs e)
    {
        string searchName = OriginalBox.Text;
        string name;
        INFITF.SelectedElement part;

        //CATIA.StartCommand("Search");
        try
        {
            Sel.Search("Name=" + searchName + "*, all");

            for (int i = 1; i <= Sel.Count; i++)
            {
                part = Sel.Item(i);
                name = part.get_Name();

                MessageBox.Show(i.ToString() + " : " + name);
            }
        }
        catch (IOException ex)
        {
            if (ex.Source != null)
                MessageBox.Show(ex.Source);
            throw;

        }
    }

MessageBox显示&#34; CATIASelectedElement45&#34;。我收到消息&#34; ERROR HRESULT E_FAIL已从调用COM组件返回。&#34;将Sel.Item(i)分配给part时。

如何使用Selection.Search?

访问零件名称

3 个答案:

答案 0 :(得分:0)

Sel.Search("Name=" + searchName + "*, all");上您正在搜索包含名称的任何对象,如果您只想搜索Part,则应使用类型搜索:

Sel.Search("(((((('Product Structure'.Part + FreeStyle.Part) + 'Assembly Design'.Part) + 'Part Design'.Part) + 'Generative Shape Design'.Part) + 'Functional Molded Part'.Part) + 'Process Applications'.Part);all");
//To get any search string, use search on Catia and copy it from there.

另外,要从For中的选择中获取真实值,请使用此选项:

Sel.Item(i).Value; // Object retrieved from selection
name = ((INFITF.AnyObject) Sel.Item(i).Value).get_Name(); // Object Name

请注意,SelectedElement类只是将所有类型的对象抽象为选择的中间类。它包含一些有时可能有用的属性和方法,例如ReferenceLeafProduct

答案 1 :(得分:0)

你可以试试这个:

 Sel.Search ("Name=" + searchName + "* & CATPrtSearch,all");
 for (int i = 1; i <= Sel.Count; i++)
 {
     MECMOD.Part selectedPart;
     selectedPart = Sel.Item(i).Value;
     name = selectedPart.get_Name();

     MessageBox.Show(i.ToString() + " : " + name);
 }

您是如何从CATIA for C#访问库文件的?

我正在使用CATIA VBA并且我一直试图这么做很长时间,如果你分享了如何为C#访问CATIA库的信息,那将非常有帮助

答案 2 :(得分:0)

然后,我认为不是使用选择搜索,而是循环使用特定类型的功能,如Bodies,Hybridbodies,Shapes等等。

在循环浏览时,您可以将项目名称值与字符串值进行比较并存储它。 像这样:

onGoogleImageSelect(uid){
   console.log(uid)
 }