Code:
public static void start() {
UDFReference refTop = null;
UDFReference refFront = null;
UDFReference refRight = null;
UDFReference refHorizontal = null;
Selection sel = null;
try {
Session curSession = pfcGlobal.GetProESession();
Model part = curSession.GetCurrentModel();
UDFCustomCreateInstructions inst = pfcUDFCreate.UDFCustomCreateInstructions_Create("RING");
inst.SetDependencyType(UDFDependencyType.UDFDEP_DRIVEN);
Solid solid = (Solid) part;
Features datumPlaneFeats = solid.ListFeaturesByType(Boolean.TRUE, FeatureType.FEATTYPE_DATUM_PLANE);
for ( int i = 0; i < datumPlaneFeats.getarraysize(); i++ ) {
DatumPlaneFeat datumPlane = (DatumPlaneFeat) datumPlaneFeats.get(i);
String itemName = datumPlane.GetName();
sel = pfcSelect.CreateModelItemSelection(datumPlane, null);
if (itemName.equals("OBEN")) {
refTop = pfcUDFCreate.UDFReference_Create("OBEN_R", sel);
} else if (itemName.equals("RECHTS")) {
refRight = pfcUDFCreate.UDFReference_Create("RECHTS_R", sel);
} else if (itemName.equals("VORNE")) {
refFront = pfcUDFCreate.UDFReference_Create("VORNE_R", sel);
}
}
Features datumAxisFeats = solid.ListFeaturesByType(Boolean.TRUE, FeatureType.FEATTYPE_DATUM_AXIS);
for ( int i = 0; i < datumAxisFeats.getarraysize(); i++ ) {
DatumAxisFeat datumAxis = (DatumAxisFeat) datumAxisFeats.get(i);
String itemName = datumAxis.GetName();
sel = pfcSelect.CreateModelItemSelection(datumAxis, null);
if (itemName.equals("HORIZONTAL")) {
refHorizontal = pfcUDFCreate.UDFReference_Create("HORIZONTAL_R", sel);
sel.Display();
}
}
sel.Display();
UDFReferences refs = UDFReferences.create();
refs.set(0,refFront);
refs.set(1,refRight);
refs.set(2,refTop);
refs.set(3,refHorizontal);
inst.SetReferences(refs);
// Bis hierher funktioniert alles wunderbar
solid.CreateUDFGroup(inst);
} catch (jxthrowable e) {
e.printStackTrace();
}
}