home *** CD-ROM | disk | FTP | other *** search
/ ftp.dds.no / ftp.dds.no.tar / ftp.dds.no / pub / Customers / sys-js.txt / TroxOrionSirius.js < prev    next >
Text File  |  2014-05-09  |  12KB  |  383 lines

  1. function DdsScript.Draw()
  2.   {
  3.   var
  4.   dTwist = GdpVariable.Get(5),
  5.   HorizontalDir = GdpVariable.Get(6),
  6.     VerticalDir = GdpVariable.Get(7),
  7.   i_Medium = parseInt(GdpVariable.Get(8)),
  8.   i_mmDuctW = (GdpVariable.Get(9) * 1000),
  9.     i_mmDuctH = (GdpVariable.Get(10) * 1000),
  10.   i_mDuctW = GdpVariable.Get(9),
  11.   i_mDuctH = GdpVariable.Get(10),
  12.     i_mPlenumX = GdpVariable.Get(12),
  13.   i_mPlenumY = GdpVariable.Get(13),
  14.   i_mPlenumZ = GdpVariable.Get(14),
  15.   i_mTerminalX = .6,
  16.   i_mTerminalY = .6,
  17.   i_mTerminalZ = -.066,
  18.   d_mSleeveZ = GdpVariable.Get(15),
  19.   boFloodFill = GdpVariable.Get(18),
  20.   i_mmDuctW2 = 100,
  21.     i_ViewState = GdpVariable.Get(55),
  22.     a_Angle = GdpVariable.Get(25),
  23.     d_DL = GdpVariable.Get(11),
  24.   d_DZ = d_mSleeveZ,
  25.     boTopConnect = GdpVariable.Get(30),
  26.     boTerminalOnly = false,
  27.     boTerminalRect = true,
  28.     boPlenumRect = false,
  29.   boUseIP = true,
  30.   boLouvre = false,
  31.   a_Angle = GdpVariable.Get(25),
  32.   r_Angle = GdpVariable.Get(25) * (Math.PI / 180),
  33.   vartext = " ",
  34.   endVar;
  35.   if(i_ViewState<2)
  36.     i_ViewState = 2;
  37.   if(i_mPlenumX == 0)
  38.     boTerminalOnly = true;
  39.   if(i_mPlenumX > 0 && i_mPlenumY > 0)
  40.     boPlenumRect = true;
  41.   if(i_mTerminalY>0)
  42.     boTerminalRect = true;
  43.   if(boTerminalOnly && boTerminalRect)
  44.     boLouvre = true;
  45.   if(d_DZ<=0)
  46.     d_DZ=.0001;
  47.     // Set Flood Fill
  48.     boFloodFill === 0;
  49.     /*
  50.     for ( i = 0; i<99; ++i){
  51.       if(GdpVariable.Get(i) != 0)
  52.         vartext += "Var nr " + i + " = " + GdpVariable.Get(i) + "\n";
  53.      }
  54.      DdsMessage.Display(vartext , "");
  55.      */
  56.       if(i_mmDuctW < 150){
  57.         i_mmDuctW2 = 200;
  58.       }
  59.       else if(i_mmDuctW < 190){
  60.         i_mmDuctW2 = 250;
  61.       }
  62.       else if(i_mmDuctW < 220){
  63.         i_mmDuctW2 = 315;
  64.       }
  65.       else{
  66.         i_mmDuctW2 = 400;
  67.       }
  68.    with(DdsDraw)
  69.    {
  70.     SolidBrushSet(boFloodFill);
  71.     TransfPush();
  72.     if(GdpVariable.Get(28)>0)
  73.       TranslateXYZ(GdpVariable.Get(11),0,-d_DZ*2);
  74.     RotateZ(r_Angle);
  75.     if(boTopConnect)
  76.       RotateY(-Math.PI*.5);
  77.     fTerminal(boLouvre, i_mTerminalX, i_mTerminalY, i_mTerminalZ, boTerminalRect, i_ViewState);
  78.     LineXYZ(0,0,0,0,0,-.0001); // To create a snap point in center of terminal
  79.     //Circle(i_mmDuctW*.0005);
  80.     RotateZ(-r_Angle);
  81.      if(!boTerminalOnly)
  82.     {
  83.     fConnect(d_DZ, i_ViewState, i_mDuctW, i_mmDuctW2);
  84.     TranslateXYZ(- d_DL + i_mPlenumX*.5, 0, d_DZ);
  85.     fPlenum(i_mPlenumX, i_mPlenumY, i_mPlenumZ, boPlenumRect, i_ViewState);
  86.     if(!boTopConnect)
  87.     {
  88.     TranslateXYZ(-i_mPlenumX*.5, 0, i_mPlenumZ*.5);
  89.     fIP(boUseIP, boPlenumRect, i_mPlenumX, i_Medium, i_mmDuctW, i_mmDuctH, boTopConnect, i_ViewState, a_Angle);
  90.     }
  91.     else // If top connect
  92.     {
  93.     TranslateXYZ(0, 0, i_mPlenumZ);
  94.     fIP(boUseIP, boPlenumRect, i_mPlenumX, i_Medium, i_mmDuctW, i_mmDuctH, boTopConnect, i_ViewState, a_Angle);
  95.     }
  96.    }
  97.     else // If terminal only
  98.       fIP(boUseIP, boPlenumRect, i_mPlenumX, i_Medium, i_mmDuctW, i_mmDuctH, boTopConnect, i_ViewState, a_Angle);
  99.     TransfPop();
  100.     //
  101.    if(boFloodFill && i_ViewState<3) // If flood fill, set Brush to false, and redraw with black pen. Don't want to redraw if 3D.
  102.    {
  103.     if(GdpVariable.Get(28)>0)
  104.       TranslateXYZ(GdpVariable.Get(11),0,-i_mPlenumZ*.5);
  105.     boUseIP = false; // Don't want double IP's
  106.     SolidBrushSet(false);
  107.     RotateZ(r_Angle)
  108.     Pen("Gdp.Bfc.2");
  109.     if(boTopConnect)
  110.       RotateY(-Math.PI*.5);
  111.     fTerminal(boLouvre, i_mTerminalX, i_mTerminalY, i_mTerminalZ, boTerminalRect, i_ViewState);
  112.     RotateZ(-r_Angle);
  113.     if(!boTerminalOnly)
  114.     {
  115.     fConnect(d_DZ, i_ViewState, i_mDuctW, i_mmDuctW2);
  116.     TranslateXYZ(- d_DL + i_mPlenumX*.5, 0, d_DZ);
  117.     fPlenum(i_mPlenumX, i_mPlenumY, i_mPlenumZ, boPlenumRect, i_ViewState);
  118.     if(!boTopConnect)
  119.     {
  120.     TranslateXYZ(-i_mPlenumX*.5, 0, i_mPlenumZ*.5);
  121.     fIP(boUseIP, boPlenumRect, i_mPlenumX, i_Medium, i_mmDuctW, i_mmDuctH, boTopConnect, i_ViewState, a_Angle);
  122.     }
  123.     else
  124.     {
  125.     TranslateXYZ(0, 0, i_mPlenumZ);
  126.     fIP(boUseIP, boPlenumRect, i_mPlenumX, i_Medium, i_mmDuctW, i_mmDuctH, boTopConnect, i_ViewState, a_Angle);
  127.     }
  128.    }
  129.     else
  130.       fIP(boUseIP, boPlenumRect, i_mPlenumX, i_Medium, i_mmDuctW, i_mmDuctH, boTopConnect, i_ViewState, a_Angle);
  131.    }
  132.  }
  133.   function fTerminal(boLouvre, i_mTerminalX, i_mTerminalY, i_mTerminalZ,boTerminalRect, i_ViewState)
  134.     {
  135.       with(DdsDraw)
  136.       {
  137.         TransfPush();
  138.         switch (i_ViewState)
  139.         {
  140.           case 1:
  141.             break;
  142.           case 2:
  143.             if(!boTerminalRect)
  144.             {
  145.               Circle(i_mTerminalX*.5);
  146.               Circle(i_mTerminalX*.45);
  147.             }
  148.             else
  149.             {
  150.               TranslateXYZ(-i_mTerminalX*.5, -i_mTerminalY*.5, 0);
  151.               RotateX(Math.PI*.5);
  152.               Rect(i_mTerminalX, .04);
  153.               RotateY(Math.PI*.5);
  154.               Rect(i_mTerminalY, .04);
  155.               RotateY(-Math.PI*.5);
  156.               RotateX(-Math.PI*.5);
  157.               Rect(i_mTerminalX, i_mTerminalY);
  158.               TranslateXYZ(i_mTerminalX*.08, i_mTerminalX*.08,0)
  159.               Rect(i_mTerminalX-i_mTerminalX*.16, i_mTerminalY-i_mTerminalX*.16);
  160.             }
  161.             break;
  162.           case 3:
  163.             Material("Ven.Duc.4000");
  164.             if(boTerminalRect)
  165.             {
  166.               var iNumPin = 8;
  167.               TranslateXYZ(-i_mTerminalX*.5, -i_mTerminalY*.5, 0);
  168.               Box(i_mTerminalX, i_mTerminalY, -i_mTerminalZ);
  169.               TranslateXYZ(i_mTerminalX*.5, i_mTerminalY*.5, 0);
  170.               var dConDim = i_mTerminalX*.05,
  171.                   dWayOut = i_mTerminalX*.4,
  172.                   iConX = parseInt((.5*dWayOut)/dConDim);
  173.               for(z=0;z<iConX;z++)
  174.               {
  175.                   var
  176.                   dConRound = 2*dWayOut*Math.PI,
  177.                   iConRound = parseInt(.5*dConRound/dConDim),
  178.                   dAngStep = 2*Math.PI/iConRound;
  179.                 for(j=0;j<iConRound; j++)
  180.                   {
  181.                   TranslateXYZ(dWayOut, 0, 0);
  182.                   ConeCutOnTop(dConDim, dConDim*.8, -.01, false, false);
  183.                   TranslateXYZ(-dWayOut, 0, 0);
  184.                   RotateZ(dAngStep);
  185.                   }
  186.                 dWayOut = dWayOut-2*dConDim;
  187.               }
  188.             }
  189.  
  190.             break;
  191.         }
  192.         TransfPop();
  193.       }
  194.     }
  195.     function fConnect(d_DZ, i_ViewState, i_mDuctW, i_mmDuctW2)
  196.     {
  197.       with(DdsDraw)
  198.       {
  199.         switch (i_ViewState)
  200.         {
  201.           case 1:
  202.             break;
  203.           case 2:
  204.           TranslateXYZ(0,0,.066);
  205.             Cylinder(i_mmDuctW2*.0005, d_DZ-.066, false, false);
  206.             TranslateXYZ(0,0,-.066);
  207.             break;
  208.           case 3:
  209.           TranslateXYZ(0,0,.066);
  210.             Cylinder(i_mmDuctW2*.0005, d_DZ-.066, false, false);
  211.             TranslateXYZ(0,0,-.066);
  212.             break;
  213.         }
  214.       }
  215.     }
  216.     function fPlenum(i_mPlenumX, i_mPlenumY, i_mPlenumZ, boPlenumRect, i_ViewState)
  217.     {
  218.       with(DdsDraw)
  219.       {
  220.         TransfPush();
  221.         switch (i_ViewState)
  222.         {
  223.           case 1:
  224.             break;
  225.           case 2:
  226.             if(boPlenumRect)
  227.             {
  228.               TranslateXYZ(-.5*i_mPlenumX, -.5*i_mPlenumY, 0);
  229.               Rect(i_mPlenumX, i_mPlenumY);
  230.               RotateY(-Math.PI*.5);
  231.               Rect(i_mPlenumZ, i_mPlenumY);
  232.               RotateY(Math.PI*.5);
  233.             }
  234.             else// Plenum is round
  235.               Circle(i_mPlenumX*.5)
  236.             break;
  237.           case 3:
  238.             if(boPlenumRect)
  239.             {
  240.               TranslateXYZ(-.5*i_mPlenumX, -.5*i_mPlenumY,0);
  241.               Box(i_mPlenumX, i_mPlenumY, i_mPlenumZ);
  242.             }
  243.             else// Plenum is round
  244.             {
  245.               Cylinder(i_mPlenumX*.5, i_mPlenumZ, true, true);
  246.             }
  247.             break;
  248.         }
  249.         TransfPop();
  250.       }
  251.     }
  252.     function fIP(boUseIP, boPlenumRect, i_mPlenumX, i_Medium, i_mmDuctW, i_mmDuctH, boTopConnect, i_ViewState, a_Angle)
  253.     {
  254.       var
  255.         ipDirZ = 0,
  256.         ipDirX = 180;
  257.       if(boUseIP)
  258.         GdpCommand.Process("IP",i_Medium, i_mmDuctW+i_mmDuctH*.001, ipDirX,ipDirZ);
  259.       with(DdsDraw)
  260.       {
  261.         TransfPush();
  262.         switch(i_ViewState)
  263.         {
  264.         case 1:
  265.           break;
  266.         case 2:
  267.         if(boTopConnect && i_mPlenumX>0)
  268.           Circle(i_mmDuctW*.0005);
  269.         else if(boPlenumRect)
  270.         {
  271.           TranslateXYZ(0,-i_mmDuctW*.0005,0);
  272.           Rect(-i_mmDuctW*.0005, i_mmDuctW*.001);
  273.         }
  274.         else if(!boPlenumRect && i_mPlenumX>0)// Make a closed polygon with arc to fit the round plenum
  275.         {
  276.           var
  277.             d2dPointList = new DdsCurvedLine2d(),
  278.             aRad1 = Math.asin((i_mmDuctW*.0005)/(i_mPlenumX*.5)),
  279.             dTmp1 = Math.cos(aRad1)*i_mPlenumX*.5,
  280.             dTmp2 = i_mPlenumX*.5-dTmp1;
  281.             //
  282.             d2dPointList.AddLineTo(new DdsPoint2d(-dTmp2, 0));
  283.             d2dPointList.AddLineTo(new DdsPoint2d(-dTmp2, -i_mmDuctW*.001));
  284.             d2dPointList.AddLineTo(new DdsPoint2d(0, -i_mmDuctW*.001));
  285.             d2dPointList.AddArcRightTo(new DdsPoint2d(0,0), i_mPlenumX*.5);
  286.             TranslateXYZ(dTmp2,i_mmDuctW*.0005,0);
  287.             PolygonCurvedLine(d2dPointList);
  288.         }
  289.         break;
  290.         case 3:
  291.           if(boTopConnect && i_mPlenumX>0)
  292.             Cylinder(i_mmDuctW*.00051, i_mmDuctW*.0001, false, false);
  293.           else if(boPlenumRect)
  294.           {
  295.             RotateY(-Math.PI*.5);
  296.             Cylinder(i_mmDuctW*.00051, i_mmDuctW*.0005, false, false);
  297.             RotateY(Math.PI*.5);
  298.           }
  299.           else if(!boPlenumRect && i_mPlenumX>0)// Make a nice spigot out of round plenum
  300.           {
  301.             var
  302.              iHorSteps = 36,
  303.              arrayX = new Array(),
  304.              arrayY = new Array(),
  305.              arrayZ = new Array(),
  306.              aHorSteps = 2*Math.PI/iHorSteps,
  307.              aStepUp = 0,
  308.              aYZangle = 0,
  309.              dExtra = 0,
  310.              dOutDist = 0.02,
  311.              pointlist = new DdsPointList();
  312.              //
  313.              TranslateXYZ(-.02,0,0);
  314.              RotateY(Math.PI*.5);
  315.              for(i=0; i<iHorSteps+1; i++)
  316.               {
  317.                arrayX[i] = i_mmDuctW*.0005*Math.sin(aStepUp);
  318.                arrayY[i] = i_mmDuctW*.0005*Math.cos(aStepUp);
  319.                //
  320.                aYZangle = Math.asin((arrayY[i])/(i_mPlenumX*.5));
  321.                dExtra = i_mPlenumX*.5-(i_mPlenumX*.5*Math.cos(aYZangle));
  322.                //
  323.                arrayZ[i] = dOutDist+dExtra;
  324.                //
  325.                if(i!=0)
  326.                {
  327.                pointlist.AddXYZ(arrayX[i],arrayY[i],0);
  328.                pointlist.AddXYZ(arrayX[i],arrayY[i],arrayZ[i]);
  329.                pointlist.AddXYZ(arrayX[i-1],arrayY[i-1],arrayZ[i-1]);
  330.                pointlist.AddXYZ(arrayX[i-1],arrayY[i-1],0);
  331.                }
  332.                Polygon(pointlist);
  333.                aStepUp = aStepUp+aHorSteps;
  334.                pointlist = new DdsPointList();
  335.              }
  336.              RotateY(-Math.PI*.5);
  337.            }
  338.           break;
  339.         }
  340.        TransfPop();
  341.       }
  342.     }
  343.     function fLogo(i_mPlenumX, i_mPlenumY, i_mPlenumZ, i_Medium, boTopConnect)
  344.     {
  345.      with(DdsDraw)
  346.      {
  347.     SurfaceTypeSet(ONLY_IN_SURFACE_MODEL);
  348.       var
  349.         zMove = i_mPlenumZ*.3,
  350.         xMove = i_mPlenumX*.5;
  351.      if(boTopConnect)
  352.      {
  353.       xMove = 0;
  354.       zMove = i_mPlenumZ*.8;
  355.      }
  356.       Pen("7.1.3" + i_Medium);
  357.      if(i_mPlenumY>0)
  358.      {
  359.       TransfPush();
  360.       TranslateXYZ(xMove, -i_mPlenumY*.5, -zMove);
  361.       Scale(i_mPlenumX*.4);
  362.       RotateX(Math.PI*.5);
  363.       DrawFile("DDS-CAD.CFI");
  364.       TransfPop();
  365.       TransfPush();
  366.       TranslateXYZ(xMove,i_mPlenumY*.5, -zMove);
  367.       RotateX(Math.PI*.5);
  368.       RotateY(Math.PI);
  369.       Scale(i_mPlenumX*.4);
  370.       DrawFile("DDS-CAD.CFI");
  371.       TransfPop();
  372.      }
  373.      else
  374.      {
  375.      TransfPush();
  376.      TranslateXYZ(xMove,0,-zMove);
  377.      Scale(i_mPlenumX*.5);
  378.      DrawFile("dds-curv.cfi");
  379.      TransfPop();
  380.      }
  381.     }
  382.   }
  383. }