
 setup form !!convertostecspec

  member .spec is dbref
  button .bCE      |CE|   at xmin   ymin  callback '!this.ce()'
  --paragraph .cnodeNameTag            anchor l+t       at x0.1       ymax+0.1    text  'Control Node Name:'
   text      .specname    width 40 is STRING
  -- Bottom Line
  --button .cancel  |Dismiss| at xmax form-size  ymax  callback '!this.close()'
  path d
  button .ok      |Apply|   at x0   callback '!this.apply()'

-- End of form definition for !!spchvacpenspecsel
exit


define method .ce()
if !!ce.type neq 'SPEC' then
  !!alert.message('Выберите SPEC')
  return
endif
!this.spec = !!ce
!this.specname.val = !this.spec.name
endmethod

define method .apply()
--  !!alert.message('SPEC=' & !this.spec.name)

   --!spec = /OSTEC-CT-NLO-50-1.2/3000-ZS
   !spec = !this.spec
   !pw = /PW2 $* под ним будем создавать на этом же уровне
   !sw = /SW2 $* будем созавать внутри
   
   --создаём TABGRO эквивалент SPEC
   $!sw
   !tabgroname = '/TG' & !spec.name
   new TABGRO $!tabgroname
   desc '$!tabgroname'
   purpose TRAY
   SPType ELEC

   --создаём PartWorld на основе имени спеки с припиской /PW
   $!pw
   !pwname = '/PW' & !spec.name
   new prtwld $!pwname
   --конец общей части для всех типов
   
   $!pwname
   ----------------------------------------------CTSTA----------------------------------------------------------
   --отбираем из спеки ELBO
   --!type = 'FTUB'
   var !col collect all spco with (gtype of catref eq 'FTUB' or gtype of catref eq 'TUBE') for $!spec
   --создаём ветку FTUB в PartWorld
   !typerootFTUB = !pwname & '/' & 'FTUB'
   new prtele $!typerootFTUB
   purpose FTUB
   
   --создаём ветку TUBE в PartWorld
   $!pwname
   !typerootTUBE = !pwname & '/' & 'TUBE'
   new prtele $!typerootTUBE
   purpose TUBE
  
    --создаём CTABLE для типа CTSTRA (внутри  TABGRO)
   $!tabgroname
   !CTABLENAME = !tabgroname & '/CTSTRA'
   new CTABLE $!CTABLENAME
   desc '$!CTABLENAME'
   !deflen = stext of text2 of $!spec
   !this.makeCTSTRAheader(!deflen) $* вызывается однократной для этой TABRRO
  
  --начало цикла для FTUB и TUBI
  do !i indices !col
    !e = !col[!i].dbref()
	if !e.catref.gtype eq 'FTUB' then
      !this.MAKEandsetCOMMONatt(!e,'FTUB',!typerootFTUB,!pw.name,!CTABLENAME,!i)
    
      !width = string( rpro WIDA of $!e )
      !height = string( rpro HEIG of $!e )

	  if !e.catref.name.matchwild('*-FIX-*') then
        !stype = 'F'
	  else
	    !stype = 'VL'
	  endif
    
	  !length = !e.catref.para[5]
      !this.setCTSTRAanswer('CTSTRA', !stype, !width, !height, '$!length')
	elseif !e.catref.gtype eq 'TUBE' then
	  !this.MAKEandsetCOMMONatt(!e,'TUBE',!typerootTUBE,!pw.name,!CTABLENAME,!i)
    
      !width = string( !e.para[1] )
      !height = '50'

      !stype = 'V'
    
      !this.setCTSTRAanswer('TUBE', !stype, !width, '', '')
	else
	  !!alert.message('неправильный тип ' & !e.catref.gtype)
	endif

  enddo
  --конец цикла для CTSTA
   
   $!pwname
   ----------------------------------------------ELBO----------------------------------------------------------
   --отбираем из спеки ELBO
   !type = 'ELBO'
   var !col collect all spco with (gtype of catref eq !type) for $!spec
   --создаём ветку ELBO в PartWorld
   !typeroot = !pwname & '/' & !type
   new prtele $!typeroot
   purpose ELBO
  
    --создаём CTABLE для типа ELBO то есть CTRISE (внутри  TABGRO)
   $!tabgroname
   !CTABLENAME = !tabgroname & '/CTRISE'
   new CTABLE $!CTABLENAME
   desc '$!CTABLENAME'
   !this.makeCTRISEheader() $* вызывается однократной для этой TABRRO
  
  --начало цикла для ELBO
  !ii = 0
  do !i indices !col
    !e = !col[!i].dbref()
    --!this.MAKEandsetCOMMONatt(!e,!type,!typeroot,!pw.name,!CTABLENAME,!i)
    if !e.catref.owner.name.matchwild('*-PVR-*') or !e.catref.owner.name.matchwild('*(HALF)*') or !e.catref.owner.name.matchwild('*PSHSNLO*') then
	  skip
	endif
	
    !width = string( rpro WIDA of $!e )
    !height = string( rpro HEIG of $!e )
	
    --!angl = 90
	!angles = array()
	if !e.catref.owner.name.matchwild('*-PSHS*') then
	  do !m from -80 to -5
	    skip if !e.catref.owner.name.matchwild('*LKR*') and !m eq -45
	    !angles.append(!m)
	  enddo
	  do !m from 5 to 80
	    skip if !e.catref.owner.name.matchwild('*LKR*') and !m eq 45
	    !angles.append(!m)
	  enddo
	  
	  if !e.catref.owner.name.matchwild('*LKR*') then
	  !angles.append(90)
	  !angles.append(-90)
	  endif
	  --для серии кабелростов у которых нет 90 градусных RISE оставляем PSHS для 90град
	  
	  
	elseif !e.catref.owner.name.matchwild('*-RISEA-NULL*') then

	  do !m from -90 to 90
	    !angles.append(!m)
	  enddo
	elseif !e.catref.owner.name.matchwild('*VSVLKR*') or !e.catref.owner.name.matchwild('*VSVNLKR*') then
	  !angles[1] = 45
	else
	  !angles[1] = 90
	endif
	
    !radi = '0'
	if !e.catref.gmref.owner.function eq 'IR' then
      !stype = 'IR'
	elseif !e.catref.gmref.owner.function eq 'OR' then
	  !stype = 'OR'
	elseif !e.catref.gmref.owner.function eq 'PARA7' and  !e.para[7] eq 1 then
	  !stype = 'IR'
	elseif !e.catref.gmref.owner.function eq 'PARA7' and  !e.para[7] eq -1 then
	  !stype = 'OR'
 	elseif !e.catref.gmref.owner.function eq 'LKR45' and  !e.para[6] gt 0 then
	  --$p LKR45 IR
	  !stype = 'IR'
	elseif !e.catref.gmref.owner.function eq 'LKR45' and  !e.para[6] lt 0 then
	  --$p LKR45 OR
	  !stype = 'OR'
	else
	  !stype = 'XX'
	endif
    
	  do !angl values !angles
	    !ii = !ii + 1
		--$p $!type $!ii
	    !this.MAKEandsetCOMMONatt(!e,!type,!typeroot,!pw.name,!CTABLENAME,!ii)
		
	    if !e.catref.owner.name.matchwild('*-PSHS-*') then
		  !p8 = !e.para[8].real()
	      !p3 = !e.para[3].real()
		  --q var !angl
		  --( - ( PARA[8 ] + TAN ( RPRO ANGL * 0.5 ) * PARA[3 ] * 0.5 ) )
	      !alen =  !p8 + !p3 * 0.5 * TAN ( !angl / 2 )
		else 
		  !alen = !e.ppos[0].distance(!e.ppos[1])
		  --!alen = 500
		endif
		
		--подработка для PSHS и отрицательных углов
		if !stype eq 'XX' and !angl lt 0 then
		  !stype2 = 'OR' 
		  !angl2 = - !angl
		elseif !stype eq 'XX' and !angl gt 0 then
		  !stype2 = 'IR' 
		  !angl2 = !angl
		else
		  !stype2 = !stype
		  !angl2 = !angl
		endif
		
        !this.setCTRISEanswer('CTRISE',!stype2, !width, !height, '$!ANGL2', !radi, '$!alen')
	  enddo
    --!this.setCTRISEanswer('CTRISE',!stype, !width, !height, '$!ANGL', !radi, '$!alen')

  enddo
  --конец цикла для ELBO


  $!pwname
  ---------------------------------------------BEND----------------------------------------------------------
  --отбираем из спеки BEND
  
  !type = 'BEND'
  var !col collect all spco with (gtype of catref eq !type) for $!spec
  --$p bends.sze() =
  --q var !col.size()
  --создаём ветку BEND в PartWorld
  !typeroot = !pwname & '/' & !type
  new prtele $!typeroot
  purpose BEND
  
   --создаём CTABLE для типа BEND то есть CTRISE (внутри  TABGRO)
  $!tabgroname
  !CTABLENAME = !tabgroname & '/CTBEND'
  new CTABLE $!CTABLENAME
  desc '$!CTABLENAME'
  !this.makeCTRISEheader() $* вызывается однократной для этой TABRRO
  
  --начало цикла для BEND
  !ii = 0
  do !i indices !col
    !e = !col[!i].dbref()
	
	if !e.catref.owner.name.matchwild('*-BEND-NULL*') then
	  skip
	endif
	
    !width = string( rpro WIDA of $!e )
    !height = string( rpro HEIG of $!e )
	
	--!on = !e.catref.owner.name
	--$p $!on
	!angles = array()
	--!alen = 0
	if !e.catref.owner.name.matchwild('*-PGR*') then
	  do !m from 1 to 80
	    if !m eq 45 then
		  skip
		endif
	    !angles[!m] = !m
	  enddo
	elseif !e.catref.owner.name.matchwild('*-BEND-RAD*') then
	  do !m from 1 to 90
	    !angles[!m] = !m
	  enddo
	elseif !e.catref.owner.name.matchwild('*-135-*') or !e.catref.owner.name.matchwild('*-GSLKR-*') then
	  !angles[1] = 45
	else
	  !angles[1] = 90
	endif
    
    !radi = '0'
	if !e.catref.owner.name.matchwild('*-R') or !e.catref.owner.name.matchwild('*-R-*') then
      !stype = 'R'
	else
	  !stype = 'L'
	endif
	
	
    
	--если массив не пустой с углами, то создаём элементы в цикле
	
	  do !angl values !angles
	    !ii = !ii + 1
		--$p $!type $!ii
	    !this.MAKEandsetCOMMONatt(!e,!type,!typeroot,!pw.name,!CTABLENAME,!ii)
		
		--тут бенды регилируемые LN LP
	    if !e.catref.owner.name.matchwild('*-PGR*') then
		  !p5 = !e.para[5].real()
	      !p1 = !e.para[1].real()
		  --q var !angl
	      !alen =  !p5 + ( !p5 - !P1 / 2 * SIN ( !angl / 2 ) ) / COS ( !angl / 2 ) 
		--тут бенды проволочные с перменным радиусом и углом фиксируем R = 1.0 * ширину
		elseif !e.catref.owner.name.matchwild('*-BEND-RAD*') then
		  !p1 = !e.para[1].real()
		  !p5 = !e.para[5].real()
		  !ra = !p5 $* это радиус по умолчанию
		  !alen =  TAN ( !ANGL / 2 ) * ( !P1 / 2 + !ra ) 
		else 
		
		  !alen = !e.ppos[0].distance(!e.ppos[1])
		  --!alen = 500
		endif
		
        !this.setCTRISEanswer('CTBEND',!stype, !width, !height, '$!ANGL', !radi, '$!alen')
	  enddo
  enddo
  --конец цикла для BEND
  
  
  
  $!pwname
  ---------------------------------------------TEE----------------------------------------------------------
  --отбираем из спеки TEE
  !type = 'TEE'
  var !col collect all spco with (gtype of catref eq !type) for $!spec
  --создаём ветку TEE в PartWorld
  !typeroot = !pwname & '/' & !type
  new prtele $!typeroot
  purpose TEE
  
   --создаём CTABLE для типа TEE то есть CTRISE (внутри  TABGRO)
  $!tabgroname
  !CTABLENAME = !tabgroname & '/CTTEE'
  new CTABLE $!CTABLENAME
  desc '$!CTABLENAME'
  !this.makeCTTEEheader() $* вызывается однократно для этой TABRRO
  
  --начало цикла для TEE
  do !i indices !col
    !e = !col[!i].dbref()
	
	--вырубаем KOV KOVB OTV OTVB
	if !e.catref.owner.name.matchwild('*-KOV*') or !e.catref.owner.name.matchwild('*-OTV*')  then
	  skip
	endif
	
    !this.MAKEandsetCOMMONatt(!e,!type,!typeroot,!pw.name,!CTABLENAME,!i)
    
    !width = string( rpro WIDA of $!e )
	!brwidth = string( rpro WIDB of $!e )
    !height = string( rpro HEIG of $!e )
    --!angl = '90'
    --!radi = '300'
	
	--if !e.catref.owner.name.matchwild('*-R') then
      --!stype = 'R'
	--else
	  --!stype = 'L'
	--endif
	
	!ssty = tans of $!e
	!ssty = !ssty.replace('LH ' ,'').replace('RH ' ,'')
    --$p $!ssty
	if !e.tans.matchwild('LH *') then
	  --!stype = 'LH'
	  !stype = 'LEFT'
	else
	  !stype = 'RIGHT'
	endif
    
    !this.setCTTEEanswer(!stype, !ssty, !width, !brwidth, !height)

  enddo
  --конец цикла для TEE
  
  $!pwname
  ---------------------------------------------CROS----------------------------------------------------------
  --отбираем из спеки CROS
  !type = 'CROS'
  var !col collect all spco with (gtype of catref eq !type) for $!spec
  --создаём ветку CROS в PartWorld
  !typeroot = !pwname & '/' & !type
  new prtele $!typeroot
  purpose CROS
  
   --создаём CTABLE для типа CROS то есть CTRISE (внутри  TABGRO)
  $!tabgroname
  !CTABLENAME = !tabgroname & '/CTCROS'
  new CTABLE $!CTABLENAME
  desc '$!CTABLENAME'
  !this.makeCTCROSheader() $* вызывается однократно для этой TABRRO
  
  --начало цикла для CROS
  do !i indices !col
    !e = !col[!i].dbref()
    !this.MAKEandsetCOMMONatt(!e,!type,!typeroot,!pw.name,!CTABLENAME,!i)
    
    !width = string( rpro WIDA of $!e )
	!brwidth = string( rpro WIDB of $!e )
    !height = string( rpro HEIG of $!e )
    --!angl = '90'
    --!radi = '300'
	$(
	if !e.catref.owner.name.matchwild('*-R') then
      !stype = 'R'
	else
	  !stype = 'L'
	endif
	$)
    
    
    !this.setCTCROSanswer(!width, !brwidth, !height)

  enddo
  --конец цикла для CROS

  $!pwname
  ---------------------------------------------REDU----------------------------------------------------------
  --отбираем из спеки REDU
  !type = 'REDU'
  var !col collect all spco with (gtype of catref eq !type) for $!spec
  --создаём ветку REDU в PartWorld
  !typeroot = !pwname & '/' & !type
  new prtele $!typeroot
  purpose REDU
  
   --создаём CTABLE для типа REDU то есть CTREDU (внутри  TABGRO)
  $!tabgroname
  !CTABLENAME = !tabgroname & '/CTREDU'
  new CTABLE $!CTABLENAME
  desc '$!CTABLENAME'
  !this.makeCTREDUheader() $* вызывается однократно для этой TABRRO
  
  --начало цикла для REDU
  do !i indices !col
    !e = !col[!i].dbref()
    !this.MAKEandsetCOMMONatt(!e,!type,!typeroot,!pw.name,!CTABLENAME,!i)
    
    !width = string( rpro WIDA of $!e )
	!lwidth = string( rpro WIDB of $!e )
    !height = string( rpro HEIG of $!e )
    --!angl = '90'
    --!radi = '300'
	
	--смещение (1) лево (-1) право (0) центр
	if !e.para[5] eq 1 then
      !stype = 'ECLH'
	elseif !e.para[5] eq -1 then
	  !stype = 'ECRH'
	elseif !e.para[5] eq 0 then
	  !stype = 'CONC'
	else 
	  !stype = 'XXXX'
	endif
	
    
    
    !this.setCTREDUanswer(!stype, !width, !lwidth, !height)

  enddo
  --конец цикла для REDU

