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开发之创建对象相关推荐
- Windchill 开发 判断图纸关联类型
Windchill 开发 判断图纸关联类型 本文使用 windchill 11.0 M030 开发环境. 在Windchill系统中,图纸和部件的关联类型,最常见的有 所有者.图像 等,例如: 每种关 ...
- windchill开发笔记
windchill开发中用到的各种API及知识点 1.关于树结构的节点展示问题: 在xml树结构的构建中,通常使用如下代码来进行树节点的展示 //节点展示级别(full,one,none),可以写St ...
- Windchill 开发 根据实例对象查询关联的ECN
Windchill 开发 根据实例对象查询关联的ECN 开发环境:windchill 11.0 M030 在Windchill二次开发时,通过ptc官方提供的api,我们可以很容易的获取ECN对象的 ...
- wps二次开发无法创建对象wps.application的解决方案
http://bbs.wps.cn/forum.php?mod=viewthread&tid=22427301&page=1 浅谈不同WPS的Api版本调用--老版本V8与新版本V9 ...
- windchill文件无法上传服务器,windchill开发常见问题总结
问: a.嵌套异常:(wt.services.servicesResource/21)wt.services.ManagerException:无法启动管理器:"wt.audit.Audit ...
- 利用ajax.dll进行Ajax的开发2007-07-15 15:38
利用ajax.dll进行Ajax的开发 2007-07-15 15:38 Asynchronous JavaScript and XML(AJAX)最近掀起的高潮,要完全归功于Google在Googl ...
- Spring 创建对象的方式
>Spring默认使用无参构造创建对象 >通过指定构造创建对象的三种方式: <?xml version="1.0" encoding="UTF-8&qu ...
- 如何设计一个API快速开发平台?
点击上方☝码猿技术专栏 轻松关注,设为星标! 及时获取有趣有料的技术 来源:toutiao.com/i6914469326074479108/ 在我之前谈API网关的时候曾经谈到过快速开发平台,即将A ...
- API 快速开发平台设计思考
作者 | 人月聊IT 来源 | toutiao.com/i6914469326074479108 在我之前谈API网关的时候曾经谈到过快速开发平台,即将API快速开发的一些内容放入到API网关中,实际 ...
最新文章
- 【RocketMQ工作原理】消息的生产过程
- 淡淡说说技术人员创业
- springBoot整合Ehcache——工具类调用
- vba 指定列后插入列_Vba代码插入指定数量的空白行
- Flutter布局锦囊---圆框的表单字段
- .NET 调用外部exe程序,出现已停止工作
- SinoBBD:以后发优势提供不一样的一体化融合CDN服务
- 数据库、C#、Java生成唯一GUID 方法
- 利用express启一个server服务
- EPLAN如何保护电气图纸
- 思科交换机配置试题_思科交换机基本配置命令全集
- 光影精灵安装ubuntu20.04安装显卡驱动外界显示屏
- 电脑启动计算机无法启动 修复工具栏,如何利用Win7启动修复功能解决电脑启动进不了系统的问题...
- .net 如何判断农历节日
- 译文 :图文教程,8步教你变身数据科学家
- Ax=0的非零解/马尔可夫链的平稳分布
- 2.1 - 操作系统的作用、分类
- Mesh?无线协议的选择
- Object转Map和Map转Object(对象转map,map转对象)
- find和rm命令联合使用
热门文章
- java 方法继承方法_Java继承和方法重写
- 登陆失败bdstoken_解决PanDownload登录提示账号登录失败,获取bdstoken失败问题
- C程序在Ubuntu下创建运行
- 数学之美 系列十三 信息指纹及其应用
- 2017年9月9日普级组 优美三角剖分
- USACO 3.1 Agri-Net 最短网络 (最小生成树)(普里姆算法)
- Linux系统怎么挂载安卓手机,NFS挂载Android文件系统
- pythonwin32api拖动图标_Python使用win32api,模拟鼠标移动并复制/粘贴到diskfi中
- python 游戏脚本 vbs_用VBScript制作QQ自动登录的脚本代码
- 20211217 为什么正定矩阵的主子式都是正的?(注意是主子式,不止是顺序主子式)