`
ba1du
  • 浏览: 32700 次
  • 性别: Icon_minigender_1
  • 来自: Blizzard
社区版块
存档分类
最新评论

Part/BOM的导出

阅读更多
private static ReferenceFactory rf=new ReferenceFactory();
private static final boolean serverFlag=RemoteMethodServer.getDefault().ServerFlag;

/**
* @param args
* @throws WTException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
OutputStream os=new FileOutputStream(new File("E:/test.xls"));
bomexport(os,"VR:wt.part.WTPart:311117");
//bomexport(os, "VR:wt.part.WTPart:311189");

}
public static Object getObjectByOid(String oid) throws WTException{

return rf.getReference(oid).getObject();
}

public static void bomexport(OutputStream os,String oid) throws Exception{
RemoteMethodServer methodServer = RemoteMethodServer.getDefault();
methodServer.setUserName("wcadmin");
methodServer.setPassword("wcadmin");
if(oid!=null && oid.length()>0){
ArrayList list=new ArrayList();

WTPart part=(WTPart) getObjectByOid(oid);
list=getBOM(part,list);
createBOMExcel(os, list, part);
}


}
public static ArrayList getBOM(WTPart part,ArrayList list) throws Exception{
System.out.println("whodd");
//if(serverFlag){

if(part==null){
return list;
}
WTPrincipal currentUser=null;
try {
currentUser=SessionHelper.getPrincipal();
SessionHelper.manager.setAdministrator();
if(part.isEndItem()){
addAttrToList(list, part);
}

QueryResult qr=WTPartHelper.service.getUsesWTPartMasters(part);
if(qr.size()!=0){
while(qr.hasMoreElements()){
WTPartUsageLink link=(WTPartUsageLink) qr.nextElement();
if(link!=null){
WTPartMaster partmaster=(WTPartMaster) link.getRoleBObject();
WTPart subpart=getLastPart(partmaster);
if(subpart!=null){
addAttrToList(list, subpart);

}
getBOM(subpart,list);
}

}
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
SessionHelper.manager.setPrincipal(currentUser.getName());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}


}

return list;
2
2
分享到:
评论
1 楼 ba1du 2010-10-18  
}
/**
*  添加属性到ArrayList中
* @param list
* @param subpart
*/
public static ArrayList addAttrToList(ArrayList list,WTPart subpart){
ArrayList sublist=new ArrayList();
String partname=subpart.getName();
String partid=subpart.getNumber();
String partstate=subpart.getLifeCycleState().getDisplay();
String partcreator=subpart.getCreator().getName();
String partcreatetime=subpart.getCreateTimestamp().toLocaleString();
String partmodifytime=subpart.getModifyTimestamp().toLocaleString();
String productname=subpart.getPartType().getDisplay();

sublist.add(partname);
sublist.add(partid);
sublist.add(partstate);
sublist.add(partcreator);
sublist.add(partcreatetime);
sublist.add(partmodifytime);
sublist.add(productname);

list.add(sublist);

return list;

}

/**
* 根据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;
}
/**
* 创建BOM导出的excel
* @param os
* @param list
* @param part
* @throws IOException
*/
public static void createBOMExcel(OutputStream os,ArrayList list,WTPart part) throws IOException{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet("BOM Export");

HSSFRow row0=sheet.createRow(0);
HSSFCell cell0=row0.createCell((short)0);
cell0.setCellValue("名称");
HSSFCell cell1=row0.createCell((short)1);
cell1.setCellValue("编号");
HSSFCell cell2=row0.createCell((short)2);
cell2.setCellValue("状态");
HSSFCell cell3=row0.createCell((short)3);
cell3.setCellValue("创建者");
HSSFCell cell4=row0.createCell((short)4);
cell4.setCellValue("创建时间");
HSSFCell cell5=row0.createCell((short)5);
cell5.setCellValue("修改时间");
HSSFCell cell6=row0.createCell((short)6);
cell6.setCellValue("产品名称");

for (int i = 0; i < list.size(); i++) {
ArrayList templist=(ArrayList)list.get(i);
HSSFRow rowi=sheet.createRow(i+1);
for(int j=0;j<templist.size();j++){
HSSFCell celli=rowi.createCell((short)j);
celli.setCellValue(templist.get(j).toString());
}
}
os.flush();
workbook.write(os);
}

相关推荐

    利用allegro导出BOM

    "利用allegro导出BOM" 在电子设计自动化(EDA)领域中,Allegro是一个功能强大的PCB设计工具。导出Bill of Materials(BOM)是Allegro...在进行BOM导出时,需要注意属性的设置和选择,以确保导出的BOM是正确和完整的。

    orCAD导出BOM表的方法.docx

    希望本文能够帮助您更加高效地使用orCAD Capture完成BOM导出任务。 #### 六、扩展阅读 - **orCAD Capture官方文档**:深入了解orCAD Capture的功能和高级用法。 - **BOM管理最佳实践**:探索如何有效地管理和优化...

    Export_BOM_Catia二次开发BOM输出_catia_

    7. **用户界面集成**:如果需要,可以设计用户友好的界面,让用户选择导出选项或触发BOM导出操作。 8. **版本控制与兼容性**:考虑到CATIA的不同版本可能存在的差异,开发时需要考虑代码的兼容性问题。 通过以上...

    PadsPCB导出BOM[整理].pdf

    知识点1:PadsPCB的BOM导出 PadsPCB提供了导出BOM的功能,用户可以根据需要导出不同的BOM格式,例如Excel格式。在PadsPCB中,用户可以通过工具栏中的"基本脚本"选项卡来访问BOM导出功能。 知识点2:Pads Layout ...

    PADS-LOGIC导出BOM简明教程.pdf

    在这个阶段,你可以自定义BOM的输出内容,比如添加Part Attribute,如价格、供应商等信息。这些附加信息对于管理供应链和成本计算至关重要。 接下来,进入[Bill of Materials Setup]界面。这里,你需要特别注意勾选...

    17 - Excel Part List Report.BAS

    PADS9.5用基本脚本导出坐标文件,但是出来的是BOM,没有坐标。 这是因为17 - Excel Part List Report.BAS脚本有问题,用这个替换就可以正常输出坐标

    Cadence导出合并BOM时,不同类器件错乱在一起问题

    ### Cadence导出合并BOM时,不同类器件错乱在一起问题 #### 问题背景与概述 在电子设计自动化(EDA)领域,Cadence Design Systems是一家知名的软件供应商,其产品广泛应用于集成电路(IC)设计、印刷电路板(PCB...

    批量导出CATIA零件毛料尺寸

    【批量导出CATIA零件毛料尺寸】是一个利用CATIA VBA(Visual Basic for Applications)技术实现的功能,它能够帮助用户高效地管理CATIA零件的相关信息。这一功能主要用于批量提取和整理位于特定文件夹及其子文件夹内...

    PADS生成BOM表.pdf

    4. **选择显示属性**:选择“General part properties in table format”,这将确保BOM中包含如零件名称、封装类型、数量等基本信息。 5. **细化BOM内容**:根据需要,选择具体的BOM类型,例如可以选择添加供应商...

    PADS导BOM脚本.rar

    标题中的“PADS导BOM脚本.rar”指的是一个用于PADS Layout软件的批处理脚本,该脚本能够帮助用户导出Bill of Materials(BOM),即物料清单。BOM是电子设计自动化(EDA)过程中的关键部分,它列出了电子产品所需的...

    利用BeyondCompare工具进行BOM检查及原理图和PCB对比.pdf

    - 首先,你需要从Power Logic软件中导出BOM,这通常包括元件的参考设计ator(REF-DES)、类型(PART-TYPE)和值(VALUE)。 - 进入Beyond Compare的设置,选择需要对比的参数。基础参数包括REF-DES、PART-TYPE和...

    Cadence-Capture-CIS-批量修改元器件属性操作说明

    BOM导出后,需要根据设计需求对内容进行调整。操作步骤如下: 1. 打开BOM文件,在软件中会显示BOM的初始状态。 2. 删除不必要的行和列,例如“item”和“quantity”列,以便于更专注于需要修改的属性。 3. 根据设计...

    ecDB:ecDB,电子元器件数据库

    自述文件 ecDB和PartsBox ecDB或电子元器件数据库是由 aka创建的一个项目。 ElectricMan,由设计。 在2018年5月,ecDB.net被PartsBox( )收购,并且提供了在线ecDB服务的用户来升级/迁移...当ecDB的所有权转移到Part

    Cadence OrCAD Capture CIS数据库配置.docx

    如果 BOM 中没有原理图封装,需要从原理图中把原理图封装导出,再通过 vlookup 的方式导入 BOM 中,最后再将整理好的 BOM 导入数据库中。料号一定要与原理图器件封装一一对应。 2. 从原理图中导出原理图库,放置...

    JavaScript 权威指南(第四版)part2.zip

    本书分为两部分,我们关注的是第二部分,即"JavaScript 权威指南(第四版)part2"。这部分内容可能涵盖了JavaScript的核心概念、高级特性以及实际应用。 JavaScript是一种广泛用于网页和网络应用的脚本语言,它与HTML...

    Cadence-Capture-CIS-配置流程及要求.pdf

    BOM单可以导出为Excel格式,方便进一步的工程管理和生产准备。 总结起来,Cadence Capture CIS的配置流程涉及数据库的创建和管理、ODBC的配置以建立数据库连接,以及Capture CIS的内部配置,使设计流程顺畅。设计...

    Cadence-原理图批量修改元器件属性.doc

    3. 选中“Place each part entry on a separate line”,并输入想要导出的参数,其中必须选择“Reference”,这是器件的唯一标识符。 二、修改 BOM 内容 修改 BOM 的内容可以按照自己的需求来修改。步骤如下: 1....

    Cadence CIS本地数据库建立及其配置方法.pdf

    在导出BOM(物料清单)时,设置和预览是关键步骤,确保导出的BOM准确无误,满足设计和生产的需要。正确的导出设置可提高生产的效率并减少错误。 在设计原理图时,调用数据库中的元器件不仅简化了设计流程,还能确保...

    Teamcenter API

    Teamcenter 相关模块API

    实验五-2报表.ppt

    生成的BOM可以导出为不同的格式,如CSV(逗号分隔值)或XLS(Excel格式),方便导入到库存管理系统或采购平台。 2. **BOM的内容**:BOM通常包含元件的Designator、Footprint、Part Type、供应商信息、数量等,确保...

Global site tag (gtag.js) - Google Analytics