Example #1
0
        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);
        }
Example #2
0
        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);
        }