public static void RegisterAASX(string registry, string server, string aasxFolder) { RegistryClientSettings settings = new RegistryClientSettings(); settings.RegistryConfig.RegistryUrl = "http://" + registry; RegistryClient registryClient = new RegistryClient(settings); string[] aasxFiles = Directory.GetFiles(aasxFolder, "*.aasx"); foreach (var aasxFile in aasxFiles) { Package package = Package.Open(aasxFile, FileMode.Open, FileAccess.Read); using (AASX aasx = new AASX(package)) { AssetAdministrationShellEnvironment environment = aasx.GetEnvironment(); IAssetAdministrationShell aas = environment?.AssetAdministrationShells[0]; if (aas != null) { AssetAdministrationShellDescriptor shellDescriptor = new AssetAdministrationShellDescriptor(aas, new List <HttpEndpoint>() { //Hier die entsprechende IP-Adresse der Verwaltungsschale eintragen, die du bereits gestartet hast new HttpEndpoint("http://" + server + "/aas/" + aas.IdShort + "/complete") }); foreach (var submodel in aas.Submodels) { if (submodel != null) { SubmodelDescriptor submodelDescriptor = new SubmodelDescriptor(submodel, new List <HttpEndpoint>() { //Hier die entsprechende IP-Adresse der Verwaltungsschale oder des sich selbst-hostenden Teilmodells eintragen //In diesem Beispiel hostet die VWS das Teilmodell new HttpEndpoint("http://" + server + "/aas/" + aas.IdShort + "/submodels/" + submodel.IdShort + "/table") }); shellDescriptor.SubmodelDescriptors.Create(submodelDescriptor); } } Console.WriteLine("Register AAS: {0} {1}", aas.IdShort, aas.Identification.Id); registryClient.CreateAssetAdministrationShell(shellDescriptor); } else { Console.WriteLine("Can not register AASX: {0}", aasxFile); } } } Console.WriteLine("View registry on http://{0}/ui", registry); Console.WriteLine(); }
public IActionResult GetAASXPackage() { string filename = shellServiceProvider.AssetAdministrationShell.IdShort + ".aasx"; using (AASX aasx = new AASX(filename)) { AssetAdministrationShellEnvironment_V2_0 env = new AssetAdministrationShellEnvironment_V2_0(shellServiceProvider.AssetAdministrationShell); aasx.AddEnvironment(shellServiceProvider.AssetAdministrationShell.Identification, env, ExportType.Xml); if (aasx != null) { IFileProvider fileProvider = hostingEnvironment.ContentRootFileProvider; foreach (var item in fileProvider.GetDirectoryContents("Content/aasx")) { if (item.IsDirectory) { foreach (var subItem in fileProvider.GetDirectoryContents("Content/aasx/" + item.Name)) { if (subItem.Exists) { aasx.AddFileToAASX("/aasx/" + item.Name + "/" + subItem.Name, subItem.PhysicalPath); } } } else { if (item.Exists) { aasx.AddFileToAASX("/aasx/" + item.Name, item.PhysicalPath); } } } var fileInfo = fileProvider.GetFileInfo(filename); var fileResult = new PhysicalFileResult(fileInfo.PhysicalPath, "application/asset-administration-shell-package") { FileDownloadName = filename }; return(fileResult); } } return(new BadRequestResult()); }