@@ -15,6 +15,7 @@ This source code may use other Open Source software components (see LICENSE.txt)
15
15
using AnyUi ;
16
16
using Extensions ;
17
17
using System ;
18
+ using System . Collections . Generic ;
18
19
using System . Linq ;
19
20
using System . Threading . Tasks ;
20
21
using Aas = AasCore . Aas3_0 ;
@@ -299,41 +300,48 @@ public enum ScriptSelectAdressMode { None = 0, First, Next, Prev, idShort, seman
299
300
return null ;
300
301
}
301
302
302
- Aas . IReferable IAasxScriptRemoteInterface . Select ( object [ ] args )
303
+ protected ScriptSelectRefType GetScriptRefType ( string refTypeName )
303
304
{
304
- // access
305
- if ( args == null || args . Length < 1
306
- || ! ( args [ 0 ] is string refTypeName ) )
307
- {
308
- Log . Singleton . Error ( "Script: Select: Referable type missing!" ) ;
309
- return null ;
310
- }
311
-
312
- // check if Referable Type is ok
313
- ScriptSelectRefType refType = ScriptSelectRefType . None ;
305
+ ScriptSelectRefType res = ScriptSelectRefType . None ;
314
306
315
307
switch ( refTypeName . Trim ( ) . ToLower ( ) )
316
308
{
317
309
case "this" :
318
- refType = ScriptSelectRefType . This ;
310
+ res = ScriptSelectRefType . This ;
319
311
break ;
320
312
case "aas" :
321
313
case "assetadministrationshell" :
322
- refType = ScriptSelectRefType . AAS ;
314
+ res = ScriptSelectRefType . AAS ;
323
315
break ;
324
316
case "sm" :
325
317
case "submodel" :
326
- refType = ScriptSelectRefType . SM ;
318
+ res = ScriptSelectRefType . SM ;
327
319
break ;
328
320
case "sme" :
329
321
case "submodelelement" :
330
- refType = ScriptSelectRefType . SME ;
322
+ res = ScriptSelectRefType . SME ;
331
323
break ;
332
324
case "cd" :
333
325
case "conceptdescription" :
334
- refType = ScriptSelectRefType . CD ;
326
+ res = ScriptSelectRefType . CD ;
335
327
break ;
336
328
}
329
+
330
+ return res ;
331
+ }
332
+
333
+ Aas . IReferable IAasxScriptRemoteInterface . Select ( object [ ] args )
334
+ {
335
+ // access
336
+ if ( args == null || args . Length < 1
337
+ || ! ( args [ 0 ] is string refTypeName ) )
338
+ {
339
+ Log . Singleton . Error ( "Script: Select: Referable type missing!" ) ;
340
+ return null ;
341
+ }
342
+
343
+ // check if Referable Type is ok
344
+ var refType = GetScriptRefType ( refTypeName ) ;
337
345
338
346
if ( refType == ScriptSelectRefType . None )
339
347
{
@@ -381,6 +389,47 @@ Aas.IReferable IAasxScriptRemoteInterface.Select(object[] args)
381
389
return null ;
382
390
}
383
391
392
+ Aas . IReferable [ ] IAasxScriptRemoteInterface . SelectAll ( object [ ] args )
393
+ {
394
+ // access
395
+ if ( args == null || args . Length < 1
396
+ || ! ( args [ 0 ] is string refTypeName ) )
397
+ {
398
+ Log . Singleton . Error ( "Script: SelectAll: Referable type missing!" ) ;
399
+ return new IReferable [ 0 ] ;
400
+ }
401
+
402
+ // check if Referable Type is ok
403
+ var refType = GetScriptRefType ( refTypeName ) ;
404
+
405
+ if ( ! ( refType == ScriptSelectRefType . AAS
406
+ || refType == ScriptSelectRefType . SM
407
+ || refType == ScriptSelectRefType . CD ) )
408
+ {
409
+ Log . Singleton . Error ( "Script: SelectAll: Referable type invalid (no AAS, SM, CD)!" ) ;
410
+ return new IReferable [ 0 ] ;
411
+ }
412
+
413
+ // something to select
414
+ var pm = PackageCentral ? . Main ? . AasEnv ;
415
+ if ( pm == null )
416
+ {
417
+ Log . Singleton . Error ( "Script: SelectAll: No main package AAS environment available!" ) ;
418
+ return new IReferable [ 0 ] ;
419
+ }
420
+
421
+ // ok
422
+ if ( refType == ScriptSelectRefType . AAS )
423
+ return pm . AllAssetAdministrationShells ( ) . ToArray ( ) ;
424
+
425
+ if ( refType == ScriptSelectRefType . SM )
426
+ return pm . AllSubmodels ( ) . ToArray ( ) ;
427
+
428
+ if ( refType == ScriptSelectRefType . CD )
429
+ return pm . AllConceptDescriptions ( ) . ToArray ( ) ;
430
+
431
+ return new IReferable [ 0 ] ;
432
+ }
384
433
385
434
public async Task < int > Tool ( object [ ] args )
386
435
{
0 commit comments