windchill开发之创建对象
????????以下是源代碼:
??????? import java.lang.reflect.InvocationTargetException;
import java.rmi.RemoteException;
import wt.fc.PersistenceHelper;
import wt.fc.QueryResult;
import wt.folder.Folder;
import wt.folder.FolderEntry;
import wt.folder.FolderHelper;
import wt.inf.container.WTContainer;
import wt.inf.container.WTContainerRef;
import wt.inf.library.WTLibrary;
import wt.method.RemoteMethodServer;
import wt.part.WTPart;
import wt.query.QueryException;
import wt.query.QuerySpec;
import wt.query.SearchCondition;
import wt.type.TypeDefinitionReference;
import wt.type.TypedUtility;
import wt.util.WTException;
import wt.util.WTPropertyVetoException;
import wt.vc.views.ViewHelper;
import wt.vc.views.ViewReference;
public class Demo4? implements wt.method.RemoteAccess
{
?// 在類型管理器中自定義的part類型
?private static String lenovoPart_type = "wt.part.WTPart|cn.jwis.kenny.LenovoPart";
?// 產品中文件夾的路徑,注意默認在文件夾前夾上Default
?private static String PartPath = "Default/NewPart";
?/**
? * 創建一個新的部件
? *
? * @param args
? * @throws WTException
? * @throws WTPropertyVetoException
? * @throws InvocationTargetException
? * @throws RemoteException
? */
?public static void main(String[] args) throws WTPropertyVetoException, WTException, RemoteException, InvocationTargetException
?{
??// TODO Auto-generated method stub
??WTPart part =RemoteMethod("001", lenovoPart_type);
??if(part!=null)
??{
???System.out.println("part 的名稱是:"+ part.getName());
??}
?}
?//創建部件要用rmi
?public static WTPart RemoteMethod(String partNumber,String partType) throws RemoteException, InvocationTargetException
?{
??String CLASSNAME = (Demo4.class).getName();
??Class argTypes[];
??Object svrArgs[];
??argTypes = (new Class[]
??{ String.class,String.class });
??svrArgs = (new Object[]
??{ partNumber,partType});
??return (WTPart) RemoteMethodServer.getDefault().invoke("newPart", CLASSNAME, null, argTypes, svrArgs);
?}
?/**
? * 創建一個新的部件,類似的代碼可以實現修改part的基本屬性
? *
? * @param number
? *??????????? 部件的編碼
? * @param PartType
? *??????????? 部件的類型,部件在windchill中可以自定義很多中類型
? * @return
? * @throws WTException
? * @throws WTPropertyVetoException
? */
?public static WTPart newPart(String number, String PartType) throws WTException, WTPropertyVetoException
?{
??WTPart newPart = null;
??// 獲取容器
??WTContainer container = getContainer("Moto");
??System.out.println(1);
??// 獲取容器的引用
??WTContainerRef ref = ref = WTContainerRef.newWTContainerRef(container);
??// 獲取文件夾
??Folder folder = wt.folder.FolderHelper.service.getFolder(PartPath, ref);
??System.out.println(2);
??String strPartNumber = number;
??String strPartName = number;
??wt.vc.views.View view = ViewHelper.service.getView("Design");
??ViewReference viewRef = ViewReference.newViewReference(view);
??System.out.println(3);
??TypeDefinitionReference typeDefinitionRef = TypedUtility.getTypeDefinitionReference(PartType);
??System.out.println(4);
??// 創建一個部件,編碼與名稱
??newPart = WTPart.newWTPart(strPartNumber, "shangxuetang.cn");
??// 為部件設置容器
??newPart.setContainer(container);
??// 為部件設置類型
??newPart.setTypeDefinitionReference(typeDefinitionRef);
??// 為部件設置view
??newPart.setView(viewRef);
??// 為此部件設置存貯位置
??FolderHelper.assignLocation((FolderEntry) newPart, folder);
??// 保存部件,切忌不要保存兩次。經常在調用完本方法之后習慣性的再保存一次,這樣會出現錯誤。
??newPart = (WTPart) PersistenceHelper.manager.save(newPart);
??// 從數據庫中提取part
??newPart = (WTPart) PersistenceHelper.manager.refresh(newPart);
??return newPart;
?}
?/**
? * 產品是一個容器,這里通過一個產品的名稱獲取容器,產品的名稱在windchill中具有唯一性
? *
? * @param containerName
? *??????????? 產品的名稱
? * @return
? */
?public static WTContainer getContainer(String containerName)
?{
??try
??{
???// 此處的邏輯部分可以參考:"windchill開發簡單入門之條件查詢"這篇文章
???QuerySpec qs = new QuerySpec(WTContainer.class);
???SearchCondition sc = new SearchCondition(WTContainer.class, WTContainer.NAME, "=", containerName);
???qs.appendWhere(sc);
???QueryResult qr = PersistenceHelper.manager.find(qs);
???while (qr.hasMoreElements())
???{
????WTContainer container = (WTContainer) qr.nextElement();
????return container;
???}
??} catch (QueryException e)
??{
???// TODO Auto-generated catch block
???e.printStackTrace();
??} catch (WTException e)
??{
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
??return null;
?}
}
轉載于:https://www.cnblogs.com/windchill/archive/2009/12/12/2064986.html
總結
以上是生活随笔為你收集整理的windchill开发之创建对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】关于arcgis server A
- 下一篇: [转]JS中判断鼠标按键判断