Dealing with Manufacturing process plan
How do you create relation between manufacturing objects ?
Important steps are
1)Open context
2)Create Relation
2)Save BOM Window
3)Close Context
Open Context
/*------ Create Relation Left=MEProcessRevision Right=Operation --------*/
How do you create relation between manufacturing objects ?
Important steps are
1)Open context
2)Create Relation
2)Save BOM Window
3)Close Context
Open Context
com.teamcenter.services.strong.manufacturing.DataManagementService dataManagementService
= com.teamcenter.services.strong.manufacturing.DataManagementService.getService( connection );
//Get Plant Model object
ModelObject mdlPlantobbj=getModelObjectsFromUIDs(new String[]{"yUWhDLC_Y95QJC"},connection)[0];
OpenContextInput[] openContextInps = new OpenContextInput[1];
openContextInps[0] = new OpenContextInput();
openContextInps[0].object = getModelObjectsFromUIDs( new String[]{ "S8chkjqvY95QJC" }, connection )[0];
openContextInps[0].openAssociatedContexts = true; //This will open all context i.e if user has associated/linked something to Process then that will open in their respective context
openContextInps[0].openViews = true;
openContextInps[0].contextSettings = new CreateInput();
OpenContextsResponse openContexts = dataManagementService.openContexts( openContextInps );
OpenContextInfo openContextInfo = openContexts.output[0].contexts[0]; //Process context
ModelObject topLine = openContextInfo.context; //Process Top line
OpenContextInfo openContextInfo1 = openContexts.output[0].contexts[2];//WorkArea context
ModelObject factorytopline=openContextInfo1.context;
/*------ Create Relation Left=MEProcessRevision Right=MEWorkArea -> plant --------*///Get Plant Model object
ModelObject mdlPlantobbj=getModelObjectsFromUIDs(new String[]{"yUWhDLC_Y95QJC"},connection)[0];
com.teamcenter.services.strong.manufacturing.DataManagementService dataManagementService
= com.teamcenter.services.strong.manufacturing.DataManagementService.getService( connection );
ConnectObjectsInputData[] connectinfor = new ConnectObjectsInputData[1];
connectinfor[0] = new ConnectObjectsInputData();
connectinfor[0].targetObjects = new ModelObject[]{ leftObject };
SourceInfo sourceInfoobj=new SourceInfo() ;
sourceInfoobj.sourceObjects=new ModelObject[]{ mdlPlantobbj};
sourceInfoobj.additionalInfo.stringProps=
hmChildObjectAttributes; //Property to be set on MEWorkArea
sourceInfoobj.relationType= "MEWorkArea";//Used to set the Occurrence Type
sourceInfoobj.additionalInfo.boolProps.put("occTypeFromPreferenceFlag", false);
connectinfor[0].sourceInfo=sourceInfoobj;
ConnectObjectResponse connectObjects = dataManagementService.connectObjects(connectinfor);
connectObjects.newObjects; // This will give us array of BOMLine objects created
ModelObject mdlOperationobbj=
getModelObjectsFromUIDs(new String[]{"idThVI8tY95QJC"},connection)[0];
com.teamcenter.services.strong.structuremanagement.StructureService strservice_oper=
com.teamcenter.services.strong.structuremanagement.StructureService.getService(connection);
ConnectObjectsInputData[] connectinforoperationandprocess=new ConnectObjectsInputData[1];
connectinforoperationandprocess[0]=new ConnectObjectsInputData();
connectinforoperationandprocess[0].targetObjects=
new ModelObject[]{topLineObject};//process topline
SourceInfo sourceInfoobjopME=new SourceInfo() ;
sourceInfoobjopME.sourceObjects=new ModelObject[]{mdlOperationobbj};
connectinforoperationandprocess[0].sourceInfo=sourceInfoobjopME;
ConnectObjectResponse connectObjects =
dataManagementService.connectObjects(connectinforoperationandprocess);
//How to set the Bomline attribute//i.e how to set the find number or other attibute on operation BOMLine created recently
//This is achieved using
com.teamcenter.services.strong.bom.StructureManagementService ds1 = com.teamcenter.services.strong.bom.StructureManagementService.getService( connection ); AddOrUpdateChildrenToParentLineInfo[] infos = new AddOrUpdateChildrenToParentLineInfo[1]; infos[0] = new AddOrUpdateChildrenToParentLineInfo(); infos[0].parentLine = topLineObject; ItemElementLineInfo[] itemElements = new ItemElementLineInfo[1]; itemElements[0] = new ItemElementLineInfo(); itemElements[0].itemElementline = (BOMLine) connectObjects.newObjects[0];//This is operation BOMLine got from execution of connectObjects method itemElements[0].itemElementLineProperties.put( "TEMPLATE ACTION", "Reference" ); itemElements[0].itemElementLineProperties.put( "bl_sequence_no", "90" ); infos[0].itemElements = itemElements; AddOrUpdateChildrenToParentLineResponse addOrUpdateChildrenToParentLine = ds1.addOrUpdateChildrenToParentLine( infos );/*------ Create Relation Left=Operation Right= Document --------*/
ModelObject mdlDocumentobbj=
getModelObjectsFromUIDs(new String[]{"SxRhkmxTY95QJC"},connection)[0];
ConnectObjectsInputData[] connectinfor=new ConnectObjectsInputData[1];
connectinfor[0]=new ConnectObjectsInputData();
connectinfor[0].targetObjects=
new ModelObject[]{operationline};//operationline is operation BOMLine to which we need to add child document
SourceInfo sourceInfoobj=new SourceInfo() ;
sourceInfoobj.sourceObjects=new ModelObject[]{mdlDocumentobbj};
sourceInfoobj.relationType="KK_ManufacturingDocumentation"; //Occurrence Type
sourceInfoobj.additionalInfo.boolProps.put("occTypeFromPreferenceFlag", false);
//Above bollProps must be specified to set occurrence type
connectinfor[0].sourceInfo=sourceInfoobj;
dataManagementService.connectObjects(connectinfor);
/*------ Create Relation Left=Operation Right=RR_Part - > optegra part --------*/ModelObject mdloptegraobj=
getModelObjectsFromUIDs(new String[]{"j9chklAWY95QJC"},connection)[0];
ConnectObjectsInputData[] connectinforoper_optegrapart=new ConnectObjectsInputData[1];
connectinforoper_optegrapart[0]=new ConnectObjectsInputData();
connectinforoper_optegrapart[0].targetObjects=new ModelObject[]{operationline_OPER_optegra};//operationline_OPER_optegra is operation BOMLine to which we need to add child part
SourceInfo sourceInfoobj_oper_optegrapart=new SourceInfo() ;
sourceInfoobj_oper_optegrapart.sourceObjects=new ModelObject[]{mdloptegraobj};
sourceInfoobj_oper_optegrapart.relationType=
"KK_Reference"; //Occurrence Type it can be //MEResource/MECONSUMED
sourceInfoobj_oper_optegrapart.additionalInfo.boolProps.put("occTypeFromPreferenceFlag", false);//This must be specified to set occurrence type
connectinforoper_optegrapart[0].sourceInfo=sourceInfoobj_oper_optegrapart;
dataManagementService.connectObjects(connectinforoper_optegrapart);
//SAVE BOM WINDOW
com.teamcenter.services.strong.cad.StructureManagementService cadSMService =
com.teamcenter.services.strong.cad.StructureManagementService.getService(connection);
BOMWindow bomwindow1=(BOMWindow)topLine.get_bl_window();
cadSMService.saveBOMWindows(new BOMWindow[]{bomwindow1});
//Close ContextdataManagementService.closeContexts( new ModelObject[]{ topLine } );
How to Print complete BOM Recursivelyprivate void printBoMLine(ModelObject topLine, Connection connection) throws NotLoadedException
{
if ( topLine instanceof BOMLine )
{
BOMLine topLineObject = (BOMLine) topLine;
DataManagementService dataManagementService =
DataManagementService.getService( connection );
dataManagementService.getProperties( new ModelObject[] { topLineObject }, new String[]{ "bl_all_child_lines", "bl_formatted_title" } );
String sName = topLineObject.get_bl_formatted_title();
ModelObject[] allChildLines = topLineObject.get_bl_all_child_lines();
for ( int i = 0; i < allChildLines.length; i++ )
{
BOMLine bomLine = (BOMLine) allChildLines[i];
dataManagementService.getProperties( new ModelObject[] { bomLine }, new String[]{ "bl_formatted_title" } );
System.out.println( bomLine.get_bl_formatted_title() );
printBoMLine( bomLine, connection );
}
}
}
/*---Create Collaboration Context and create Relation to Process,Product,Plant context----*/CreateIn[] createIn = new CreateIn[1]; createIn[0] = new CreateIn(); createIn[0].data.stringProps.put( "object_name", "cc_object_name" ); createIn[0].data.boName = "MECollaborationContext"; //dataManagementService1 is com.teamcenter.services.strong.core.DataManagementService object CreateResponse createObjects = dataManagementService1.createObjects( createIn );// Create Collaboration context object MECollaborationContext modelObject = (MECollaborationContext) createObjects.output[0].objects[0]; //Get the Collaboration context object //Now link Other context object to Collaboration context //When you do open context its output response gives you all context objects CreateConfigInput[] createConfigInp = new CreateConfigInput[1]; createConfigInp[0] = new CreateConfigInput(); createConfigInp[0].modifyObject = modelObject;//Collaboration context object //Info about process context CreateConfigInput[] internalConfigData = new CreateConfigInput[3]; internalConfigData[0] = new CreateConfigInput(); internalConfigData[0].data.type = "MEProcessContext"; internalConfigData[0].data.stringProps.put( "object_name", "process context name " ); //actual object of process context internalConfigData[0].basedOn = openContexts.output[0].contexts[0].context;//openContexts is OpenContextsResponse object ,this line gives you Process context which is process top line //Info about Product context internalConfigData[1] = new CreateConfigInput(); internalConfigData[1].data.type = "MEProductContext"; internalConfigData[1].data.stringProps.put( "object_name", "prod context name " ); //actual object of product context internalConfigData[1].basedOn = openContexts.output[0].contexts[1].context;//openContexts is OpenContextsResponse object ,this line gives you Product context which is process top line //Info about Product context internalConfigData[2] = new CreateConfigInput(); internalConfigData[2].data.type = "MEPlantContext"; internalConfigData[2].data.stringProps.put( "object_name", "plant context name" ); //actual object of plant context internalConfigData[2].basedOn = openContexts.output[0].contexts[2].context;//openContexts is OpenContextsResponse object ,this line gives you Plant context which is process top line createConfigInp[0].internalConfigData = internalConfigData; CreateConfigResponse createOrUpdateConfigObjects = dataManagementService.createOrUpdateConfigObjects( createConfigInp );// Create Relation between Collaboration context and Process,Product,plant context /*-------------------------------------------------------------------------------------------------------*/ /*--------------------------------Create Form and Attach to Collaboration Context------------------------*/ //Create FormcreateIn[0] = new CreateIn(); createIn[0].data.stringProps.put( "object_name", "sample_Info_name" ); createIn[0].data.stringProps.put( "object_desc", "Sample_Info desc" ); createIn[0].data.boName = "FormObjectName";//This is Business Object name for form CreateResponse createObjectsForm = dataManagementService1.createObjects( createIn ); // create form object//End Create form CreateOrUpdateRelationsInfo[] inps = new CreateOrUpdateRelationsInfo[1]; inps[0] = new CreateOrUpdateRelationsInfo(); inps[0].primaryObject = modelObject;//collaboration context object SecondaryData[] secondaryData = new SecondaryData[1]; secondaryData[0] = new SecondaryData(); secondaryData[0].secondary = createObjectsForm.output[0].objects[0];//Created form object inps[0].secondaryData = secondaryData; inps[0].relationType = "IMAN_reference"; //dataManagementService1 is com.teamcenter.services.strong.core.DataManagementService object CreateOrUpdateRelationsResponse createOrUpdateRelations = dataManagementService1.createOrUpdateRelations( inps, false ); //Create relation between Collaboration context and form
Hi! What is ''getModelObjectsofUid'' method?
ReplyDelete