Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Martaf/cherries #185

Merged
merged 7 commits into from
Mar 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
title: "[BUG]"
labels: bug
assignees: ''

---
Expand Down
22 changes: 15 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@ Asset Administration Shell.
https://github.com/admin-shell-io/aasx-package-explorer/raw/master/screenshot.png
)

To help you familiarize with the concept of Asset Administration Shell
we provide the screencasts (both in English and German) at:
To help you familiarize with the concept of Asset Administration Shell and editing an Asset Administration Shell with the AASX Package Explorer
we provide screencasts (both in English and German) for V2.0 at:
https://admin-shell-io.com/screencasts/.

For further information about the Asset Administration Shell, see the
publication [Details of the Asset Administration Shell](
https://www.plattform-i40.de/IP/Redaktion/EN/Standardartikel/specification-administrationshell.html
) by Plattform Industrie 4.0.
For V3.0 (including changes to V2.0) please have a look at the tutorials for the Specifications itself at the [Youtube Channel Industrial Digital Twin](https://www.youtube.com/playlist?list=PLCO0zeX96Ia1hsToD9lRPDMI4P-kbt_CT)

The basis for the implementatzion are the [Specifications of the Asset Administration Shell](https://industrialdigitaltwin.org/en/content-hub/aasspecifications
) by [IDTA]A(https://industrialdigitaltwin.org).

We provide a couple of sample admin shells (packaged as .aasx) for you to
test and play with the software at:
test and play with the software at (V2.0):
http://www.admin-shell-io.com/samples/

## Installation
Expand All @@ -72,6 +72,11 @@ If you want to contribute in code, see [Section "Getting started"](
https://admin-shell-io.github.io/aasx-package-explorer/devdoc/getting-started/intro.html
).

## Documentation

You may find additional documentation in sub-folders, e.g. for
- [BAMM Import](https://github.com/admin-shell-io/aasx-package-explorer/tree/main/src/AasxBammRdfImExport)

## Other Open Source Implementations of AAS

At the time of this writing (2020-08-14), we are aware of the following related
Expand Down Expand Up @@ -101,6 +106,9 @@ AASX Package Explorer, in contrast, is a tool with graphical user interface
meant for experimenting and demonstrating the potential of asset administration
shells targeting tech-savvy and less technically-inclined users alike.

In 2021 the [Eclipse Digital Twin Top Level Project](https://projects.eclipse.org/projects/dt)
was created. See sub-projects for more projects featuring digital twins and the Asset Administration Shell.

The AASX Package Explorer also includes an internal REST server and OPC UA
server for the loaded .AASX. Based on this a separate AASX Server is
available (https://github.com/admin-shell-io/aasx-server) which can host
Expand Down
4 changes: 2 additions & 2 deletions obsolete/2020-07-20/AasxGenerate/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public static AdminShell.Submodel CreateSubmodelCad(
unit: "",
definition: new[] {
"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." }
"EN", "Unambiguous ID of format of embedded CAD file in eCl@ss standard." }
);

// SUB MODEL
Expand Down Expand Up @@ -175,7 +175,7 @@ public static AdminShell.Submodel CreateSubmodelDocumentation(InputFilePrefs pre
preferredNames: new [] { "DE", "Datei-Identifikation Dokument", "EN", "File identification for document" },
shortName: "FileId",
definition: new [] { "DE", "Eindeutige Kennung, um bereitgestellte Dokumente unabhängig von Name und Version sicher unterscheiden zu können.",
"EN", "Unambigous ID of file, in order to safely distinguish provided files independent from name and version." }
"EN", "Unambiguous ID of file, in order to safely distinguish provided files independent from name and version." }
);

var cdFilename = AdminShell.ConceptDescription.CreateNew(AdminShell.Identification.IRDI, "0173-1#02-AAD005#005");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public enum ContentTypes { NoInfo, Iec61360, PhysicalUnit }
public static Key GetKeyForIec61360()
{
return new Key(KeyTypes.GlobalReference,
"http://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0");
"https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0");
}

public static Reference GetReferencForIec61360()
Expand All @@ -29,7 +29,7 @@ public static Reference GetReferencForIec61360()
public static Key GetKeyForPhysicalUnit()
{
return new Key(KeyTypes.GlobalReference,
"http://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0");
"https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0");
}

public static Key GetKeyFor(ContentTypes ct)
Expand Down
3 changes: 2 additions & 1 deletion src/AasxCsharpLibrary/Extensions/ExtendReference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@ public static bool MatchesExactlyOneKey(this IReference reference, IKey key, Mat

public static string GetAsIdentifier(this IReference reference)
{
if (reference.Type == ReferenceTypes.ExternalReference) // Applying only to Global Reference, based on older implementation, TODO:Make it Generic

if (reference != null && reference.Type == ReferenceTypes.ExternalReference) // Applying only to Global Reference, based on older implementation, TODO:Make it Generic
{
if (reference.Keys == null || reference.Keys.Count < 1)
{
Expand Down
2 changes: 1 addition & 1 deletion src/AasxDictionaryImport/Eclass/Model.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ private string FetchXmlFile(string irdi)
certFound = false;
X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection2,
"Test Certificate Select",
"Select an ECLASS client certificate which you alreay imported into your certificate store",
"Select an ECLASS client certificate which you already imported into your certificate store",
X509SelectionFlag.SingleSelection);
if (scollection.Count != 0)
{
Expand Down
23 changes: 18 additions & 5 deletions src/AasxPackageLogic/DispEditHelperEntities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,24 @@ public void DisplayOrEditAasEntityAssetInformation(
this.AddHintBubble(stack, hintMode, new[] {
new HintCheck(
() => string.IsNullOrEmpty(asset.GlobalAssetId) == true,
"It is strobly encouraged to have the AAS associated with an global asset id from the " +
"very beginning. If the AAS describes a product, the individual asset id should to be " +
"It is strongly encouraged to have the AAS associated with a global asset id from the " +
"very beginning. If the AAS describes a product, the individual asset id should be " +
"found on its name plate. " +
"This attribute is required as soon as the AAS is exchanged via partners in " +
"the life cycle of the asset.",
severityLevel: HintCheck.Severity.High),
new HintCheck(
() =>
{
int count = 0;
foreach(var aas in env.AssetAdministrationShells)
{
if(aas.AssetInformation.GlobalAssetId == asset.GlobalAssetId)
count++;
}
return (count>=2?true:false);
},
"It is not allowed to have duplicate GlobalAssetIds in the same file. This will break functionality and we strongly encoure to make the Id unique!",
severityLevel: HintCheck.Severity.High)
});

Expand Down Expand Up @@ -1454,7 +1467,7 @@ public void DisplayOrEditAasEntityAas(

// Identifiable
this.DisplayOrEditEntityIdentifiable(
stack, aas,
stack, env, aas,
Options.Curr.TemplateIdAas,
null);

Expand Down Expand Up @@ -1967,7 +1980,7 @@ public void DisplayOrEditAasEntitySubmodelOrRef(

// Identifiable
this.DisplayOrEditEntityIdentifiable(
stack, submodel,
stack, env, submodel,
(submodel.Kind == Aas.ModellingKind.Template)
? Options.Curr.TemplateIdSubmodelTemplate
: Options.Curr.TemplateIdSubmodelInstance,
Expand Down Expand Up @@ -2146,7 +2159,7 @@ public void DisplayOrEditAasEntityConceptDescription(
// Identifiable

this.DisplayOrEditEntityIdentifiable(
stack, cd,
stack, env, cd,
Options.Curr.TemplateIdConceptDescription,
new DispEditHelperModules.DispEditInjectAction(
new[] { "Rename" },
Expand Down
15 changes: 7 additions & 8 deletions src/AasxPackageLogic/DispEditHelperMiniModules.cs
Original file line number Diff line number Diff line change
Expand Up @@ -984,7 +984,7 @@ public void ExtensionHelper(
new[] {
new HintCheck(
() => !extension.Name.HasContent(),
"A name specification shall be given and unqiue within this list!")
"A name specification shall be given and unique within this list!")
});
AddKeyValueExRef(
substack, "name", extension, extension.Name, null, repo,
Expand Down Expand Up @@ -1607,13 +1607,12 @@ public void DispSmeListAddNewHelper<T>(
{
Aas.AasSubmodelElements[] includes = null;
if (isDataElem) includes = new Aas.AasSubmodelElements[] {
Aas.AasSubmodelElements.SubmodelElementCollection,
Aas.AasSubmodelElements.RelationshipElement,
Aas.AasSubmodelElements.AnnotatedRelationshipElement,
Aas.AasSubmodelElements.Capability,
Aas.AasSubmodelElements.Operation,
Aas.AasSubmodelElements.BasicEventElement,
Aas.AasSubmodelElements.Entity};
Aas.AasSubmodelElements.Property,
Aas.AasSubmodelElements.MultiLanguageProperty,
Aas.AasSubmodelElements.Range,
Aas.AasSubmodelElements.File,
Aas.AasSubmodelElements.Blob,
Aas.AasSubmodelElements.ReferenceElement};

en = this.SelectAdequateEnum("Select SubmodelElement to create ..", ticket: ticket,
includeValues: includes);
Expand Down
21 changes: 18 additions & 3 deletions src/AasxPackageLogic/DispEditHelperModules.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ public void DisplayOrEditEntityReferable(AnyUiStackPanel stack,
return true == referable.IdShort?.Contains("---");
},
"The idShort contains 3 dashes. Probably, the entitiy was auto-named " +
"to keep it unqiue because of an operation such a copy/ paste.",
"to keep it unique because of an operation such a copy/ paste.",
severityLevel: HintCheck.Severity.Notice)
});
}
Expand Down Expand Up @@ -319,6 +319,7 @@ public void DisplayOrEditEntityListOfExtension(AnyUiStackPanel stack,
//

public void DisplayOrEditEntityIdentifiable(AnyUiStackPanel stack,
Aas.Environment env,
Aas.IIdentifiable identifiable,
string templateForIdString,
DispEditInjectAction injectToId = null)
Expand All @@ -339,8 +340,19 @@ public void DisplayOrEditEntityIdentifiable(AnyUiStackPanel stack,
() => { return identifiable.Id == ""; },
"Identification id shall not be empty. You could use the 'Generate' button in order to " +
"generate a worldwide unique id. " +
"The template of this id could be set by commandline arguments." )

"The template of this id could be set by commandline arguments." ),
new HintCheck(
() => {
int count = 0;
foreach(var aas in env.AssetAdministrationShells)
{
if(aas.Id == identifiable.Id)
count++;
}
return (count >= 2?true:false);
},
"It is not allowed to have duplicate Ids in AAS of the same file. This will break functionality and we strongly encoure to make the Id unique!",
breakIfTrue: false)
});
if (this.SafeguardAccess(
stack, repo, identifiable.Id, "id:", "Create data element!",
Expand All @@ -356,7 +368,10 @@ public void DisplayOrEditEntityIdentifiable(AnyUiStackPanel stack,
v =>
{
var dr = new DiaryReference(identifiable);
string value = v as string;
bool duplicate = false;
identifiable.Id = v as string;
//mlem
this.AddDiaryEntry(identifiable, new DiaryEntryStructChange(), diaryReference: dr);
return new AnyUiLambdaActionNone();
},
Expand Down
2 changes: 1 addition & 1 deletion src/AasxPluginDigitalNameplate/NameplateAnyUiControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -784,7 +784,7 @@ public AnyUiFrameworkElement RenderAnyUiNameplateData(
.Set(description: "SerialNumber:\n" +
"Unique combination of numbers and letters used to identify the " +
"product (asset) instance once it has been manufactured. Does not need to be " +
"worldwide unqiue, only for the manufacturer."));
"worldwide unique, only for the manufacturer."));

// Product designation

Expand Down
8 changes: 4 additions & 4 deletions src/AasxPluginDocumentShelf/DocuShelfSemanticConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ public static FormDescSubmodelElementCollection CreateVdi2770TemplateDesc(Docume

descDoc.Add(new FormDescProperty(
"DocumentId", FormMultiplicity.One, semConfig.SemIdDocumentId, "DocumentId",
"The combination of DocumentId and DocumentVersionId shall be unqiue."));
"The combination of DocumentId and DocumentVersionId shall be unique."));

descDoc.Add(new FormDescProperty(
"IsPrimary", FormMultiplicity.One, semConfig.SemIdIsPrimaryDocumentId, "IsPrimary",
Expand All @@ -248,7 +248,7 @@ public static FormDescSubmodelElementCollection CreateVdi2770TemplateDesc(Docume

var descDocName = new FormDescProperty(
"ClassName", FormMultiplicity.One, semConfig.SemIdDocumentClassName, "ClassName",
"VDI2770 ClassName of the document. This property is automaticall computed based on ClassId.",
"VDI2770 ClassName of the document. This property is automatically computed based on ClassId.",
isReadOnly: true);

descDocName.SlaveOfIdShort = "ClassId";
Expand Down Expand Up @@ -280,7 +280,7 @@ public static FormDescSubmodelElementCollection CreateVdi2770TemplateDesc(Docume

descDocVer.Add(new FormDescProperty(
"DocumentVersionId", FormMultiplicity.One, semConfig.SemIdDocumentVersionIdValue, "DocumentVersionId",
"The combination of DocumentId and DocumentVersionId shall be unqiue."));
"The combination of DocumentId and DocumentVersionId shall be unique."));

descDocVer.Add(new FormDescProperty(
"Languages", FormMultiplicity.ZeroToMany, semConfig.SemIdLanguage, "Language{0}",
Expand Down Expand Up @@ -450,7 +450,7 @@ public static FormDescSubmodelElementCollection CreateVdi2770v11TemplateDesc()
descDocVer.Add(new FormDescProperty(
"DocumentVersionId", FormMultiplicity.One, defs.CD_DocumentVersionId?.GetSingleKey(),
"DocumentVersionId",
"Unambigous identification number of a DocumentVersion."));
"Unambiguous identification number of a DocumentVersion."));

descDocVer.Add(new FormDescMultiLangProp(
"Title", FormMultiplicity.One, defs.CD_Title?.GetSingleKey(), "Title",
Expand Down
2 changes: 1 addition & 1 deletion src/AasxPluginDocumentShelf/ShelfAnyUiControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1001,7 +1001,7 @@ private async Task DocumentEntity_MenuClick(DocumentEntity e, string menuItemHea
}
catch (Exception ex)
{
_log?.Error(ex, "while saveing digital file to user specified loacation");
_log?.Error(ex, "while saving digital file to user specified location");
}

// OK
Expand Down
2 changes: 1 addition & 1 deletion src/AasxPluginMtpViewer/WpfMtpControlWrapper.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ private void ReportOnConfiguration(RichTextBox rtb)
AddToRichTextBox(rtb,
"The following JSON elements could be pasted into the options file named " + "" +
"'AasxPluginMtpViewer.options.json'. " +
"Prior to pasting, an appropriate symbol full name needs to be choosen from above list. " +
"Prior to pasting, an appropriate symbol full name needs to be chosen from above list. " +
"For the eClass strings, multiples choices can be delimited by ';'. " +
"For EClassVersions, 'null' disables version checking. " +
"Either EClassClasses or EClassIRDIs shall be different to 'null'.");
Expand Down
2 changes: 1 addition & 1 deletion src/AasxToolkit/Generate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ public static Submodel CreateSubmodelCad(
unit: "",
definition: new[] {
"de", "Eindeutige Kennung Format der eingebetteten CAD Datei im ECLASS Standard.",
"en", "Unambigous ID of format of embedded CAD file in ECLASS standard." }
"en", "Unambiugous ID of format of embedded CAD file in ECLASS standard." }
);

// SUB MODEL
Expand Down
2 changes: 1 addition & 1 deletion src/WpfMtpVisuViewer/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ private void ReportOnConfiguration(RichTextBox rtb)
AddToRichTextBox(rtb,
"The following JSON elements could be pasted into the options file named " + "" +
"'AasxPluginMtpViewer.options.json'. " +
"Prior to pasting, an appropriate symbol full name needs to be choosen from above list. " +
"Prior to pasting, an appropriate symbol full name needs to be chosen from above list. " +
"For the eClass strings, multiples choices can be delimited by ';'. " +
"For EClassVersions, 'null' disables version checking. " +
"Either EClassClasses or EClassIRDIs shall be different to 'null'.");
Expand Down
Loading