導覽 Vuforia Studio > 專案窗格 > 資源 > 將 CAD 中繼資料整合至體驗中
  
將 CAD 中繼資料整合至體驗中
本主題包含支援的函數、其輻角及輸出的完整清單。
這些 API 基於 Promise。如需有關 Promise 的詳細資訊,請參閱 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
欲存取完成範例專案檔案以及在體驗中使用 CAD 中繼資料的逐步教學專區指示,請參閱使用案例:3D-Guided Service Instructions
API 函數
宣告
參數
描述
get (idpath、propName、categoryName)
{string|string[]} idpath— Id 路徑,例如 '/0/1' 或 Id 路徑陣列 ['/0/1', '/0/2']
{string|string[]} propName—(選用) 例如 'Display Name'['Display Name', 'Part ID Path']
{string|string[]} categoryName—(選用) 例如 'PROE Parameters'
* 
propName string [],則 categoryName 也必須是相符長度的陣列 (或 undefined)。
獲取表示給定 idpath propName 之 Id 路徑或屬性值的中繼資料物件。
此函數會傳回表示給定 idpath 的中繼資料物件,或者如果已給定 propName,則會傳回元件的屬性值。
範例:
PTC.Metadata.fromId('model-1').then( (metadata) => {
var result = metadata.get('/0/6', 'Display Name')
});
getProp (propName、categoryName)
{string|string[]} propName—(選用) 例如 'Display Name'['Display Name', 'Part ID Path']
{string|string[]} categoryName—(選用) 例如 'PROE Parameters'
* 
propName string [],則 categoryName 也必須是相符長度的陣列 (或 undefined)。
此函數會傳回來自單一元件的全部字串屬性值,如果沒有可用的資料/元件,則會傳回 undefined。如果給定的 propName 是陣列,則會傳回值的字串 []。
範例:
PTC.Metadata.fromId('model-1').then( (metadata) => {
var result = metadata.get('/0/1').getProp('Display Name');
});
getCategory (categoryName)
{string} categoryName
此函數會傳回來自給定類別的物件 (包含全部屬性名稱與值)。
範例:
PTC.Metadata.fromId('model-1').then( (metadata) => {
var result = metadata.get('/0/6'). getCategory ('__PV_SystemProperties');
});
getSelected (selectFunc)
{function} selectFunc—(選用) 可控制放入傳回陣列中的值的函數。向函數提供 idpath,且輻角與目前中繼資料為:
`this` function(idpath) {
return [idpath, this.get(idpath, 'Display Name')];
});
此函數會傳回任何給定 selectFunc 所傳回之內容的陣列,或者如果 selectFunc 為 undefined,則會傳回 Id 路徑的字串 []。
範例:
PTC.Metadata.fromId('model-1').then( (metadata) => {
var selectFunc = function(idpath) {
return metadata.get(idpath, 'Display Name');
}
var result = metadata.getSelected(selectFunc);
});
find (propName、類別)
{string} propName—(必要)
{string} category—(選用)
根據屬性值尋找元件。另請參閱下文 findCustom
根據給定的 propName 與類別傳回元件的尋找程式。
範例:

PTC.Metadata.fromId('model-1').then( (metadata) => {
var displayName = metadata.find('Display Name').like('BOLT');
});
PTC.Metadata.fromId('model-1').then( (metadata) => {
var result = metadata.find('Part Depth').lessThan(3).find('Display Name').like('PRT');
});

