CATComponentFamily (no NLS) Types

Component Family functionality generates and manages a family of components (physical products) that are the variations of a generic model (physical product containing a parametric table defining its variability). The generic model variability is preserved thanks to the update engine and parametric design of the model. Some parameters are inputs of the model and the relational design updates the model when they are changed. Component family functionality in EKL is exposed to automate use cases.

This page discusses:

ComponentFamily

A component family is an object that lets you generate and manage, in an easy and friendly manner, a set of physical parts or assemblies references, all derived from a generic parametric definition altered for each element using a table of values.

Inheritance Path

ObjectType
 Feature
  ComponentFamily

Emunerator Types

Name Possible Values
ComponentFamilyMaturityMode
  • Automatic
  • Manual
ComponentFamilyType
  • Standard
  • Design
ComponentFamilyItemStatus
  • NotSolved
  • OutOfDate
  • Solved
  • UpdateKO

Attributes

Name Type Comment
FamilyType ComponentFamilyType
  • Read-Write
  • Maturity mode of component family.
GenericModel VPMReference
  • Read Only
  • Generic model of component family.
IsSaveNeeded Boolean
  • Read Only
  • Describes unsaved family modifications.
MaturityMode ComponentFamilyMaturityMode
  • Read-Write
  • Maturity mode of component family.
Table Feature
  • Read Only
  • Retrieves Table object of family. It is either Design Table or Product Table object Type.

ComponentFamilyItemStatus

The ComponentFamilyItemStatus provides the status of a family item.

Inheritance Path

ObjectType
 Literal
  Enumere
   ComponentFamilyItemStatus

ComponentFamilyItemStatus

//Status of family item. ReadOnly
	let itemStatus (ComponentFamilyItemStatus)
	itemStatus = familyItem.Status

ComponentFamilyMaturityMode

Provides the Maturity mode of a component family.

Inheritance Path

ObjectType
 Literal
  Enumere
   ComponentFamilyMaturityMode

Arguments

Name Input / Output Required? Type Comment
MaturityMode In No ComponentFamilyMaturityMode
  • Optional argument.
  • Automatic mode is set by default.

ComponentFamilyMaturityMode

//Maturity Mode. ReadWrite
let familyMaturityMode (ComponentFamilyMaturityMode)
familyMaturityMode = myFamily.MaturityMode  //Automatic 
//Define family maturity mode as "Automatic" or "Manual"
let fmlMaturityMode (ComponentFamilyMaturityMode)
fmlMaturityMode = "Manual"

ComponentFamilyType

Provides the Family Type of a component family.

Inheritance Path

ObjectType
 Literal
  Enumere
   ComponentFamilyType

Arguments

Name Input / Output Required? Type Comment
FamilyType In No ComponentFamilyType
  • Optional argument.
  • Standard type is set by default.

ComponentFamilyType

//Define family maturity mode as "Standard" or "Design"
let fmlType(ComponentFamilyType)
fmlType = "Design"
//Family Type. ReadWrite
let familyType(ComponentFamilyType)
familyType = myFamily.FamilyType //Standard

EKL Samples

EKL samples

Creating a Family with only a Generic Model as Input

//Search for Generic model in database
let results(List)
let currentResult(PLMQueryResult)
let myQuery (PLMQuery)
let GenericModel(VPMReference)

//Create Generic model search query based on V_Name search
myQuery = CreatePLMQuery("VPMReference")
myQuery->AddCriterion("V_Name","PartGenericModel")
results = myQuery->RunQuery()

//We check whether exist a unique generic model.
if (results.Size() <> 1)
	exit

currentResult = results[1]
set GenericModel = currentResult->LoadResult()
if(GenericModel == NULL)
	exit

//Create Family with default values. Thats is 
//          Maturity Mode: Automatic
//          Family Type : Standard
//          Table : Retrieved from Generic Model. Model should have only one table
let myFamily (ComponentFamily)
myFamily = new ("ComponentFamily", "My Family", NULL ,GenericModel)
if(myFamily == NULL)
 	exit

Creating a Family with all Inputs

//Get the Design Table named "DTGenericModel" inside Genric Model 
let fmlDesignTable (DesignTableType)
fmlDesignTable = GenericModel->Find("DesignTableType","x.Name==\"DTGenericModel\"",TRUE)

//Define family maturity mode as "Automatic" or "Manual"
let fmlMaturityMode (ComponentFamilyMaturityMode)
fmlMaturityMode = "Manual"

//Define family maturity mode as "Standard" or "Design"
let fmlType(ComponentFamilyType)
fmlType = "Design"

//Create Another family with other options
let anotherFamily (ComponentFamily)
anotherFamily = new ("ComponentFamily", "Another Family", NULL ,GenericModel, fmlDesignTable, fmlMaturityMode,  fmlType ) 

if(anotherFamily == NULL)
	exit

Retrieving Attributes of a Family

//Retrieving attributes of family
//GenericModel ReadOnly
let familyGenericModel(VPMReference)
set familyGenericModel = myFamily.GenericModel

//Table ReadOnly
let familyDesignTable (DesignTableType)
set familyDesignTable = myFamily.Table

//Maturity Mode. ReadWrite
let familyMaturityMode (ComponentFamilyMaturityMode)
familyMaturityMode = myFamily.MaturityMode  //Automatic 

//Family Type. ReadWrite
let familyType(ComponentFamilyType)
familyType = myFamily.FamilyType //Standard

//IsDirty ReadOnly
//Modify family maturity mode
myFamily.MaturityMode  = "Manual"
//Now family is dirty 
if myFamily.IsSaveNeeded
{
	fmlToSave.Append(myFamily)
	Save(fmlToSave)
}

Querying a Family in the Database

//Search for My Family component family in database
let results(List)
let currentResult(PLMQueryResult)
let myQuery (PLMQuery)

//query for search of component family in database
myQuery = CreatePLMQuery("CATComponentsFamilyExplicit")
myQuery->AddCriterion("V_Name","My Family")
results = myQuery->RunQuery()

//We check whether exist a unique component family
if (results.Size() <> 1)
	exit

Note: To perform a query, the three supported types are:
  • CATComponentsFamilyExplicit
  • ComponentFamily
  • CATComponentsFamilyReference GetComponentFamily