public static AdminShellV20.Property CreateProperty( AdminShellV20.AdministrationShellEnv env, Iec61360Data data, string valueType) { var property = new AdminShellV20.Property() { idShort = data.IdShort, kind = AdminShellV20.ModelingKind.CreateAsInstance(), valueType = valueType, }; InitSubmodelElement(env, property, data); return(property); }
private static string CreateSubmodelElement(AdminShellV20.SubmodelElement element) { UAObject elem = new UAObject(); elem.BrowseName = "1:" + element.idShort; elem.NodeId = "ns=1;i=" + masterID.ToString(); masterID++; List <Reference> refs = new List <Reference>(); refs.Add(CreateHasTypeDefinition("1:AASSubmodelElementType")); refs.Add( CreateReference( "HasProperty", CreateProperty(element.category, "PropertyType", "Category", "String"))); refs.Add(CreateReference("HasComponent", CreateSemanticId(element.semanticId))); //add Referable & //add Description if it exists if (element.description == null) { refs.Add(CreateReference("HasInterface", CreateReferable(element.category, null))); } else { refs.Add( CreateReference( "HasInterface", CreateReferable(element.category, element.description.langString))); } //add Kind if it exists if (element.kind != null) { refs.Add( CreateReference( "HasProperty", CreateProperty(element.kind.kind, "1:AASModelingKindDataType", "ModellingKind", "String"))); } //add Qualifier if it exists if (element.qualifiers != null) { foreach (AdminShellV20.Qualifier qualifier in element.qualifiers) { refs.Add( CreateReference( "HasComponent", CreateAASQualifier(qualifier.type, qualifier.value, qualifier.valueId))); } } //Set Elementspecific Data string type = element.GetElementName(); switch (type) { case "SubmodelElementCollection": AdminShellV20.SubmodelElementCollection coll = (AdminShellV20.SubmodelElementCollection)element; refs.Add(CreateReference("HasComponent", CreateSubmodelElementCollection(coll))); break; case "Property": AdminShellV20.Property prop = (AdminShellV20.Property)element; refs.Add(CreateReference("HasComponent", CreatePropertyType(prop.value, prop.valueId))); break; case "Operation": AdminShellV20.Operation op = (AdminShellV20.Operation)element; refs.Add(CreateReference("HasComponent", CreateAASOperation(op.inputVariable, op.outputVariable))); break; case "Blob": AdminShellV20.Blob blob = (AdminShellV20.Blob)element; refs.Add(CreateReference("HasComponent", CreateAASBlob(blob.value, blob.mimeType))); break; case "File": AdminShellV20.File file = (AdminShellV20.File)element; refs.Add(CreateReference("HasComponent", CreateAASFile(file.value, file.mimeType))); break; case "RelationshipElement": AdminShellV20.RelationshipElement rela = (AdminShellV20.RelationshipElement)element; refs.Add( CreateReference( "HasComponent", CreateAASRelationshipElement(rela.first.ToString(), rela.second.ToString()))); break; case "ReferenceElement": AdminShellV20.ReferenceElement refe = (AdminShellV20.ReferenceElement)element; refs.Add(CreateReference("HasComponent", CreateReferenceElement(refe.value.ToString()))); break; } elem.References = refs.ToArray(); root.Add((UANode)elem); return(elem.NodeId); }