Returning data from cdb database // @key, @cdb

Hi all.
I’d like to ask is it possible to return from database a set of nodes within structural line according to the SLN number.

I’m modelling piles and I’d like to assign a different springs along the SLN (let’s say per 1m) depending on the soil conditions.

I know you can do this in a few different ways but for my purpose I’d like to try this approach.

I’m working in SOFIMSHC.
I create parametrized array of piles with variable number of piles, lengths, rows number, spacing etc.
To begin I create a loop which creates top SPT of the pile, and then the bottom - I have full control of SPT number here.

After all I generate in loop SLNs which links top SPT with bottom and give SNO and SDIV for the pile division (1m) and here I do not control node numbering.

    LET#DX (#OF1-#OPP1)

    LET#NR 2150
    LET#POSX #DX
    LOOP #NRP1
        SPT NO #NR X #POSX Y 0 Z #H1
        SPT NO #NR+1000 X #POSX Y 0 Z #H1+#LP1
    LET#NR #NR+100
    LET#POSX #POSX-#RP1
    ENDLOOP


        LET#DXX (#DX+#SXP1)
        LET#LOOP ((#NP1-1)/2)

        LET#NR1 2151
        LET#POSX #DXX
        LET#POSY -#SYP1

            LOOP #NRP1
            LOOP #LOOP
                SPT NO #NR1 X #POSX Y #POSY Z #H1
                SPT NO #NR1+1000 X #POSX Y #POSY Z #H1+#LP1
                SPTS CP #CP_P1 CQ #CQ_P1 GRP 110
            LET#NR1 #NR1+1
            LET#POSX #POSX+#SXP1
            LET#POSY #POSY-#SYP1
                ENDLOOP
                LET#NR1 #NR1+100-1*#LOOP
                LET#POSX #POSX-#RP1-#SXP1*#LOOP
                LET#POSY #POSY+#SYP1*#LOOP
            ENDLOOP


        LET#NR2 2149
        LET#DXX  (#DX-#SXP1)
        LET#POSX #DXX
        LET#POSY #SYP1

            LOOP #NRP1
            LOOP #LOOP
                SPT NO #NR2 X #POSX Y #POSY Z #H1
                SPT NO #NR2+1000 X #POSX Y #POSY Z #H1+#LP1
                SPTS CP #CP_P1 CQ #CQ_P1 GRP 110
            LET#NR2 #NR2-1
            LET#POSX #POSX-#SXP1
            LET#POSY #POSY+#SYP1
                ENDLOOP
                LET#NR2 #NR2+100+1*#LOOP
                LET#POSX #POSX-#RP1+#SXP1*#LOOP
                LET#POSY #POSY-#SYP1*#LOOP
            ENDLOOP

    LET#NR 2150
        LOOP #NRP1
        LET#N (#NP1-1)/2
        SLN ((#NR-#N) (#NR+#N) 1) ((#NR-#N) 1) ((1000+#NR-#N) 1) SNO 10 SDIV 1 GRP 510
    LET#NR #NR+100
    ENDLOOP

SLN number coresponds to top SPT number. Instead of making a loop for “each level” of SPTS according to pile division and then creating tons of SLNs, I’d like to get from database list of nodes number for SLN number specified by me - then export it to excel, put there my spring coeficients and use it for calculation.

I assume if I could get beams NR for the specified SLN (or just beams for specified GRP number), then get end node of these beams it would be what I want.

If in the future anyone would be interested…

I was able to get number of beam with corresponding end node:

LET#CDB_IER 0
@CDB V3
@KEY BEAM
LOOP#I
LET#NR @(NR)
LET#ROW 3
    LET#W @(NODE+1)
    LET#XLS.WRITE XLS.WRITE(#ROW+#I,3,#NR)
    LET#XLS.WRITE XLS.WRITE(#ROW+#I,4,#W)
ENDLOOP #CDB_IER < 2
END                                            

In the meantine I’l try to figure out how to get more from it, but right now I can filter group by number in .xls file (first digits of the element) and that’s enough

Hi,
@KEY BEAM @(NREF) will tell you which SLN beam belongs to.
So if you do a loop of all beams you can check thier SLN then in second loop of beams you will get start and end nodes of beams and thats a way you have all nodes of specified SLN

1 Like