Перейти к публикации

TC RAC JAVA


aleks1113

Рекомендованные сообщения

В 28.03.2018 в 14:35, aleks1113 сказал:

Да тема интересная. На GTAC может быть доступ и есть. Но мне его никто не предоставит.

вы их попинайте, на GTAC-е есть всякие примеры.

 

В 28.03.2018 в 14:39, lexx174 сказал:

Вы его можете предоставить сами себе в принципе, создав аккаунт используя данные в вашем лицензионном файле,которые вам легко доступны,и вперед

Верно!

 

тем не менее в рамках поддержки верхней школы:

 

 
Скрытый текст

 

  • 
    ---------------
    How do I update BOMLine properties using a SOA client?
  • Hardware/Software Configuration
  • 
    Family: TEAMCENTER
    Application: STRUCTURE_MGR
    Function: BOM_EXPAND
    Subfunction: ALL
    Release: V10.1.1.2
  • Solution
  • 
    Here is an java example that successfully updates a list of BOMLine objects 
    associated with a TopBOMLine. The BOMWindow structure is assumed to be as 
    follows:
    
    +- TopBOMLine
    	|- child BOMLine
    	|- child BOMLine
    	|- child BOMLine
    	+- n-number of BOMLines...
    
    This custom java class to be used as follows:
    
    	UpdateBOMLine updateBOM = new UpdateBOMLine();
    	
    	if(updateBOM.loadItem())
    	{
    		if(updateBOM.getTopLineAndChildLines())
    		{
    			updateBOM.updateBOMLine();
    		}
    	}
    
    Update the ItemUID with an Item UID that has a BOMView you wish to update.
    
    The HelloTeamcenter example was used to test this code.
    
    
    ---------------------------------------------------
    
    package com.teamcenter.hello;
    
    
    import java.util.Hashtable;
    import java.util.Map;
    import java.util.Vector;
    
    import com.teamcenter.clientx.AppXSession;
    
    import 
    com.teamcenter.services.strong.bom._2008_06.StructureManagement.AddOrUpdateChil
    drenToParentLineInfo;
    import 
    com.teamcenter.services.strong.bom._2008_06.StructureManagement.AddOrUpdateChil
    drenToParentLineResponse;
    import 
    com.teamcenter.services.strong.bom._2008_06.StructureManagement.ItemLineInfo;
    import 
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.CreateBOMWindow
    sInfo;
    import 
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.CreateBOMWindow
    sResponse;
    import 
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSData;
    import com.teamcenter.services.strong.core.DataManagementService;
    import com.teamcenter.services.strong.core.SessionService;
    import com.teamcenter.soa.client.model.ModelObject;
    import com.teamcenter.soa.client.model.ServiceData;
    import com.teamcenter.soa.client.model.strong.BOMLine;
    import com.teamcenter.soa.client.model.strong.BOMWindow;
    import com.teamcenter.soa.client.model.strong.Item;
    import com.teamcenter.soa.client.model.strong.ItemRevision;
    import com.teamcenter.soa.client.model.strong.PSBOMView;
    import com.teamcenter.soa.common.ObjectPropertyPolicy;
    import com.teamcenter.soa.exceptions.NotLoadedException;
    
    public class UpdateBOMLine 
    {
    	private String ItemUID = "QlaJsbLj4Zi2AB";
    	
    	private DataManagementService dmService;
    	private com.teamcenter.services.strong.bom.StructureManagementService 
    bomService;
    	private com.teamcenter.services.strong.cad.StructureManagementService 
    structureService;
    	
    	private BOMWindow bomWindow = null;
    	
    	private Item item = null;
    	private BOMLine[] childLines = null;
    	private BOMLine topLine = null;
    	
    	
    	public UpdateBOMLine()
    	{
    		dmService =
    DataManagementService.getService(AppXSession.getConnection());
    		structureService = 
    com.teamcenter.services.strong.cad.StructureManagementService.getService(AppXSe
    ssion.getConnection());
    		bomService =  
    com.teamcenter.services.strong.bom.StructureManagementService.getService(AppXSe
    ssion.getConnection());
    		
    		setObjectPolicy();
    	}
    	
    	public boolean loadItem()
    	{
    		ServiceData sData = dmService.loadObjects(new String[]{ ItemUID
    });
    
    		if(sData.sizeOfPlainObjects() > 0)
    		{
    			ModelObject mObj = sData.getPlainObject(0);
    
    			if(mObj instanceof Item)
    			{
    				item = (Item) mObj;
    
    				return true;
    			}
    		}
    
    		return false;
    	}
    	
    	public void updateBOMLine()
    	{
    		AddOrUpdateChildrenToParentLineInfo parentLineInfo = new 
    AddOrUpdateChildrenToParentLineInfo();
    		Vector<ItemLineInfo> lineInfoVec = new Vector<ItemLineInfo>();
    		int count = 0;
    				
    		for(BOMLine childLine : childLines)
    		{
    			ItemLineInfo lineInfo = new ItemLineInfo();
    			Map<String, String> propMap = new Hashtable<String,
    String>();
    			
    			propMap.put("bl_sequence_no", Integer.toString(5 +
    count++));
    			lineInfo.bomline = childLine;
    			lineInfo.itemLineProperties = propMap;
    			lineInfoVec.add(lineInfo);
    		}
    		
    		parentLineInfo.parentLine = topLine;
    		parentLineInfo.items = lineInfoVec.toArray(new
    ItemLineInfo[0]);
    		
    		AddOrUpdateChildrenToParentLineResponse resp = 
    bomService.addOrUpdateChildrenToParentLine(new 
    AddOrUpdateChildrenToParentLineInfo[]{ parentLineInfo } );
    		
    		if(!ServiceDataError(resp.serviceData))
    		{
    			try 
    			{
    				for(int i = 0; i <
    resp.serviceData.sizeOfUpdatedObjects(); i++)
    				{
    					ModelObject obj =
    resp.serviceData.getUpdatedObject(i);
    					
    					if(obj instanceof BOMLine)
    					{
    						BOMLine line = (BOMLine)obj;
    						System.out.println("\tChild: "
    + line.get_bl_line_name() + ", Sequence: 
    " + line.get_bl_sequence_no());
    					}
    				}
    			}
    			catch (NotLoadedException e) 
    			{
    				e.printStackTrace();
    			}
    		}
    		
    		if(bomWindow != null)
    			structureService.closeBOMWindows(new BOMWindow[]{
    bomWindow });
    	}
    	
    	public boolean getTopLineAndChildLines()
    	{
    		try
    		{
    			ModelObject[] itemRevs = item.get_revision_list();
    			ModelObject[] bomViews = item.get_bom_view_tags();
    
    			for(ModelObject bomView : bomViews)
    			{
    				for(ModelObject itemRev : itemRevs)
    				{
    					CreateBOMWindowsInfo bomWinInfo = new
    CreateBOMWindowsInfo();
    
    					bomWinInfo.item = item;
    					bomWinInfo.itemRev = (ItemRevision)
    itemRev;
    					bomWinInfo.bomView = (PSBOMView)
    bomView;
    
    					CreateBOMWindowsResponse bomResp =
    structureService.createBOMWindows(new 
    CreateBOMWindowsInfo[]{ bomWinInfo });
    
    					if(bomResp.output.length > 0)
    					{
    						topLine =
    bomResp.output[0].bomLine;
    						bomWindow =
    bomResp.output[0].bomWindow;
    						
    						expandBOMOneLevel(topLine);
    						
    						return true;
    					}
    				}
    			}
    		}
    		catch(NotLoadedException e)
    		{
    			e.printStackTrace();
    		}	
    		
    		return false;
    	}
    	
    	private void expandBOMOneLevel(final BOMLine topLine)
    	{
    	       
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSOneLe
    velInfo info = new 
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSOneLeve
    lInfo();
    	       
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSOneLe
    velPref pref = new 
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSOneLeve
    lPref();
    
    		info.parentBomLines = new BOMLine[]{ topLine };
    		info.excludeFilter = "None";
    		pref.expItemRev = false;
    
    	       
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.ExpandPSOneLe
    velResponse resp = structureService.expandPSOneLevel(info, pref);
    
    		if(resp.output.length > 0)
    		{
    			if(resp.output[0].children.length > 0)
    			{
    				Vector<BOMLine> bomLines = new
    Vector<BOMLine>();
    								
    				for(ExpandPSData data :
    resp.output[0].children)
    					bomLines.add(data.bomLine);
    					
    				childLines = bomLines.toArray(new BOMLine[0]);
    			}
    		}
    	}
    	
    	protected boolean ServiceDataError(final ServiceData data)
    	{
    		if(data.sizeOfPartialErrors() > 0)
    		{
    			for(int i = 0; i < data.sizeOfPartialErrors(); i++)
    			{
    				for(String msg :
    data.getPartialError(i).getMessages())
    					System.out.println(msg);
    			}
    
    			return true;
    		}
    
    		return false;
    	}
    	
    	protected void setObjectPolicy()
    	{
    		SessionService session = 
    SessionService.getService(AppXSession.getConnection());
    		ObjectPropertyPolicy policy = new ObjectPropertyPolicy();
    
    		policy.addType("Item", new String[]{ "bom_view_tags",
    "revision_list" });
    		policy.addType("BOMLine", new String[]{ "bl_line_name",
    "bl_sequence_no" });
    		policy.addType("BOMWindow", new String[]{
    "is_packed_by_default" });
    
    		session.setObjectPropertyPolicy(policy);
    	}
    }

 

&&&&&&&&&&&&&&&&&&&&&&

 



 
  • 
    How do I use Services.Strong.Cad.StructureManagementService
    CreateOrUpdateAbsoluteStructure & CreateOrUpdateRelativeStructure
    to create my own BOM line structure?
  • Hardware/Software Configuration
  • 
    Family: TEAMCENTER
    Application: SOA_FRAMEWORK
    Function: .NET_CLIENT
    Subfunction: ALL
    Release: V2007.1.7.10
  • Solution
  • 
    First, it is important to understand how occurence are used in the in the 
    Structure Manager and a good starting point is to spend time reading the 
    "Structure Manager Guide", "Working with occurrences" section. For example, 
    this section explains the difference between Absolute and Relative Structures 
    and provides addtional insight into the property values used to initialize the
    structure's Associated Data.
    
    
    The following java code is provided to demonstrate how to use Absolute and 
    Relative methods.
    
    
    	CreateOrUpdateBOMStructure struc = new
    CreateOrUpdateBOMStructure(user);
    
    	if(struc.createParts())
    		struc.createStructure();
    
    
    /**************** CreateOrUpdateBOMStructure.java ****************/
    package com.teamcenter.hello;
    
    import java.util.Calendar;
    
    import com.teamcenter.clientx.Session;
    import com.teamcenter.schemas.soa._2006_03.exceptions.ServiceException;
    import com.teamcenter.services.strong.cad.StructureManagementService;
    import com.teamcenter.services.strong.core.ReservationService;
    import com.teamcenter.services.strong.cad._2008_03.DataManagement.PartInfo3;
    import 
    com.teamcenter.services.strong.cad._2007_01.DataManagement.CreateOrUpdatePartsO
    utput;
    import 
    com.teamcenter.services.strong.cad._2007_01.DataManagement.DatasetOutput;
    import com.teamcenter.services.strong.cad._2007_01.DataManagement.ItemInfo;
    import com.teamcenter.services.strong.cad._2007_01.DataManagement.ItemRevInfo;
    import
    com.teamcenter.services.strong.cad._2008_03.DataManagement.DatasetInfo3;import 
    com.teamcenter.services.strong.cad._2007_12.DataManagement.CreateOrUpdatePartsP
    ref;
    import 
    com.teamcenter.services.strong.cad._2007_01.DataManagement.CreateOrUpdatePartsR
    esponse;
    import com.teamcenter.soa.client.model.ModelObject;
    import com.teamcenter.soa.client.model.ServiceData;
    import com.teamcenter.soa.client.model.strong.Dataset;
    import com.teamcenter.soa.client.model.strong.Folder;
    import com.teamcenter.soa.client.model.strong.ItemRevision;
    import com.teamcenter.soa.client.model.strong.PSBOMViewRevision;
    import com.teamcenter.soa.client.model.strong.User;
    import com.teamcenter.soa.exceptions.NotLoadedException;
    
    public class CreateOrUpdateBOMStructure
    {
    	private com.teamcenter.services.strong.core.DataManagementService
    dmService;
    	private com.teamcenter.services.strong.cad.DataManagementService
    cadDmService;
    	private StructureManagementService structureService;
    	private ReservationService reservationService;
    
    	private Folder homeFolder;
    
    	private ItemRevision absOccAsmItemRev = null;
    	private ItemRevision plateAsmItemRev = null;
    	private ItemRevision plateItemRev = null;
    	private Dataset plateDataset = null;
    	private Dataset plateHoleDateset = null;
    
    	public CreateOrUpdateBOMStructure(User user)
    	{
    		dmService = 
    com.teamcenter.services.strong.core.DataManagementService.getService(Session.ge
    tConnection());
    		cadDmService = 
    com.teamcenter.services.strong.cad.DataManagementService.getService(Session.get
    Connection());
    
    		structureService = 
    StructureManagementService.getService(Session.getConnection());
    		reservationService =
    ReservationService.getService(Session.getConnection());
    
    		try
    		{
    			homeFolder = user.get_home_folder();
    		}
    		catch(NotLoadedException e)
    		{
    			e.printStackTrace();
    		}
    	}
    
    	public boolean createParts()
    	{
    		PartInfo3[] creInfos = new PartInfo3[3];
    
    		creInfos[0] = new PartInfo3();
    		creInfos[0].itemInput = new ItemInfo();
    		creInfos[0].clientId = "AbsOccAssembly";
    		creInfos[0].itemInput.name = "Abs Occ Assembly";
    		creInfos[0].itemInput.folder = homeFolder;
    		creInfos[0].itemRevInput = new ItemRevInfo();
    
    		creInfos[1] = new PartInfo3();
    		creInfos[1].itemInput = new ItemInfo();
    		creInfos[1].clientId = "PlateAssembly";
    		creInfos[1].itemInput.name = "Plate Assembly";
    		creInfos[1].itemInput.folder = homeFolder;
    		creInfos[1].itemRevInput = new ItemRevInfo();
    
    		creInfos[2] = new PartInfo3();
    		creInfos[2].itemInput = new ItemInfo();
    		creInfos[2].clientId  = "Plate";
    		creInfos[2].itemInput.name = "Plate";
    		creInfos[2].itemInput.folder = homeFolder;
    		creInfos[2].itemRevInput = new ItemRevInfo();
    
    		creInfos[2].datasetInput = new DatasetInfo3[2];
    		creInfos[2].datasetInput[0] = new DatasetInfo3();
    		creInfos[2].datasetInput[0].clientId = "PlateDataset";
    		creInfos[2].datasetInput[0].name = "Plate";
    		creInfos[2].datasetInput[0].type = "DirectModel";
    		creInfos[2].datasetInput[0].itemRevRelationName =
    "IMAN_Rendering";
    		creInfos[2].datasetInput[0].description = "Plate";
    		creInfos[2].datasetInput[0].mapAttributesWithoutDataset =
    false;
    		creInfos[2].datasetInput[0].lastModifiedOfDataset =
    Calendar.getInstance();
    
    		creInfos[2].datasetInput[1] = new DatasetInfo3();
    		creInfos[2].datasetInput[1].clientId = "PlateHoleDataset";
    		creInfos[2].datasetInput[1].name = "Plate with hole";
    		creInfos[2].datasetInput[1].type = "DirectModel";
    		creInfos[2].datasetInput[1].itemRevRelationName =
    "IMAN_reference";
    		creInfos[2].datasetInput[1].description = "Plate with hole";
    		creInfos[2].datasetInput[1].mapAttributesWithoutDataset =
    false;
    		creInfos[2].datasetInput[1].lastModifiedOfDataset =
    Calendar.getInstance();
    
    		CreateOrUpdatePartsResponse creResp = 
    cadDmService.createOrUpdateParts(creInfos, new CreateOrUpdatePartsPref());
    
    		if(creInfos.length == creResp.output.length)
    		{
    			for(CreateOrUpdatePartsOutput partsOut :
    creResp.output)
    			{
    				if(partsOut.clientId.equals("AbsOccAssembly"))
    					absOccAsmItemRev = partsOut.itemRev;
    				else
    if(partsOut.clientId.equals("PlateAssembly"))
    					plateAsmItemRev = partsOut.itemRev;
    				else if(partsOut.clientId.equals("Plate"))
    				{
    					plateItemRev = partsOut.itemRev;
    					
    					for(DatasetOutput datasetOut :
    partsOut.datasetOutput)
    					{
    					       
    if(datasetOut.clientId.equals("PlateDataset"))
    							plateDataset =
    datasetOut.dataset;
    						else
    if(datasetOut.clientId.equals("PlateHoleDataset"))
    							plateHoleDateset =
    datasetOut.dataset;
    						else
    							return false;
    					}
    				}
    				else
    					return false;
    			}
    			return true;
    		}
    
    		return false;
    	}
    
    	protected void createStructure()
    	{
    		if(absOccAsmItemRev == null  || plateAsmItemRev == null ||
    plateItemRev == 
    null || plateDataset == null || plateHoleDateset == null)
    			return;
    		
    		try
    		{
    		       
    StructureManagementService.CreateOrUpdateRelativeStructureInfo2[] 
    relStructInfos = new 
    StructureManagementService.CreateOrUpdateRelativeStructureInfo2[2];
    			relStructInfos[0] = new 
    StructureManagementService.CreateOrUpdateRelativeStructureInfo2();
    			relStructInfos[0].parent = plateAsmItemRev;
    			relStructInfos[0].precise = false;
    			relStructInfos[0].childInfo = new 
    StructureManagementService.RelativeStructureChildInfo[2];
    			relStructInfos[0].childInfo[0] = new 
    StructureManagementService.RelativeStructureChildInfo();
    			relStructInfos[0].childInfo[0].child = plateItemRev;
    			relStructInfos[0].childInfo[0].occInfo = new 
    StructureManagementService.RelOccInfo();
    			relStructInfos[0].childInfo[0].occInfo.attrsToSet = new
    
    StructureManagementService.AttributesInfo[1];
    			relStructInfos[0].childInfo[0].occInfo.attrsToSet[0] =
    new 
    StructureManagementService.AttributesInfo();
    		       
    relStructInfos[0].childInfo[0].occInfo.attrsToSet[0].name = 
    "bl_sequence_no";
    		       
    relStructInfos[0].childInfo[0].occInfo.attrsToSet[0].value = "10";
    			relStructInfos[0].childInfo[0].occInfo.occTransform =
    new double[] {1, 0, 
    0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
    			relStructInfos[0].childInfo[1] = new 
    StructureManagementService.RelativeStructureChildInfo();
    			relStructInfos[0].childInfo[1].child = plateItemRev;
    			relStructInfos[0].childInfo[1].occInfo = new 
    StructureManagementService.RelOccInfo();
    			relStructInfos[0].childInfo[1].occInfo.attrsToSet = new
    
    StructureManagementService.AttributesInfo[1];
    			relStructInfos[0].childInfo[1].occInfo.attrsToSet[0] =
    new 
    StructureManagementService.AttributesInfo();
    		       
    relStructInfos[0].childInfo[1].occInfo.attrsToSet[0].name = 
    "bl_sequence_no";
    		       
    relStructInfos[0].childInfo[1].occInfo.attrsToSet[0].value = "20";
    			relStructInfos[0].childInfo[1].occInfo.occTransform =
    new double[] {1, 0, 
    0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.11, 0, 0, 1 };
    			
    			relStructInfos[1] = new 
    StructureManagementService.CreateOrUpdateRelativeStructureInfo2();
    			relStructInfos[1].parent = absOccAsmItemRev;
    			relStructInfos[1].precise = false;
    			relStructInfos[1].childInfo = new 
    StructureManagementService.RelativeStructureChildInfo[1];
    			relStructInfos[1].childInfo[0] = new 
    StructureManagementService.RelativeStructureChildInfo();
    			relStructInfos[1].childInfo[0].child = plateAsmItemRev;
    			relStructInfos[1].childInfo[0].occInfo = new 
    StructureManagementService.RelOccInfo();
    			relStructInfos[1].childInfo[0].occInfo.attrsToSet = new
    
    StructureManagementService.AttributesInfo[1];
    			relStructInfos[1].childInfo[0].occInfo.attrsToSet[0] =
    new 
    StructureManagementService.AttributesInfo();
    		       
    relStructInfos[1].childInfo[0].occInfo.attrsToSet[0].name = 
    "bl_sequence_no";
    		       
    relStructInfos[1].childInfo[0].occInfo.attrsToSet[0].value = "10";
    			relStructInfos[1].childInfo[0].occInfo.occTransform =
    new double[] {1, 0, 
    0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
    		       
    StructureManagementService.CreateOrUpdateRelativeStructurePref2 
    relStructPref = new 
    StructureManagementService.CreateOrUpdateRelativeStructurePref2();
    		       
    com.teamcenter.services.strong.cad._2007_01.StructureManagement.CreateOrUpdateR
    elativeStructureResponse relStructResp2 = 
    structureService.createOrUpdateRelativeStructure(relStructInfos, "", true, 
    relStructPref);
    			
    			if(checkOutAsmBVR())
    			{
    			       
    StructureManagementService.CreateOrUpdateAbsoluteStructurePref2 
    absStructPref = new 
    StructureManagementService.CreateOrUpdateAbsoluteStructurePref2();
    				absStructPref.cadOccIdAttrName =
    "bl_sequence_no";
    				
    			       
    StructureManagementService.CreateOrUpdateAbsoluteStructureInfo2[] 
    absStructInfos = new 
    StructureManagementService.CreateOrUpdateAbsoluteStructureInfo2[1];
    				absStructInfos[0] = new 
    StructureManagementService.CreateOrUpdateAbsoluteStructureInfo2();
    				absStructInfos[0].contextItemRev =
    absOccAsmItemRev;
    				absStructInfos[0].bvrAbsOccInfo = new 
    StructureManagementService.AbsOccInfo[1];
    				absStructInfos[0].bvrAbsOccInfo[0] = new 
    StructureManagementService.AbsOccInfo();
    				absStructInfos[0].bvrAbsOccInfo[0].cadOccIdPath
    = new String[] {"10", "10" };
    				absStructInfos[0].bvrAbsOccInfo[0].absOccData =
    new 
    StructureManagementService.AbsOccDataInfo();
    			       
    absStructInfos[0].bvrAbsOccInfo[0].absOccData.attachments = new 
    StructureManagementService.AbsOccAttachment[1];
    			       
    absStructInfos[0].bvrAbsOccInfo[0].absOccData.attachments[0] = new 
    StructureManagementService.AbsOccAttachment();
    			       
    absStructInfos[0].bvrAbsOccInfo[0].absOccData.attachments[0].dataset = 
    plateDataset;
    			       
    absStructInfos[0].bvrAbsOccInfo[0].absOccData.attachments[0].relationTypeName =
    "IMAN_Rendering";
    			       
    absStructInfos[0].bvrAbsOccInfo[0].absOccData.occTransform = new double[] 
    {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.11, 0, 1 };
    			       
    StructureManagementService.CreateOrUpdateAbsoluteStructureResponse 
    absStructResp = 
    structureService.createOrUpdateAbsoluteStructure(absStructInfos, "", true, 
    absStructPref);
    	
    			       
    StructureManagementService.CreateOrUpdateAbsoluteStructureInfo2[] 
    absStructInfos2 = new 
    StructureManagementService.CreateOrUpdateAbsoluteStructureInfo2[1];
    				absStructInfos2[0] = new 
    StructureManagementService.CreateOrUpdateAbsoluteStructureInfo2();
    				absStructInfos2[0].contextItemRev =
    absOccAsmItemRev;
    				absStructInfos2[0].bvrAbsOccInfo = new 
    StructureManagementService.AbsOccInfo[1];
    				absStructInfos2[0].bvrAbsOccInfo[0] = new 
    StructureManagementService.AbsOccInfo();
    			       
    absStructInfos2[0].bvrAbsOccInfo[0].cadOccIdPath = new String[] {"10", 
    "20" };
    				absStructInfos2[0].bvrAbsOccInfo[0].absOccData
    = new 
    StructureManagementService.AbsOccDataInfo();
    			       
    absStructInfos2[0].bvrAbsOccInfo[0].absOccData.attachments = new 
    StructureManagementService.AbsOccAttachment[1];
    			       
    absStructInfos2[0].bvrAbsOccInfo[0].absOccData.attachments[0] = new 
    StructureManagementService.AbsOccAttachment();
    			       
    absStructInfos2[0].bvrAbsOccInfo[0].absOccData.attachments[0].dataset = 
    plateHoleDateset;
    			       
    absStructInfos2[0].bvrAbsOccInfo[0].absOccData.attachments[0].relationTypeName
    = "IMAN_reference";
    			       
    absStructInfos2[0].bvrAbsOccInfo[0].absOccData.occTransform = new double[] {1,
    0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0.11, 0, 0, 1 };
    			       
    StructureManagementService.CreateOrUpdateAbsoluteStructureResponse 
    absStructResp2 = 
    structureService.createOrUpdateAbsoluteStructure(absStructInfos2, "", true, 
    absStructPref);
    				
    				checkInAsmBVR();
    			}
    			else
    				System.out.println("Error: Unable to check out
    absOccAsmItemRev");
    		}
    		catch(ServiceException e)
    		{
    			e.printStackTrace();
    		}
    	}
    	
    	protected boolean checkOutAsmBVR()
    	{
    		dmService.getProperties(new ModelObject[] { absOccAsmItemRev },
    new String[] { "structure_revisions" });
    
    		try
    		{
    			PSBOMViewRevision[] absOccAsmBVRs = 
    absOccAsmItemRev.get_structure_revisions();
    			
    			if(absOccAsmBVRs.length > 0)
    			{
    				ServiceData sd =
    reservationService.checkout(absOccAsmBVRs, "CheckOut for 
    createOrUpdateAbsoluteStructure", "");
    				
    				if(sd.sizeOfUpdatedObjects() > 0)
    					return true;
    			}
    		}
    		catch(NotLoadedException e)
    		{
    			e.printStackTrace();
    		}
    		
    		return false;
    	}
    	
    	protected void checkInAsmBVR()
    	{
    		try
    		{
    			PSBOMViewRevision[] absOccAsmBVRs = 
    absOccAsmItemRev.get_structure_revisions();
    			
    			if(absOccAsmBVRs.length > 0)
    			{
    				ServiceData sd =
    reservationService.checkin(absOccAsmBVRs);
    			}
    		}
    		catch(NotLoadedException e)
    		{
    			e.printStackTrace();
    		}
    	}
    }

 

  •  

может пригодится где.

 

На будущее - убирайте такие простыни под спойлер!

Ссылка на сообщение
Поделиться на других сайтах


    TCComponentBOMLine childBomLine=topBomLine.add(null,ChildItemRev,null,false);

childBomLine - нигде не используется. Так и должно быть?

С добавлением разобрался. Не подскажите как можно узнать все входящие в сборку объекты? И можно ли эти самые объекты редактировать(изменить: имя, порядок в сборке)?

Ссылка на сообщение
Поделиться на других сайтах
47 минут назад, aleks1113 сказал:

    TCComponentBOMLine childBomLine=topBomLine.add(null,ChildItemRev,null,false);

childBomLine - нигде не используется. Так и должно быть?

С добавлением разобрался. Не подскажите как можно узнать все входящие в сборку объекты? И можно ли эти самые объекты редактировать(изменить: имя, порядок в сборке)?

childBomLine это новый объект. метод add  возвращает созданный(только что добавленный)childBomLine.  не тормозите)

 

bom_line.getChildren()

 

можно если есть права

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах
Только что, lexx174 сказал:

childBomLine это новый объект. метод add  возвращает созданный(только что добавленный)childBomLine.  не тормозите)

 

bom_line.getChildren()

 

можно если есть права

 Права есть. Не подскажите как можно эти самые объекты редактировать(изменить: имя, порядок в сборке)?

Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, aleks1113 сказал:

 Права есть. Не подскажите как можно эти самые объекты редактировать(изменить: имя, порядок в сборке)?

объекты сборки называются компоненты,по-конструкторски - детали в сборке.

Порядок в сборке можно изменить поменяв свойство sequence_number (порядковый номер,оно же позиция) в менеджере структуры.

 

Изменить имя - это изменение наименования (свойство object_name) у самого айтема,это уже не в контексте BOM.

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, aleks1113 сказал:

Не подскажите как можно эти самые объекты редактировать

смотрите методы с словом Property, например setStringProperty(...)
ежели редактируете свойства бомлайна нужно еще делать bomWindow.Save();

11 минуту назад, lexx174 сказал:

Порядок в сборке можно изменить поменяв свойство sequence_number (порядковый номер,оно же позиция) в менеджере структуры.

Насколько я знаю sequence_number это просто атрибут, по которому как правило сортируют в менеджере,
Истинный порядок может быть другой, но топик стартеру не надо сейчас с этим заморачиваться)

Изменено пользователем koner
Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, aleks1113 сказал:

Не подскажите как узнать все объекты в составе?

 

2 часа назад, lexx174 сказал:

bom_line.getChildren()

 

а дальше рекурсией.

з.ы. Странные у Вас вопросы. Ответы на все последнии Ваши вопросы можно было найти просто посмотрев какие методы есть у класса TCComponentBOMLine. Названия у них как правило говорят сами за себя. Имхо, это первое что бы я сделал...
 

Ссылка на сообщение
Поделиться на других сайтах

первое что нужно сделать - почитать "тимцентр начало работы" хотя бы

 

 

5 часов назад, koner сказал:

Насколько я знаю sequence_number это просто атрибут, по которому как правило сортируют в менеджере,
Истинный порядок может быть другой, но топик стартеру не надо сейчас с этим заморачиваться)

sequence_number это по идее аналог callout в NX

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

Здравствуйте. Появились еще вопрос. Как можно из созданного окна назначить ресурс (документ, инструмент и т.д.)? Можно ли получить список ресурсов или открыть  окно  "Назначить ресурс" ?

Ссылка на сообщение
Поделиться на других сайтах
может быть этот диалог подойдет:
// com.teamcenter.rac.cme.activity.editresource.EditResourceDialog

 

EditResourceDialog eg = new EditResourceDialog(aifUIApplication, aifDesktop, line);
 eg.setVisible(true);

 

Изменено пользователем Wise_Owl
Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

Здравствуйте. Появился еще вопрос. Как можно созданному item добавить новую ревизию?

Изменено пользователем aleks1113
Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, aleks1113 сказал:

Здравствуйте. Появился еще вопрос. Как можно созданному item добавить новую ревизию?

item.revise("","new_name","new_desc");

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

Появился ещё один вопрос. Есть ли готовые методы позволяющие при создании новой ревизии передать ей все свойства и ресурсы(документы и др.) старой ревизии? Если нет, то со свойствоми мне все понятно, а с ресурсами нет.

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, aleks1113 сказал:

Появился ещё один вопрос. Есть ли готовые методы позволяющие при создании новой ревизии передать ей все свойства и ресурсы(документы и др.) старой ревизии? Если нет, то со свойствами мне все понятно, а с ресурсами нет.

Когда вы как пользователь создаете новую ревизию (через пересмотреть) вам и так предлагается перетянуть наборы данных и связи с предыдущей ревизии.

Програмно если- точно не помню,как минимум возможно набор данных UGMASTER автоматом подтянется,если нужно что-то еще - используйте методы add(String,TCComponent) - где параметр String  - имя отношения с которым будете добавлять объект TCComponent

Ссылка на сообщение
Поделиться на других сайтах
В 5/25/2018 в 18:56, aleks1113 сказал:

Появился ещё один вопрос. Есть ли готовые методы позволяющие при создании новой ревизии передать ей все свойства и ресурсы(документы и др.) старой ревизии? Если нет, то со свойствоми мне все понятно, а с ресурсами нет.

что и в каком виде передается новой ревизии определяется посредством deep copy rules в buisness modeler

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Еще раз здравствуйте! Сейчас разбираюсь как работает буфер обмена. Копировать в него получилось так:

 InterfaceAIFComponent target_item = AIFUtility.getTargetComponent();

 localAIFClipboard = AIFUtility.getAIFPortal().getClipboard();
              AIFTransferable localAIFTransferable = new AIFTransferable(target_item);
              localAIFClipboard.setContents(localAIFTransferable, null);

Но как взять из него и вставить куда-то еще не знаю. Можете помочь?

Ссылка на сообщение
Поделиться на других сайтах
//получить ревизию из буфера обмена

AIFClipboard clipboard = AIFPortal.getClipboard();
Transferable content = clipboard.getContents(this);
		 
Vector aifComponent = null;
if(content != null)
{
		try
		{
				
			try 
			{
				aifComponent = (Vector)content.getTransferData(new DataFlavor(Vector.class,"AIF Vector"));
			} 
			catch (IOException e) 
			{

				e.printStackTrace();
			}
			if(aifComponent.elementAt(0) instanceof TCComponentItemRevision)
			{
				pasteRevision = (TCComponentItemRevision)aifCBComponent.elementAt(0);
			}
				
			//............
				
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
		} 
			 
}

 

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...