WindChill开发文档

WindChill开发

一、配置环境
  • 修改计算机名称

  • 关闭Windows防火墙

  • 配置host文件 ==> win + R 输入drivers打开host文件路径

  • 增加如下内容

    192.168.110.59   plm.ybs.com  localhost
    

    ps: 这边配置的是桥接模式

二、PDM&PLM简介

1.什么是PDM?

定义:PDM是产品数据管理

作用:PDM是一种帮助工程师和其他管理人员管理产品数据和产品研发过程的工具

2.什么是PLM?

定义:PLM是铲平生命周期管理

作用:让各种数据(产品研发,设计,采购,生产,售后服务等)管理工具使用同一种语言互相通讯,写作工作,来提高企业生产效率和产品创新技能。

3.目前主流的产品

  • 生产ERP的软件公司(SAP的Mysap、Oracle的Agile、用友的PDM、金蝶PDM)

  • 传统机械软件设计软件公司(PTC的windchill、西门子公司的Teamcenter、达索公司的PLM)

三、Windchill的基础操作
  1. 打开Windchill首页

    点击主页按钮打开Windchill的用户界面,主页提供特定于用户的信息。

  2. 使用快速链接

    可以访问常用的工具,首选项和信息

  3. 使用导航器

    可搜索或浏览Windchill中的信息

四、Windchill物料和BOM管理

1.物料和BOM的概念

  • 物料:一个泛称,它可以是企业中的零件、组件、虚拟件、结合件、实际功能件、原材料等,它可以自制或者外购。

    image-20230721171349724

  • BOM:体现当前产品中的实物清单,主要包含各类物料及其数量;

    • 侠义的BOM

      以树状形式展现物料与物料之间的使用关系如层级结构、用量等;

      只体现了BOM当中物料信息;

    • 广义BOM

      在侠义BOM的基础上,充分考虑了其它更为完整的产品信息如技术文件、图纸、变更信息等;

      更多通过物料与其他信息的关联关系来展示

    • BOM的属性

      装配指示符

      优先级

      替代项目组

      排序字符串

      备注

2.BOM数据管理模型

image-20230721172441717

3.部件和成品功能

image-20230721172536652

4.创建单个物料

物料需要在上下文容器中创建,例如:产品库、存储库等。

例如在产品库中创建物料,步骤如下:

  1. 点击产品库结构中的"文件夹"
  2. 选择需要存放物料的文件夹"Parts"
  3. 点击"新建部件"按钮

image-20230721172840231

5.填写物料属性

  1. 选择需要创建的类型,例如"部件"
  2. 输入编号,自动生成则不用输入
  3. 输入名称
  4. 选择或填写其他业务属性
  5. 点击"完成"按钮创建新物料

6.物料管理的数据

打开物料详情信息页面,可以看到以下属性信息

  • 编号

  • 名称

  • 版本(包含修订版本和小版本)

  • 视图

  • 生命周期状态

  • 存储位置

  • 其他业务属性

  • 结构数据

  • 相关对象更改

7.创建多个物料

  1. 点击文件夹工具栏的"操作"按钮

  2. 点击"新建" ==> “新建多个部件”

四、启动Windchill
  1. 运行start.ds和httpserver
  2. 管理员运行Windchill start
五、初始化项目(准备工作)
  1. 输入指令,生成jar包

    ant -f tpJars.xml all
    
  2. 将codebase/config/mvc位置中的mvc.xml包扫描换成项目名称

  3. ant -f build.xml jc 编译

  4. Windchill start 启动windchill

