Dynamiskt innehåll i rullgardin, baserat på val i annan rullgardin för Custom Components dialogrutan.

Tekla Structures
Not version-specific
Tekla Structures
Environment
Not environment-specific

Fråga:

Hur kan man få en rullgardin i en Custom Component att visa förändrade värden beroende på en annan rullgardin?

Svar:

Här nedan visas ett exempel på en Custom Component .inp-fil (dialogrutans utseende för en Custom Component) hur man kan få förändrade värden att framträda i en rullgardin, beroende på vilket val man gör i en annan rullgardin.
--------------------------------------------------------------------------------------------------------------
page("TeklaStructures","")
{
   macro(1, "RULLGARDIN")
   {
       tab_page("", " Parameters 1 ", 1)
       {
           attribute("P1", "Diameter", option, "%s", none, none, "0.0", "0.0", 375, 0, 160,   "toggle_field:!P2=1,2;  !P3=0,2;!P4=0,1")
            {
                value("M16", 1)
                value("M20", 0)
                value("M24", 0)
            }
           attribute("P2", "Längd", option, "%s", none, none, "0.0", "0.0", 375, 28, 160)
            {
                value("90", 1)
                value("120", 0)
                value("150", 0)
                value("200", 0)
            }
           attribute("P3", "Längd", option, "%s", none, none, "0.0", "0.0", 375, 28, 160)
            {
                value("250", 1)
                value("400", 0)
            }
           attribute("P4", "Längd", option, "%s", none, none, "0.0", "0.0", 375, 28, 160)
            {
                value("500", 1)
            }
       }
   }
}
--------------------------------------------------------------------------------------------------------------
Värden som faller ut från en rullgardin är följande enligt nedanstående bild (röda siffrorna), alltså inte värdet som står i rullgardinen:
Image
Swe_Rullgardin_1.PNG


Dessa tre olika rullgardiner för Längd dyker upp med olika värden beroende på vilket val man gör i den 1:a rullgardinen (Gul rullgardin i bilderna).
Image
Swe_Rullgardin_2.PNG

Image
Swe_Rullgardin_3.PNG

Image
Swe_Rullgardin_4.PNG

Rullgardinerna P2, P3 & P4 (Grön, Blå & Lila rullgardin i bilderna) ligger på varandra (375, 28, 160 där x, y motsvarar position i dialogrutan räknat från övre vänstra hörnet samt sista 160 är storlek på inmatnings rutan) och blir uttogglade beroende på vilken diameter man väljer i rullgardin P1, så att endast en rullgardin är aktiv i taget.
Utropstecknet "!" före parametern i ”toggle_field” raden betyder att inmatningsfältet/rullgardinen försvinner helt, annars blir de bara utgråade.
Ex: ”!P2=1,2” betyder att om valet i rullgardin P1 är ”M20” eller ”M24” togglas/försvinner rullgardin P2 från dialogrutan.

Dvs om man väljer 200 i rullgardinen för M16 faller värdet "3" ut från rullgardinen som måste tas hand om i Variabel listan. Detta kan göras med en if-sats för P2. Ex:
=if (P2==0) then 90 else if (P2==1) then 120 else if (P2==2) then 150 else if (P2==3) then 200 else 0 endif endif endif endif.

Samma sak måste göras för P3 & P4 rullgardinerna. Exempel på kod i nedanstående bild där P1 – P4 står för rullgardinerna och P5 – P8 behandlar värden beroende på rullgardinsval. D1 är bindningen i komponenten som ger längden på objektet (rundstången).
Image
Swe_Rullgardin_5.PNG

Sammanfattning:

P4 rullgardinen har ju bara ett värde som kan falla ut dvs. "0", p.g.a. att det bara finns ett val.
Värdena som faller ut från rullgardinerna är ju beroende på vilken position de tas i rullgardinen, d.v.s. 1:a valet i rullgardinen ger värdet "0", 2:a valet ger "1" osv. Det är alltså det värdet man får in i variabel listan beroende på vad användaren har valt i rullgardinen.
Vill man ha värden som förändras i en rullgardin måste flera olika rullgardiner (P2, P3 & P4) skapas och läggas på varandra samt togglas ut beroende på vilket val man gör i första rullgardinen (P1).

Komponenten RULLGARDIN.uel fungerar i Tekla Structures 21.0 och framåt.
Image
Swe_Rullgardin_6.PNG
这些内容是否有用?