Example #1
0
        public static AdminShell.Submodel CreateSubmodelDocumentation(InputFilePrefs prefs, AdminShellNS.UriIdentifierRepository repo, AdminShell.AdministrationShellEnv aasenv)
        {
            // CONCEPTS
            var cdGroup = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAD001#001");

            aasenv.ConceptDescriptions.Add(cdGroup);
            cdGroup.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Dokumentationsgruppe", "EN", "Documentation item" },
                shortName: "DocumentationItem",
                definition: new string[] { "DE", "Gruppe von Merkmalen, die Zugriff gibt auf eine Dokumentation für ein Asset, beispielhaft struktuiert nach VDI 2770.",
                                           "EN", "Collection of properties, which gives access to documentation of an asset, structured exemplary-wise according to VDI 2770." }
                );

            var cdClassName = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAD003#002");

            aasenv.ConceptDescriptions.Add(cdClassName);
            cdClassName.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Doku. Klassifiziersname", "EN", "Doc. classification name" },
                shortName: "DocClassName",
                definition: new string[] { "DE", "Name der Klassifizierung nach VDI 2770 für das Dokument, nach eCl@ss Standard.",
                                           "EN", "Name of classification of the Document according VDI 2770 and eCl@ss." }
                );

            var cdClass = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAD003#007");

            aasenv.ConceptDescriptions.Add(cdClass);
            cdClass.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Doku. Klassifizierung", "EN", "Doc. classification" },
                shortName: "DocClass",
                definition: new string[] { "DE", "Eindeutige Klassifizierung nach VDI 2770 für das Dokument, nach eCl@ss Standard.",
                                           "EN", "Classification of the Document according VDI 2770 and eCl@ss." }
                );

            var cdTitle = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAD004#007");

            aasenv.ConceptDescriptions.Add(cdTitle);
            cdTitle.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Titel des Dokuments", "EN", "Documentation title" },
                shortName: "DocTitle",
                definition: new string[] { "DE", "Titel des Dokuments, wie vom Hersteller/ Erbringer des Assets vorgegeben.",
                                           "EN", "Title of documentation, as described by producer of the asset." }
                );

            var cdFilename = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAD005#005");

            aasenv.ConceptDescriptions.Add(cdFilename);
            cdFilename.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Dateiname des Dokuments", "EN", "Filename of documentation" },
                shortName: "DocFilename",
                definition: new string[] { "DE", "Name der bereitgestellten Datei, wie vom Hersteller des Assets vorgesehen.",
                                           "EN", "Name of embedded file, as described by producer of the asset." }
                );

            var cdVersion = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAD005#006");

            aasenv.ConceptDescriptions.Add(cdVersion);
            cdVersion.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Version des Dokuments", "EN", "Version of documentation" },
                shortName: "DocVersion",
                definition: new string[] { "DE", "Versionsstand der bereitgestellten Datei, wie vom Hersteller des Assets vorgesehen.",
                                           "EN", "Version of embedded file, as described by producer of the asset." }
                );

            var cdFormat = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-ZAA120#007");

            aasenv.ConceptDescriptions.Add(cdFormat);
            cdFormat.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Dateiformat Doku.", "EN", "File format doc. item" },
                shortName: "DocFormat",
                definition: new string[] { "DE", "Eindeutige Kennung Format der eingebetteten Dokumentations-Datei im eCl@ss Standard.",
                                           "EN", "Unambigous ID of format of embedded documentation file in eCl@ss standard." }
                );

            var cdFile = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAD005#008");

            aasenv.ConceptDescriptions.Add(cdFile);
            cdFile.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Enthaltene Doku. Datei", "EN", "Embedded Doc. file" },
                shortName: "File",
                definition: new string[] { "DE", "Verweis/ BLOB auf enthaltene Dokumentations-Datei.", "EN", "Reference/ BLOB to embedded documentation file." }
                );

            // SUB MODEL
            var sub1 = AdminShell.Submodel.CreateNew("URI", repo.CreateOneTimeId());

            sub1.idShort = "DocuVDI2270";
            aasenv.Submodels.Add(sub1);
            sub1.semanticId.Keys.Add(AdminShell.Key.CreateNew("Submodel", false, "URI", "http://www.zvei.de/standards/i40/beispiel_i40_komponente/submodel/vdi2770/1/1"));

            // for each file one group
            int ndx = 0;

            foreach (var fr in prefs.filerecs)
            {
                if (fr.submodel != "docu")
                {
                    continue;
                }
                if (fr.args == null || fr.args.Count != 5)
                {
                    continue;
                }

                ndx++;

                // GROUP
                var cd = cdGroup;
                using (var p0 = AdminShell.SubmodelElementCollection.CreateNew($"DocItem{ndx:D2}", "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()))) {
                    sub1.Add(p0);

                    // CLASS NAME
                    cd = cdClassName;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + fr.args[0];
                    }

                    // CLASS
                    cd = cdClass;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p.Set("GlobalReference", false, "IRDI", "" + fr.args[1]);
                        p0.Add(p);
                    }

                    // TITLE
                    cd = cdTitle;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + fr.args[2];
                    }

                    // FILENAME
                    cd = cdFilename;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + System.IO.Path.GetFileName(fr.fn);
                    }

                    // VERSION
                    cd = cdVersion;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + fr.args[3];
                    }

                    // FORMAT
                    cd = cdFormat;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p.Set("GlobalReference", false, "IRDI", "" + fr.args[4]);
                        p0.Add(p);
                    }

                    // FILE
                    cd = cdFile;
                    using (var p = AdminShell.File.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.mimeType = AdminShell.PackageEnv.GuessMimeType(fr.fn);
                        p.value    = "" + fr.targetdir.Trim() + System.IO.Path.GetFileName(fr.fn);
                    }
                }
            }

            // for each url one group
            foreach (var web in prefs.webrecs)
            {
                if (web.submodel != "docu")
                {
                    continue;
                }
                if (web.args == null || web.args.Count != 5)
                {
                    continue;
                }

                // GROUP
                var cd = cdGroup;
                using (var p0 = AdminShell.SubmodelElementCollection.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()))) {
                    sub1.Add(p0);

                    // CLASS NAME
                    cd = cdClassName;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + web.args[0];
                    }

                    // CLASS
                    cd = cdClass;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p.Set("GlobalReference", false, "IRDI", "" + web.args[1]);
                        p0.Add(p);
                    }

                    // TITLE
                    cd = cdTitle;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + web.args[2];
                    }

                    // FILENAME
                    cd = cdFilename;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + System.IO.Path.GetFileName(web.url);
                    }

                    // VERSION
                    cd = cdVersion;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.valueType = "string";
                        p.value     = "" + web.args[3];
                    }

                    // FORMAT
                    cd = cdFormat;
                    using (var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p.Set("GlobalReference", false, "IRDI", "" + web.args[4]);
                        p0.Add(p);
                    }

                    // FILE -> URL
                    cd = cdFile;
                    using (var p = AdminShell.File.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference())))
                    {
                        p0.Add(p);
                        p.mimeType = AdminShell.PackageEnv.GuessMimeType(web.url);
                        p.value    = web.url;
                    }
                }
            }

            return(sub1);
        }
