home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / Raytracing / Raytracer / LW5VT09.LHA / Toaster / Arexx_examples / Lwe / Objected.lwm < prev    next >
Encoding:
Text File  |  1996-06-10  |  35.2 KB  |  1,310 lines

  1.  /*************************************************************\
  2. /                                                               \                              
  3.             ObjectEdit V1.0, by Reinhard Grams © 1994
  4. \                                                               / 
  5.  \*************************************************************/
  6.  
  7. macro_name="ObjectEdit V1.0"
  8. macro_path="/OBED"
  9.  
  10. /**************************************************************/
  11. call InitVariables()
  12. /**************************************************************/
  13.  
  14. help.GERMAN.1="Dieses Makro dient zum Bearbeiten von ObjektSequenzen, die mit"
  15. help.GERMAN.2="den vom Modeler bekannten Funktionen editiert werden. Sie können"
  16. help.GERMAN.3="den Flex-Bereich auf Automatik schalten, oder den Bereich in den"
  17. help.GERMAN.4="Eingabefeldern Flex Start,End individuell einstellen. Den Flex-"
  18. help.GERMAN.5="Verlauf wählen Sie mit dem Schalter für die Ease Direction aus"
  19. help.GERMAN.6="Ebenso legen Sie in dem ersten Requester den Deform Radius für"
  20. help.GERMAN.7="alle Achsen fest. Die meisten Funktionen haben ein Wirkungszen-"
  21. help.GERMAN.8="trum, die Position dieses Zentrums legen Sie in den Eingabefel-"
  22. help.GERMAN.9="dern Center fest.                                               "
  23. help.GERMAN.10="[PAGE]"
  24. help.GERMAN.11="In den nächsten beiden Requestern wählen Sie die Editierfunktio-"
  25. help.GERMAN.12="nen; es können beliebig viele kombiniert werden. Für jede ange-"
  26. help.GERMAN.13="wählte Funktion erscheint ein zusätzlicher Requester, in dem Sie"
  27. help.GERMAN.14="die jeweiligen Parameter eingeben können. Die Parameter ent-"
  28. help.GERMAN.15="sprechen denen der Modelerfunktionen, wenn Sie dort die numeri-"
  29. help.GERMAN.16="sche Eingabe wählen.                                            "
  30. help.GERMAN.17="[PAGE]"
  31. help.GERMAN.18="Die Objekte können in das Quellverzeichnis zurückgeschrieben"
  32. help.GERMAN.19="werden, Sie können diese aber auch kopieren, indem Sie ein ande-"
  33. help.GERMAN.20="res Zielverzeichnis wählen. Dadurch bleiben die Originale erhal-"
  34. help.GERMAN.21="ten und oft auch Ihre gute Laune.                               "
  35. help.GERMAN.22="[END]"
  36.  
  37. help.ENGLISH.1="This macro is intended for working on sequences of objects,"
  38. help.ENGLISH.2="which are edited with the functions you know from the modeler."
  39. help.ENGLISH.3="You can set the flex-area to automatic or adjust the area in the"
  40. help.ENGLISH.4="input-fields ""Flex Start"" and ""End"" individualy. The flex-"
  41. help.ENGLISH.5="course is selected with the switch for Ease Direction. The same"
  42. help.ENGLISH.6="way you specify the Deform Radius for all axis in the first re-"
  43. help.ENGLISH.7="quester. Most of the functions have a effect-center, you can"
  44. help.ENGLISH.8="specify its position with the inputfield ""Center""."
  45. help.ENGLISH.9="[PAGE]"
  46. help.ENGLISH.10="In the next both requesters the edit-functions are choosen; you"
  47. help.ENGLISH.11="can combine as many as you like. For each selected function a"
  48. help.ENGLISH.12="new requester pops up where you can enter its parameters. The"
  49. help.ENGLISH.13="parameters are equal to the modelerfunctions, if you select nu-"
  50. help.ENGLISH.14="merical input there."
  51. help.ENGLISH.15="[PAGE]"
  52. help.ENGLISH.16="The objects can be written back into the source drawer, but you"
  53. help.ENGLISH.17="can also specify an other destination drawer. In that case the"
  54. help.ENGLISH.18="original objects are not overwritten and the operation can be"
  55. help.ENGLISH.19="redone."
  56. help.ENGLISH.20="[END]"
  57.  
  58. /**************************************************************/
  59.  
  60.     do_autoflex=1
  61.  
  62.     do_move=0
  63.     do_scale=0
  64.     do_align=0
  65.     do_flip=0
  66.     do_unify=0
  67.     do_merge=0
  68.     do_rotate=0
  69.     do_magnet=0
  70.     do_twist=0
  71.  
  72.     do_vortex=0
  73.     do_shear=0
  74.     do_taper=0
  75.     do_pole=0
  76.     do_bend=0
  77.     do_jitter=0
  78.     do_smooth=0
  79.     do_quantize=0
  80.     do_surface=0
  81.  
  82.     flex_x1=-10
  83.     flex_x2=10
  84.     flex_y1=-10
  85.     flex_y2=10
  86.     flex_z1=-10
  87.     flex_z2=10
  88.  
  89.     deform_x=10
  90.     deform_y=10
  91.     deform_z=10
  92.  
  93.     center_x=0
  94.     center_y=0
  95.     center_z=0
  96.  
  97.     move_x=0
  98.     move_y=0
  99.     move_z=0
  100.  
  101.     shear_x=0
  102.     shear_y=0
  103.     shear_z=0
  104.  
  105.     magnet_x=0
  106.     magnet_y=0
  107.     magnet_z=0
  108.  
  109.     rotate_x=0
  110.     rotate_y=0
  111.     rotate_z=0
  112.  
  113.     twist_x=0
  114.     twist_y=0
  115.     twist_z=0
  116.  
  117.     vortex_x=0
  118.     vortex_y=0
  119.     vortex_z=0
  120.  
  121.     size_x=1
  122.     size_y=1
  123.     size_z=1
  124.  
  125.     taper_x=0
  126.     taper_y=0
  127.     taper_z=0
  128.  
  129.     pole_x=0
  130.     pole_y=0
  131.     pole_z=0
  132.  
  133.     quantize_x=1
  134.     quantize_y=1
  135.     quantize_z=1
  136.  
  137.     jitter_x=0.1
  138.     jitter_y=0.1
  139.     jitter_z=0.1
  140.  
  141.     bend_angle=0
  142.     bend_direction=0
  143.     smooth_iterations=1
  144.     smooth_strength=1
  145.     surface_name="Surface"
  146.  
  147.     GAUSSIAN=1
  148.     UNIFORM=2
  149.     NORMAL=3
  150.     RADIAL=4
  151.  
  152.     jitter.1="GAUSSIAN"
  153.     jitter.2="UNIFORM"
  154.     jitter.3="NORMAL"
  155.     jitter.4="RADIAL"
  156.     jitter_type=GAUSSIAN
  157.  
  158.     EASE_IN=1
  159.     EASE_OUT=2
  160.  
  161.     ease.1="i"
  162.     ease.2="o"
  163.     ease_direction=EASE_IN
  164.  
  165. /**************************************************************/
  166.  
  167.     call OpenLibs()
  168.     call GlobalsRequester(macro_name)
  169.     call HelpRequester(macro_name,"help",language)
  170.  
  171.     call LoadConfig()
  172.     call Requester1()
  173.     call Requester2()
  174.     call Requester3()
  175.  
  176.     if (do_move) then call MoveRequester()
  177.     if (do_scale) then call ScaleRequester()
  178.     if (do_rotate) then call RotateRequester()
  179.     if (do_magnet) then call MagnetRequester()
  180.     if (do_twist) then call TwistRequester()
  181.     if (do_vortex) then call VortexRequester()
  182.     if (do_shear) then call ShearRequester()
  183.     if (do_taper) then call TaperRequester()
  184.     if (do_pole) then call PoleRequester()
  185.     if (do_bend) then call BendRequester()
  186.     if (do_jitter) then call JitterRequester()
  187.     if (do_smooth) then call SmoothRequester()
  188.     if (do_quantize) then call QuantizeRequester()
  189.     if (do_surface) then call SurfaceRequester()
  190.  
  191.     call SaveConfig()
  192.  
  193.     selected=SelectSequence("OBJECTS","3D:Objects",1,10000,selection1,selection2,selectionl,ST_SEQUENCE)
  194.     if (selected=0) then call CleanExit()
  195.  
  196.     out_path=SelectFile(messages.language.OUTPUT_MESS,"3D:Objects","",selection3,"DRAWER")
  197.     if (out_path="") then call CleanExit()
  198.  
  199.     call DoEdit()
  200.  
  201.     call CloseLibs()
  202.     exit 0
  203.  
  204. /**************************************************************/
  205.  
  206. Requester1:
  207.  
  208.     call req_begin(macro_name)
  209.  
  210.     id_au=req_addcontrol("Use AutoFlex", 'b')
  211.     id_ea=req_addcontrol("Ease", 'ch',"In Out")
  212.     id_f1=req_addcontrol("Flex X Start,End", 'v')
  213.     id_f2=req_addcontrol("Flex Y Start,End", 'v')
  214.     id_f3=req_addcontrol("Flex Z Start,End", 'v')
  215.     id_de=req_addcontrol("Deform Radius X,Y,Z", 'v',1)
  216.     id_ce=req_addcontrol("Center X,Y,Z", 'v',1)
  217.  
  218.     call req_setval(id_au, do_autoflex)
  219.     call req_setval(id_ea, ease_direction)
  220.     call req_setval(id_f1, flex_x1 flex_x2 0)
  221.     call req_setval(id_f2, flex_y1 flex_y2 0)
  222.     call req_setval(id_f3, flex_z1 flex_z2 0)
  223.     call req_setval(id_de, deform_x deform_y deform_z)
  224.     call req_setval(id_ce, center_x center_y center_z)
  225.     
  226.     if (~req_post()) then call CleanExit()
  227.  
  228.     do_autoflex=req_getval(id_au)
  229.     ease_direction=req_getval(id_ea)
  230.     parse value req_getval(id_f1) with flex_x1 flex_x2 .
  231.     parse value req_getval(id_f2) with flex_y1 flex_y2 .
  232.     parse value req_getval(id_f3) with flex_z1 flex_z2 .
  233.     parse value req_getval(id_de) with deform_x deform_y deform_z .
  234.     parse value req_getval(id_ce) with center_x center_y center_z .
  235.  
  236.     call req_end()
  237.     
  238.     return 1
  239.  
  240. /**************************************************************/
  241.  
  242. Requester2:
  243.  
  244.     call req_begin(macro_name)
  245.  
  246.     id_a1=req_addcontrol("Move",'b')
  247.     id_a2=req_addcontrol("Shear",'b')
  248.     id_a3=req_addcontrol("Magnet",'b')
  249.     id_a4=req_addcontrol("Rotate",'b')
  250.     id_a5=req_addcontrol("Twist",'b')
  251.     id_a6=req_addcontrol("Vortex",'b')
  252.     id_a7=req_addcontrol("Scale",'b')
  253.     id_a8=req_addcontrol("Taper",'b')
  254.     id_a9=req_addcontrol("Pole",'b')
  255.  
  256.     call req_setval(id_a1, do_move)
  257.     call req_setval(id_a2, do_shear)
  258.     call req_setval(id_a3, do_magnet)
  259.     call req_setval(id_a4, do_rotate)
  260.     call req_setval(id_a5, do_twist)
  261.     call req_setval(id_a6, do_vortex)
  262.     call req_setval(id_a7, do_scale)
  263.     call req_setval(id_a8, do_taper)
  264.     call req_setval(id_a9, do_pole)
  265.     
  266.     if (~req_post()) then call CleanExit()
  267.  
  268.     do_move=req_getval(id_a1)
  269.     do_shear=req_getval(id_a2)
  270.     do_magnet=req_getval(id_a3)
  271.     do_rotate=req_getval(id_a4)
  272.     do_twist=req_getval(id_a5)
  273.     do_vortex=req_getval(id_a6)
  274.     do_scale=req_getval(id_a7)
  275.     do_taper=req_getval(id_a8)
  276.     do_pole=req_getval(id_a9)
  277.  
  278.     call req_end()
  279.  
  280.     return 1
  281.  
  282. /**************************************************************/
  283.  
  284. Requester3:
  285.  
  286.     call req_begin(macro_name)
  287.  
  288.     id_a1=req_addcontrol("Bend",'b')
  289.     id_a2=req_addcontrol("Jitter",'b')
  290.     id_a3=req_addcontrol("Smooth",'b')
  291.     id_a4=req_addcontrol("Quantize",'b')
  292.     id_a5=req_addcontrol("Merge",'b')
  293.     id_a6=req_addcontrol("Align",'b')
  294.     id_a7=req_addcontrol("Flip",'b')
  295.     id_a8=req_addcontrol("Unify",'b')
  296.     id_a9=req_addcontrol("Surface",'b')
  297.  
  298.     call req_setval(id_a1, do_bend)
  299.     call req_setval(id_a2, do_jitter)
  300.     call req_setval(id_a3, do_smooth)
  301.     call req_setval(id_a4, do_quantize)
  302.     call req_setval(id_a5, do_merge)
  303.     call req_setval(id_a6, do_align)
  304.     call req_setval(id_a7, do_flip)
  305.     call req_setval(id_a8, do_unify)
  306.     call req_setval(id_a9, do_surface)
  307.     
  308.     if (~req_post()) then call CleanExit()
  309.  
  310.     do_bend=req_getval(id_a1)
  311.     do_jitter=req_getval(id_a2)
  312.     do_smooth=req_getval(id_a3)
  313.     do_quantize=req_getval(id_a4)
  314.     do_merge=req_getval(id_a5)
  315.     do_align=req_getval(id_a6)
  316.     do_flip=req_getval(id_a7)
  317.     do_unify=req_getval(id_a8)
  318.     do_surface=req_getval(id_a9)
  319.  
  320.     call req_end()
  321.  
  322.     return 1
  323.  
  324. /**************************************************************/
  325.  
  326. MoveRequester:
  327.  
  328.     call req_begin(macro_name)
  329.     id_a1=req_addcontrol("Move Distance XYZ",'v',1)
  330.     call req_setval(id_a1, move_x move_y move_z)
  331.     if (~req_post()) then call CleanExit()
  332.     parse value req_getval(id_a1) with move_x move_y move_z .
  333.     call req_end()
  334.     return 1
  335.  
  336. /**************************************************************/
  337.  
  338. ScaleRequester:
  339.  
  340.     call req_begin(macro_name)
  341.     id_a1=req_addcontrol("Scale Factor XYZ",'v')
  342.     call req_setval(id_a1, size_x size_y size_z)
  343.     if (~req_post()) then call CleanExit()
  344.     parse value req_getval(id_a1) with size_x size_y size_z .
  345.     call req_end()
  346.     return 1
  347.  
  348. /**************************************************************/
  349.  
  350. RotateRequester:
  351.  
  352.     call req_begin(macro_name)
  353.     id_a1=req_addcontrol("Rotate XYZ °",'v')
  354.     call req_setval(id_a1, rotate_x rotate_y rotate_z)
  355.     if (~req_post()) then call CleanExit()
  356.     parse value req_getval(id_a1) with rotate_x rotate_y rotate_z .
  357.     call req_end()
  358.     return 1
  359.  
  360. /**************************************************************/
  361.  
  362. MagnetRequester:
  363.  
  364.     call req_begin(macro_name)
  365.     id_a1=req_addcontrol("Magnet Offset XYZ",'v',1)
  366.     call req_setval(id_a1, magnet_x magnet_y magnet_z)
  367.     if (~req_post()) then call CleanExit()
  368.     parse value req_getval(id_a1) with magnet_x magnet_y magnet_z .
  369.     call req_end()
  370.     return 1
  371.  
  372. /**************************************************************/
  373.  
  374. ShearRequester:
  375.  
  376.     call req_begin(macro_name)
  377.     id_a1=req_addcontrol("Shear Offset XYZ",'v',1)
  378.     call req_setval(id_a1, shear_x shear_y shear_z)
  379.     if (~req_post()) then call CleanExit()
  380.     parse value req_getval(id_a1) with shear_x shear_y shear_z .
  381.     call req_end()
  382.     return 1
  383.  
  384. /**************************************************************/
  385.  
  386. TwistRequester:
  387.  
  388.     call req_begin(macro_name)
  389.     id_a1=req_addcontrol("Twist XYZ °",'v')
  390.     call req_setval(id_a1, twist_x twist_y twist_z)
  391.     if (~req_post()) then call CleanExit()
  392.     parse value req_getval(id_a1) with twist_x twist_y twist_z .
  393.     call req_end()
  394.     return 1
  395.  
  396. /**************************************************************/
  397.  
  398. VortexRequester:
  399.  
  400.     call req_begin(macro_name)
  401.     id_a1=req_addcontrol("Vortex XYZ °",'v')
  402.     call req_setval(id_a1, vortex_x vortex_y vortex_z)
  403.     if (~req_post()) then call CleanExit()
  404.     parse value req_getval(id_a1) with vortex_x vortex_y vortex_z .
  405.     call req_end()
  406.     return 1
  407.  
  408. /**************************************************************/
  409.  
  410. TaperRequester:
  411.  
  412.     call req_begin(macro_name)
  413.     id_a1=req_addcontrol("Taper Factor XYZ",'v')
  414.     call req_setval(id_a1, taper_x taper_y taper_z)
  415.     if (~req_post()) then call CleanExit()
  416.     parse value req_getval(id_a1) with taper_x taper_y taper_z .
  417.     call req_end()
  418.     return 1
  419.  
  420. /**************************************************************/
  421.  
  422. PoleRequester:
  423.  
  424.     call req_begin(macro_name)
  425.     id_a1=req_addcontrol("Pole Factor XYZ",'v')
  426.     call req_setval(id_a1, pole_x pole_y pole_z)
  427.     if (~req_post()) then call CleanExit()
  428.     parse value req_getval(id_a1) with pole_x pole_y pole_z .
  429.     call req_end()
  430.     return 1
  431.  
  432. /**************************************************************/
  433.  
  434. BendRequester:
  435.  
  436.     call req_begin(macro_name)
  437.     id_a1=req_addcontrol("Bend Angle °",'n')
  438.     id_a2=req_addcontrol("Bend Direction",'n')
  439.     call req_setval(id_a1, bend_angle)
  440.     call req_setval(id_a2, bend_direction)
  441.     if (~req_post()) then call CleanExit()
  442.     bend_angle=req_getval(id_a1)
  443.     bend_direction=req_getval(id_a2)
  444.     call req_end()
  445.     return 1
  446.  
  447. /**************************************************************/
  448.  
  449. JitterRequester:
  450.  
  451.     call req_begin(macro_name)
  452.     id_a1=req_addcontrol("Jitter Radius",'v',1)
  453.     id_a2=req_addcontrol("Jitter Type",'cv',"Gaussian Uniform Normal Radial")
  454.     call req_setval(id_a1, jitter_x jitter_y jitter_z)
  455.     call req_setval(id_a2, jitter_type)
  456.     if (~req_post()) then call CleanExit()
  457.     parse value req_getval(id_a1) with jitter_x jitter_y jitter_z .
  458.     jitter_type=req_getval(id_a2)
  459.     call req_end()
  460.     return 1
  461.  
  462. /**************************************************************/
  463.  
  464. SmoothRequester:
  465.  
  466.     call req_begin(macro_name)
  467.     id_a1=req_addcontrol("Smooth Iterations",'n')
  468.     id_a2=req_addcontrol("Smooth Strength",'n')
  469.     call req_setval(id_a1, smooth_iterations)
  470.     call req_setval(id_a2, smooth_strength)
  471.     if (~req_post()) then call CleanExit()
  472.     smooth_iterations=req_getval(id_a1)
  473.     smooth_strength=req_getval(id_a2)
  474.     call req_end()
  475.     return 1
  476.  
  477. /**************************************************************/
  478.  
  479. QuantizeRequester:
  480.  
  481.     call req_begin(macro_name)
  482.     id_a1=req_addcontrol("Quantize XYZ",'v',1)
  483.     call req_setval(id_a1, quantize_x quantize_y quantize_z)
  484.     if (~req_post()) then call CleanExit()
  485.     parse value req_getval(id_a1) with quantize_x quantize_y quantize_z .
  486.     call req_end()
  487.     return 1
  488.  
  489. /**************************************************************/
  490.  
  491. SurfaceRequester:
  492.  
  493.     call req_begin(macro_name)
  494.     id_a1=req_addcontrol("Surface",'r')
  495.     call req_setval(id_a1, surface_name)
  496.     if (~req_post()) then call CleanExit()
  497.     surface_name=req_getval(id_a1)
  498.     call req_end()
  499.     return 1
  500.  
  501. /**************************************************************/
  502.  
  503. SaveConfig:
  504.     if (open(state, config, 'W')) then do
  505.         call writeln(state, "CONF")
  506.         call writeln(state, do_autoflex,
  507.             do_move do_shear do_magnet do_rotate do_twist,
  508.             do_vortex do_scale do_taper do_pole,
  509.             do_bend do_jitter do_smooth do_quantize do_merge,
  510.             do_align do_flip do_unify do_surface)
  511.         call writeln(state, ease_direction,
  512.             flex_x1 flex_x2 flex_y1 flex_y2 flex_z1 flex_z2,
  513.             deform_x deform_y deform_z center_x center_y center_z)
  514.         call writeln(state, ,
  515.             move_x move_y move_z shear_x shear_y shear_z,
  516.             magnet_x magnet_y magnet_z rotate_x rotate_y rotate_z,
  517.             twist_x twist_y twist_z vortex_x vortex_y vortex_z,
  518.             size_x size_y size_z taper_x taper_y taper_z,
  519.             pole_x pole_y pole_z quantize_x quantize_y quantize_z,
  520.             bend_angle bend_direction jitter_x jitter_y jitter_z,
  521.             jitter_type    smooth_iterations smooth_strength)
  522.         call writeln(state,surface_name)    
  523.         call close state
  524.     end
  525.     return
  526.  
  527. /**************************************************************/
  528.  
  529. LoadConfig:
  530.  
  531.     if (exists(config)) then do
  532.         if (open(state, config, 'R')) then do
  533.             if (readln(state)="CONF") then do
  534.                 parse value readln(state) with do_autoflex,
  535.                     do_move do_shear do_magnet do_rotate do_twist,
  536.                     do_vortex do_scale do_taper do_pole,
  537.                     do_bend do_jitter do_smooth do_quantize do_merge,
  538.                     do_align do_flip do_unify do_surface .
  539.                 parse value readln(state) with ease_direction,
  540.                     flex_x1 flex_x2 flex_y1 flex_y2 flex_z1 flex_z2,
  541.                     deform_x deform_y deform_z center_x center_y center_z .
  542.                 parse value readln(state) with,
  543.                     move_x move_y move_z shear_x shear_y shear_z,
  544.                     magnet_x magnet_y magnet_z rotate_x rotate_y rotate_z,
  545.                     twist_x twist_y twist_z vortex_x vortex_y vortex_z,
  546.                     size_x size_y size_z taper_x taper_y taper_z,
  547.                     pole_x pole_y pole_z quantize_x quantize_y quantize_z,
  548.                     bend_angle bend_direction jitter_x jitter_y jitter_z,
  549.                     jitter_type smooth_iterations smooth_strength .
  550.                 surface_name=readln(state)
  551.             end
  552.         end
  553.         call close state
  554.     end
  555.     return
  556.  
  557. /**************************************************************/
  558. /**************************************************************/
  559.  
  560. DoEdit:
  561.  
  562.     if (do_autoflex) then do
  563.         call autoflex("X","+",ease.ease_direction)
  564.         call autoflex("Y","+",ease.ease_direction)
  565.         call autoflex("Z","+",ease.ease_direction)
  566.         call autoflex("X","-",ease.ease_direction)
  567.         call autoflex("Y","-",ease.ease_direction)
  568.         call autoflex("Z","-",ease.ease_direction)
  569.     end
  570.     else do
  571.         call fixedflex("X",flex_x1,flex_x2,ease.ease_direction)
  572.         call fixedflex("Y",flex_y1,flex_y2,ease.ease_direction)
  573.         call fixedflex("Z",flex_z1,flex_z2,ease.ease_direction)
  574.     end
  575.  
  576.     call deformregion(deform_x deform_y deform_z,center_x center_y center_z)
  577.  
  578.     do object=1 to selected
  579.         in_name=sequence_name.object
  580.         out_name=LW_ADDFILE(out_path,LW_FILE(in_name))
  581.         call EditObject()
  582.     end
  583.  
  584.     if (verbose) then do
  585.         call notify(1,! trunc(selected) vmes.language.1) 
  586.     end
  587.  
  588.     return
  589.  
  590. /**************************************************************/
  591.  
  592. EditObject:
  593.  
  594.     call cut(); call cut()
  595.  
  596.     call load(in_name)
  597.  
  598.     call sel_mode("USER")
  599.  
  600.     if (do_move) then do 
  601.         call move(move_x move_y move_z)
  602.     end
  603.  
  604.     if (do_shear) then do 
  605.         call shear(shear_x shear_y shear_z)
  606.     end
  607.  
  608.     if (do_magnet) then do
  609.         call magnet(magnet_x magnet_y magnet_z)
  610.     end
  611.  
  612.     if (do_rotate) then do 
  613.         call rotate(rotate_x,"X",center_x center_y center_z)
  614.         call rotate(rotate_y,"Y",center_x center_y center_z)
  615.         call rotate(rotate_z,"Z",center_x center_y center_z)
  616.     end
  617.  
  618.     if (do_twist) then do
  619.         call twist(twist_x,"X",center_x center_y center_z)
  620.         call twist(twist_y,"Y",center_x center_y center_z)
  621.         call twist(twist_z,"Z",center_x center_y center_z)
  622.     end
  623.  
  624.     if (do_vortex) then do
  625.         call vortex(vortex_x,"X",center_x center_y center_z)
  626.         call vortex(vortex_y,"Y",center_x center_y center_z)
  627.         call vortex(vortex_z,"Z",center_x center_y center_z)
  628.     end
  629.  
  630.     if (do_scale) then do 
  631.         call scale(size_x size_y size_z,center_x center_y center_z)
  632.     end    
  633.  
  634.     if (do_taper) then do 
  635.         call taper(taper_x taper_y taper_z,center_x center_y center_z)
  636.     end    
  637.  
  638.     if (do_pole) then do 
  639.         call pole(pole_x pole_y pole_z,center_x center_y center_z)
  640.     end    
  641.  
  642.     if (do_bend) then do
  643.         call bend(bend_angle,bend_direction,center_x center_y center_z)
  644.     end
  645.  
  646.     if (do_jitter) then do
  647.         call jitter(jitter_radius,jitter.jitter_type,center_x center_y center_z)
  648.     end
  649.  
  650.     if (do_smooth) then do
  651.         call smooth(smooth_iterations,smooth_strength)
  652.     end
  653.  
  654.     if (do_quantize) then do
  655.         call quantize(quantize_x quantize_y quantize_z)
  656.     end
  657.  
  658.     if (do_merge) then do
  659.         call mergepoints()
  660.     end
  661.  
  662.     if (do_align) then do 
  663.         call alignpols()
  664.     end
  665.  
  666.     if (do_flip) then do
  667.         call flip()
  668.     end
  669.  
  670.     if (do_unify) then do
  671.         call unifypols()
  672.     end
  673.  
  674.     if (do_surface) then do
  675.         call changesurface(surface_name)
  676.     end
  677.  
  678.     call save(out_name)
  679.  
  680.     return
  681.  
  682. /**************************************************************/
  683. /**************************************************************/
  684.  
  685. ErrorMessage: parse arg status, add_string, user_cancel
  686.  
  687.     continue=0
  688.     if (status~="") then do
  689.         if (user_cancel~="") then user_sel=2; else user_sel=1
  690.         if (verify(status,"0123456789")=0) then do
  691.             if (status>0 & status<INTERNAL_ERR) then do
  692.                 if (add_string~="") then do
  693.                     continue=notify(user_sel,! errors.language.status"!",add_string)
  694.                 end
  695.                 else do
  696.                     continue=notify(user_sel,! errors.language.status"!")
  697.                 end
  698.             end
  699.             else do
  700.                 continue=notify(1,! errors.language.INTERNAL_ERR"!")
  701.             end
  702.         end
  703.         else do
  704.             if (add_string~="") then continue=notify(user_sel,! status,add_string)
  705.             else continue=notify(user_sel,! status)
  706.         end            
  707.     end
  708.     return continue
  709.  
  710. /**************************************************************/
  711.  
  712. CleanExit: parse arg status, add_string, user_cancel
  713.  
  714.     call end_all()
  715.     call ErrorMessage(status, add_string, user_cancel)
  716.     call CloseLibs()
  717.     exit 0
  718.  
  719. /**************************************************************/
  720.  
  721. OpenLibs:
  722.  
  723.     if (~show('L',rexxlib)) then do
  724.         if ~addlib(rexxlib,0,-30,0) then do
  725.             call ErrorMessage(OPEN_LIB_ERR,rexxlib)
  726.             exit 10
  727.         end
  728.         if (~show('L',rexxlib)) then do
  729.             call ErrorMessage(OPEN_LIB_ERR,rexxlib)
  730.             exit 10
  731.         end
  732.     end
  733.     if (~show('L',mathlib)) then do
  734.         if ~addlib(mathlib,0,-30,0) then do
  735.             call ErrorMessage(OPEN_LIB_ERR,mathlib)
  736.             exit 10
  737.         end
  738.         if (~show('L',mathlib)) then do
  739.             call ErrorMessage(OPEN_LIB_ERR,mathlib)
  740.             exit 10
  741.         end
  742.     end
  743.     if (~show('L',supplib)) then do
  744.         if ~addlib(supplib,0,-30,0) then do
  745.             call ErrorMessage(OPEN_LIB_ERR,supplib)
  746.             exit 10
  747.         end
  748.         if (~show('L',supplib)) then do
  749.             call ErrorMessage(OPEN_LIB_ERR,mathlib)
  750.             exit 10
  751.         end
  752.     end
  753.     port=addlib("LWModelerARexx.port",0)
  754.     return 
  755.  
  756. /**************************************************************/
  757.  
  758. CloseLibs:
  759.  
  760.     if (port~="") then call remlib("LWModelerARexx.port")
  761.     return
  762.  
  763. /**************************************************************/
  764.  
  765. SelectFile: PROCEDURE EXPOSE selected_file selected_drawer
  766.     parse arg title, drawer_name, file_name, config_file, mode
  767.  
  768.     if (exists(config_file)) then do
  769.         if (open(state,config_file,'R')) then do
  770.             if (readln(state)="FSEL") then do
  771.                 drawer_name=readln(state)
  772.                 file_name=readln(state)
  773.             end
  774.             call close state
  775.         end
  776.     end
  777.     if (mode=DRAWER) then choice=getfilename(title,drawer_name,"")
  778.     else choice=getfilename(title,drawer_name,file_name)
  779.     if (choice="(none)") then return ""
  780.     selected_drawer=LW_Drawer(choice)
  781.     selected_file=LW_File(choice)
  782.     if (mode~="DRAWER") then do
  783.         if (selected_file="") then return ""
  784.     end        
  785.     if (open(state,config_file,'W')) then do
  786.         call writeln(state, "FSEL")
  787.         call writeln(state, selected_drawer)
  788.         call writeln(state, selected_file)
  789.         call close(state)
  790.     end
  791.     select 
  792.         when (mode="DRAWER") then choice=selected_drawer
  793.         when (mode="FILE") then choice=selected_file
  794.         otherwise nop
  795.     end
  796.  
  797.     return choice
  798.  
  799. /**************************************************************/
  800.  
  801. HelpRequester: parse arg title, text_array, language
  802.  
  803.     select 
  804.         when (help_type=HELP_NEVER) then return
  805.         when (help_type=HELP_FIRST) then do    
  806.             if (exists(config)) then return
  807.         end
  808.         otherwise nop
  809.     end    
  810.     if (~TextRequester(title,text_array,language)) then do
  811.         call GlobalsRequester(title,1)
  812.     end
  813.     return 
  814.  
  815. /**************************************************************/
  816.  
  817. TextRequester: parse arg title, text_array, language
  818.  
  819.     hpages=1
  820.     hline=1
  821.     do until (str="[END]")
  822.         interpret("str="text_array"."language"."hline)
  823.         if (str="[PAGE]") then hpages=hpages+1
  824.         hline=hline+1
  825.     end
  826.     call req_begin(title||pmes.language.1 "1" pmes.language.2 hpages) 
  827.     hline=1; continue=1; hpage=1
  828.     do while (continue)
  829.         interpret("htext="text_array"."language"."hline)
  830.         select
  831.             when (htext="[PAGE]") then do
  832.                 go_on=req_post()
  833.                 call req_end()
  834.                 if (go_on) then do
  835.                     hpage=hpage+1
  836.                     call req_begin(title||pmes.language.1 hpage pmes.language.2 hpages) 
  837.                 end
  838.                 else continue=0
  839.             end
  840.             when (htext="[END]") then do
  841.                 go_on=req_post()
  842.                 call req_end()
  843.                 continue=0
  844.             end
  845.             otherwise do
  846.                 id.hline=req_addcontrol("",'t',htext)
  847.             end    
  848.         end
  849.         hline=hline+1
  850.     end
  851.     return go_on
  852.  
  853. /**************************************************************/
  854.  
  855. SaveSettings: PROCEDURE EXPOSE ENV_ERR envpath globals language,
  856.     help_type verbose extension_digits
  857.  
  858.     if (~exists(envpath)) then do
  859.         address command "makedir" envpath
  860.         if (~exists(envpath)) then call CleanExit(ENV_ERR)
  861.     end
  862.     ok=0
  863.     if (open(state, globals, 'W')) then do
  864.         call writeln(state, "GLBS")
  865.         call writeln(state, language help_type verbose extension_digits)
  866.         call close(state)
  867.         ok=1
  868.     end
  869.     return ok
  870.  
  871. /**************************************************************/
  872.  
  873. LoadSettings: PROCEDURE EXPOSE ENV_ERR envpath globals language,
  874.     help_type verbose extension_digits
  875.  
  876.     if (~exists(envpath)) then do
  877.         address command "makedir" envpath
  878.         if (~exists(envpath)) then call CleanExit(ENV_ERR)
  879.     end
  880.     ok=0
  881.     if (exists(globals)) then do
  882.         if (open(state, globals, 'R')) then do
  883.             if (readln(state)="GLBS") then do
  884.                    parse value readln(state) with language help_type,
  885.                     verbose extension_digits .
  886.                 ok=1
  887.             end
  888.             call close(state)
  889.         end
  890.     end
  891.     return ok
  892.  
  893. /**************************************************************/
  894.  
  895. GlobalsRequester: PROCEDURE EXPOSE ENV_ERR envpath globals language,
  896.     help_type verbose extension_digits
  897.     parse arg title, force
  898.  
  899.     loaded=LoadSettings()
  900.     if (force="") then do
  901.         if (loaded) then return
  902.     end
  903.     call req_begin(title": Globals")
  904.     id_la=req_addcontrol("Language", 'ch',"English German")
  905.     id_he=req_addcontrol("Help", 'ch',"First Always Never")
  906.     id_ve=req_addcontrol("Verbose", 'b')
  907.     id_ex=req_addcontrol("Ext. Digits", 'n')
  908.     call req_setval(id_la, language)
  909.     call req_setval(id_he, help_type)
  910.     call req_setval(id_ve, verbose)
  911.     call req_setval(id_ex, extension_digits)
  912.     if (~req_post()) then do; call req_end(); return 0; end
  913.     language=req_getval(id_la)
  914.     help_type=req_getval(id_he)
  915.     verbose=req_getval(id_ve)
  916.     extension_digits=req_getval(id_ex)
  917.     call req_end()
  918.     if (extension_digits<2) then extension_digits=2
  919.     call SaveSettings()
  920.     return 
  921.  
  922. /**************************************************************/
  923.  
  924. GetExtension: PROCEDURE; parse arg exname
  925.  
  926.     l=length(exname)
  927.     s=verify(reverse(exname),"0123456789")
  928.     if (s>l) then return exname
  929.     if (s<2) then return ""
  930.     return substr(exname,length(exname)+2-s)
  931.     
  932. /**************************************************************/
  933.  
  934. GetBaseName: PROCEDURE; parse arg exname
  935.  
  936.     b=length(exname)-length(GetExtension(exname))
  937.     return substr(exname,1,b)
  938.     
  939. /**************************************************************/
  940.  
  941. GetExtensionDigits: PROCEDURE; parse arg exname
  942.  
  943.     return length(GetExtension(exname))
  944.  
  945. /**************************************************************/
  946.  
  947. MakeExtension: PROCEDURE; parse arg exname, ext_digits
  948.  
  949.     return right(exname,ext_digits,'0')
  950.  
  951. /**************************************************************/
  952.  
  953. SaveSelection: PROCEDURE EXPOSE sequence_name.
  954.     parse arg selected, select_file, select_type
  955.  
  956.     ok=0
  957.     if (open(state, select_file, 'W')) then do
  958.         call writeln(state, "SSEL")
  959.         call writeln(state, select_type)
  960.         call writeln(state, selected)
  961.         c=1
  962.         do while (c<=selected)
  963.             call writeln(state, sequence_name.c); c=c+1
  964.         end
  965.         call close(state)
  966.         ok=1
  967.     end
  968.     return ok
  969.  
  970. /**************************************************************/
  971.  
  972. LoadSelection: PROCEDURE EXPOSE select_type sequence_name.
  973.     parse arg select_file
  974.  
  975.     selected=0
  976.     if (exists(select_file)) then do
  977.         if (open(state, select_file, 'R')) then do
  978.             if (readln(state)="SSEL") then do
  979.                    select_type=readln(state)
  980.                    selected=readln(state)
  981.                 c=1
  982.                 do while (c<=selected)
  983.                     sequence_name.c=readln(state); c=c+1
  984.                 end    
  985.             end
  986.             call close(state)
  987.         end
  988.     end
  989.     return selected
  990.  
  991. /**************************************************************/
  992.  
  993. SelectSequence: PROCEDURE EXPOSE language sequence_name.,
  994.     EXTENSION_ERR SEQUENCE_ERR FILE_ERR READ_ERR GERMAN ENGLISH errors.,        
  995.     ST_SEQUENCE ST_SPECIFY ST_LIST ST_DIRECTORY ST_READ ST_REPEAT
  996.     parse arg title, default_drawer, minimum_files, maximum_files,,
  997.     selection1, selection2, select_file, select_type
  998.  
  999.     mes.ENGLISH.1="Select First"    
  1000.     mes.ENGLISH.2="Select Last"
  1001.     mes.ENGLISH.3="Select Next (or CANCEL)"
  1002.     mes.ENGLISH.4="Select List"
  1003.     mes.ENGLISH.5="Select Directory"
  1004.     mes.ENGLISH.6="Need at least"
  1005.     mes.ENGLISH.7="File(s)"
  1006.     mes.ENGLISH.8="Maximum of"
  1007.     mes.ENGLISH.9="Files selected"
  1008.  
  1009.     mes.GERMAN.1="Wählen Sie die erste Datei"    
  1010.     mes.GERMAN.2="Wählen Sie die letzte Datei"    
  1011.     mes.GERMAN.3="Nächste Datei (oder CANCEL)"    
  1012.     mes.GERMAN.4="Wählen Sie die Liste"
  1013.     mes.GERMAN.5="Wählen Sie das Verzeichnis"
  1014.     mes.GERMAN.6="Wählen Sie bitte mindestens"
  1015.     mes.GERMAN.7="Datei(en)"
  1016.     mes.GERMAN.8="Bitte nur maximal"
  1017.     mes.GERMAN.9="Datei(en) ausgewählt"
  1018.  
  1019.     old_selected=LoadSelection(select_file)
  1020.     select_type=TypeRequester(title,select_type,old_selected)
  1021.     if (select_type=0) then return 0
  1022.     if (title~="") then title=title": "
  1023.     seq_files=0
  1024.  
  1025.     select
  1026.         when (select_type=ST_SEQUENCE) then do
  1027.             name1=SelectFile(title||mes.language.1,default_drawer,"",selection1)
  1028.             if (name1="") then return 0            
  1029.             name2=SelectFile(title||mes.language.2,selected_drawer,"",selection2)
  1030.             if (name2="") then return 0
  1031.  
  1032.             start_sequence=GetExtension(name1)
  1033.             end_sequence=GetExtension(name2)
  1034.             if (start_sequence="" | end_sequence="") then do
  1035.                 call CleanExit(EXTENSION_ERR)
  1036.             end
  1037.             if (start_sequence>end_sequence) then do
  1038.                 temp=start_sequence
  1039.                 start_sequence=end_sequence
  1040.                 end_sequence=temp
  1041.             end
  1042.             base_name=GetBaseName(name1)            
  1043.             extension_digits=GetExtensionDigits(name1)
  1044.             if (upper(base_name)~=upper(GetBaseName(name2))) then do
  1045.                 call CleanExit(SEQUENCE_ERR)
  1046.             end
  1047.             if (extension_digits~=GetExtensionDigits(name2)) then do
  1048.                 extension_digits=0
  1049.             end
  1050.             do o=start_sequence to end_sequence
  1051.                 seq_files=seq_files+1
  1052.                 sequence_name.seq_files=base_name||MakeExtension(o,extension_digits)
  1053.             end
  1054.         end
  1055.  
  1056.         when (select_type=ST_SPECIFY) then do
  1057.  
  1058.             done=0
  1059.             do until (done)
  1060.                 name=SelectFile(title||mes.language.3,default_drawer,"",selection1)
  1061.                 if (name="") then do
  1062.                     if (seq_files=0) then return 0
  1063.                     else done=1
  1064.                 end
  1065.                 if (~done) then do    
  1066.                     seq_files=seq_files+1
  1067.                     sequence_name.seq_files=name
  1068.                 end
  1069.             end
  1070.         end
  1071.  
  1072.         when (select_type=ST_LIST) then do
  1073.  
  1074.             name=SelectFile(title||mes.language.4,"RAM:","",selection1)
  1075.             if (name="") then return 0
  1076.             if (~exists(name)) then call CleanExit(FILE_ERR)
  1077.             if (~open(state,name,'R')) then call CleanExit(READ_ERR)
  1078.             do until (name="")
  1079.                 name=readln(state)
  1080.                 if (name~="") then do
  1081.                     seq_files=seq_files+1
  1082.                     sequence_name.seq_files=name
  1083.                 end
  1084.             end
  1085.             call close(state)
  1086.         end
  1087.  
  1088.         when (select_type=ST_DIRECTORY) then do
  1089.  
  1090.             drawer=SelectFile(title||mes.language.5,default_drawer,"",selection1,"DRAWER")
  1091.             if (drawer="") then return 0
  1092.             list=DeleteInfo(showdir(drawer,'F'))
  1093.             seq_files=words(list)
  1094.             do sequence=1 to seq_files
  1095.                 name=LW_AddFile(drawer,word(list,sequence))
  1096.                 sequence_name.sequence=name
  1097.             end
  1098.         end
  1099.  
  1100.         when (select_type=ST_READ) then do
  1101.  
  1102.             name1=SelectFile(title||mes.language.1,default_drawer,"",selection1)
  1103.             if (name1="") then return 0            
  1104.             name2=SelectFile(title||mes.language.2,selected_drawer,"",selection2)
  1105.             if (name2="") then return 0
  1106.  
  1107.             drawer=LW_DRAWER(name1)
  1108.             list=DeleteInfo(showdir(drawer,'F'))
  1109.             list=LW_SortList(list,words(list))
  1110.             files=words(list)
  1111.             do_add=0
  1112.             do sequence=1 to files
  1113.                 name=LW_AddFile(drawer,word(list,sequence)) 
  1114.                 if (name=name1) then do_add=1
  1115.                 if (do_add) then do
  1116.                     seq_files=seq_files+1
  1117.                     sequence_name.seq_files=name
  1118.                 end
  1119.                 if (name=name2) then leave
  1120.             end
  1121.         end
  1122.  
  1123.         when (select_type=ST_REPEAT) then do
  1124.             seq_files=old_selected
  1125.         end
  1126.     end
  1127.  
  1128.     if (seq_files<minimum_files) then do
  1129.         call notify(1,! mes.language.6 minimum_files mes.language.7); return 0
  1130.     end
  1131.     if (seq_files>maximum_files) then do
  1132.         call notify(1,! mes.language.8 maximum_files mes.language.7); return 0
  1133.     end
  1134.     if (~notify(2,! seq_files mes.language.9)) then return 0
  1135.  
  1136.     SaveSelection(seq_files,select_file,select_type)
  1137.     return seq_files
  1138.     
  1139. /**************************************************************/
  1140.  
  1141. DeleteInfo: parse arg flist
  1142.  
  1143.     elist=""
  1144.     if (flist~="") then do
  1145.         do i=1 to words(flist)
  1146.             w=word(flist,i)
  1147.             if (pos(".info",w,length(w)-5)=0) then elist=elist w
  1148.         end
  1149.     end
  1150.     return elist
  1151.  
  1152. /**************************************************************/
  1153.  
  1154. TypeRequester: PROCEDURE EXPOSE language ENGLISH GERMAN
  1155.     parse arg title, select_type, old_selected
  1156.  
  1157.     mes.ENGLISH.1=": Selection Type"
  1158.     mes.ENGLISH.2="Type of File Selection"
  1159.     mes.GERMAN.1=": Art der Auswahl"
  1160.     mes.GERMAN.2="Art der Dateiauswahl"
  1161.  
  1162.     if (title~="") then tstring=title||mes.language.1
  1163.     else tstring=mes.language.2
  1164.     cstring="Sequence Specify List Directory AlphaSort"
  1165.     if (old_selected>0) then cstring=cstring "Repeat"
  1166.     return VariableChoice(tstring,"TYPE",cstring,words(cstring),select_type)
  1167.  
  1168. /**************************************************************/
  1169.  
  1170. VariableChoice: PROCEDURE EXPOSE language ENGLISH GERMAN pmes.
  1171.     parse arg title, descriptor, array, visible, selected 
  1172.  
  1173.     vchoice=0
  1174.     to_show=words(array); coffset=1; cpage=1; cpages=to_show/visible; 
  1175.     if ((to_show//visible)>0) then cpages=cpages+1; cpages=trunc(cpages)
  1176.     do while (to_show>0)
  1177.         if (to_show>visible) then citems=visible; else citems=to_show
  1178.         vc=""; do i=coffset to citems+coffset-1; vc=vc word(array,i); end
  1179.         if (cpages>1) then call req_begin(title||pmes.language.1 cpage pmes.language.2 cpages)
  1180.         else call req_begin(title)
  1181.         vci=req_addcontrol(descriptor,'cv',vc)
  1182.         call req_setval(vci,selected)
  1183.         if (~req_post()) then do; call req_end(); return 0; end
  1184.         vchoice=req_getval(vci)
  1185.         call req_end()
  1186.         to_show=to_show-citems; coffset=coffset+citems
  1187.     end
  1188.     return vchoice
  1189.  
  1190. /**************************************************************/
  1191.  
  1192. error:
  1193. syntax:
  1194.  
  1195.     t=Notify(1,'!Rexx Script Error','@'ErrorText(rc),'Line 'SIGL)
  1196.     call CleanExit()
  1197.  
  1198. /**************************************************************/
  1199. /**************************************************************/
  1200.  
  1201. InitVariables:
  1202.  
  1203. mathlib="rexxmathlib.library"
  1204. rexxlib="rexxsupport.library"
  1205. supplib="LWE.library"
  1206. port=""
  1207.  
  1208. envpath="ENV:LWEnhancer"
  1209. globals=envpath"/LWEN.GLB"
  1210. envname=envpath||macro_path
  1211. config=envname".CNF"
  1212.  
  1213. selection1=envname".1"
  1214. selection2=envname".2"
  1215. selection3=envname".3"
  1216. selectionl=envname".L"
  1217.  
  1218. /**************************************************************/
  1219.  
  1220. ENGLISH=1
  1221. GERMAN=2
  1222.  
  1223. HELP_FIRST=1
  1224. HELP_ALWAYS=2
  1225. HELP_NEVER=3
  1226.  
  1227. help_type=HELP_FIRST
  1228. language=ENGLISH
  1229. verbose=1
  1230. extension_digits=3
  1231.  
  1232. /**************************************************************/
  1233.  
  1234. ST_SEQUENCE=1
  1235. ST_SPECIFY=2
  1236. ST_LIST=3
  1237. ST_DIRECTORY=4
  1238. ST_READ=5
  1239. ST_REPEAT=6
  1240.  
  1241. /**************************************************************/
  1242.  
  1243. vmes.ENGLISH.1="Object(s) edited"
  1244. vmes.GERMAN.1="Objekt(e) editiert"
  1245.  
  1246. pmes.ENGLISH.1=": Page"
  1247. pmes.ENGLISH.2="from"
  1248. pmes.GERMAN.1=": Seite"
  1249. pmes.GERMAN.2="von"
  1250.  
  1251. NO_ERROR=0
  1252. FILE_ERR=1
  1253. OPEN_LIB_ERR=2
  1254. READ_ERR=3
  1255. WRITE_ERR=4
  1256. EXTENSION_ERR=5
  1257. SEQUENCE_ERR=6
  1258. ENV_ERR=7
  1259. MAX_ERR=8
  1260. INTERNAL_ERR=9
  1261.  
  1262. errors.ENGLISH.FILE_ERR="File not found"
  1263. errors.ENGLISH.OPEN_LIB_ERR="Can't open Library"
  1264. errors.ENGLISH.READ_ERR="Read Error"
  1265. errors.ENGLISH.WRITE_ERR="Write Error"
  1266. errors.ENGLISH.EXTENSION_ERR="Numeric Extension Error"
  1267. errors.ENGLISH.SEQUENCE_ERR="Base Names are different"
  1268. errors.ENGLISH.ENV_ERR="Can't create"
  1269. errors.ENGLISH.MAX_ERR="Maximum of 32767 Points"
  1270. errors.ENGLISH.INTERNAL_ERR="Internal Error"
  1271.  
  1272. errors.GERMAN.FILE_ERR="Datei nicht gefunden"
  1273. errors.GERMAN.OPEN_LIB_ERR="Kann Library nicht öffnen"
  1274. errors.GERMAN.READ_ERR="Fehler beim Lesen der Datei"
  1275. errors.GERMAN.WRITE_ERR="Fehler beim Schreiben der Datei"
  1276. errors.GERMAN.EXTENSION_ERR="Keine gültige numerische Extension"
  1277. errors.GERMAN.SEQUENCE_ERR="Sequenz mit unterschiedlichen Basisnamen"
  1278. errors.GERMAN.ENV_ERR="Kann Verzeichnis nicht anlegen"
  1279. errors.GERMAN.MAX_ERR="Anzahl der Punkte maximal 32767"
  1280. errors.GERMAN.INTERNAL_ERR="Interner Fehler"
  1281.  
  1282. /**************************************************************/
  1283.  
  1284. SELECT_MESS=1
  1285. MOTION_MESS=2
  1286. OBJECT_MESS=3
  1287. OUTPUT_MESS=4
  1288. SEQUENCE_MESS=5
  1289.  
  1290. messages.ENGLISH.SELECT_MESS="Please select File"
  1291. messages.ENGLISH.MOTION_MESS="Please select Motion File"
  1292. messages.ENGLISH.OBJECT_MESS="Please select Object File"
  1293. messages.ENGLISH.OUTPUT_MESS="Please select Output Directory"
  1294. messages.ENGLISH.SEQUENCE_MESS="Please select File Sequence"
  1295.  
  1296. messages.GERMAN.SELECT_MESS="Bitte wählen Sie eine Datei"
  1297. messages.GERMAN.MOTION_MESS="Bitte wählen Sie eine Motion-Datei"
  1298. messages.GERMAN.OBJECT_MESS="Bitte wählen Sie eine Objekt-Datei"
  1299. messages.GERMAN.OUTPUT_MESS="Bitte wählen Sie das Zielverzeichnis"
  1300. messages.GERMAN.SEQUENCE_MESS="Wählen Sie eine Sequenz von Dateien"
  1301.  
  1302. /**************************************************************/
  1303.  
  1304. PI=3.14159265358; PI180=pi/180; PI2=pi*2; DegrPerRad=180/pi
  1305.  
  1306. /**************************************************************/
  1307.  
  1308. return
  1309.  
  1310.