#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();
}
если кто-нибудь знает решение этой темы, я буду рад связаться со мной.
Спасибо