endmethod


--данный метод получает элемент !e спецификации и проделаывает работу одинаковую для любого типа
--1 создаёт PARTGRO и PARTELE присваивает все ссылки
--2 создаёт TABITE внутри уже созданного для типа TABGRO и CTABLE
--!e элемент спецификации (dbref)
--!type - типа например 'ELBO'
--!typeroot -  (тут будет созданы PARTELE этого типа и GPART)
--!pw - имя PARTWORLD используется в автоименовании
--!CTABLENAME имя созданной CTABLE, например .../CTRISE (здесь будут созаваться TABITEM)
--!i порядковый номер для автоименования


define method .MAKEandsetCOMMONatt(!e is dbref , !type is string , !typeroot is string , !pw is string , !CTABLENAME is string , !i is real )
    !catename = !e.catref.owner.name
    $p $!e $!type
    ---для каждого элемента протаптываем до родителя по имени категории и становимся на него
    --!cateroot = '/' & seq of $!typeroot & !catename
    !cateroot = !typeroot & !catename
    !cateroot = !cateroot.replace('OSTEC-CT-','').replace('$!type-','').replace('$!type/','')
    --$p $!cateroot
    $!typeroot
    new locate prtele $!cateroot
	--PRTELE (cateroot) созадано
    !ctdesc = !e.catref.owner.namn
    desc '$!ctdesc'
    --затем new gpart
    --!gpartname = !pw.name & '/' & !e.matxt.namn & '/' & !Type & '-' & !i
	!gpartname = !pw & '/' & !e.namn & '/' & !Type & '-' & !i
	if !gpartname.length() gt 50 then
	  !gpartname =  !gpartname.replace('OSTEC-CT-','')
	endif
	
    new gpart $!gpartname
	handle any
	endhandle
    
    !!ce.desc = !e.catref.owner.desc
    !!ce.catref = !e.catref
    !!ce.detref = !e.detref
	handle any
	--$p $!e detref not found
	endhandle
    !!ce.matxt = !e.matxt
    !!ce.comment = !e.comment
    !!ce.pritype = !type
    --GPART полностью готово
	
    --TABGRO--
    $!CTABLENAME
    !tabitemname = '/TI' & !e.name & '-' & !i
    new tabitem $!tabitemname
    prtreference $!gpartname
