skip to Main Content

Item Types – ett praktiskt exempel

Jag har skrivit om Item Types i tidigare inlägg och då lite övergripande beskrivit hur de kan användas i olika sammanhang (Display Rules, Rapporter mm). Här tänkte jag gå ner lite mer i detalj med hjälp av en praktisk tillämpning som jag gjort tillsammans med Berell IT för en kund.

Lösningen togs fram för ett pilotprojekt där man ville se om MicroStation kunde stödja hanteringen av ReferensId i ett järnvägsprojekt baserat på Trafikverkets TDOK 2019:0026. Uppbyggnaden av ReferensId och övriga datamängder är relativt komplex och kräver att flera olika datamängder kopplas till objekten i ritningen. För att lösa detta har vi använd flera olika tekniker kopplade till Item Types. Vi har använd Excel för att hantera alla attribut och picklistor, vi har använd olika typer av expressions för att bygga upp värden och vi har låtit flera Item Types samverka för att skapa den slutgiltiga informationen.

I artikeln ska jag försöka visa på de viktigaste teknikerna vi har använt i detta projekt utan gå in i alla detaljer kring hur ett ReferensId är uppbyggt men följande illustration ger en bild av komplexiteten.

För att kunna beskriva alla nödvändiga delar skapades fyra Item Types.

  • ReferensID
  • Komponent
  • Konstruktion
  • Signal

ReferensID ska alltid vara den första datamängd som kopplas till objektet. När attributen för ReferensID har kopplats kan man sedan koppla Komponent och Konstruktion. För att koppla Signal måste både ReferensID och Komponent vara kopplade.

Excel

I exemplet är alla attributvärden och listor definierade i en Excelfil. Detta är att föredra när man arbetar med lite större datamängder och framförallt datamängder som kan komma att uppdateras över tid.

För att kunna använda en Excelfil tillsammans med Item Types måste följande konfigurationsvariabler vara satta i aktuellt WorkSpace/WorkSet:

ITEMTYPE_LOOKUP = $(_USTN_WORKSETSTANDARDS)Data/Excelfil.xlsx
ITEMTYPE_PICKLIST_EXCELPATH = $(_USTN_WORKSETSTANDARDS)Data/Excelfil.xlsx

Man kan ha flera blad i Excelfilen för att strukturera upp olika listor och uppslagstabeller.

Olika tekniker

Vi börjar med att titta på Item Typen ReferensID och hur vi definierat några av attributen.

REFERENSID

Värdet för attributet REFERENSID byggs upp genom att slå samman värdet av ett antal av de övriga attributen. Detta gör man genom att använda ett Expression.

Man använder syntaxen this[”Attributvärde”] för att referera till ett visst attribut inom Item Typen.

Tecknet & används för att slå ihop flera strängvärden

Slutresultatet kan se ut på följande sätt: +MB.F.E03=JBA.GZ001

Komplex, Område, Anläggning

Dessa attributvärden skapas genom att hämta värdet från konfigurationsvariabler som är fördefinierade i projektets WorkSpace.

Detta görs med uttrycket MSTNvariable.GetVariable(”VARIABELNAMN”).

Delområde, Anläggningsdel, Systembenämning, Tillgångssystem

Dessa värden sätts via picklists som hämtar sina värden från Excelfilen. I det enkla fallet anger man bara blad och kolumn. Observera att MicroStation automatiskt rensar bort dubbletter eftersom en picklist bara ska innehålla unika värden.

Vill man ha en lite mer intelligent lista kan man filtrera värden baserat på ett annat attributvärde. Detta gör att innehållet i listan kan variera beroende värdet på något annat attribut.

I exemplet skapas picklistan genom att bara visa de rader i kolumnen Anläggningsdel där kolumnen Delområde har samma värde som attributet Delområde.

Tillgångskod, Grundfunktion

Dessa attribut baseras på värdet av ett annan attribut genom att använda en uppslagsfunktion. Under Expressions kan man låta attributet hämta sitt värde baserat på värdet av ett annat attribut. Detta hämtas också från Excelfilen.

LookUp.GetEntry(”PickLists_Tillgångssystem”,”Benämning”,this[”Tillgångssystem”]).Tillgångskod

Uttrycket säger att man ska hämta värdet i kolumnen Tillgångskod i bladet PickLists_Tillgångssystem där kolumnen Benämning matchar attributet Tillgångssystem.

Referera attribut i andra Item Types

Uttrycken i några av attributen refererar till attribut i andra Item Types. Ett exempel är hur attributet SIGNALREFERENS i Item Typen Signal är konstruerat. Signalreferens är sammansatt av ReferensID, komponent och Signalkod. Till exempel +MB.F.M01= JBA.GZ001:BTB02;M005. För att skapa detta används följande uttryck:

this.GetItem(”TRV:Referensid”).REFERENSID & ”;” & this.GetItem(”TRV:Komponent”).Komponentkod & System.String.Format(”{0,2:00}”,this.GetItem(”TRV:Referensid”).Löpnummer) & ”;” & this[”Signal”]

Här hämtar man attributvärden från både ReferensID och Komponent, tillsammans med det egna attributet Signal. För att detta ska fungera måste ReferensID och Komponent vara kopplade innan man kan koppla Signal.

I följande video visas hur man kan använda denna konfiguration för att märka upp och placera ut koder i en designfil.

 

ReferensID - Youtube

This Post Has 0 Comments

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.

Back To Top