KB CORE API examples

This section describes some usage examples of the Knowledge-Base Interface.

Function documentation

Product Function documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of all Product functions--
print(API.getProduct.__doc__)
print(API.updateProduct.__doc__)
print(API.setProduct.__doc__)

Product Part Function documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of all Product Part functions--
print(API.getProductPart.__doc__)
print(API.updateProductPart.__doc__)
print(API.setProductPart.__doc__)
print(API.getAllProductParts.__doc__)
print(API.updateAllProductParts.__doc__)
print(API.setAllProductParts.__doc__)

Assembly sequence documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of all Assembly sequence functions--
print(API.getAssemblySequence.__doc__)
print(API.updateAssemblySequence.__doc__)
print(API.setAssemblySequence.__doc__)

Interface object documentation

Product Interface objects documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of the DFA interface object and contained functions--
print(InterfaceObjects.Product.__doc__)
print(InterfaceObjects.Product.object2json.__doc__)
print(InterfaceObjects.Product.json2object.__doc__)

Parameter Interface objects documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of the Parameter interface object and contained functions--
print(InterfaceObjects.Parameter.__doc__)

Product Part Interface objects documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of the DFA interface object and contained functions--
print(InterfaceObjects.ProductPart.__doc__)
print(InterfaceObjects.ProductPart.object2json.__doc__)
print(InterfaceObjects.ProductPart.json2object.__doc__)

Assembly Sequence Interface objects documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of the AssemblySequence interface object and contained functions--
print(InterfaceObjects.AssemblySequence.__doc__)
print(InterfaceObjects.AssemblySequence.object2json.__doc__)
print(InterfaceObjects.AssemblySequence.json2object.__doc__)

Operation Interface objects documentation:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#--Call information of the Operation interface object and contained functions--
print(InterfaceObjects.Operation.__doc__)
print(InterfaceObjects.Operation.object2json.__doc__)
print(InterfaceObjects.Operation.json2object.__doc__)

Create KB from scratch

Creating an empty Knowledge-Base:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# Create New_KB_TEST.pacopackage in output/KB_Instance/
API.createEmptyKB(Name="New_KB_TEST", OutputPath="output/KB_Instance/")

Fetch KB data

Fetching the Product:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_getProduct.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# fetching the Product
InterfaceObject_received = API.getProduct()

Important

Currently, no parameters are fetched from the KB!

Fetching the Product Part:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_getProductPart.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# fetching the Product Part
InterfaceObject_received = API.getProductPart('(3) Input Shaft')

Important

Currently, no contact features are fetched from the KB!

Fetching all contained Product Parts:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_getProductParts.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# fetching all Product Parts
InterfaceObjectList = API.getAllProductParts()

Important

Currently, no contact features are fetched from the KB!

Fetching the Assembly Sequence of a single Assembly System:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_getAssemblySequence.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# fetching the assembly sequence of Assembly System AS-1
InterfaceObject_received = API.getAssemblySequence("AS-1")

Update KB data

Update the Product:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# --Product interface object
interfaceObject = InterfaceObjects.Product(Name='OldGearBox',STEPFile='c:/NEW/PATH/TO/THE/STEPFILE')

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_updateProduct.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# updating the Product model
error = API.updateProduct(interfaceObject=interfaceObject)

Important

Currently, no parameters are updated within the KB!

Update the Product Part:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# load the json file to perform update
jsonPath = API.resolvePath('input/JSON-docs/updateProductPart.json')
interfaceObject = InterfaceObjects.ProductPart(jsonPath)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_updateProductPart.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# updating the Product Part model
error = API.updateProductPart(interfaceObject)

Important

Currently, no contact features are updated within the KB!

Update all contained Product Parts:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

interfaceObjectList = []

# load the json file to perform update
jsonPath = API.resolvePath('input/JSON-docs/InputShaft.json')
interfaceObject1 = InterfaceObjects.ProductPart(jsonPath)
interfaceObjectList.append(interfaceObject1)

# load the json file to perform update
jsonPath = API.resolvePath('input/JSON-docs/SmallGear.json')
interfaceObject2 = InterfaceObjects.ProductPart(jsonPath)
interfaceObjectList.append(interfaceObject2)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_updateAllProductParts.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# perform update
error = API.updateAllProductParts(interfaceObjectList)

