!*****************************************************************
! LGS_0306AE2   / 13-03-2006 / Vertex Systems UK                 *
!                                                                *
!*****************************************************************

#UPDATE_JOINT#

!debug ./update_joint.dbg

set RETURN "-1"

I = new_iterator("",0,"ROLED","THIS")
This = next_item(I)
if (!This) then exit
init_iterator(I) "PROFOBJ",This,"CONNECTION_ROLEPARTS","PCE"
Pce = next_item(I)
if (!Pce) then exit

! Check object type

Type$ = get_object_type(Pce)
if (!cmp(Type$,"PROFOBJ")) then exit

! Check piece type

Ren$ = get_material_param(Pce,"SHAPE")
if (!cmp(Ren$,"C") and !cmp(Ren$,"U")) then exit

! Check shape

Geom = 1
get_vxgeom(Geom) Pce
Shape$ = get_vxgeom_shape(Geom);
if (cmp(Shape$,"LINE") = 0) then exit

! Locate joint

P = 1; X = 2; Y = 3; Z = 4; PJ = 5; XJ = 6; YJ = 7; ZJ = 8

get_joint_pos(This) PJ,XJ,YJ,ZJ
get_origin_pos(Pce) P,X,Y,Z
point_to_piece(P) Pce,PJ
set_joint_pos(This) P,Y,Z,X

set RETURN "1"

#UPDATE_JOINT#


#JOINT_TEST#

I = new_iterator("",0,"ROLED","THIS")
This = next_item(I)
if (!This) then exit
init_iterator(I) "PROFOBJ",This,"CONNECTION_ROLEPARTS","PCE"
Pce = next_item(I)
if (!Pce) then exit

get_joint_pnt(1) This
get_vxgeom(1) Pce
point_to_vxgeom(1) 1,1
if is_in_vxgeom(1,1,0,mm_to_dwg(0.1)) = 0 then exit

set RETURN "1"

#JOINT_TEST#


#JOINT_DETAILING#

!debug ./joint_detailing.dbg

# include connection.def

I = new_iterator("",0,"ROLED","THIS")
This = next_item(I)
init_iterator(I) "PROFOBJ",This,"CONNECTION_ROLEPARTS","PCE"
Pce = next_item(I)
if (!Pce) then exit

P = 1
X = 2
Y = 3
Z = 4
HP = 5
HN = 6
JP = 7
PP = 8
PX = 9
PY = 10
PZ = 11
D = 12

Mode= get_obj_param(This,"MODE")
HoleQty = 2
HoleSize$ = "13"

Hgt= get_section_param(Pce,"HEIGHT")
Width = get_section_param(Pce,"WIDTH")
Width$ = Width

get_origin_pos(This) JP,X,Y,Z
vec_rev(Z) Z
get_origin_pos(Pce) PP,PX,PY,PZ

vec_rev(D) PX
Ok= proj_to_piece(JP,D,JP,D,Pce,0,2)

del_joint_det(This)

if Mode == 0 || Mode == 2 then
  ! Outer Holes
  Offset = (Hgt-30-30)
  Offset = 50

  init_iterator(I) "",This,"CONNECTION_ROLEPARTS","H"
  Hole= next_item(I)
  if !Hole then
    Hole= new_feature("HOLE")
    if !Hole then exit
    connect(This) Hole,"H"
    add_sobj(Pce) Hole
    set_obj_param(Hole) "T","1"
  endif
  set_origin_pos(Hole) JP,PY,PZ,PX
  set_feat_param(Hole) "TYPE","CGX"
  set_obj_param(Hole) "SX",Offset
  set_obj_param(Hole) "QTYX",HoleQty 
  set_obj_param(Hole) "DIA",HoleSize$
  set_obj_param(Hole) "D",Width

  init_iterator(I) "",This,"CONNECTION_ROLEPARTS","C"
  Tube= next_item(I)
  if !Tube then
    Tube= new_macro("MACRO_SYS","CYLINDER",JP,PY,PZ,PX,1,1,0,0)
    connect(This) Tube,"C"
    set_same_tlink(Tube) Pce
    set_same_visib(Tube) Pce
  endif
  set_obj_param(Tube) "D",Width$,1
  set_obj_param(Tube) "DIA",HoleSize$,1
  vec_times_scalar(D) PY,Offset/2
  vec_add(PP) JP,D
  vec_times_scalar(D) PX,Width/2
  vec_add(PP) PP,D
  set_origin_pos(Tube) PP,PY,PZ,PX

  init_iterator(I) "",This,"CONNECTION_ROLEPARTS","C"
  Tube= next_item(I)
  if !Tube then
    Tube= new_macro("MACRO_SYS","CYLINDER",JP,PY,PZ,PX,1,1,0,0)
    connect(This) Tube,"C"
    set_same_tlink(Tube) Pce
    set_same_visib(Tube) Pce
  endif
  set_obj_param(Tube) "D",Width$,1
  set_obj_param(Tube) "DIA",HoleSize$,1
  vec_times_scalar(D) PY,-Offset/2
  vec_add(PP) JP,D
  vec_times_scalar(D) PX,Width/2
  vec_add(PP) PP,D
  set_origin_pos(Tube) PP,PY,PZ,PX