Example #2
0
        public static void Test4()
        {
            // MAKE or LOAD prefs
            InputFilePrefs prefs  = new InputFilePrefs();
            var            preffn = "prefs.json";

            try {
                if (File.Exists(preffn))
                {
                    Log.WriteLine(2, "Opening {0} for reading preferences ..", preffn);
                    var init = File.ReadAllText(preffn);
                    Log.WriteLine(2, "Parsing preferences ..");
                    prefs = JsonConvert.DeserializeObject <InputFilePrefs>(init);
                }
                else
                {
                    Log.WriteLine(2, "Using built-in preferences ..");
                    var init = @"{ 'filerecs' : [
                            { 'fn' : 'data\\thumb-usb.jpeg',                'submodel' : 'thumb',   'targetdir' : '/',                      'args' : [ ] },
                            { 'fn' : 'data\\USB_Hexagon.stp',               'submodel' : 'cad',     'targetdir' : '/aasx/cad/',             'args' : [ '0173-1#02-ZBQ121#003' ] },
                            { 'fn' : 'data\\USB_Hexagon.igs',               'submodel' : 'cad',     'targetdir' : '/aasx/cad/',             'args' : [ '0173-1#02-ZBQ128#008' ] },
                            { 'fn' : 'data\\FES_100500.edz',                'submodel' : 'cad',     'targetdir' : '/aasx/cad/',             'args' : [ '0173-1#02-ZBQ133#002' ] },
                            { 'fn' : 'data\\USB_Hexagon_offen.jpeg',        'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Drawings', '0173-1#02-ZWY722#001', 'Product rendering open', 'V1.2', '0173-1#02-ZHK61a#002' ] },
                            { 'fn' : 'data\\USB_Hexagon_geschlossen.jpeg',  'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Presales', '0173-1#02-ZWX723#001', 'Product rendering closed', 'V1.2c', '0173-1#02-ZHK622#001' ] },
                            { 'fn' : 'data\\docu_cecc_presales_DE.PDF',     'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Presales', '0173-1#02-ZWX723#001', 'Steuerungen CECC', 'V2.1.3', '0173-1#02-ZHK622#001' ] },
                            { 'fn' : 'data\\docu_cecc_presales_EN.PDF',     'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Presales', '0173-1#02-ZWX723#001', 'Controls CECC', 'V2.1.4', '0173-1#02-ZHK622#001' ] },
                            { 'fn' : 'data\\USB_storage_medium_datasheet_EN.pdf', 'submodel' : 'docu', 'targetdir' : '/aasx/documentation/', 'args' : [ 'Technical specification', '0173-1#02-ZWX724#001', 'Datenblatt Steuerung CECC-LK', 'V1.0', '0173-1#02-ZHK622#001' ] },
                            { 'fn' : 'data\\docu_cecc_install_DE.PDF',      'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Installation', '0173-1#02-ZWX725#001', 'Kurzbeschreibung Steuerung CECC-LK', 'V3.2a', '0173-1#02-ZHK622#001' ] },
                            { 'fn' : 'data\\docu_cecc_install_EN.PDF',      'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Installation', '0173-1#02-ZWX725#001', 'Brief description control CECC-LK', 'V3.6b', '0173-1#02-ZHK622#001' ] },
                            { 'fn' : 'data\\docu_cecc_fullmanual_DE.PDF',   'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Manual', '0173-1#02-ZWX727#001', 'Beschreibung Steuerung CECC-LK', '1403a', '0173-1#02-ZHK622#001' ] },
                            { 'fn' : 'data\\docu_cecc_fullmanual_EN.PDF',   'submodel' : 'docu',    'targetdir' : '/aasx/documentation/',   'args' : [ 'Manual', '0173-1#02-ZWX727#001', 'Description Steuerung CECC-LK', '1403a', '0173-1#02-ZHK622#001' ] },
                        ],  'webrecs' : [
                            { 'url' : 'https://www.festo.com/net/de_de/SupportPortal/Downloads/385954/407353/CECC_2013-05a_8031104e2.pdf',          'submodel' : 'docu',      'args' : [ 'Installation', '0173-1#02-ZWX725#001', 'Controlador CECC', '2013-05a', '0173-1#02-ZHK662#002' ] },
                            { 'url' : 'https://www.festo.com/net/SupportPortal/Files/407352/CECC_2013-05a_8031105x2.pdf',                           'submodel' : 'docu',      'args' : [ 'Installation', '0173-1#02-ZWX725#001', 'Controllore CECC', '2013-05a', '0173-1#02-ZHK699#003' ] },
                        ] }";
                    Log.WriteLine(3, "Dump of built-in preferences: {0}", init);
                    Log.WriteLine(2, "Parsing preferences ..");
                    prefs = JsonConvert.DeserializeObject <InputFilePrefs>(init);
                }
            } catch (Exception ex) {
                Console.Error.Write("While parsing preferences: " + ex.Message);
                Environment.Exit(-1);
            }

            // REPOSITORY
            var repo = new AdminShellNS.UriIdentifierRepository();

            try {
                if (!repo.Load("uri-repository.xml"))
                {
                    repo.InitRepository("uri-repository.xml");
                }
            } catch (Exception ex) {
                Console.Error.Write("While accessing URI repository: " + ex.Message);
                Environment.Exit(-1);
            }

            // AAS ENV
            var aasenv1 = new AdminShell.AdministrationShellEnv();

            try
            {
                // ASSET
                var asset1 = new AdminShell.Asset();
                aasenv1.Assets.Add(asset1);
                asset1.SetIdentification("URI", "http://pk.festo.com/3s7plfdrs35", "3s7plfdrs35");
                asset1.AddDescription("EN", "Festo USB Stick");
                asset1.AddDescription("DE", "Festo USB Speichereinheit");

                // CAD
                Log.WriteLine(2, "Creating submodel CAD ..");
                var subCad = CreateSubmodelCad(prefs, repo, aasenv1);

                // DOCU
                Log.WriteLine(2, "Creating submodel DOCU ..");
                var subDocu = CreateSubmodelDocumentation(prefs, repo, aasenv1);

                // DATASHEET
                Log.WriteLine(2, "Creating submodel DATASHEET ..");
                var subDatasheet = CreateSubmodelDatasheet(prefs, repo, aasenv1);
                //var subDatasheet = CreateSubmodelDatasheetSingleItems(repo, aasenv1);

                // VIEW1
                var view1 = CreateStochasticViewOnSubmodels(new AdminShell.Submodel[] { subCad, subDocu, subDatasheet }, "View1");

                // ADMIN SHELL
                Log.WriteLine(2, "Create AAS ..");
                var aas1 = AdminShell.AdministrationShell.CreateNew("URI", repo.CreateOneTimeId(), "1", "0");
                aas1.derivedFrom = new AdminShell.AssetAdministrationShellRef(new AdminShell.Key("AssetAdministrationShell", false, "URI", "www.admin-shell.io/aas/sample-series-aas/1/1"));
                aasenv1.AdministrationShells.Add(aas1);
                aas1.assetRef = asset1.GetReference();

                // Link things together
                Log.WriteLine(2, "Linking entities to AAS ..");
                aas1.submodelRefs.Add(subCad.GetReference() as AdminShell.SubmodelRef);
                aas1.submodelRefs.Add(subDocu.GetReference() as AdminShell.SubmodelRef);
                aas1.submodelRefs.Add(subDatasheet.GetReference() as AdminShell.SubmodelRef);
                aas1.AddView(view1);

                if (true)
                {
                    asset1.assetIdentificationModelRef = new AdminShell.SubmodelRef(subDatasheet.GetReference() as AdminShell.SubmodelRef);
                }
            }
            catch (Exception ex)
            {
                Console.Error.Write("While building AAS: {0} at {1}", ex.Message, ex.StackTrace);
                Environment.Exit(-1);
            }

            if (true)
            {
                try {
                    //
                    // Test serialize
                    // this generates a "sample.xml" is addition to the package below .. for direct usag, e.g.
                    //
                    Log.WriteLine(2, "Test serialize sample.xml ..");
                    using (var s = new StreamWriter("sample.xml"))
                    {
                        var serializer = new XmlSerializer(aasenv1.GetType());
                        var nss        = new XmlSerializerNamespaces();
                        nss.Add("aas", "http://www.admin-shell.io/aas/1/0");
                        nss.Add("IEC61360", "http://www.admin-shell.io/IEC61360/1/0");
                        serializer.Serialize(s, aasenv1, nss);
                    }
                } catch (Exception ex) {
                    Console.Error.Write("While test serializing XML: {0} at {1}", ex.Message, ex.StackTrace);
                    Environment.Exit(-1);
                }
            }

            //
            // Make PACKAGE
            //

            try {
                // use the library function
                var opcfn = "sample-admin-shell.aasx";
                Log.WriteLine(2, "Creating package {0} ..", opcfn);
                var package = new AdminShell.PackageEnv(aasenv1);

                // supplementary files
                Log.WriteLine(2, "Adding supplementary files ..");
                foreach (var fr in prefs.filerecs)
                {
                    Log.WriteLine(2, "  + {0}", fr.fn);
                    package.AddSupplementaryFileToStore(fr.fn, fr.targetdir, Path.GetFileName(fr.fn), fr.submodel == "thumb");
                }

                // save
                Log.WriteLine(2, "Saving ..");
                package.SaveAs(opcfn, writeFreshly: true);
                package.Close();
            } catch (Exception ex) {
                Console.Error.Write("While building OPC package: {0} at {1}", ex.Message, ex.StackTrace);
                Environment.Exit(-1);
            }
        }