endmethod

define method .makeCTSTRAheader(!deflen is string)

NEW TABHEADER

NEW TABHQUESTION
DESC 'Type'
PURP TYPE
ANSTYP TEXT
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Width'
PURP WIDT
ANSTYP TEXT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Sub-Type'
PURP STYP
ANSTYP TEXT
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TDEF 'F'


NEW TABHQUESTION
DESC 'Overall Length'
PURP LENG
ANSTYP TEXT
TQUES 'OLENG'
RFLAG SING
QTYPE TEXT
TDEF '$!deflen'

NEW TABHQUESTION
DESC 'Tray Height'
PURP HEIG
ANSTYP TEXT
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT

endmethod

define method .makeCTTEEheader()

NEW TABHEADER

NEW TABHQUESTION
DESC 'Type'
PURP TYPE
ANSTYP TEXT
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Width'
PURP WIDT
ANSTYP TEXT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Branch Width'
PURP BRWI
ANSTYP TEXT
TQUES 'TRAYSW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Sub-Type'
PURP STYP
ANSTYP TEXT
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT

NEW TABHQUESTION
DESC 'Sub-Type2'
PURP SSTY
ANSTYP TEXT
TQUES 'CTTY'
RFLAG SING
QTYPE TEXT
Tdefault 'TT'


