其他 Windchill 功能 > 制造过程管理 > 自定义工艺计划浏览器
  
自定义工艺计划浏览器
工艺计划,是为生产、检查、修复或维护指定部件或装配体而需要在车间完成的各项任务的详细说明。其中包括要执行的操作、操作的执行顺序、物理资源、所需的工厂条件和技能、文档参考、文本说明及时间和成本需求。
使用 Windchill MPMLink 工艺计划,可以定义以下内容。
执行产品制造时所需的操作。
这些操作的执行顺序。
每项操作的时间、成本和约束。
执行操作所需的物理资源和技能。
制造产品时需要的部件,以及制造过程中该部件的使用位置和方式。
Windchill MPMLink 中,工艺计划还可用于创建车间“工作指示”。工作指示生产、检查、修理或维护部件时在车间使用的分步说明。工作指示是动态生成的 HTML 文档,由工艺计划信息 (工步、操作、部件分配、资源分配、时间等) 和所有相关文档 (如绘图、图像和带有注释的 3D 会话) 组成。
创建自定义公式
公式集用于将一组属性与用来计算其值的相应公式或方程进行关联。组成公式集的组件如下所示:
FormulaSet 标识公式集
FormulaMetaData 定义 Java 公式的名称和说明
FormulaValuatedLink 将属性名称关联到公式定义
下图提供的示例说明了要添加自定义公式需要创建的数据:
“公式集”选项卡用于选择预先定义的公式集,这些公式集可用于计算与操作相关联的时间和成本。例如,标准时间和成本公式集以及周期时间和成本公式集。这些公式集将要在操作中生产的部件数量考虑在内,并使用为工作中心定义的规范 (例如,设置时间、排队时间)。在选择了“计算时间和成本”操作时,以及将工艺计划和操作加载到“制造甘特浏览器”时,会使用公式和公式集。
虽然可以将多个公式集与一个工作中心关联,但只能将一个公式集指定为工作中心的默认公式集。在将工作中心分配给某操作时,实际是将此公式集分配给该操作。
* 
必须将公式分配给公式集。如果没有现有公式集,则必须定义一个,然后才能定义自定义公式。可以对 PSE 进行自定义,以便可以使用 PSE 将其他值添加到自定义公式集。有关详细信息,请参阅 PSE 文档。
要创建自定义公式,请执行以下步骤:
1. 使用 LoadFromFile 实用程序加载一个基于 XML 的加载文件,其中 <csvname> 对于系统而言是唯一的。此加载文件必须包含以下所有元素:
csvFormulaSet - 该元素会创建一个 FormulaSet 对象。
csvFormulaMetaData - 该元素会创建一个 FormulaMetaData 对象。
csvAddFormulaMetaData - 该元素会将 FormulaMetaData 链接到 FormulaSet。
<csvFormulaSet handler="com.ptc.windchill.mpml.formula.LoadFormula.
createFormulaSet">
<csvuser></csvuser>
<csvname>Standard Time and Cost</csvname>
<csvdescription>This formula Set is used to calculate the time and
cost of an Operation</csvdescription>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
</csvFormulaSet>
2. 通过链接到实现公式界面并返回计算值的 java 类名称,可以创建一个公式元数据。例如,FloatingPointWithUnits。
使用 LoadFromFile 实用程序加载一个基于 XML 的加载文件,其中 <csvname> 对于系统而言是唯一的,<csvformulaClassName> 是实现公式界面的 Java 类。
<csvFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.createFormulaMetaData">
<csvuser></csvuser>
<csvname>StandardAttributeValueFormulaTime</csvname>
<csvdescription>Standard Attribute Value Formula</csvdescription>
<csvtype>time</csvtype>
<csvformulaClassName>com.ptc.windchill.mpml.formula.Standard AttributeValueFormula</csvformulaClassName>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
<csvorganizationID></csvorganizationID>
</csvFormulaMetaData>
3. 使用属性名称将公式元数据链接到公式集。
例如,当调用用于计算公式的服务时,将执行与公式集关联的所有公式元数据,并且将使用属性名称作为密钥来返回所有计算值的映射。
使用 LoadFromFile 实用程序加载一个基于 XML 的加载文件,其中 <csvattributeName> 是 MPMOperation 对象上的时间和成本可重用属性。
<csvAddFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.addFormulaMetaDataToFormulaSet" >
<csvformulaSetName>Standard Time and Cost</csvformulaSetName>
<csvformulaMetaDataName>StandardAttributeValueFormula Time</csvformulaMetaDataName>
<csvattributeName>IBA|MPM_Attr_MPMOperationSetupTime </csvattributeName>
</csvAddFormulaMetaData>
在创建用于实现公式界面的 java 类时,这些输入随出厂设置提供在输入映射中。
FormulaHelper.FORMULAVALUATED:用于链接公式集并转换为 ForumlaValuated 的对象。
FormulatHelper.FORMULAVALUATED_TI:用于链接公式集并转换为 TypeInstance 的对象类型实例。它可为空。
FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME:用于将公式元数据链接到公式集并转换为字符串的属性名称。这将用作结果映射中的密钥。
FormulaHelper.LOT:用户在“计算时间和成本”操作的上下文中指定的批号值。它转换为双精度。
以下是一个公式 java 类示例:
import com.ptc.core.meta.common.AttributeIdentifier;
import com.ptc.core.meta.common.AttributeTypeIdentifier;
import com.ptc.core.meta.common.TypeinstanceIdentifier;
import com.ptc.core.meta.context.common.AttributecontextSpec
import com.ptc.core.meta.server.TypeIdentifierUtility;
import com.ptc.core.meta.type.common.TypeInstance;
import com.ptc.core.meta.type.common.TypeInstanceFactory;
import com.ptc.windchill.mpml.MPMLinkHelper;
import java.text.NumberFormat;
import java.util.HashMap;
import wt.units.FloatingPointWithUnits;
import wt.util.WTContext;
import util.WTException;
public class StandardAttributeValueFormula implements Formula{
private static final String RESOURCE = "com.ptc.windchill.mpml.formula.formulaResource";
private static NumberFormat numberFormat =
NumberFormat.getInstance(WTContext.getContext().getLocale());
/** Creates a new instance of StandardAttributeValueFormula */
* This Formula simply return the value of the attribute.
public StandardAttributeValueFormula() {
}
public FloatingPointWithUnits calculate(HashMap inputs)throws
InvalidFormulaInputException, WTException{
//Get the object on which the formula is call
Object object = inputs.get(FormulaHelper.FORMULAVALUATED);
//Get the TI on which the formula is call
TypeInstance ti =(TypeInstance)inputs.get(FormulaHelper.FORMULAVALUATED_TI);
//Get the attribute that is calculated by the formula
String attribute_name = (String)inputs.get(FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME);
if(object == null)
throw new InvalidFormulaInputException( RESOURCE, formulaResource.REQUIRED_FORMULA_INPUT_MISSING, new Object[]{FormulaHelper.FORMULAVALUATED} );;
TypeInstanceIdentifier tii = null;

//Get the TI of the object if null
if(ti==null){
tii = TypeIdentifierUtility.getTypeInstanceIdentifier(object);
ti = TypeInstanceFactory.newTypeInstance(tii);
}else
tii = (TypeInstanceIdentifier)ti.getIdentifier();
//Get ATI for the attribute to calculate
AttributeTypeIdentifier ati = (AttributeTypeIdentifier)MPMLinkHelper.getIdentifierFactory().get(attribute_name,tii.getDefinitionIdentifier());
AttributeIdentifier[] ais = ti.getAttributeIdentifiers(ati);
//If the attribute value is not in the TI, update it to get the value
if(ais.length<1){
AttributecontextSpec fl = new AttributecontextSpec();
fl.putEntry(ati);
ti = MPMLinkHelper.updateTypeInstance(new TypeInstance[] {ti}, fl, null)[0];
ais = ti.getAttributeIdentifiers(ati);
}
//Get the attribute value
Object value = null;
if(ais.length>0)
value = ti.get(ais[0]);
//Return the value of the attribute if it’s a FloatingPointWithUnits
if(value instanceof FloatingPointWithUnits)
return (FloatingPointWithUnits)value;
// value is null
return FloatingPointWithUnits.valueOf(numberFormat.format(0));
}
}
* 
还可以向公式添加更多输入,方法是创建一个新操作,然后使用公式服务来调用公式集的执行。有关创建新操作的详细信息,请参阅 PSE 文档。
启用周期时间和成本公式
要启用周期时间和成本公式,请按下列步骤操作:
1. 启动“类型和属性管理”实用程序。
2. “管理可重用属性”窗格中,选择 Resource_Attribute_Org 组织器。
3. 插入一个具有以下特性的属性:
名称:MPM_Attr_SetupLotInterval
数据类型:实数
内部名称:MPM_Attr_SetupLotInterval
说明:显示名称和分级显示名称:设置批号间隔
4. 插入一个具有以下特性的属性:
属性:MPM_Attr_SetupTimeDuringProcessing
数据类型:实数
内部名称:MPM_Attr_SetupTimeDuringProcessing
说明:显示名称和分级显示名称:设置批号间隔
5. 插入一个具有以下特性的属性:
名称:MPM_Attr_SetupCostDuringProcessing
数据类型:实数
内部名称:MPM_Attr_SetupCostDuringProcessing
说明:显示名称和分级显示名称:在处理期间设置成本
6. “管理类型”窗格中,编辑位于“部件主数据” > “资源” > “可分配的操作”下的“工作中心”类型
7. “模板”选项卡中,选择“属性根”,单击“添加属性”,然后将之前创建的三个属性关联到“工作中心”类型。
8. 启动“制造资源浏览器”。
9. 针对每个现有“工作中心”,检出“工作中心”,然后在“设置批号间隔”、“在处理期间设置时间”和“在处理期间设置成本”属性的“信息”选项卡中设置一个值。设置所有属性后,检入“工作中心”。
更改累计时间和成本的测量单位
“工艺计划浏览器”的累计时间和成本功能不使用“测量系统”默认单位。
要更改时间和成本累计的测量单位,必须修改以下特性:
com.ptc.windchill.mpml.CumulatedTimeAndCostActionTimeUnit
com.ptc.windchill.mpml.CumulatedTimeAndCostActionCostUnit
这些特性位于以下位置:
codebase/com/ptc/windchill/mpml/xconf/mpmlin.properties.xconf
默认值分别为 "min" 和 "$"。
自定义工作指示
可以自定义随 Windchill MPMLink 安装的工作指示模板,以满足您的需求。要自定义工作指示,您应该具备 JSP 和 Info*Engine 的基础知识。
Info*Engine 任务用于收集在工作指示中显示的信息,Jsp 用于排列和格式化该信息的显示:
位置
说明
<WT_Home>\codebase\netmarkets\jsp\ mpml
在工作指示中使用的 JSP 的位置。
<WT_Home>\tasks\com\ptc\windchill\ mpml\workinstructions
用于收集工作指示数据的 Info*Engine 任务的位置。
<WT_Home>\codebase\com\ptc\windchill\ mpml\xconfs\ mpmlink.properties.xconf
工作指示特性的位置。
<WT_Home>\codebase\netmarkets/css/wor kInstructionStyles.css
工作指示样式表的位置。此文件可用于更改工作指示中使用的字体以及报告标题的颜色。
在工作指示中使用的 JSP
下表列出并说明了用于配置工作指示的 JSP。
JSP
说明
headerWorkInstruction.jsp
创建显示在工作指示报告顶角的徽标图像。它会在徽标的右侧创建一个表格,用于显示报告中所示操作的工艺计划的相关信息。它会在最右侧创建与此工艺计划关联的装配表格信息。
configSpecWorkInstruction.jsp
创建工作指示报告中使用的配置规范表格。三种配置规范对此报告有效:标准、基线和有效性。所示值是在启动工作指示报告时应用于数据的展开条件值。
operationHeaderWorkInstruction.jsp
在左边距中显示 sequenceHeaderWorkInstruction.jsp 中创建的信息。创建操作或子操作的标签编号并将其放在序列号的旁边。在标签编号的下面,它会创建一个表格,用于显示该操作的名称、编号、版本和简短说明。
operationDetailHeaderWorkInstruction. jsp
在操作标题下面创建一个表格。该表格显示操作的详细信息,其中包括所使用的工作中心、时间和成本。
operationDetailWI.jsp
创建一个表格,其中包含操作的详细说明、关联的部件、分配的资源以及关联的文档。如果文档表格中“显示”列的值为“是”,则关联的文档是一个可识别的图像并显示在这些详细信息表格左侧的工作指示面板中。可以在工作指示中显示的图像文件必须以下列特性指定的扩展名作为结尾:
com.ptc.windchill.mpml.WorkInstructi
onIllustrationFileExtensionAllowed
sequenceHeaderWorkInstruction.jsp
当操作是工步的一部分时,此 JSP 会创建指向分支的链接并返回操作。如果操作是另一操作的子操作,此 JSP 会创建指向父项操作的链接。
footerWorkInstruction.jsp
创建在显示在每一操作部分结尾的页脚区域。此区域显示操作的当前状态、状况、检查、首次创建时间、上次更新操作的用户以及上次更新的日期和时间。
coreWorkInstruction.jsp
用于构建工作指示报告的核心 JSP。处理 URL 参数并调用任务 Info*Engine,该任务用于收集与在工艺计划中找到的操作相关的数据。如果从工艺计划启动 JSP,它会调用
processPlanLogicWorkInstruction.jsp
如果从某项操作启动 JSP,它会调用
operationLogicWorkInstruction.jsp
此 JSP 还会计算操作和工步分支之间的父项和子项关系并返回操作。针对每项操作,它将调用一些 JSP,这些 JSP 将创建表格并显示由 Info*Engine 任务返回的数据。
operationLogicWorkInstruction.jsp
Info*EngineInfo*Engine
启动 Info*Engine 任务查找某个操作下的所有操作和标准工序。操作按照操作标签编号进行排序。此 JSP 不在报告中显示项目。
processPlanLogicWorkInstruction.jsp
启动 Info*Engine 任务查找某个操作下的所有操作、工步和标准工序。找到的操作按照操作标签编号进行排序。此 JSP 不在报告中显示项目。
在工作指示中使用的 Info*Engine 任务
下表列出并说明了 Info*Engine 任务,这些任务用于收集在工作指示中使用的数据。
Info*Engine 任务
说明
describeAttributes.xml
此任务中的每个 webject 会创建一个组,将在该组中对属性的值进行本地化。这些本地化的值随后显示在工作指示报告中。
getOperationData.xml
此任务中的 webject 会针对工作指示报告中显示的数据查询操作。将收集以下数据集:工作中心、工艺、部件、制造能力、资源和文档。每个数据集都存储在一个 Info*Engine 组中。
getOperationsAndStProceduresUnderAnOperation.xml
此任务中的 webject 会创建一个组,其中包含在特定操作下找到的所有第一深度子操作和标准工序。
getProcessPlanAndAssemblyInformation.xml
此任务中的 webject 会创建一个组,其中包含与工艺计划关联的装配相关信息。
getSequencesAndStProceduresUnderAProcessPlan.xml
此任务中的 webject 会创建一个组,其中包含在某个工艺计划下找到的所有第一深度工步和标准工序。
sortingOperations.xml
此任务中的 webject 会创建一个组,其中包含在特定操作下找到的子操作和标准工序。它还会对每个级别的操作和标准工序进行排序。当前,该算法不是递归的;它将向上到 3 个级别的深度。也就是说,它将只查找 3 个级别的子操作,然后停止,不管是否存在更多子操作。要获得更深的级别,请遵循此任务中应用的模式并相应地添加更多级别。
sortingSequences.xml
此任务中的 webject 会创建一个组,其中包含在特定工步下找到的子工步和标准工序。它还会对每个级别的工步和标准工序进行排序。当前,该算法不是递归的;它将向上到 3 个级别的深度。也就是说,它将只查找 3 个级别的子工步,然后停止,不管是否存在更多子工步。要获得更深的级别,请遵循此任务中应用的模式并相应地添加更多级别。
工作指示特性
工作指示自定义
可以出于多种原因对工作指示进行自定义,包括将标题和徽标替换为我们自己的信息,或者提供更简单的工作指示。
下表列出了一些常用的工作指示自定义。
自定义
说明
要更改某项操作的时间单位:
修改以下 JSP:
timeUnit in coreWorkInstruction.jsp
例如,要从秒更改为分钟,请更改为 m
要更改某项操作中的步骤的时间单位:
根据需要修改以下 JSP:
setupTimeUnit
processingTimeUnit
LaborTimeUnit
queueTimeUnit,
teardownTimeUnit,
waitTimeUnit,
moveTimeUnit
例如,要从秒更改为分钟,请更改为 m
要在工作指示中重新定位表:
导航至以下 JSP 的结尾:
coreWorkInstruction.jsp
然后,重新设计 HTML 显示。
要在工作指示中显示某项操作的处理成本:
导航至以下任务:
getOperationsAndStProceduresUnder AnOperation.xml
sortingOperations.xml
将以下属性添加到上述任务:
MPM_Attr_MPMOperationProcessingCost
然后,创建列并在以下 JSP 中显示数据:
operationDetailHeaderWorkInstruction
.jsp
要更改工作指示中标题的字体、大小或颜色:
修改以下 CSS 文件和使用了 CSS 文件中定义的 JSP:
workInstructionStyles.css
要更改位于工作指示顶部或操作表格中的徽标:
请按下列步骤进行操作:
xconfmanager -d
com.ptc.windchill.mpml.WorkInstructionLogo=<logo> -t
codebase/wt.properties
其中 <logo> 是在以下文件夹中找到的徽标 .gif 文件的完整路径:
codebase\netmarkets\jsp\mpml
默认值为:../../images/ptcLogo_workInstructions.gif corresponding to folder codebase\netmarkets\images
要添加图像扩展名类型:
将扩展名类型添加到以下特性:
com.ptc.windchill.mpml.WorkInstructi
onIllustrationFileExtensionAllowed
要重新排列、移除或添加新表格:
修改以下 JSP:
coreWorkInstructions.jsp
更改操作编号
Windchill MPMLink 以连续增量 10 对操作进行编号。例如操作 10、操作 20,依次类推。但是,您可能希望对操作进行配置,以便按照不同的编号方案自动递增。
要更改编号方案,您可以修改以下特性:
wt.operationLabelIncrement
wt.operationLabelNumberOfCharacters
例如,要生成具有三个字符的操作标签并让这些标签以 5 为增量进行递增 (005、010),请将以下内容放到 site.xconf 中,然后运行 xconfmanager -pF:
<Property name="wt.operationLabelIncrement" overridable="true" targetFile="codebase/wt.properties" value="5"/>
<Property name="wt.operationLabelNumberOfCharacters" overridable="true" targetFile="codebase/wt.properties" value="3"/>
此外,要更改某项操作使用的填充 (例如,更改为非零值),请修改以下特性:
wt.operationLabelPaddingCharacter