endif

if Mode == 1 || Mode == 2 then
  ! Inner holes
  Offset = (Hgt-100-100)
  Offset = 50

  init_iterator(I) "",This,"CONNECTION_ROLEPARTS","H2"
  Hole= next_item(I)
  if !Hole then
    Hole= new_feature("HOLE")
    if !Hole then exit
    connect(This) Hole,"H2"
    add_sobj(Pce) Hole
    set_obj_param(Hole) "T","1"
  endif
  set_origin_pos(Hole) JP,PY,PZ,PX
  set_feat_param(Hole) "TYPE","CGX"
  set_obj_param(Hole) "SX",Offset
  set_obj_param(Hole) "QTYX",HoleQty 
  set_obj_param(Hole) "DIA",HoleSize$
  set_obj_param(Hole) "D",Width

  init_iterator(I) "",This,"CONNECTION_ROLEPARTS","C"
  Tube= next_item(I)
  if !Tube then
    Tube= new_macro("MACRO_SYS","CYLINDER",JP,PY,PZ,PX,1,1,0,0)
    connect(This) Tube,"C"
    set_same_tlink(Tube) Pce
    set_same_visib(Tube) Pce
  endif
  set_obj_param(Tube) "D",Width$,1
  set_obj_param(Tube) "DIA",HoleSize$,1
  vec_times_scalar(D) PY,Offset/2
  vec_add(PP) JP,D
  vec_times_scalar(D) PX,Width/2
  vec_add(PP) PP,D
  set_origin_pos(Tube) PP,PY,PZ,PX

  init_iterator(I) "",This,"CONNECTION_ROLEPARTS","C"
  Tube= next_item(I)
  if !Tube then
    Tube= new_macro("MACRO_SYS","CYLINDER",JP,PY,PZ,PX,1,1,0,0)
    connect(This) Tube,"C"
    set_same_tlink(Tube) Pce
    set_same_visib(Tube) Pce
  endif
  set_obj_param(Tube) "D",Width$,1
  set_obj_param(Tube) "DIA",HoleSize$,1
  vec_times_scalar(D) PY,-Offset/2
  vec_add(PP) JP,D
  vec_times_scalar(D) PX,Width/2
  vec_add(PP) PP,D
  set_origin_pos(Tube) PP,PY,PZ,PX
endif

set RETURN "1"

#JOINT_DETAILING#

#EDIT_PROPERTIES#

!debug ./edit_properties.dbg

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

Mode$ = get_obj_param(This,"MODE")

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

TmpObj= new_macro("","",P,X,Y,Z,1,1,0)
if TmpObj then
  set_obj_param(TmpObj) "MODE",Mode$

  if edit_obj_data(TmpObj,"LGS_0306AD_form",0) then
    Mode$= get_obj_param(TmpObj,"MODE") 

    init_iterator(I) "",0,"ROLED","THIS"
    loop
      This = next_item(I)
      exitif !This
      set_joint_param(This) "MODE",Mode$
    endloop
    set RETURN "1"
  endif
endif

#EDIT_PROPERTIES#