NEW TABHQUESTION
DESC 'Angle'
PURP ANGL
ANSTYP TEXT
TQUES 'ANGL'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Radius'
PURP RADI
ANSTYP TEXT
TQUES 'RADI'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Arrive Length'
PURP ALEN
ANSTYP TEXT
TQUES 'ALENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Leave Length'
PURP LLEN
ANSTYP TEXT
TQUES 'LLENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Side Length'
PURP SLEN
ANSTYP TEXT
TQUES 'SLENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Height'
PURP HEIG
ANSTYP TEXT
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT

endmethod



define method .makeCTRISEheader()
  NEW TABHEADER
  
  --1
  NEW TABHQUESTION
  DESC 'Type'
  PURP TYPE
  ANSTYP TEXT
  TQUES 'TYPE'
  RFLAG SING
  QTYPE TEXT
  
  --2
  NEW TABHQUESTION
  DESC 'Tray Width'
  PURP WIDT
  ANSTYP TEXT
  TQUES 'TRAYW'
  RFLAG SING
  QTYPE TEXT
  
  --3
  NEW TABHQUESTION
  DESC 'Sub-Type'
  PURP STYP
  ANSTYP TEXT
  TQUES 'CTTYP'
  RFLAG SING
  QTYPE TEXT
  
  --4
  NEW TABHQUESTION
  DESC 'Angle'
  PURP ANGL
  ANSTYP TEXT
  TQUES 'ANGL'
  RFLAG SING
  QTYPE TEXT
  
  --5
  NEW TABHQUESTION
  DESC 'Radius'
  PURP RADI
  ANSTYP TEXT
  TQUES 'RADI'
  RFLAG SING
  QTYPE TEXT
  
  --6
  NEW TABHQUESTION
  DESC 'Arrive Length'
  PURP ALEN
  ANSTYP TEXT
  TQUES 'ALENG'
  RFLAG SING
  QTYPE TEXT
  
  --7
  NEW TABHQUESTION
  DESC 'Leave Length'
  PURP LLEN
  ANSTYP TEXT
  TQUES 'LLENG'
  RFLAG SING
  QTYPE TEXT
  
  --8
  NEW TABHQUESTION
  DESC 'Tray Height'
  PURP HEIG
  ANSTYP TEXT
  TQUES 'TRAYH'
  RFLAG SING
  QTYPE TEXT
