與其他應用程式整合 > 在 Windchill 內管理 CAD 及零件關係 > 自訂自動關聯 > 使用及修改 AutoAssociatePartFinderCreator 介面
使用及修改 AutoAssociatePartFinderCreator 介面
「自動關聯」使用 AutoAssociatePartFinderCreator 介面的實行方式來執行下列動作。
搜尋相符零件。
建立新零件。
依預設,「自動關聯」動作會使用此介面的預設實行方式來執行上述任務。但是,您可以使用 AutoAssociatePartFinderCreator 介面的自訂實行方式來自訂執行這些任務的方式。
該介面位於 com.ptc.windchill.cadx.autoassociate.AutoAssociatePartFinderCreator
AutoAssociatePartFinderCreator 介面支援下列方法:
用於針對所選 EPMdocument 或 ModelItem 搜尋相符零件的 findOrCreateWTPart 方法
用於建立新零件的 CreateNewWTPart 方法
findWTPart 方法 (不再使用)
isNewPart 方法 (不再使用)
setIsNewPart 方法 (不再使用
)
* 
即使已經淘汰且不再使用介面的一些方法,實行類別也必須提供這些方法的虛擬實行以編譯類別。
欲實行自訂 AutoAssociatePartFinderCreator
1. 依照下列方式衍生您的自訂類別。
public class CustomFinderCreator implements
AutoAssociatePartFinderCreator
2. 取代下列方法。
public WTPart findOrCreateWTPart(EPMDocument epmDoc, EPMWorkspace workspace)
針對為自動關聯所選的每個文件呼叫此方法,以搜尋任何相符的零件。您可以自訂用於搜尋零件的條件,且動作使用傳回的零件來與文件相關聯。
public WTPart findOrCreateWTPart(EPMDocument doc, ModelItem modelItem, EPMWorkspace workspace)
針對為自動關聯所選的每個文件呼叫此方法,以搜尋任何相符的零件。您可以自訂用於搜尋零件的條件,且動作使用傳回的零件來與文件相關聯。
public WTPart createNewWTPart(AssociatePartDescriptor newPartDescriptor)
針對為自動關聯所選的每個文件呼叫此方法,以建立新零件。您可以自訂新建零件的屬性。透過自動關聯動作,建立新建零件與文件的關聯。
* 
已經淘汰且動作目前不使用下列方法;但是,您需要提供這些方法的虛擬實行,以正確編譯類別。
public boolean isIsNewPart()
public void setIsNewPart(boolean a_IsNewPart)
public WTPart findWTPart(EPMDocument epmDoc)
public WTPart findWTPart(EPMDocument epmDoc, ModelItem modelItem)
編譯檔案並將類別置於任何適當位置。
3. 設定偏好設定「操作」 > 「自動關聯」 > 「自訂自動關聯零件類別」以指定實行 AutoAssociatePartFinderCreator 介面的類別名稱。
4. 重新啟動應用伺服器。
自訂的自動關聯零件尋找工具建立者範例
使用下列來源建立並編譯 <WT_HOME>src\com\ptcts\autoassociate\CustomizedAutoAssociatePartFinderCreator.java
// package com.ptc.windchill.uwgm.cadx.autoassociate;
package com.ptcts;
import java.lang.String;
import wt.epm.EPMDocument;
import wt.epm.workspaces.EPMWorkspace;
import wt.part.WTPart;
import wt.pom.UniquenessException;
import wt.util.WTException;
import wt.util.WTPropertyVetoException;
import wt.vc.VersionControlException;
// import com.ptc.windchill.uwgm.task.autoassociate.DefaultAutoAssociatePartFinderCreator;
import com.ptc.windchill.uwgm.common.autoassociate.DefaultAutoAssociatePartFinderCreator;
// import com.ptc.windchill.cadx.autoassociate.AutoAssociatePartFinderCreator;
import com.ptc.windchill.uwgm.common.autoassociate.AutoAssociatePartFinderCreator;
import wt.type.TypedUtilityServiceHelper;
import com.ptc.windchill.uwgm.common.associate.AssociatePartDescriptor;
import wt.inf.container.WTContainer;
import java.rmi.RemoteException;
public class CustomizedAutoAssociatePartFinderCreator extends DefaultAutoAssociatePartFinderCreator implements AutoAssociatePartFinderCreator
{
public boolean isIsNewPart()
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: isIsNewPart()");
return super.isIsNewPart();
}
public void setIsNewPart( boolean a_IsNewPart ) throws WTPropertyVetoException
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: setIsNewPart()");
super.setIsNewPart(a_IsNewPart);
}
public WTPart findOrCreateWTPart(EPMDocument epmDoc, EPMWorkspace workspace) throws WTException, WTPropertyVetoException, VersionControlException, UniquenessException
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: findOrCreateWTPart()");
return super.findOrCreateWTPart(epmDoc, workspace);
}
public WTPart findWTPart(EPMDocument epmDoc) throws WTException
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: findWTPart()");
return super.findWTPart(epmDoc);
}

public WTPart createNewWTPart(AssociatePartDescriptor newPartDescriptor) throws WTException, WTPropertyVetoException {

System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: createNewWTPart()");

// get epmdoc
EPMDocument epmDoc = newPartDescriptor.getSourceDoc();
// get workspace
EPMWorkspace ws = newPartDescriptor.getEPMWorkspace();

// get workspace container
WTContainer container = ws.getContainer();

// create wtpart with super class
WTPart newpart = super.createNewWTPart(newPartDescriptor);

// manipulate new part, e.g. set attributes

// return modified new part
return newpart;
}

}
這是否有幫助?