您的位置:首页 > 其它

Windchill 二次开发中常用的API方法

2011-02-24 11:41 246 查看
以下为Windchill 二次开发新手入门常用的API

1.根据零件名称/编码 得到该零件
wt.clients.prodmgmt.WTPartHelper.findPartByName(name) ;
wt.clients.prodmgmt.WTPartHelper.findPartByNumber(number);
2.根据WTpart得到WTparMaster
WtPart wtpart;
WTPartMaster wtmaster=(WTPartMster)part.getMaster();
3.获取codebase下配置文件wt.properties属性信息
WTProperties wtproperties = WTProperties.getLocalProperties();
String wthome = wtproperties.getProperty("wt.home", "");   //codebase的文件夹路径
4.获取part被借用的所有父部件
QueryResult qr= wt.part.WTPartHelper.service.getUsedByWTParts(WTPartMster wtMaster);
注:此方法得到的结果为该part被使用情况的全部父部件,包括了Design视图及Manufacturing视图 更包括了父部件使用part的所有修订版           本,打印出来可以看到会有相同的部件编号,不同的修订版本.
5.根据OID 获取Wtpart
wt.fc.WTReference partRef = new wt.fc.ReferenceFactory().getReference( oid );
WTPart wtpart=(WTPart)partRef;
6.得到零件最新版本
WTPart wtpart= (WTPart) VersionControlHelper.getLatestIteration(part);
7.通过过滤得到零件最新版本
QuerySpec querysearch = new QuerySpec(WTPartMaster.class);
//查询所有的WTPartMaster
QueryResult queryresult =  PersistenceHelper.manager.find(querysearch);
LatestConfigSpec latestconfigspec = new LatestConfigSpec();
//根据WTPartMaster查询所有最新版本的零部件
QueryResult allWTPart = ConfigHelper.service.filteredIterationsOf(queryresult,latestconfigspec)
8.查询某用户某段时间范围内创建的零件
QuerySpec qs = new QuerySpec(WTPart.class);
qs.appendSearchCondition(new SearchCondition(WTPart.class,WTPart.CREATE_TIMESTAMP, true, new   AttributeRange(begintime, endtime)));//删选条件 时间范围内
qs.appendAnd();//一定要加上 不然下一个条件不能删选
qs.appendSearchCondition(new SearchCondition(WTPart.class,
"iterationInfo.creator.key", SearchCondition.EQUAL,PersistenceHelper.getObjectIdentifier(name)));//删选条件 用户
QueryResult qr = PersistenceHelper.manager.find(qs);
//今后持续更新


/**

* 根据用户名得到用户

* @param name 用户名

* @throws WTException

* return WTUser

*/

public static WTUser getUserFromName(String name) throws WTException {

Enumeration enumUser = OrganizationServicesHelper.manager.findUser(WTUser.NAME, name);

WTUser user = null;

if (enumUser.hasMoreElements())

user = (WTUser) enumUser.nextElement();

if (user == null) {

enumUser = OrganizationServicesHelper.manager.findUser(WTUser.FULL_NAME, name);

if (enumUser.hasMoreElements())

user = (WTUser) enumUser.nextElement();

}

if (user == null) {

throw new WTException("系统中不存在用户名为'" + name + "'的用户!");

}

return user;

}

}

10.windchill 中查询,高级查询,基本查询

QuerySpec qs = new QuerySpec();//构造

Int index = qs.appendClassList(WTPart.class,true);//添加查询类型,获取类型索引,第2个参数表示“要查询的类型、表”

WhereExpression where = new SearchCondition(WTPart.class, WTPart.xx, “=”, xx);//泛型在WC API中的使用

//获取查询条件数目

If(qs.getConditionCount()>0 && qs.getWhere().endsWith(“"))

{
qs.appendAnd();

}

//添加查询条件

qs.appendWhere(where, new int[]{index});

//** 以下是联合查询的API范例。LINK关系//ROLEA、ROLEB的INDEX被使用到。
int linkIndex = qs.appendClassList(XXLink.class, false);

qs.appendJoin(linkIndex, xxLink.RoleA, index_A);

qs.appendJoin(linkIndex, xxLink.RoleB, index_B);

//添加“生命周期”查询条件

LifeCycleConfigSpec lcsp = new LifeCycleConfigSpec();

lcsp.setLifeCycleState(State.toState(state));

qs = lcsp.appendSearchCriteria(qs);

//执行查询

QueryResult qr = PersistenceHelper.manager.find(qs);

//过滤出最新小版本

LatestConfigSpec lcs = new LatestConfigSpec();

qr = lcs.process(qr);

/**
* 根据WTPartMaster对象获得最新的WTPart
* @param partmaster WTPartMaster对象
* @return 最新的WTPart
* @throws WTException
*/
public static WTPart getLastPart(WTPartMaster partmaster) throws WTException{
WTPart part=null;
if(partmaster==null){
return part;
}
ConfigSpec configSpec=ConfigHelper.service.getDefaultConfigSpecFor(WTPart.class);
QueryResult qr=ConfigHelper.service.filteredIterationsOf(partmaster, configSpec);
if(qr!=null){
while(qr.hasMoreElements()){
part=(WTPart) qr.nextElement();
}
}
return part;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: