Hallo und guten Morgen :-)
Ich hab mal wieder ein kleines Problem, bei dem ich ein bisschen Rat suche.
Der Kunde hat sein CATIA auf V5R19 umgestellt und eine Funktion bei mir funktioniert nun komischerweise nicht mehr.
Es geht dabei um die Selection.Search() - Funktion. Wie im angefügten Bild ersichtlich, habe ich eine Gruppe mit Parametern, die der Konstrukteur ausfüllen muss. In der Gruppe sind noch versteckte Parameter vorhanden, die über Reactions andere Parameter befüllen, sichtbar und/oder unsichtbar machen - je nach Eingabe.
Diese ausgefüllten Parameter werden dann von mir abgefragt, in einer Datenbank abgelegt und dann an ein ERP-System für Materialbestellungen und andere Aktionen weitergegeben. Dort werden dann Artikelnummern vergeben, die ich dann wieder in das Dokument einfügen muss.
Das ganze Dingens tut auch wunderbar unter R16, aber in der R19 funktioniert der letzte Punkt nicht mehr.
Der letzte Punkt ist prinzipiell nur eine Suche nach einem Parameternamen, der bei einem Ergebnis dann entsprechend befüllt wird.
Seltsamerweise funktioniert das ganze, wenn ich für die "Attribute Bauteil"-Gruppe einen "Expand Group" durchführe. Das will der Kunde aber nicht dauerhaft sichtbar haben, um Fehleingaben in falschen Parametern zu vermeiden.
Kundensystem: V5R19 SP3
Codebasis: NET 2.0/ c#
Hat jemand dieses Problem auch schon gehabt und wenn ja, wie konnte das gelöst werden?
Gruss,
Helmut
Code:
KnowledgewareTypeLib.Parameter oSetParam = SearchParameters(
oPart,
"H_#ERP_Artikel-Nr.");
if (oSetParam == null)
{
Debug.WriteLine(
">> CATIAUpdateData::Kein Parameter für Artikelnummer " +
"gefunden, kein Update durchgeführt.");
return;
} string sParamValue = oSetParam.ValueAsString();
Der Code für die SearchParameter-Funktion ist wie folgt:
Code:
private KnowledgewareTypeLib.Parameter SearchParameters(
ProductStructureTypeLib.Product oProduct,
string sParameterName)
{
try
{
string sProductName = oProduct.get_Name();
string sSearchProduct = "Name='" + sProductName + "';all"; // Zuerst den Part oder Product suchen
Debug.WriteLine(">> Suche nach Parametern, Filter = " + sParameterName);
INFITF.Selection oSelection = oCATIA.ActiveDocument.Selection;
oSelection.Clear();
oSelection.Search(ref sSearchProduct);
if (oSelection.Count2 > 0)
{
// dann den Parameter im Ergebnis holen
string sFilter = "Name='" + sParameterName + "';sel";
oSelection.Search(ref sFilter);
if (oSelection.Count2 > 0)
{
KnowledgewareTypeLib.Parameter oParam;
// nur das Erste Ergebnis ist relevant, da Parameter in PART eindeutig ist
INFITF.SelectedElement oSelEl = oSelection.Item2(1);
oParam = (KnowledgewareTypeLib.Parameter)oSelEl.Value;
oSelection.Clear();
return(oParam);
}
else
{
Debug.WriteLine(
">> SearchParameters::Parameter " + sParameterName +
" nicht gefunden!");
}
}
else
Debug.WriteLine(
">> SearchParameters::Produkt " + sProductName + " nicht gefunden!");
oSelection.Clear();
return (null);
}
catch (Exception ex)
{
Debug.WriteLine(">> SearchParameters::Fehler:" + ex.Message);
return (null);
}
}
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP