!***************************************************************
! STUD_ANCHOR_HOLE_PRE                / 2013-05-08 / Vertex Systems *
!***************************************************************
charset = latin1

#BUILD#

debug ./build.dbg

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

JP = 1
JX = 2
JY = 3
JZ = 4
PP = 5
PX = 6
PY = 7
PZ = 8
MP = 9
D = 10

HDCode$= get_obj_param(This,"PRE~HOLDDOWN_CDE")
HDLib$= get_obj_param(This,"PRE~HOLDDOWN_LIB")
HDMount$= get_obj_param(This,"PRE~HOLDDOWN_MNT") 
Manual$ = getprompt("MOUNT_MANUAL")
Loose$ = getprompt("MOUNT_LOOSE")
if cmp(HDMount$,Manual$) then
  Mount$ = "M"
endif
if cmp(HDMount$,Loose$) then
  Mount$ = "L"
endif
AnchorDist = get_obj_param(This,"PRE~ANCHOR_DIST")
AnchorCode$= get_obj_param(This,"PRE~ANCHOR_CODE")
AnchorLib$= get_obj_param(This,"PRE~ANCHOR_LIB")
Side$ = get_obj_param(This,"PRE~SIDE")
SHoleDist$ = get_obj_param(This,"PRE~SHOLE_DIST")
SHoleSize$ = get_obj_param(This,"PRE~SHOLE_SIZE")

init_iterator(It) "",0,"ROLED","TOOL"
Tool = next_item(It)
get_origin_pos(Tool) JP,JX,JY,JZ
set_visibility(Tool) "2D",0

init_iterator(It) "",0,"ROLED","PCE"
BottomPlate = next_item(It)
exitif !BottomPlate

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

get_origin_pos(Stud) PP,PX,PY,PZ

! Create hold down in PRE file to create joint between track and hold down
if cmp(Side$,"INT") then
  Shp$= get_material_param(Stud,"SHAPE")

  if cmp(Shp$,"C") then
    Dist= get_section_param(Stud,"THICK")
  else
    Dist= get_section_param(Stud,"WIDTH")
  endif
  vec_times_scalar(D) JX,Dist
  vec_add(JP) JP,D
endif

Holddown= new_macro(HDLib$,HDCode$,JP,JX,JY,JZ,1,1,0)
set_obj_param(Holddown) "MOUNT",Mount$
set_obj_param(Holddown) "USE","HOLD DOWN"
add_sobj(Stud) Holddown
set_obj_param(Holddown) "ANCHOR_DIST",AnchorDist,1

Path$= get($DIR_COMPLIBS)
Path$= Path$&HDLib$&"/d_"&HDLib$
Id= 1
Lid= 1
!
dbopen(Id) Path$,0

Where$= "where CODE = \""&HDCode$&"\""
dbfind(Lid) Id,1,Where$
Row0= dblistnum(Lid)
if Row0>0 then
  Rid = dblist(Lid,1)
  BoltCode$= dbgetf(Id,Rid,"BOLT_CODE")
  BoltLib$= dbgetf(Id,Rid,"BOLT_LIBRARY")
  BoltDists$= dbgetf(Id,Rid,"BOLT_DISTS")
  dblclose(Lid)
endif
dbclose(Id)

if !empty_string(BoltLib$) then
  Path$= get($DIR_COMPLIBS)
  Path$= Path$&BoltLib$&"/d_"&BoltLib$
  Id= 1
  Lid= 1
  !
  dbopen(Id) Path$,0

  Where$= "where CODE = \""&BoltCode$&"\""
  dbfind(Lid) Id,1,Where$
  Row0= dblistnum(Lid)
  if Row0>0 then
    Rid = dblist(Lid,1)
    BoltDia$= dbgetf(Id,Rid,"DIAMETER")
    BoltLen$= dbgetf(Id,Rid,"LENGTH")
    dblclose(Lid)
  endif
  dbclose(Id)
endif

! Create a joint between Pce and G4 Part
Jnt= new_djoint("","",JP,JX,JY,JZ,0,0,10)
if Jnt then
  set_djmember(Jnt) BottomPlate,"PART"
  set_djmember(Jnt) Holddown,"MAC",1+64
endif

! Create a joint between Pce and G4 Part
if empty_string(BoltLib$) then
  Jnt= new_djoint("","",JP,JX,JY,JZ,0,0,10)
  if Jnt then
    set_djmember(Jnt) Stud,"PART"
    set_djmember(Jnt) Holddown,"MAC",1+64
  endif
endif

Jnt = new_djoint("","",JP,JX,JY,JZ,0,2)
if !Jnt then exit
set_djmember(Jnt) Tool,"TOOL"
set_djmember(Jnt) BottomPlate,"PLATE"
set_djmember(Jnt) Stud,"STUD"
set_djparam(Jnt) "ANCHOR_DIST",AnchorDist
set_djparam(Jnt) "ANCHOR_LIB",AnchorLib$
set_djparam(Jnt) "ANCHOR_CODE",AnchorCode$
set_djparam(Jnt) "SIDE",Side$
if !empty_string(BoltDists$) then
  set_djparam(Jnt) "BOLT_CODE",BoltCode$
  set_djparam(Jnt) "BOLT_LEN",BoltLen$
  set_djparam(Jnt) "BOLT_DIA",BoltDia$
endif
set_djparam(Jnt) "BOLT_DISTS",BoltDists$
set_djparam(Jnt) "SHOLE_DIST",SHoleDist$
set_djparam(Jnt) "SHOLE_SIZE",SHoleSize$

set RETURN "1"

#BUILD#