Update the Assembly Sequence of a single Assembly System:

Important

Not supported - use add function

Add KB data

Adding the Product:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# load the json file to perform setter function
interfaceObject = InterfaceObjects.Product(Name='OldGearBox', STEPFile='c:/NEW/PATH/TO/THE/STEPFILE')

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_setProduct.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# Adding a new Product Part model
error = API.setProduct(interfaceObject=interfaceObject)

Adding the Product Part:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# load the json file to perform update
jsonPath = API.resolvePath('input/JSON-docs/addProductPart.json')
interfaceObject = InterfaceObjects.ProductPart(jsonPath)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_addProductPart.xmi')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# Adding a new Product Part model
error = API.setProductPart(interfaceObject)

Adding all Product Parts:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

interfaceObjectList = []

# load the json file to perform update
jsonPath = API.resolvePath('input/JSON-docs/ProductPart_A.json')
interfaceObject1 = InterfaceObjects.ProductPart(jsonPath)
interfaceObjectList.append(interfaceObject1)

# load the json file to perform update
jsonPath = API.resolvePath('input/JSON-docs/ProductPart_B.json')
interfaceObject2 = InterfaceObjects.ProductPart(jsonPath)
interfaceObjectList.append(interfaceObject2)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_addProductPart.xmi')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# Adding a new Product Part model
error = API.setAllProductParts(interfaceObjectList)

Adding a Assembly Sequence to an existing Assembly System:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(False)

# create an empty KB model
API.createEmptyKB(Name="test_setAssemblySequence_empty", OutputPath="output/")

# load the json file to perform update
jsonPath = API.resolvePath('input/JSON-docs/AssemblySequence.json')
interfaceObject = InterfaceObjects.AssemblySequence(JSONDescriptor=jsonPath, DEBUG=False)

path_KB = API.resolvePath('output/test_setAssemblySequence_empty.pacopackage')  # TODO: make version where no Product is defined!

API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# updating the ASssembly Sequence and add to Assembly System
error = API.setAssemblySequence(AssemblySystemName="TEST_AS",InterfaceObject=interfaceObject)

Instantiating from JSON file

Instantiate the Product model

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# Specify the absolute path to the JSON file
jsonDescriptor = API.resolvePath('input/JSON-docs/Product.json')
# instantiate the DFARule via the JSON file
product = InterfaceObjects.Product(JSONDescriptor=jsonDescriptor)

Instantiate the Product Part model

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# Specify the absolute path to the JSON file
jsonDescriptor = API.resolvePath('input/JSON-docs/ProductPart.json')
# instantiate the DFARule via the JSON file
productPart = InterfaceObjects.ProductPart(JSONDescriptor=jsonDescriptor)

Instantiate the Assembly Sequence model

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# Specify the absolute path to the JSON file
jsonPath = self.KB_Interface.resolvePath('input/JSON-docs/AssemblySequence.json')
# instantiate the DFARule via the JSON file
AssemblySequence = InterfaceObjects.AssemblySequence(JSONDescriptor=jsonPath, DEBUG=False)

Generating JSON object

Generating the Product JSON model:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

# --Product interface object
product = InterfaceObjects.Product(Name='OldGearBox',STEPFile='c:/NEW/PATH/TO/THE/STEPFILE')

#generating the JSON object
product_json = product.object2json()
#printing the JSON object
print(product_json)

Generating the Product Part JSON model:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/OldGearBox.xmi')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# fetching the Product Part
productPart = API.getProductPart('(3) Input Shaft')

#generating the JSON object
productPart_json = productPart.object2json()
#printing the JSON object
print(productPart_json)

Generating the Assembly Sequence JSON model:

from Interface_KB import KB_Interface,InterfaceObjects
API = KB_Interface.KB_Interface(KB_BASELINE='input/metamodel/Version8/PACoMM.ecore',DEBUG=True)

#define the path to the KB instance model
path_KB = API.resolvePath('input/KB_examples/test_getAssemblySequence.pacopackage')

#importing the KB instance model
API.MM, API.model, API.model_instance = API.importKBInstanceModel(path_KB)

# fetching the assembly sequence of Assembly System AS-1
AssemblySequence = API.getAssemblySequence("AS-1")

#generating the JSON object
AssemblySequence_json = AssemblySequence.object2json()
#printing the JSON object
print(AssemblySequence_json)