PTC.Metadata.fromId('model-1').then( (metadata) => {
var selectFunc = function(idpath) {
return metadata.get(idpath, 'Display Name')
var result = metadata.find('Part Depth').greaterThan(4, selectFunc)
});
對比情況如下所示:
- startsWith,like,sameAs,unlike : string comparison
- equal,notequal,greaterThanEq,lessThanEq,lessThan,greaterThan : numeric comparison
- in,out : numeric range comparison
- before,after : date/time comparison
findCustom (whereFunc、selectFunc)
{function} whereFunc—(必要)
{function} selectFunc—(選用)
另請參閱上文 find
此函數會根據自訂 whereFunc 傳回元件的尋找程式。下列範例尋找包含 depth<2 或擁有類似 'ASM' 的名稱的全部元件。
範例:

PTC.Metadata.fromId('model-1').then( (metadata) => {
var whereFunc = function(idpath) {
const depth = metadata.get(idpath, 'Part Depth')
const name = metadata.get(idpath, 'Display Name')
return parseFloat(depth) >= 4 || (name && name.search('ASM') >= 0)
}
var result = metadata.findCustom(whereFunc);
});
支援的尋找運算子函數
startsWith (propValue、selectFunc)
not (propValue、selectFunc)
sameAs (propValue、selectFunc)
like (propValue、selectFunc)
unlike (propValue、selectFunc)
equal (propValue、selectFunc)
notEqual (propValue、selectFunc)
lessThanEq (propValue、selectFunc)
greaterThanEq (propValue、selectFunc)
lessThan (propValue、selectFunc)
greatThan (propValue、selectFunc)
in (最小、最大、selectFunc)
out (最小、最大、selectFunc)
before (propValue、selectFunc)
after (propValue、selectFunc)
findCustom (whereFunc、selectFunc)
使用範例
PTC.Metadata.fromId('model-1').then (metadata) => {
metadata.get('/0/6', 'Display Name')
=> "BLOWER.ASM"
metadata.get('/0/6'). getCategory ('__PV_SystemProperties')
=> {Component Name: "BLOWER.ASM", Display Name: "BLOWER.ASM", OL File Name: "", Part Depth: "3", Part ID: "6", …}
metadata.find('Display Name').like('PRT')
=> {id: "model-1", _friendlyName: "Display Name like PRT", _selectedPaths: Array(26)}
metadata.find('Display Name').like('PRT').find('Part Depth').in(0,3)
=> {id: "model-1", _friendlyName: "Display Name like PRT AND Part Depth in 0-3", _selectedPaths: Array(10)}
var meta = metadata.find('Part Depth').greaterThan(4);
meta.getSelected();
=>["/0", "/0/1", "/0/1/2", "/0/6"]
var selectFunc = function(idpath) {
return metadata.get(idpath, 'Display Name');
}
meta.getSelected(selectFunc);
=> ["PISTON.PRT", "PISTON_PIN.PRT", "CONNECTING_ROD.PRT"]
metadata.find('Part Depth').greaterThan(4).getSelected(selectFunc)
=> ["PISTON.PRT", "PISTON_PIN.PRT", "CONNECTING_ROD.PRT"]
var selectFunc = function(idpath) {
return metadata.get(idpath, 'Display Name');
}
metadata.find('Part Depth').greaterThan(4, selectFunc)
=> ["PISTON.PRT", "PISTON_PIN.PRT", "CONNECTING_ROD.PRT"]
var selectFunc = function(idpath) {return metadata.get(idpath, 'Display Name');}
metadata.find('Part Depth').greaterThan(4, selectFunc)
=> ["PISTON.PRT", "PISTON_PIN.PRT", "CONNECTING_ROD.PRT"]
var selectFunc = function(idpath) {return metadata.get(idpath, 'Display Name');}
metadata.find('Display Name').like('PISTON', selectFunc)
=> ["PISTON.ASM", "PISTON.PRT", "PISTON_PIN.PRT"]

var whereFunc = function(idpath) {
const depth = metadata.get(idpath, 'Part Depth')
const name = metadata.get(idpath, 'Display Name')
return parseFloat(depth) > 4 || (name && name.search('PISTON') >= 0)
}
var selectFunc = function(idpath) {return metadata.get(idpath, 'Display Name');}
metadata.findCustom(whereFunc,selectFunc)
=>["PISTON.ASM", "PISTON.PRT", "PISTON_PIN.PRT", "CONNECTING_ROD.PRT"]
var selectFunc = function(idpath) {
return metadata.get(idpath).getCategory('__PV_SystemProperties');
}
metadata.find('Part Depth').greaterThan(4, selectFunc)
=> (3) [{…}, {…}, {…}]
0: {Component Name: "PISTON.PRT", Display Name: "PISTON.PRT", OL File Name: "l-Creo 3D_0_ac-40_asm_5.ol" …}
1: {Component Name: "PISTON_PIN.PRT", Display Name: "PISTON_PIN.PRT", OL File Name: "l-Creo 3D_0_ac-40_asm_6.ol",…}
2: {Component Name: "CONNECTING_ROD.PRT", Display Name: "CONNECTING_ROD.PRT", OL File Name: "l-Creo 3D_0_ac-40_asm_7.ol", …}