Example #3
0
        public static AdminShell.Submodel CreateSubmodelDatasheet(InputFilePrefs prefs, AdminShellNS.UriIdentifierRepository repo, AdminShell.AdministrationShellEnv aasenv)
        {
            // eClass product group: 19-15-07-01 USB stick

            // SUB MODEL
            var sub1 = AdminShell.Submodel.CreateNew("URI", repo.CreateOneTimeId());

            sub1.idShort = "Datatsheet";
            aasenv.Submodels.Add(sub1);
            sub1.semanticId.Keys.Add(AdminShell.Key.CreateNew("Submodel", false, "URI", "http://smart.festo.com/id/type/submodel/festodatasheet/1/1"));

            // CONCEPT: Manufacturer
            using (var cd = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAO677#001")) {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] { "DE", "TBD", "EN", "Manufacturer name" },
                    shortName: "Manufacturer",
                    definition: new string[] { "DE", "TBD",
                                               "EN", "legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation" }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "string";
                p.value     = "Festo AG & Co. KG";
            }

            // CONCEPT: Width
            using (var cd = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-BAF016#005"))
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] { "DE", "Breite", "EN", "Width" },
                    shortName: "Width",
                    unit: "mm",
                    valueFormat: "REAL_MEASURE",
                    definition: new string[] { "DE", "bei eher rechtwinkeligen Körpern die orthogonal zu Höhe/Länge/Tiefe stehende Ausdehnung rechtwinklig zur längsten Symmetrieachse",
                                               "EN", "for objects with orientation in preferred position during use the dimension perpendicular to height/ length/depth" }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "double";
                p.value     = "48";
            }

            // CONCEPT: Height
            using (var cd = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-BAA020#008"))
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] { "DE", "Höhe", "EN", "Height" },
                    shortName: "Height",
                    unit: "mm",
                    valueFormat: "REAL_MEASURE",
                    definition: new string[] { "DE", "bei eher rechtwinkeligen Körpern die orthogonal zu Länge/Breite/Tiefe stehende Ausdehnung - bei Gegenständen mit fester Orientierung oder in bevorzugter Gebrauchslage der parallel zur Schwerkraft gemessenen Abstand zwischen Ober- und Unterkante",
                                               "EN", "for objects with orientation in preferred position during use the dimension perpendicular to diameter/length/width/depth" }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "double";
                p.value     = "56";
            }

            // CONCEPT: Depth
            using (var cd = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-BAB577#007"))
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] { "DE", "Tiefe", "EN", "Depth" },
                    shortName: "Depth",
                    unit: "mm",
                    valueFormat: "REAL_MEASURE",
                    definition: new string[] { "DE", "bei Gegenständen mit fester Orientierung oder in bevorzugter Gebrauchslage wird die nach hinten, im Allgemeinen vom Betrachter weg verlaufende Ausdehnung als Tiefe bezeichnet",
                                               "EN", "for objects with fixed orientation or in preferred utilization position, the rear , generally away from the observer expansion is described as depth" }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "double";
                p.value     = "11.9";
            }

            // CONCEPT: Weight
            using (var cd = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-AAS627#001"))
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] { "DE", "Gewicht der Artikeleinzelverpackung", "EN", "Weight of the individual packaging" },
                    shortName: "Weight",
                    unit: "g",
                    valueFormat: "REAL_MEASURE",
                    definition: new string[] { "DE", "Masse der Einzelverpackung eines Artikels",
                                               "EN", "Mass of the individual packaging of an article" }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "double";
                p.value     = "23";
            }

            // CONCEPT: Material
            using (var cd = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-BAB577#007"))
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] { "DE", "Werkstoff", "EN", "Material" },
                    shortName: "Material",
                    definition: new string[] { "DE", "TBD",
                                               "EN", "Materialzusammensetzung, aus der ein einzelnes Bauteil hergestellt ist, als Ergebnis eines Herstellungsprozesses, in dem der/die Rohstoff(e) durch Extrusion, Verformung, Schweißen usw. in die endgültige Form gebracht werden" }
                    );

                var p = AdminShell.ReferenceElement.CreateNew(cd.GetShortName(), "PARAMETER", AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.value = p.value = AdminShell.Reference.CreateNew(AdminShell.Key.CreateNew("GlobalReference", false, "IRDI", "0173-1#07-AAA878#004")); // Polyamide (PA)
            }

            // Nice
            return(sub1);
        }