endmethod

define method .makeCTCROSheader()

NEW TABHEADER

NEW TABHQUESTION
DESC 'Type'
PURP TYPE
ANSTYP TEXT
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Width'
PURP WIDT
ANSTYP TEXT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Branch Width'
PURP BRWI
ANSTYP TEXT
TQUES 'TRAYSW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Second Branch Width'
PURP OWID
ANSTYP TEXT
TQUES 'TRAYOW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Sub-Type'
PURP STYP
ANSTYP TEXT
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TDEF 'CONC'


NEW TABHQUESTION
DESC 'Angle'
PURP ANGL
ANSTYP TEXT
TQUES 'ANGL'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Radius'
PURP RADI
ANSTYP TEXT
TQUES 'RADI'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Arrive Length'
PURP ALEN
ANSTYP TEXT
TQUES 'ALENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Leave Length'
PURP LLEN
ANSTYP TEXT
TQUES 'LLENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Side Length'
PURP SLEN
ANSTYP TEXT
TQUES 'SLENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Second Side Length'
PURP SSLE
ANSTYP TEXT
TQUES 'SSLENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Height'
PURP HEIG
ANSTYP TEXT
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT


endmethod

define method .makeCTREDUheader()

NEW TABHEADER

NEW TABHQUESTION
DESC 'Type'
PURP TYPE
ANSTYP TEXT
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Width'
PURP WIDT
ANSTYP TEXT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Reducing Width'
PURP LWID
ANSTYP TEXT
TQUES 'TRAYRW'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Sub-Type'
PURP STYP
ANSTYP TEXT
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TDEF 'CONC'


NEW TABHQUESTION
DESC 'Overall Length'
PURP LENG
ANSTYP TEXT
TQUES 'OLENG'
RFLAG SING
QTYPE TEXT


NEW TABHQUESTION
DESC 'Tray Height'
PURP HEIG
ANSTYP TEXT
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT

endmethod

define method .setCTSTRAanswer(!type is string , !stype is string , !width is string , !height is string , !length is string )

NEW TABQUESTION
DESC 'Type'
PURP TYPE
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT
--TANS 'CTSTRA'
TANS '$!type'

END
NEW TABQUESTION
DESC 'Tray Width'
PURP WIDT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT
TANS '$!width'

END
NEW TABQUESTION
DESC 'Sub-Type'
PURP STYP
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TANS '$!stype'

END
NEW TABQUESTION
DESC 'Overall Length'
PURP LENG
TQUES 'OLENG'
RFLAG SING
QTYPE TEXT
TANS '$!length'

END
NEW TABQUESTION
DESC 'Tray Height'
PURP HEIG
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT
TANS '$!height'


endmethod


define method .setCTRISEanswer(!type is string , !stype is string , !width is string , !height is string , !ANGL is string , !radi is string, !alen is string )
 
NEW TABQUESTION
DESC 'Type'
PURP TYPE
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT
--TANS 'CTRISE'
TANS '$!type'

