!*****************************************************************
! LGS_0615AF_PRE              / 2015-06-12 / Vertex Systems      *
!                                                                *
! Preprocessing for Lgs track stud joint.                        *
!*****************************************************************

#INPUT#

L = get($LANGUAGE)
Hdr$ = getprompt("ADD_BLT_PRFS")
Prompt1$ = getprompt("SEL_1ST_PRF")
Prompt2$ = getprompt("SEL_2ND_PRF")
Prompt3$ = getprompt("SEL_BOLT_PSTN")
if L==0 then
  Hdr$ = "Pultti liitos profiilien vliin"
  Prompt1$ = "Valitse ensimminen profiili"
  Prompt2$ = "Valitse toinen profiili"
  Prompt3$ = "Osoita rein paikka"
endif

vec_to(1) 0,0,0
vec_to(2) 1,0,0
vec_to(3) 0,1,0
vec_to(4) 0,0,1

M = new_macro("","",1,2,3,4,1,1,0)
set_macro_param(M) "TASK","PICK_PIECE"
set_macro_param(M) "HEADER",Hdr$
set_macro_param(M) "PROMPT",Prompt1$
set_macro_param(M) "ROLE","PCE1"

M = new_macro("","",1,2,3,4,1,1,0)
set_macro_param(M) "TASK","MARKINGS"
set_macro_param(M) "INPUT","0"

M = new_macro("","",1,2,3,4,1,1,0)
set_macro_param(M) "TASK","PICK_PIECE"
set_macro_param(M) "HEADER",Hdr$
set_macro_param(M) "PROMPT",Prompt2$
set_macro_param(M) "ROLE","PCE2"

M = new_macro("","",P,X,Y,Z,1,1,0)
set_macro_param(M) "TASK","MARKINGS"
set_macro_param(M) "INPUT","0"

M= new_macro("","",P,X,Y,Z,1,1,0)
set_macro_param(M) "TASK","PICK_POINTS"
set_macro_param(M) "HEADER",Prompt1$
set_macro_param(M) "PROMPT",Prompt3$
set_macro_param(M) "ROLE","PNT"

#INPUT#


#BUILD#

!debug ./build.dbg

It= new_iterator("",0,"ROLED","THIS")
This= next_item(It)
if !This then exit

init_iterator(It) "",0,"ROLED","PCE1")
Pce1= next_item(It)
if !Pce1 then exit

! Check material
Shape$= get_material_param(Pce1,"SHAPE")
if !cmp(Shape$,"U") && !cmp(Shape$,"C") then exit
Hgt1= get_section_param(Pce1,"HEIGHT")
Wdt1= get_section_param(Pce1,"WIDTH")

if (cmp(Shape$,"C")) then FitTole= mm_to_dwg(40)

P1= 1
PX1= 2
PY1= 3
PZ1= 4
P2= 5
PX2= 6
PY2= 7
PZ2= 8
D=  9
LP= 10
P = 11
X = 12
Y = 13
Z = 14
JP = 15
JX = 16
JY = 17
JZ = 18
BP = 19

PntP= 100

Geom1= 1
Geom2= 2
Geom3= 3
Geom4= 4
Geom5= 5

Done= 0
Tol= mm_to_dwg(10.01)

! fastener code
Done= 0

BoltLib$ = get_obj_param(This,"PRE~BLIB")
BoltMacro$ = get_obj_param(This,"PRE~BMAC")
Dia = get_obj_param(This,"PRE~DIA")
Dia2 = get_obj_param(This,"PRE~DIA2")

Source$ = get_obj_param(This,"PRE~SOURCE")

! Web centre line
get_origin_pos(Pce1) P1,PX1,PY1,PZ1
get_piece_localp(LP) Pce1,"IP",2
get_piece_vxgeom(Geom1) Pce1,LP

init_iterator(It) "",0,"ROLED","PCE2")
Pce2= next_item(It)
exitif !Pce2

!Check material
Shape2$= get_material_param(Pce2,"SHAPE")
exitif !cmp(Shape2$,"C") && !cmp(Shape2$,"U")
Hgt2= get_section_param(Pce2,"HEIGHT")
Wd2= get_section_param(Pce2,"WIDTH")

get_origin_pos(Pce2) P2,PX2,PY2,PZ2
get_piece_localp(LP) Pce2,"IP",2
get_piece_vxgeom(Geom2) Pce2,LP

Ok= 0

Pnt0 = 0
Ip = new_iterator("",0,"ROLED","PNT")
loop
  Pnt= next_item(Ip)
  exitif !Pnt
  if Pnt then
  get_origin_pos(Pnt) P,X,Y,Z
    vec_copy(PntP + Pnt0) P
    Pnt0 = Pnt0 + 1
  endif
endloop

if !Pnt0 then
  get_origin_pos(This) P,X,Y,Z
  vec_copy(PntP + Pnt0) P
  Pnt0 = Pnt0 + 1
endif

i = 0
loop Pnt0
  vec_copy(P) PntP + i

  point_to_vxgeom(BP) Geom1,P
  if (is_in_vxgeom(Geom2,BP,1,Tol)) then
    vec_copy(JP) BP
    Ok= 1
  endif

  if Ok then
    vec_copy(JX) PX1
    vec_copy(JY) PY1
    vec_copy(JZ) PZ1
    Jnt = new_djoint("","",JP,JX,JY,JZ,0,2)
    exitif !Jnt
    set_djmember(Jnt) Pce1,"PCE1"
    set_djmember(Jnt) Pce2,"PCE2"
    set_djparam(Jnt) "BOLT_LIB",BoltLib$
    set_djparam(Jnt) "BOLT_MAC",BoltMacro$

    Feat1= new_feature("HOLE")
    if (Feat1) then
      set_origin_pos(Feat1) JP,JX,JY,JZ
      set_obj_param(Feat1) "TYPE","C"
      set_obj_param(Feat1) "DIA",Dia2
      DD = mm_to_dwg(50)
      set_obj_param(Feat1) "D",DD
      set_obj_param(Feat1) "T","1"
      set_djmember(Jnt) Feat1,"H1",1
      add_sobj(Pce1) Feat1
    endif

    Feat2= new_feature("HOLE")
    if (Feat2) then
      set_origin_pos(Feat2) JP,JX,JY,JZ
      set_obj_param(Feat2) "TYPE","C"
      set_obj_param(Feat2) "DIA",Dia
      DD = mm_to_dwg(50)
      set_obj_param(Feat2) "D",DD
      set_obj_param(Feat2) "T","1"
      set_djmember(Jnt) Feat2,"H2",1
      add_sobj(Pce2) Feat2
    endif
    Done= 1
  endif
  i = i + 1
endloop

if Done then set RETURN "1"

#BUILD#