Example #4
0
        public static AdminShell.Submodel CreateSubmodelDatasheetSingleItems(
            AdminShellNS.UriIdentifierRepository repo, AdminShell.AdministrationShellEnv aasenv)
        {
            // SUB MODEL
            var sub1 = AdminShell.Submodel.CreateNew("URI", repo.CreateOneTimeId());

            sub1.idShort = "Datatsheet";
            aasenv.Submodels.Add(sub1);
            sub1.semanticId.Keys.Add(AdminShell.Key.CreateNew(
                                         type:   "Submodel",
                                         local:  false,
                                         idType: "URI",
                                         value:  "http://smart.festo.com/id/type/submodel/festodatasheet/1/1"));

            // eClass product group: 19-15-07-01 USB stick
            // siehe: http://www.eclasscontent.com/?id=19150701&version=10_1&language=de&action=det

            // CONCEPT: Weight by Michael Hoffmeister                   // Schreiben Sie hier Ihren Namen
            using (var cd = AdminShell.ConceptDescription.CreateNew(
                       idType: "IRDI",                                  // immer IRDI für eCl@ss
                       id: "0173-1#02-AAS627#001"))                     // die ID des Merkmales bei eCl@ss
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] {
                    "DE", "Gewicht der Artikeleinzelverpackung",        // wechseln Sie die Sprache bei eCl@ss
                    "EN", "Weight of the individual packaging"
                },                                                      // um die Sprach-Texte aufzufinden
                    shortName: "Weight",                                // kurzer, sprechender Name
                    unit: "g",                                          // Gewicht als SI Einheit ohne Klammern
                    valueFormat: "REAL_MEASURE",                        // REAL oder INT_MEASURE oder STRING
                    definition: new string[] { "DE", "Masse der Einzelverpackung eines Artikels",
                                               "EN", "Mass of the individual packaging of an article" }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER",
                                                      AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "double";                                 // hier den Datentypen im XSD-Format
                p.value     = "23";                                     // hier den Wert; immer als String mit
            }                                                           // doppelten Anfuehrungszeichen

            // eClass product group: 19-15-07-01 USB stick
            // siehe: http://www.eclasscontent.com/?id=19150701&version=10_1&language=de&action=det

            // CONCEPT: Color by Dominik                   // Schreiben Sie hier Ihren Namen
            using (var cd = AdminShell.ConceptDescription.CreateNew(
                       idType: "IRDI",                                  // immer IRDI für eCl@ss
                       id: "0173-1#02-AAS624#002"))                     // die ID des Merkmales bei eCl@ss
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] {
                    "DE", "Farbcode der Artikeleinzelverpackung", // wechseln Sie die Sprache bei eCl@ss
                    "EN", "Color code of the individual packaging"
                },                                                // um die Sprach-Texte aufzufinden
                    shortName: "Color",                           // kurzer, sprechender Name
                    unit: "g",                                    // Gewicht als SI Einheit ohne Klammern
                    valueFormat: "STRING",                        // REAL oder INT_MEASURE oder STRING
                    definition: new string[] { "DE", "Farbe der Einzelverpackung eines Artikels",
                                               "EN", "Color of the individual packaging of an article" }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER",
                                                      AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "string";                                 // hier den Datentypen im XSD-Format
                p.value     = "Blue";                                   // hier den Wert; immer als String mit
            }                                                           // doppelten Anfuehrungszeichen

            // CONCEPT: Manufacturer by Stefan Pollmeier                // Schreiben Sie hier Ihren Namen
            using (var cd = AdminShell.ConceptDescription.CreateNew(
                       idType: "IRDI",                                  // immer IRDI für eCl@ss
                       id: "0173-1#02-AAO677#001"))                     // die ID des Merkmales bei eCl@ss
            {
                aasenv.ConceptDescriptions.Add(cd);
                cd.SetIEC61360Spec(
                    preferredNames: new string[] {
                    "DE", "Herstellername",        // wechseln Sie die Sprache bei eCl@ss
                    "EN", "Manufacturer name"
                },                                 // um die Sprach-Texte aufzufinden
                    shortName: "ManufName",        // kurzer, sprechender Name
                    unit: "mm",                    // Gewicht als SI Einheit ohne Klammern
                    valueFormat: "STRING",         // REAL oder INT_MEASURE oder STRING
                    definition: new string[] { "DE", "TBD",
                                               "EN", "legally valid designation of the natural or judicial person..." }
                    );

                var p = AdminShell.Property.CreateNew(cd.GetShortName(), "PARAMETER",
                                                      AdminShell.Key.GetFromRef(cd.GetReference()));
                sub1.Add(p);
                p.valueType = "string";                                 // hier den Datentypen im XSD-Format
                p.value     = "Festo AG & Co. KG";                      // hier den Wert; immer als String mit
            }                                                           // doppelten Anfuehrungszeichen

            // Nice
            return(sub1);
        }