NEW TABQUESTION
DESC 'Tray Width'
PURP WIDT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT
TANS '$!width'


NEW TABQUESTION
DESC 'Sub-type'
PURP STYP
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TANS '$!stype'


NEW TABQUESTION
DESC 'Angle'
PURP ANGL
TQUES 'ANGL'
QTYPE TEXT
--if !angles.size() eq 1 then
  RFLAG SING
  TANS '$!angl'
--else
  --RFLAG MULT
  --!!ce.tabanswers =!angles
--endif


NEW TABQUESTION
DESC 'Radius'
PURP RADI
TQUES 'RADI'
RFLAG SING
QTYPE TEXT
TANS '$!radi'


NEW TABQUESTION
DESC 'Arrive Length'
PURP ALEN
TQUES 'ALENG'
RFLAG SING
QTYPE TEXT
TANS '$!alen'


NEW TABQUESTION
DESC 'Leave Length'
PURP LLEN
TQUES 'LLENG'
RFLAG SING
QTYPE TEXT
TANS '$!alen'


NEW TABQUESTION
DESC 'Tray Height'
PURP HEIG
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT
TANS '$!height'

endmethod


define method .setCTTEEanswer(  !Stype is string , !SSty is string , !width is string, !brwidth is string , !height is string  )

--$p в примере vantrunk STYP не задаётся

NEW TABQUESTION
PURP TYPE
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT
TANS 'CTTEE'

