//Ich habe im Beispiel auf Errorhandling etc. verzichtet um es kürzer zu halten. Point* getPoint(Assemblies::Component* comp, string name){ Point* pnt = 0; Part* part = 0; Features::PointFeature* pf = 0; vector fv; int i; //Part der Komponente ermitteln part = dynamic_cast(comp->Prototype()); //Features ermitteln fv = part->Features()->GetFeatures(); //nach bezeichner suchen for (i = fv.size()-1; i >= 0;--i){ if (!strcmp(name.c_str(),(fv.at(i))->Name().GetLocaleText()) && //Namen prüfen !strcmp("POINT",(fv.at(i))->FeatureType().GetLocaleText())) //Typ prüfen { pf = (dynamic_cast(fv.at(i))); //PunktFeature pnt = dynamic_cast((pf->GetEntities()).at(0)); //Punkt des PunktFeatures //pnt enthält jetzt den Punkt des Parts aber nicht der Komponente } } return pnt; } void foo(){ //Journal-Auszug (den zweiten Befehl möchte ich umgestallten) Assemblies::Component *component1(dynamic_cast(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT BT1 1"))); Point *point1(dynamic_cast(component1->FindObject("PROTO#.Features|POINT(17)|POINT 1"))); //So solls dann aussehen Point* p = getPoint(component1, "MEIN_PUNKT"); //in diesem Fall ist p ungleich point1, da meine Funktion den Punkt des Parts und nicht der Komponente ermittelt. component1->FindObject(pnt->JournalIdentifier()); //Wirft eine Exception, weil es das Objekt nicht findet. Der Journalidentfier ist hier "HANDLE R-44900" //So soll das dann genutzt werden (ist auch aus einem Journal): Features::Feature *nullFeature(NULL); Features::WavePointBuilder *wavePointBuilder; wavePointBuilder = workPart->Features()->CreateWavePointBuilder(nullFeature); SelectPointList *selectPointList; selectPointList = wavePointBuilder->Points(); selectPointList->Add(point1); //Nutzung des Punktes //... }