Professional Documents
Culture Documents
Spiral Stair
Spiral Stair
-----------------------------------------------------------------
--A MACRO TO DRAW A SPIRAL STAIR
-- BY REZA RAMAZANI-REND
-- r.ramazani@gmail.com
-----------------------------------------------------------------
--I will be more than glad to hear about:
-- Your opinion about the macro
-- The changes you made to suit this macro for your requirements
-- What will make this macro more useful
-----------------------------------------------------------------
----CE MUST BE THE TANK EQUI
---- THIS TANK MUST HAVE A NAME, HAVING UNSET NAME WILL
---- RESULT IN AN ERROR.
---- THE CODE ASSUMES THAT THE TANK FOUNDATION BOTTOM IS ON U 0
---- AND ITS CENTER IS ON E 0 N 0 (BOTH WRT THE EQUI COORDINATES)
---- IF THIS IS NOT THE CASE MOVE THE ORIGIN OF THE EQUIPMENT
---- TO THE LOWER PPOINT OF THE TANK FOUNDATION.
---- BY THE WAY THE MACRO ALSO DRAWS A GUARD-RAIL ON TOP OF THE
---- TANK :-). IF YOU DO NOT REQUIRE THIS GUARD-RAIL, DELETE THE
---- GUARD-RAIL SUB-EQUIPMENT.
-----------------------------------------------------------------
-----------------------------------------------------------------
--INITIALIZATION OF VARIABLES
-----------------------------------------------------------------
-----------------------------------------------------------------
--DRAWING STARTS HERE
-----------------------------------------------------------------
!NA = !!CE.NAME & '/SPIRALSTAIR'
NEW SUBE $!NA
!POS = !!CE.POSITION
!EE = !POS.EAST
!NN = !POS.NORTH
!UU = !POS.UP
!BBN = !SH
!TTN = !SH + !PH
!STH = !TH + !TE
!STA = !OO
!RO = !TOR + !SC + !SX
!RM = !TOR + !SC + !SX / 2
!AIS = ASIN(!SY / 2 / !RO)
!AIP = ASIN(!MPW / 2 / !RO)
!AITP = ASIN(!SX / 2 / !RO)
!JJ = 1
DO
IF (!BBN GE !STH) THEN
BREAK
ENDIF
!BBO = !BBN
!TTO = !TTN
!BBN = !BBN + !SH
!TTN = !TTN + !SH
IF ((!BBO GE !MPH[!JJ] + !TE) and (!BBO LT !MPH[!JJ] + !SH + !TE)) THEN
!STA2 = !STA + !SO * !AIS
!STA = !STA + !SO * !AIP
!EEES = !RM * COS(!STA)
!NNNS = !RM * SIN(!STA)
!UUUS = !BBO - !SZ / 2
!EEEP = (!RO - !PD / 2) * COS(!STA2)
!NNNP = (!RO - !PD / 2) * SIN(!STA2)
!UUUP = !BBO + !PH / 2
!EEEG = (!RO - !PD / 2) * COS(!STA)
!NNNG = (!RO - !PD / 2) * SIN(!STA)
!UUUG = !BBO + !PH
!LLL = !MPW - !SY
!EEESP = (!RO - !PD / 2) * COS(!STA2)
!NNNSP = (!RO - !PD / 2) * SIN(!STA2)
!UUUSP = !BBO + !PH
!HHH = !PSD / 2
NEW BOX POS E $!EEES N $!NNNS U $!UUUS
ORI Z IS U and X IS E $!STA N
XLEN $!SX
YLEN $!MPW
ZLEN $!SZ
NEW CYL POS E $!EEEP N $!NNNP U $!UUUP
DIA $!PD
HEI $!PH
NEW CYL POS E $!EEEG N $!NNNG U $!UUUG
ORI Z IS N $!STA W and X IS E $!STA N
DIA $!PD
HEI $!LLL
NEW DISH POS E $!EEESP N $!NNNSP U $!UUUSP
DIA $!PSD
HEI $!HHH
NEW DISH POS E $!EEESP N $!NNNSP U $!UUUSP
ORI Z IS D
DIA $!PSD
HEI $!HHH
!STA = !STA + !SO * !AIP
!STA2 = !STA - !SO * !AIS
!EEEP = (!RO - !PD / 2) * COS(!STA2)
!NNNP = (!RO - !PD / 2) * SIN(!STA2)
!UUUP = !BBO + !PH / 2
!EEESP = (!RO - !PD / 2) * COS(!STA2)
!NNNSP = (!RO - !PD / 2) * SIN(!STA2)
!UUUSP = !BBO + !PH
!HHH = !PSD / 2
NEW CYL POS E $!EEEP N $!NNNP U $!UUUP
DIA $!PD
HEI $!PH
NEW DISH POS E $!EEESP N $!NNNSP U $!UUUSP
DIA $!PSD
HEI $!HHH
NEW DISH POS E $!EEESP N $!NNNSP U $!UUUSP
ORI Z IS D
DIA $!PSD
HEI $!HHH
!EEEG = (!EEEP + (!RO - !PD / 2) * COS(!STA2 + 2 * !SO * !AIS)) / 2
!NNNG = (!NNNP + (!RO - !PD / 2) * SIN(!STA2 + 2 * !SO * !AIS)) / 2
!UUUG = !BBO + !PH + !SH / 2
!LLL = SQRT((!EEEP - (!RO - !PD / 2) * COS(!STA2 + 2 * !SO * !AIS)) * (!EEEP -
(!RO - !PD / 2) * COS(!STA2 + 2 * !SO * !AIS)) + (!NNNP - (!RO - !PD / 2) * SIN(!
STA2 + 2 * !SO * !AIS)) * (!NNNP - (!RO - !PD / 2) * SIN(!STA2 + 2 * !SO * !AIS)) +
!SH * !SH)
!TET = !SO * ASIN(!SH / !LLL)
NEW CYL POS E $!EEEG N $!NNNG U $!UUUG
ORI Z IS N $!STA W and X IS E $!STA N
DIA $!PD
HEI $!LLL
ROTATE ABOUT E $!STA N BY $!TET
!JJ = !JJ + 1
ELSE
!STA = !STA + !SO * !AIS
!EEES = !RM * COS(!STA)
!NNNS = !RM * SIN(!STA)
!UUUS = !BBO - !SZ / 2
!EEEP = (!RO - !PD / 2) * COS(!STA)
!NNNP = (!RO - !PD / 2) * SIN(!STA)
!UUUP = !BBO + !PH / 2
!EEESP = (!RO - !PD / 2) * COS(!STA)
!NNNSP = (!RO - !PD / 2) * SIN(!STA)
!UUUSP = !BBO + !PH
!HHH = !PSD / 2
NEW BOX POS E $!EEES N $!NNNS U $!UUUS
ORI Z IS U and X IS E $!STA N
XLEN $!SX
YLEN $!SY
ZLEN $!SZ
NEW CYL POS E $!EEEP N $!NNNP U $!UUUP
DIA $!PD
HEI $!PH
NEW DISH POS E $!EEESP N $!NNNSP U $!UUUSP
DIA $!PSD
HEI $!HHH
NEW DISH POS E $!EEESP N $!NNNSP U $!UUUSP
ORI Z IS D
DIA $!PSD
HEI $!HHH
!EEEG = (!EEEP + (!RO - !PD / 2) * COS(!STA + 2 * !SO * !AIS)) / 2
!NNNG = (!NNNP + (!RO - !PD / 2) * SIN(!STA + 2 * !SO * !AIS)) / 2
!UUUG = !BBO + !PH + !SH / 2
!LLL = SQRT((!EEEP - (!RO - !PD / 2) * COS(!STA + 2 * !SO * !AIS)) * (!EEEP -
(!RO - !PD / 2) * COS(!STA + 2 * !SO * !AIS)) + (!NNNP - (!RO - !PD / 2) * SIN(!STA
+ 2 * !SO * !AIS)) * (!NNNP - (!RO - !PD / 2) * SIN(!STA + 2 * !SO * !AIS)) + !SH *
!SH)
!TET = !SO * ASIN(!SH / !LLL)
NEW CYL POS E $!EEEG N $!NNNG U $!UUUG
ORI Z IS N $!STA W and X IS E $!STA N
DIA $!PD
HEI $!LLL
ROTATE ABOUT E $!STA N BY $!TET
!STA = !STA + !SO * !AIS
ENDIF
ENDDO
OWN
BY E $!EE N $!NN U $!UU
OWN
OWN
BY E $!EE N $!NN U $!UU
OWN