六、入门接口案例
  1. 根据编号查询部件

    public JSONObject queryWTPartByNumber(String number) {
         
            WTPart latestWTPartByNumber = null;
            JSONObject jsonObject = new JSONObject();
            try {
         
                if (StringUtils.isEmpty(number)) {
         
                    throw new Exception("number不能为空");
                }
                WTPart part = PartUtils.getPart(number, false);
                Console.log("part===>", part);
    
                if (ObjectUtil.isNotEmpty(part)) {
         
                    jsonObject.set("name", part.getName());
                    jsonObject.set("number", part.getNumber());
                }
            } catch (WTException e) {
         
                e.printStackTrace();
            } catch (Exception e) {
         
                e.printStackTrace();
            }
            return jsonObject;
        }
    
  2. 通过API创建部件

    private JSONObject createAndSavePart(PartEntity part) throws WTException {
         
            JSONObject jsonObject = null;
            try {
         
                WTObject wtObject = WTObjectUtil.getWTObjectByOid(part.getContainerOid());
                WTContainer container = null;
    
                if (ObjectUtil.isNotEmpty(wtObject) && wtObject instanceof WTContainer) {
         
                    container = (WTContainer) wtObject;
                }else {
         
                    throw new WTException("wtObject为空");
                }
                WTContainerRef containerReference = WTContainerRef.newWTContainerRef(container);
                WTPart wtPart = WTPart.newWTPart(part.getNumber(), part.getName(), QuantityUnit.EA);
                wtPart.setContainerReference(containerReference);
                Folder location = null;
                try {
         
                    location = FolderHelper.service.getFolder("/Default/机械部件", containerReference);
                } catch (WTException e) {
         
                    location = FolderHelper.service.saveFolderPath("/Default/机械部件", containerReference);
                }
                wtPart.setPartType(PartType.SEPARABLE);
                wtPart.setSource(Source.MAKE);
                ViewHelper.assignToView(wtPart, ViewHelper.service.getView("Design"));
                PersistenceHelper.manager.save(wtPart);
                WTPart newPart = (WTPart) PersistenceHelper.manager.refresh(wtPart);
                jsonObject = new JSONObject();
                jsonObject.putOpt(IBAConstants.NAME, IBAUtils.getIBAValue(newPart, IBAConstants.NAME));
                jsonObject.putOpt(IBAConstants.NUMBER, IBAUtils.getIBAValue(newPart, IBAConstants.NUMBER));
            } catch (Exception e) {
         
                e.printStackTrace();
                throw new WTException("对象创建失败。(" + e.getMessage() + ")");
            }
            return jsonObject;
        }
    
  3. 递归获取带有层级结构的BOM

    public JSONObject getAllChildPart(String oid) throws WTException, RemoteException {
         
        List<JsonPartBean> bom = Lists.newArrayList();
        JSONObject jsonObject = new JSONObject();
        if (StrUtil.isNotEmpty
### PTC Windchill PLM Software Overview PTC Windchill 是一种强大的产品生命周期管理 (PLM) 软件解决方案,旨在帮助企业集中管理和控制其产品数据和流程。该软件广泛应用于制造业和其他行业,用于支持从概念到退役的产品全生命周期管理。 #### 功能概述 PTC Windchill 提供了一套全面的功能模块,涵盖了产品开发过程中的各个方面。以下是几个核心功能: - **模型管理**: 用户可以通过 PTC Windchill 对由 PTC Creo 或其他 CAD 工具创建的设计模型进行集中存储和管理[^2]。当需要修改某一特定模型时,用户需先将其“检出”,以确保同一时间只有一个用户能够对其进行编辑,从而减少冲突的可能性。 - **变更跟踪**: PTC Windchill 支持记录每一次针对设计文件所做的改动及其执行者的信息。这种机制有助于提高透明度并增强对 CAD 数据的管控能力。 - **协同工作流**: 它促进了跨职能团队之间的协作,允许不同角色参与审批、评审等活动,并保持所有参与者始终使用最新版本的数据。 #### 技术需求与部署准备 为了成功实施 PTC Windchill 解决方案,在技术层面需要注意以下几点事项: - **基础架构依赖**: 成功安装 PTC Windchill 不仅要求具备最新的应用程序本身,还需要预先配置好 Java Development Kit (JDK) 和数据库管理系统(如 Oracle Database)。这些组件构成了支撑整个系统的底层框架[^4]。 - **测试环境搭建**: 推荐设置专门用于验证新特性和调整参数效果的独立测试平台。这样可以在不影响生产运营的前提下探索最佳实践[^1]。 #### 与其他业务系统的集成 考虑到现代企业内部往往存在多种信息化工具共存的局面,因此如何实现高效互联成为一大挑战。具体而言, - PTC Windchill 可以同 ERP (Enterprise Resource Planning)、SCM(Supply Chain Management),以及 CRM(Customer Relationship Management) 等系统无缝对接。这样的集成为了打通端到端价值链奠定了坚实的基础[^3]。 ```python # 示例代码展示简单的Windchill API调用方式 from ptctools import windchill_api def fetch_model_details(model_id): client = windchill_api.Client() model_info = client.get_model_by_id(model_id) return model_info model_data = fetch_model_details('MODEL_123') print(f"Model Details: {model_data}") ``` 上述脚本片段演示了利用 Python 编程语言通过官方提供的 SDK 获取指定 ID 下对应实体详情的方法论之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值