我想在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?
访问零件名称答案 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
类只是将所有类型的对象抽象为选择的中间类。它包含一些有时可能有用的属性和方法,例如Reference
和LeafProduct
。
答案 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)
}