General Program Information
Free Rotation to show both sets of holes
Inputs Needed to Call the Manifold Function
manifoldorigin - a 3 by 1 matrix with x,y,z positions corresponding to the point where the manifold will be drawn
NDManifold - the nominal diameter of the manifold pipe - from this we can find the actual inner diameter and actual outer diameter of the pipe based on the schedule of pipe being used.
orificerad - the radius of the orifice hole
tanklength - the length of the tank
orificedist - the distance between successive orifices
ENPipeSpec - an enumerated pipe schedule which specifies a number which corresponds to a pipe schedule that states the amount of water pressure the pipe can handle before it fails. The pipe schedule affects the inner and outer diameter of the pipe.
Inputs Found in the Pipe Database Function
manifoldinr is the radius of the inner cylinder defined by innerD(NDManifold,ENPipeSpec)/2
manifoldoutr is the radius of the outer cylinder defined by outerradius(NDManifold)
Inputs Defined Within the Manifold Function
p1 = manifoldorigin
p2 =
- x = manifold.origin0
- y = manifold.origin1
- z = manifold.origin2 + tanklength - orificedist
p3 =
- x = manifold.origin0
- y = manifold.origin1 - manifoldoutr
p4 =
- x = manifold.origin0 + manifoldoutr*cos(pi/6) + manifoldoutr
- y = manifold.origin1 + manifoldoutr*sin(pi/6) + manifoldoutr
- z = manifold.origin2 + tanklength - orificedist
p5 =
- x = manifold.origin1 + manifoldoutr*sin(pi/6) + manifoldoutr
- y = manifold.origin2 + tanklength - orificedist
p6 =
- x = manifold.origin0
- y = manifold.origin1
p7 =
- x = manifold.origin0 + manifoldoutr*cos(pi/3) + 2zc
- y = manifold.origin0 + manifoldoutr*sin(pi/3) + 2zc
ND = NDManifold
R3 = orificerad
L = tanklength
n1 = floor(tanklength/orificedist)
n2 = 1
d1 = orificedist
win1 =
- x = manifold.origin0 - manifoldoutr
- y = manifold.origin1 - manifoldoutr
- z = manifold.origin2
win2 =
- x = manifold.origin0 + manifoldoutr + zc
- y = manifold.origin1 + manifoldoutr + zc
- z = manifold.origin2
EN = ENPipeSpec
Note: zc corresponds to the zoom constant used within AutoCAD and created in the basics file that is referenced by the pipe program.
Technical Program Outline
Note: All coordinates are referenced in top view in the program unless otherwise specified.
The Manifold program is build on the Sludge Pipe Program.
sludgepipe - creates a sludge pipe
sludgepipe <-- sludgepipe(p1,ND,L,R3,d1,EN)
p1 = manifoldorigin
ND = NDManifold
R3 = orificerad
L = tanklength
d1 = orificedist
EN = ENPipeSpec
viewtop - shows an object in top view within AutoCAD
viewtop <-- viewtop
zoomwin - zooms on a window space
zoomwin <-- zoomwin(win1,win2)
win1 =
- x = manifold.origin0 - manifoldoutr
- y = manifold.origin1 - manifoldoutr
- z = manifold.origin2
win2 =
- x = manifold.origin0 + manifoldoutr + zc
- y = manifold.origin1 + manifoldoutr + zc
- z = manifold.origin2
cylinder3 - is to draw a cylinder for orifice purpose
cylinder3 <-- cylinderB(p2,R3,p4)
p2 =
- x = manifold.origin0
- y = manifold.origin1
- z = manifold.origin2 + tanklength - orificedist
p4 =
- x = manifold.origin0 + manifoldoutr*cos(pi/6) + manifoldoutr
- y = manifold.origin1 + manifoldoutr*sin(pi/6) + manifoldoutr
- z = manifold.origin2 + tanklength - orificedist
R3 = orificerad
viewrightside - change view to viewrightside
viewrightside <-- viewrightside
array1 - draw starting at point p5, n1 -- as many rows as the tank length/orifice dist, n2 - 1 and provide orifice distance as the next draw point for the cylinder
array1 <-- arrayB(p5,n1,n2,-d1)
p5 =
- x = manifold.origin1 + manifoldoutr*sin(pi/6) + manifoldoutr
- y = manifold.origin2 + tanklength - orificedist
n1 = floor(tanklength/orificedist)
n2 = 1
d1 = orificedist
subtract1 - subtract unneeded portion of the cylinders
subtract1 <-- subtractH(p3,p7,p6)
p3 =
- x = manifold.origin0
- y = manifold.origin1 - manifoldoutr
p6 =
- x = manifold.origin0
- y = manifold.origin1
p7 =
- x = manifold.origin0 + manifoldoutr*cos(pi/3) + 2zc
- y = manifold.origin0 + manifoldoutr*sin(pi/3) + 2zc