来源:原创 作者:云淡天晴 时间:2008-10-21 
在windchill开发的过程中,整个操作围绕的都是增删改查,今天我们将介绍的是增加,此次以part的创建为例,对于删除,修改都一几乎一样的代码。

以下是源代码:

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开发之创建对象相关推荐

  1. Windchill 开发 判断图纸关联类型

    Windchill 开发 判断图纸关联类型 本文使用 windchill 11.0 M030 开发环境. 在Windchill系统中,图纸和部件的关联类型,最常见的有 所有者.图像 等,例如: 每种关 ...

  2. windchill开发笔记

    windchill开发中用到的各种API及知识点 1.关于树结构的节点展示问题: 在xml树结构的构建中,通常使用如下代码来进行树节点的展示 //节点展示级别(full,one,none),可以写St ...

  3. Windchill 开发 根据实例对象查询关联的ECN

    Windchill 开发 根据实例对象查询关联的ECN 开发环境:windchill 11.0 M030 在Windchill二次开发时,通过ptc官方提供的api,我们可以很容易的获取ECN对象的 ...

  4. wps二次开发无法创建对象wps.application的解决方案

    http://bbs.wps.cn/forum.php?mod=viewthread&tid=22427301&page=1 浅谈不同WPS的Api版本调用--老版本V8与新版本V9 ...

  5. windchill文件无法上传服务器,windchill开发常见问题总结

    问: a.嵌套异常:(wt.services.servicesResource/21)wt.services.ManagerException:无法启动管理器:"wt.audit.Audit ...

  6. 利用ajax.dll进行Ajax的开发2007-07-15 15:38

    利用ajax.dll进行Ajax的开发 2007-07-15 15:38 Asynchronous JavaScript and XML(AJAX)最近掀起的高潮,要完全归功于Google在Googl ...

  7. Spring 创建对象的方式

    >Spring默认使用无参构造创建对象 >通过指定构造创建对象的三种方式: <?xml version="1.0" encoding="UTF-8&qu ...

  8. 如何设计一个API快速开发平台?

    点击上方☝码猿技术专栏 轻松关注,设为星标! 及时获取有趣有料的技术 来源:toutiao.com/i6914469326074479108/ 在我之前谈API网关的时候曾经谈到过快速开发平台,即将A ...

  9. API 快速开发平台设计思考

    作者 | 人月聊IT 来源 | toutiao.com/i6914469326074479108 在我之前谈API网关的时候曾经谈到过快速开发平台,即将API快速开发的一些内容放入到API网关中,实际 ...

最新文章

  1. 【RocketMQ工作原理】消息的生产过程
  2. 淡淡说说技术人员创业
  3. springBoot整合Ehcache——工具类调用
  4. vba 指定列后插入列_Vba代码插入指定数量的空白行
  5. Flutter布局锦囊---圆框的表单字段
  6. .NET 调用外部exe程序,出现已停止工作
  7. SinoBBD:以后发优势提供不一样的一体化融合CDN服务
  8. 数据库、C#、Java生成唯一GUID 方法
  9. 利用express启一个server服务
  10. EPLAN如何保护电气图纸
  11. 思科交换机配置试题_思科交换机基本配置命令全集
  12. 光影精灵安装ubuntu20.04安装显卡驱动外界显示屏
  13. 电脑启动计算机无法启动 修复工具栏,如何利用Win7启动修复功能解决电脑启动进不了系统的问题...
  14. .net 如何判断农历节日
  15. 译文 :图文教程,8步教你变身数据科学家
  16. Ax=0的非零解/马尔可夫链的平稳分布
  17. 2.1 - 操作系统的作用、分类
  18. Mesh?无线协议的选择
  19. Object转Map和Map转Object(对象转map,map转对象)
  20. find和rm命令联合使用

热门文章

  1. java 方法继承方法_Java继承和方法重写
  2. 登陆失败bdstoken_解决PanDownload登录提示账号登录失败,获取bdstoken失败问题
  3. C程序在Ubuntu下创建运行
  4. 数学之美 系列十三 信息指纹及其应用
  5. 2017年9月9日普级组 优美三角剖分
  6. USACO 3.1 Agri-Net 最短网络 (最小生成树)(普里姆算法)
  7. Linux系统怎么挂载安卓手机,NFS挂载Android文件系统
  8. pythonwin32api拖动图标_Python使用win32api,模拟鼠标移动并复制/粘贴到diskfi中
  9. python 游戏脚本 vbs_用VBScript制作QQ自动登录的脚本代码
  10. 20211217 为什么正定矩阵的主子式都是正的?(注意是主子式,不止是顺序主子式)