NEW TABQUESTION
PURP WIDT
TQUES 'WIDTH'
RFLAG SING
QTYPE TEXT
TANS '$!width'

NEW TABQUESTION
PURP BRWI
TQUES 'TRAYSW'
RFLAG SING
QTYPE TEXT
TANS '$!brwidth'


NEW TABQUESTION
DESC 'Sub-type'
PURP STYP
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TANS '$!stype'

NEW TABQUESTION
PURP SSTY
TQUES 'SSTYP'
RFLAG SING
QTYPE TEXT
TANS '$!SSTY'

$(
NEW TABQUESTION
PURP RADI
TQUES 'SLENG'
RFLAG SING
QTYPE TEXT
TANS '0'

NEW TABQUESTION
PURP ANGL
TQUES 'ANGL'
RFLAG SING
QTYPE TEXT
TANS '90'

NEW TABQUESTION
PURP ALEN
TQUES 'ALENG'
RFLAG SING
QTYPE TEXT
TANS '0'

NEW TABQUESTION
PURP LLEN
TQUES 'LLENG'
RFLAG SING
QTYPE TEXT
TANS '0'

NEW TABQUESTION
PURP SLEN
TQUES 'SLENG'
RFLAG SING
QTYPE TEXT
TANS '0'
$)
NEW TABQUESTION
PURP HEIG
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT
TANS '$!height'


endmethod


define method .setCTCROSanswer( !width is string, !brwidth is string , !height is string  )


NEW TABQUESTION
PURP TYPE
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT
TANS 'CTCROS'


NEW TABQUESTION
PURP WIDT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT
TANS '$!width'


NEW TABQUESTION
PURP BRWI
RFLAG SING
QTYPE TEXT
TANS '$!brwidth'


NEW TABQUESTION
PURP OWID
RFLAG SING
QTYPE TEXT
TANS '$!brwidth'


$(
NEW TABQUESTION
PURP STYP
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TANS 'CROS'


NEW TABQUESTION
PURP ANGL
TQUES 'ANGL'
RFLAG SING
QTYPE TEXT
TANS '90'


NEW TABQUESTION
PURP RADI
TQUES 'RADI'
RFLAG SING
QTYPE TEXT
TANS '0'


NEW TABQUESTION
PURP ALEN
RFLAG SING
QTYPE TEXT
TANS '506.50mm'


NEW TABQUESTION
PURP LLEN
RFLAG SING
QTYPE TEXT
TANS '506.50mm'


NEW TABQUESTION
PURP SLEN
RFLAG SING
QTYPE TEXT
TANS '506.50mm'


NEW TABQUESTION
PURP SSLE
RFLAG SING
QTYPE TEXT
TANS '506.50mm'
$)

NEW TABQUESTION
PURP HEIG
RFLAG SING
QTYPE TEXT
TANS '$!height'


endmethod

define method .setCTREDUanswer( !stype is string , !width is string , !lwidth is string , !height is string  )


NEW TABQUESTION
PURP TYPE
TQUES 'TYPE'
RFLAG SING
QTYPE TEXT
TANS 'CTREDU'


NEW TABQUESTION
PURP WIDT
TQUES 'TRAYW'
RFLAG SING
QTYPE TEXT
TANS '$!width'


NEW TABQUESTION
PURP LWID
TQUES 'TRAYRW'
RFLAG SING
QTYPE TEXT
TANS '$!lwidth'


NEW TABQUESTION
PURP STYP
TQUES 'CTTYP'
RFLAG SING
QTYPE TEXT
TANS '$!stype'

$(
NEW TABQUESTION
PURP LENG
TQUES 'OLENG'
RFLAG SING
QTYPE TEXT
TANS '500.00mm'
$)

NEW TABQUESTION
PURP HEIG
TQUES 'TRAYH'
RFLAG SING
QTYPE TEXT
TANS '$!height'



endmethod