Example #5
0
        public static AdminShell.Submodel CreateSubmodelCad(InputFilePrefs prefs, AdminShellNS.UriIdentifierRepository repo, AdminShell.AdministrationShellEnv aasenv)
        {
            // CONCEPTS
            var cdGroup = AdminShell.ConceptDescription.CreateNew("URI", repo.CreateOrRetrieveUri("Festo Submodel Cad Item Group"));

            aasenv.ConceptDescriptions.Add(cdGroup);
            cdGroup.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "CAD Dateieinheit", "EN", "CAD file item" },
                shortName: "CadItem",
                unit: "",
                definition: new string[] { "DE", "Gruppe von Merkmalen, die Zugriff gibt auf eine Datei für ein CAD System.", "EN", "Collection of properties, which make a file for a CAD system accessible." }
                );

            var cdFile = AdminShell.ConceptDescription.CreateNew("URI", repo.CreateOrRetrieveUri("Festo Submodel Cad Item File Elem"));

            aasenv.ConceptDescriptions.Add(cdFile);
            cdFile.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Enthaltene CAD Datei", "EN", "Embedded CAD file" },
                shortName: "File",
                unit: "",
                definition: new string[] { "DE", "Verweis auf enthaltene CAD Datei.", "EN", "Reference to embedded CAD file." }
                );

            var cdFormat = AdminShell.ConceptDescription.CreateNew("IRDI", "0173-1#02-ZAA120#007");

            aasenv.ConceptDescriptions.Add(cdFormat);
            cdFormat.SetIEC61360Spec(
                preferredNames: new string[] { "DE", "Filetype CAD", "EN", "Filetype CAD" },
                shortName: "FileFormat",
                unit: "",
                definition: new string[] { "DE", "Eindeutige Kennung Format der eingebetteten CAD Datei im eCl@ss Standard.", "EN", "Unambigous ID of format of embedded CAD file in eCl@ss standard." }
                );

            // SUB MODEL
            var sub1 = AdminShell.Submodel.CreateNew("URI", repo.CreateOneTimeId());

            sub1.idShort = "CAD";
            aasenv.Submodels.Add(sub1);
            sub1.semanticId.Keys.Add(AdminShell.Key.CreateNew("Submodel", false, "URI", "http://smart.festo.com/id/type/submodel/festocad/1/1"));

            // for each cad file in prefs
            int ndx = 0;

            foreach (var fr in prefs.filerecs)
            {
                if (fr.submodel != "cad")
                {
                    continue;
                }
                if (fr.args == null || fr.args.Count != 1)
                {
                    continue;
                }

                ndx++;

                // GROUP
                var propGroup = AdminShell.SubmodelElementCollection.CreateNew($"CadItem{ndx:D2}", "PARAMETER", AdminShell.Key.GetFromRef(cdGroup.GetReference()));
                sub1.Add(propGroup);

                // FILE
                var propFile = AdminShell.File.CreateNew("File", "PARAMETER", AdminShell.Key.GetFromRef(cdFile.GetReference()));
                propGroup.Add(propFile);
                propFile.mimeType = AdminShell.PackageEnv.GuessMimeType(fr.fn);
                propFile.value    = "" + fr.targetdir.Trim() + System.IO.Path.GetFileName(fr.fn);

                // FILEFORMAT
                var propType = AdminShell.ReferenceElement.CreateNew("FileFormat", "PARAMETER", AdminShell.Key.GetFromRef(cdFormat.GetReference()));
                propGroup.Add(propType);
                propType.value = AdminShell.Reference.CreateNew(AdminShell.Key.CreateNew("GlobalReference", false, "IRDI", "" + fr.args[0]));
            }

            return(sub1);
        }