! **************************************************************
! Spant02                  / 2005-08-17 / Cadserviceburo Stb
! **************************************************************
!

alfa 90
beta 90
gamma 90

#INPUT#

L = get($LANGUAGE)
Prompt1$= "Build truss structure"
Prompt2$= "Select truss(es)"
if L==0 then
  Prompt1$= "Ristikko rakenteen lisys"
  Prompt2$= "Valitse ristikko/ristikot"
endif

P= 1
X= 2
Y= 3
Z= 4
vec_to(P) 0,0,0
vec_to(X) 1,0,0
vec_to(Y) 0,1,0
vec_to(Z) 0,0,1

M= new_macro("","",P,X,Y,Z,1,1,0)
set_macro_param(M) "TASK","PICK_TRUSSES"
set_macro_param(M) "HEADER",Prompt1$
set_macro_param(M) "PROMPT",Prompt2$
set_macro_param(M) "ROLE","TRS"
#INPUT#

#BUILD#

! debug debug/hw_0306L.dbg

! Setup variables
P=     1
X=     2
Y=     3
Z=     4
D=     5
SD=    6
End1=  7
End2=  8
Pa  =  9
Pb  = 10
Pc  = 11
Pd  = 12
Pe  = 13
Pf  = 14
Pg  = 15
PN  = 16
Pnt = 17
SPTopOrig = 18
SPBotOrig = 19
EPTopOrig = 20
EPBotOrig = 21
Pnt2= 22
Pr  = 23
Ps  = 24
JoistDir = 25
JoistUnit = 26
PceVertDir = 27
PceVertOppDir = 28
SPTop = 29
EPTop = 30
SPBot = 31
EPBot = 32
negWeb2WebDir = 33
posWeb2WebDir = 34
nextBay = 35
negHalfBay = 36
posHalfBay = 37
EPT = 38
FreeBot= 100
FreeTop= 200

# include connection.def

Tole= mm_to_dwg(1.0)
Ltole= mm_to_dwg(200)

This= get_aux_object(#JOINTPREPROG#)
if !This then exit

! Spantvorm in iterator opslaan
I= new_iterator("TRUSSOBJ")
J= new_iterator("PROFOBJ")

! Alle reeds bestaande balken verwijderen uit de spanten
init_iterator(I) "TRUSSOBJ"
loop
  Trs= next_item(I)
  exitif !Trs
  init_iterator(J) "PROFOBJ",Trs,"PARTS"
  loop
    Pce= next_item(J)
    exitif !Pce
    del_object(Pce)
  endloop
endloop

numVerticals= get_macro_param(This,"VERTS")
braceGap= get_macro_param(This,"DIST")
max_web_spacing= get_macro_param(This,"SPACE")
Koppel= get_macro_param(This,"KOPPEL");
inverted= get_macro_param(This,"INVERT")

note(0) "Processing, Please wait..."

! Spantvormen aflopen (alle)
init_iterator(I) "TRUSSOBJ"

loop
  ! Get next spant
  Trs= next_item(I)
  exitif !Trs
  CPB = FreeBot
  CPT = FreeTop

  ! origin point of the spant zoeken, z value remains 0
  get_origin_pos(Trs) P,X,Y,Z

  ! Number of points picks up base from form of spant, CPB indicates to 1st point, CPBA are number
  CPBA= get_trs_ctr(Trs,CPB,0,4,Tole)

  ! Number of points picks up bovenzijde from form of spant, CPT indicate to 1st point, CPTA are number
  CPTA= get_trs_ctr(Trs,CPT,0,2,Tole)

  ! Underlying element add to spant (PCBOT)
  Code$= get_macro_param(This,"TC");
  Lib$= get_macro_param(This,"TCL");
  Mat$= get_macro_param(This,"TCM");
  
  ! Starpunt van het profiel
  SP= CPB
  ! Endpoint of the profile = start point + 1
  EP= SP + 1
  ! Vector calculates d from start - and terminus to stipulate the direction of the profile
  vec_sub(D) SP,EP
  vec_cross_prod(SD) Y,D
  ! Element adds to model, taking into account the name
  Pce2= new_piece(SP,2,EP,2,SD,COMMON,Lib$,Code$,Mat$,"BOT")
  PceWidth = get_section_param(Pce2,"WIDTH",0)
  add_sobj(Trs) Pce2
  vec_copy(SPBot) SP
  vec_copy(EPBot) EP
  vec_copy(SPBotOrig) SP
  vec_copy(EPBotOrig) EP

  ! t add upper element to spant (PCTOP1)
  ! Starpunt van het profiel
  SP= CPT + CPTA - 1
  ! Endpoint of the profile = start point + 1
  EP= SP - 1
  ! Vector calculates d from start - and terminus to stipulate the direction of the profile
  vec_sub(D) SP,EP
  vec_cross_prod(SD) -X,D
  ! Element adds to model, taking into account the name
  Pce= new_piece(SP,2,EP,2,SD,COMMON,Lib$,Code$,Mat$,"TOP1")
  add_sobj(Trs) Pce  
  vec_copy(SPTop) EP
  vec_copy(EPTop) SP
  vec_copy(SPTopOrig) EP
  vec_copy(EPTopOrig) SP
  
  ! Calculate length of joist and get its unit vector
  vec_sub(JoistDir) EPTop,SPTop
  if numVerticals == 1 then
    Span = vec_len(JoistDir)
  else
    Span = vec_len(JoistDir) - (numVerticals * PceWidth) - (numVerticals*Tole)
  endif
    
  vec_unit(JoistUnit) JoistDir
        
  ! Calculate vertical piece directions
  vec_sub(PceVertDir) SPTop,SPBot
  Dikte= vec_get_z(PceVertDir)
  vec_cross_prod(PceVertDir) JoistDir,PceVertDir
  vec_unit(PceVertDir) PceVertDir
  vec_rev(PceVertOppDir) PceVertDir
  
  Code$= get_macro_param(This,"DC");
  Lib$= get_macro_param(This,"DCL");
  Mat$= get_macro_param(This,"DCM");
  
  i = 0
  loop
    exitif i >= numVerticals

    if i == 0 then
      vec_times_scalar(SD) JoistUnit,(PceWidth / 2.0)
    else
      vec_times_scalar(SD) JoistUnit,((PceWidth) + Tole)
    endif

    vec_add(SPTop) SPTop,SD
    vec_add(SPBot) SPBot,SD

    vec_rev(SD) SD

    vec_add(EPTop) EPTop,SD
    vec_add(EPBot) EPBot,SD

    PCEND1 = new_piece(SPTop,5,SPBot,5,PceVertDir,COMMON,Lib$,Code$,Mat$)
    add_sobj(Trs) PCEND1
    
    if Koppel then
      Shp1$= get_material_param(PCEND1,"HOWICK")
      Shp2$= get_material_param(Pce,"HOWICK")

      if cmp(Shp1$,Shp2$) then
        if i == 0 then
          Jnt= new_djoint("joint_custom","HW_0306C",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,0)
          End2= get_actual_pcend(Pce,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306C",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,1)
          End2= get_actual_pcend(Pce2,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        else
          Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        endif
      else
        if i = 0 then
          Jnt= new_djoint("joint_custom","HW_0306K",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,0)
          End2= get_actual_pcend(Pce,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306K",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,1)
          End2= get_actual_pcend(Pce2,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        else
          Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND1,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        endif
      endif
    endif

    PCEND2 = new_piece(EPTop,5,EPBot,5,PceVertOppDir,COMMON,Lib$,Code$,Mat$)
    add_sobj(Trs) PCEND2
    
    if Koppel then
      Shp1$= get_material_param(PCEND1,"HOWICK")
      Shp2$= get_material_param(Pce,"HOWICK")

      if cmp(Shp1$,Shp2$) then
        if i == 0 then
          Jnt= new_djoint("joint_custom","HW_0306C",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,0)
          End2= get_actual_pcend(Pce,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306C",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,1)
          End2= get_actual_pcend(Pce2,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        else
          Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        endif
      else
        if i = 0 then
          Jnt= new_djoint("joint_custom","HW_0306K",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,0)
          End2= get_actual_pcend(Pce,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306K",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,1)
          End2= get_actual_pcend(Pce2,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) End2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        else
          Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,0)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"

          Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
          End1= get_actual_pcend(PCEND2,1)
          set_djmember(Jnt) End1,"END"
          set_djmember(Jnt) Pce2,"PCE"
          set_djparam(Jnt) "PRE~SQ","1"
          set_djparam(Jnt) "PRE~SILENT","1"
        endif
      endif
    endif

    i = i + 1
  endloop
  
  vec_times_scalar(SD) JoistUnit,(PceWidth / 2.0) 
  vec_rev(SD) SD
  vec_add(SPTop) SPTop,SD
  vec_add(SPBot) SPBot,SD  
  
  ! extra controle, lengte kleiner dan 800mm dan is er maar 1 diagonale balk nodig
  if Span<800 then
    if inverted then
      vec_times_scalar(SD) SD,2
      vec_add(EPTop) EPTop,SD
      vec_sub(SPBot) SPBot,SD
      PCDIAG = new_piece(EPTop,5,SPBot,5,PceVertDir,COMMON,Lib$,Code$,Mat$)
      add_sobj(Trs) PCDIAG
      
      Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
      End1= get_actual_pcend(PCDIAG,0)
      set_djmember(Jnt) End1,"END"
      set_djmember(Jnt) Pce,"PCE"
      set_djparam(Jnt) "PRE~SQ","1"
      set_djparam(Jnt) "PRE~SILENT","1"

      Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
      End1= get_actual_pcend(PCDIAG,1)
      set_djmember(Jnt) End1,"END"
      set_djmember(Jnt) Pce2,"PCE"
      set_djparam(Jnt) "PRE~SQ","1"
      set_djparam(Jnt) "PRE~SILENT","1"
    else
      vec_times_scalar(SD) SD,2
      vec_sub(EPTop) SPTop,SD
      vec_add(SPBot) EPBot,SD
      PCDIAG = new_piece(SPBot,5,EPTop,5,PceVertDir,COMMON,Lib$,Code$,Mat$)
      add_sobj(Trs) PCDIAG
      
      Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
      End1= get_actual_pcend(PCDIAG,1)
      set_djmember(Jnt) End1,"END"
      set_djmember(Jnt) Pce,"PCE"
      set_djparam(Jnt) "PRE~SQ","1"
      set_djparam(Jnt) "PRE~SILENT","1"

      Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
      End1= get_actual_pcend(PCDIAG,0)
      set_djmember(Jnt) End1,"END"
      set_djmember(Jnt) Pce2,"PCE"
      set_djparam(Jnt) "PRE~SQ","1"
      set_djparam(Jnt) "PRE~SILENT","1"
    endif
  else
  ! Standaard uitvoeren van framing
  Web2Web = PceWidth * 1.414
  WebSpacing = (Span / 2) - PceWidth
  Length = WebSpacing
  if max_web_spacing=0 then
    Min = Dikte
  else
    Min = max_web_spacing / 2
  endif

  GapLength = WebSpacing
  numGaps = 1

  loop
    numGaps = numGaps + 1
    GapLength = Length / numGaps
    exitif GapLength < Min
  endloop

  if numGaps % 2 = 0 then
   numGaps = numGaps + 1
   GapLength = Length / numGaps
  endif
  NumWebs = numGaps

  !vec_copy(SPTop) SPTopOrig
  !vec_copy(SPBot) SPBotOrig

  vec_times_scalar(SD) JoistUnit,PceWidth + GapLength
  vec_add(SPTop) SPTop,SD
  vec_add(SPBot) SPBot,SD

  vec_times_scalar(negWeb2WebDir) JoistUnit, -(Web2Web/2)
  vec_times_scalar(posWeb2WebDir) JoistUnit, 2 * (Web2Web/2)
  vec_times_scalar(nextBay) JoistUnit,(GapLength * 2) - (Web2Web/2)
  vec_times_scalar(negHalfBay) JoistUnit,-GapLength + Web2Web
  vec_times_scalar(posHalfBay) JoistUnit,GapLength - Web2Web

  if NumWebs > 0 then
    WebIndex = 0
    loop NumWebs
      WebIndex = WebIndex + 1

      if inverted then
        vec_add(SPBot) SPBot,negWeb2WebDir
        vec_add(EPT) SPBot,negHalfBay
        vec_add(SPTop) SPTop,negWeb2WebDir

        PCDIAG = new_piece(SPTop,5,EPT,5,PceVertDir,COMMON,Lib$,Code$,Mat$)
        add_sobj(Trs) PCDIAG
        
        if Koppel then
          Shp1$= get_material_param(PCDIAG,"HOWICK")
          Shp2$= get_material_param(Pce,"HOWICK")

          if cmp(Shp1$,Shp2$) then
            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"
          else
            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"
          endif
        endif

        vec_add(SPBot) SPBot,posWeb2WebDir
        vec_add(EPT) SPBot,posHalfBay
        vec_add(SPTop) SPTop,posWeb2WebDir

        PCDIAG = new_piece(SPTop,5,EPT,5,PceVertOppDir,COMMON,Lib$,Code$,Mat$)
        add_sobj(Trs) PCDIAG
        
        if Koppel then
          Shp1$= get_material_param(PCDIAG,"HOWICK")
          Shp2$= get_material_param(Pce,"HOWICK")

          if cmp(Shp1$,Shp2$) then
            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"
          else
            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"      
          endif
        endif

        vec_add(SPTop) SPTop,nextBay
        vec_add(SPBot) SPBot,nextBay   
      else
        vec_add(SPTop) SPTop,negWeb2WebDir
        vec_add(EPT) SPTop,negHalfBay
        vec_add(SPBot) SPBot,negWeb2WebDir

        PCDIAG = new_piece(SPBot,5,EPT,5,PceVertDir,COMMON,Lib$,Code$,Mat$)
        add_sobj(Trs) PCDIAG
        
        if Koppel then
          Shp1$= get_material_param(PCDIAG,"HOWICK")
          Shp2$= get_material_param(Pce,"HOWICK")

          if cmp(Shp1$,Shp2$) then
            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"
          else
            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"
          endif
        endif

        vec_add(SPTop) SPTop,posWeb2WebDir
        vec_add(EPT) SPTop,posHalfBay
        vec_add(SPBot) SPBot,posWeb2WebDir

        PCDIAG = new_piece(SPBot,5,EPT,5,PceVertOppDir,COMMON,Lib$,Code$,Mat$)
        add_sobj(Trs) PCDIAG
        
        if Koppel then
          Shp1$= get_material_param(PCDIAG,"HOWICK")
          Shp2$= get_material_param(Pce,"HOWICK")

          if cmp(Shp1$,Shp2$) then
            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306A",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"
          else
            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,0)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce2,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"

            Jnt= new_djoint("joint_custom","HW_0306I",P,X,Y,Z,0,0);
            End1= get_actual_pcend(PCDIAG,1)
            set_djmember(Jnt) End1,"END"
            set_djmember(Jnt) Pce,"PCE"
            set_djparam(Jnt) "PRE~SQ","1"
            set_djparam(Jnt) "PRE~SILENT","1"
          endif
        endif

        vec_add(SPTop) SPTop,nextBay
        vec_add(SPBot) SPBot,nextBay          
      endif
    endloop
  endif
  endif
endloop

set RETURN "1"

#BUILD#