3ds Max Plugins

At this site I want to introduce some of my 3ds max old basic plugins. This are just basic examples how you can make plugins with max script and create your category in 3ds max. This max script plugins I made long time ago with max 9 as I was a student. I will be very happy, if you see my models at this site and turbosquid.

List of some 3ds max plugins:

  1. Plane
  2. Segmented Plane
  3. Box
  4. Cylinder
  5. Sphere
  6. Haus
  7. Crone

Plane

plugin simpleObject Plane
name:"Plane"
category:"Turbo3dModels"
classID:#(0xe855567c, 0xbcd73b8b)
(
  parameters main rollout:params
 (
 width type:#float ui:width default:1
 hight type:#float ui:hight default:1
 )
 rollout params "Plane"
 (
 spinner width "Width" range:[0,90,1]
 spinner hight "Hight" range:[0,90,1]
 )
 
 
 
 
 on buildMesh do (
 
 vert_array = #()
 face_array = #()
 

 v1 = [ 1*width ,  1*hight , 0]
 v2 = [-1*width ,  1*hight , 0]
 v3 = [ 1*width , -1*hight , 0]
 v4 = [-1*width , -1*hight , 0]
 

 append vert_array v1
 append vert_array v2
 append vert_array v3
 append vert_array v4
 
 append face_array [1,2,3]
 append face_array [3,2,4]
 
 setMesh mesh   verts:vert_array   faces:face_array 
 )
 
 
 
 
 
 tool create
 (
 on mousePoint click do
 (
 case click of
 (
 1: coordsys grid (nodeTM.translation = gridPoint)
 )
 )
 
 on mouseMove click do 
 (
 case click of
 (
 2: ((width = abs(gridDist.x)) 
     (hight = abs(gridDist.y)))
 3: (#stop)
 )
 )
    ) 
)

Go UP | Back

Segmented Plane

plugin simpleObject SegmentedPlane 
name:"SegmentedPlane"
category:"Turbo3dModels"
classID:#(0xe855567c, 0xbcd73b8b)
(
  parameters main rollout:params
 (
 seg_width type:#integer ui:seg_width default:3
 seg_hight type:#integer ui:seg_hight default:3
 width type:#float ui:width default:1
 hight type:#float ui:hight default:1
 )
 rollout params "SegmentedPlane"
 (
 spinner seg_hight "seg_hight" range:[2,100,10] type:#integer
 spinner seg_width "seg_width" range:[2,100,10] type:#integer
 spinner width "Width" range:[-1000,1000,1] type:#float 
 spinner hight "Hight" range:[-1000,1000,1] type:#float 
 )
 
 
 on buildMesh do (
 
 vert_array = #()
 face_array = #()

 for i=0 to seg_width  by 1 do
 (
 for j=0 to seg_hight  by 1 do
 (
 
 v = [ (i*width)/seg_width, (j*hight)/seg_hight  , 0  ] 
 print v 
 append vert_array v 
 )
 )
 


 if (width  >  0 and hight >  0) or (width  <  0 and hight <  0) then (
 
 for i=0 to seg_width-1 by 1 do
 (
 for j=1 to seg_hight  by 1 do
 (
 
 append face_array [i*(seg_hight+1)+j, (i+1)*(seg_hight+1)+j, (i+1)*(seg_hight+1)+j+1]
 append face_array [i*(seg_hight+1)+j, (i+1)*(seg_hight+1)+j+1, i*(seg_hight+1)+j+1]
 )
 )
 
 ) else (
 
 for i=0 to seg_width-1 by 1 do
 (
 for j=1 to seg_hight  by 1 do
 (
 append face_array [i*(seg_hight+1)+j, i*(seg_hight+1)+j+1, (i+1)*(seg_hight+1)+j+1]
 )
 )
 )
 
 
 setMesh mesh   verts:vert_array   faces:face_array 
 )
 
 tool create
 (
 on mousePoint click do
 (
 case click of
 (
 1: coordsys grid (nodeTM.translation = gridPoint)
 )
 )
 
 on mouseMove click do 
 (
 case click of
 (
 2: ( (width = gridDist.x)
    (hight = gridDist.y) )
 3: (#stop)
 )
 )
    )
)

Go UP | Back

Box

plugin simpleObject NewBox
name:"Box"
category:"Turbo3dModels"
classID:#(0x4ef2985b, 0x5eda3ff0)
(
  parameters main rollout:params
 (
 width type:#float ui:width default:1
 hight type:#float ui:hight default:1
 lenght type:#float ui:lenght default:1
 )
 rollout params "Box"
 (
 spinner width "Width" range:[0,90,1]
 spinner hight "Hight" range:[0,90,1]
 spinner lenght "Lenght" range:[-90,90,1]
 )
 
 
 
 
 on buildMesh do (
 
 vert_array = #()
 face_array = #()
 

 v1 = [ 1*width ,  1*hight , 0]
 v2 = [-1*width ,  1*hight , 0]
 v3 = [ 1*width , -1*hight , 0]
 v4 = [-1*width , -1*hight , 0]
 v5 = [ 1*width ,  1*hight , 1*lenght]
 v6 = [-1*width ,  1*hight , 1*lenght]
 v7 = [ 1*width , -1*hight , 1*lenght]
 v8 = [-1*width , -1*hight , 1*lenght]
 

 append vert_array v1
 append vert_array v2
 append vert_array v3
 append vert_array v4
 append vert_array v5
 append vert_array v6
 append vert_array v7
 append vert_array v8
 
 if lenght > 0 then (
 append face_array [2,1,3]
 append face_array [2,3,4]
 append face_array [3,7,4]--
 append face_array [8,4,7]--
 append face_array [7,3,1]
 append face_array [5,7,1]
 append face_array [5,6,8]--
 append face_array [5,8,7]--
 append face_array [2,5,6]
 append face_array [1,2,5]
 append face_array [4,8,6]--
 append face_array [2,4,6]--
 ) else (
 append face_array [1,2,3]
 append face_array [3,2,4]
 append face_array [7,3,4]--
 append face_array [4,8,7]--
 append face_array [3,7,1]
 append face_array [7,5,1]
 append face_array [6,5,8]--
 append face_array [8,5,7]--
 append face_array [5,2,6]
 append face_array [2,1,5]
 append face_array [8,4,6]--
 append face_array [4,2,6]--
 )
 
 
 
 setMesh mesh   verts:vert_array   faces:face_array 
 )
 
 
 
 
 
 tool create
 (
 on mousePoint click do
 (
 case click of
 (
 1: coordsys grid (nodeTM.translation = gridPoint)
 )
 )
 
 on mouseMove click do 
 (
 case click of
 (
 2: ((width = abs(gridDist.x)) 
     (hight = abs(gridDist.y)))
 3: ( lenght = gridDist.z )
 4: (#stop)
 )
 )
    ) 
)

Go UP | Back

Cylinder

plugin simpleObject Cylinder 
name:"Cylinder"
category:"CGR2"
classID:#(0xeb2ad4f, 0x190a419f)
(
  parameters main rollout:params
 (
 segments type:#integer ui:segments default:5
 radius type:#float ui:radius default:1.0
 height type:#float ui:height default:1.0
 )
 rollout params "Zilinder"
 (
 spinner segments "Segments " range:[2,500,10] type:#integer
 spinner height "height " range:[-100,100,0] type:#float 
 spinner radius "Radius " range:[0,100,0] type:#float
 )
 
 
 on buildMesh do (
 
 segm = segments + 1
 
 vert_array = #()
 face_array = #()
 
 for i=0 to 1 by 1 do( 

 append vert_array [0, i*height , 0]  
 
 for j=0 to segments by 1 do( 
 
 winkel = (j * (360.01 / segments) )
                
            vx = cos(winkel) * radius 
                
            vy = i*height 
                
            vz = sin(winkel) * radius 
 
 append vert_array [vx, vy, vz]  
 ) 
 )
 
 if  height > 0 then (
 
     for i=1 to segments by 1 do(
 append face_array[1,i+1,i+2 ] 
 )
 
 for i=1 to segments by 1 do(
 append face_array[i+1, i+segments+3, i+2 ]
 append face_array[i+2, i+segments+3, i+segments+4 ] 
 )
 
 for i=1 to segments by 1 do(
 append face_array[segments + i + 3, segments + 3 , segments + i + 4 ] 
 )
 ) else (
 for i=1 to segments by 1 do(
 append face_array[i+1,1,i+2 ] 
 )
 
 for i=1 to segments by 1 do(
 append face_array[i+segments+3, i+1, i+2 ]
 append face_array[i+segments+3, i+2, i+segments+4 ] 
 )
 
 for i=1 to segments by 1 do(
 append face_array[segments + 3, segments + i + 3 , segments + i + 4 ] 
 ) 
 )
 

 
 setMesh mesh   verts:vert_array   faces:face_array  
 )
 
 
 tool create
 (
 on mousePoint click do
 (
 case click of
 (
 1: coordsys grid (nodeTM.translation = gridPoint)
 )
 )
 
 on mouseMove click do 
 (
 case click of
 (
 2: (radius = gridDist.x)
 3: (height = gridDist.y)
 4: (#stop)
 )
 )
 )
)

Go UP | Back

Sphere

plugin simpleObject Bal
name:"Bal"
category:"CGR2"
classID:#(0xeb2ad4f, 0x190a419f)
(
	 parameters main rollout:params
	(
		segments type:#integer ui:segments default:5
		radius type:#float ui:radius default:1
		rings type:#integer ui:rings default:4
	)
	rollout params "Ball"
	(
		spinner segments "Segments " range:[3,500,10] type:#integer
		spinner rings "Rings " range:[3,10000,0] type:#integer	
		spinner radius "Radius " range:[0,10000,0]	type:#float
	)
	
		
	on buildMesh do	(
	
	
	segm = segments + 1
	
	if segm > 2 then (
	
	vert_array = #()
	face_array = #()
	anzahlPunkte = segments * rings

	for i=0 to rings - 1 by 1 do(
		
				
     	ringRadius = sin(i * 180 / (rings - 1)) * radius
        
        ringY =cos(i * 180 / (rings - 1)) * radius
		
		for j=0 to segm - 1 by 1 do(
			
			winkel = (j * 360) / (segm - 1)
                
            vx =cos(winkel) * ringRadius
                
            vy = ringY
                
            vz = sin(winkel) * ringRadius
			
			append vert_array [vx, vy, vz]	 
		)			
	)

		
	for i=1 to rings-1 by 1 do(
		
		ring = 0   
		seg = 0
		
	 	for j=1 to segm - 1 by 1 do(
								                            
        	if i == rings - 1 then (
                 ring = 0
        	) else (
           	      ring = i
        	)
                
        	
       	 	if j == segm then (
        	       seg = 0
       	 	) else (
           	      seg = j
        	)
		
		append face_array[ ring*segm+seg,(ring+1)*segm+seg+1, (ring+1)*segm+seg]
		append face_array[ ring*segm+seg,ring*segm+seg+1,(ring+1)*segm+seg+1]
	)
	)
	
	
	for i=0 to rings by 1 do(
		
		for j=0 to segments by 1 do(
		
		ring = 0                               
        if i == rings - 1 then (
                 ring = 0
        ) else (
                 ring = i
        )
                
        seg = 0
        if j == segments  - 1 then (
                 seg = 0
        ) else (
                 seg = j
        )
		

		
			)
		)
	)


	setMesh mesh   verts:vert_array   faces:face_array	 
	)
	
	tool create
	(
		on mousePoint click do
		(
			case click of
			(
				1: coordsys grid (nodeTM.translation = gridPoint)
			)
		)
		
		on mouseMove click do 
		(
			case click of
			(
			2: (radius = abs(gridDist.x))
			3: (#stop)
			)
		)
	)
)

Go UP | Back

Haus

plugin simpleObject Hasus
name:"Haus"
category:"CGR2"
classID:#(0x3e2cb992, 0x65416766)
(
	 parameters main rollout:params
	(

		width type:#float ui:width default:1
		hight type:#float ui:hight default:1
		lenght type:#float ui:lenght default:1
		dach type:#float ui:dach default:1
	)
	rollout params "Haus"
	(
		spinner width "Width" range:[0,90,1]
		spinner hight "Hight" range:[0,90,1]
		spinner lenght "Lenght " range:[0,90,1]
		spinner dach "Dach " range:[0,90,1]
	)
	
		
	on buildMesh do	(
	
	vert_array = #()
	face_array = #()

		v1 = [ 1*width,  1*hight, -1*lenght]
		v2 = [-1*width,  1*hight, -1*lenght]
		v3 = [-1*width,  1*hight,  1*lenght]
		v4 = [ 1*width,  1*hight,  1*lenght]
		v5 = [ 1*width, -1*hight, -1*lenght]
		v6 = [-1*width, -1*hight, -1*lenght]
		v7 = [-1*width, -1*hight,  1*lenght]
		v8 = [ 1*width, -1*hight,  1*lenght]
		v9 = [       0,       0 ,  2*lenght]
		

		append vert_array v1
		append vert_array v2
		append vert_array v3
		append vert_array v4
		append vert_array v5
		append vert_array v6
		append vert_array v7
		append vert_array v8
		append vert_array v9
	
		append face_array [1,2,3]
		append face_array [3,4,1]
		append face_array [1,2,6]
		append face_array [1,6,5]
		append face_array [1,4,5]
		append face_array [5,4,8]
		append face_array [3,6,2]--
		append face_array [3,7,6]--
		append face_array [6,5,7]
		append face_array [7,5,8]
		append face_array [7,4,3]
		append face_array [8,4,7]
		--dach
		append face_array [1,2,9]
		append face_array [2,3,9]
		append face_array [3,4,9]
		append face_array [4,1,9]


	setMesh mesh   verts:vert_array   faces:face_array	
	)
	
	tool create
	(
		on mousePoint click do
		(
			case click of
			(
				1: coordsys grid (nodeTM.translation = gridPoint)
			)
		)
		
		on mouseMove click do 
		(
			case click of
			(
			2: (width = abs(gridDist.x))
			3: (hight = abs(gridDist.y))
			4: (lenght = abs(gridDist.z))
			5: (#stop)
			)
		)
	)
)

Go UP | Back

Crone

plugin simpleObject  Crone 
name:"Crone"
category:"CGR2"
classID:#(0xeb2ad4f, 0x190a419f)
(
  parameters main rollout:params
 (
 segments type:#integer ui:segments default:5
 radius type:#float ui:radius default:1
 rings type:#integer ui:rings default:4
 )
 rollout params "Crone"
 (
 spinner segments "Segments " range:[2,500,10] type:#integer
 spinner rings "Rings " range:[0,10000,0] type:#integer 
 spinner radius "Radius " range:[0,10000,0] type:#float
 )
 
 
 on buildMesh do (
 
 vert_array = #()
 face_array = #()
 anzahlPunkte = segments * rings

 for i=0 to rings - 1 by 1 do(
 
      ringRadius = sin(i * 180 / (rings - 1)) * radius
        
        ringY =cos(i * 180 / (rings - 1)) * radius
 
 for j=0 to segments - 1 by 1 do(
 
 winkel = (j * 360) / (segments - 1)
                
            vx =cos(winkel) * ringRadius
                
            vy = ringY
                
            vz = sin(winkel) * ringRadius
 
 append vert_array [vx, vy, vz]  
 )
 
 )
 
    for i=0 to segments - 1 by 1 do(
 
 if i == segments  - 1 then (
                 seg = segments+1
        ) else (
                 seg = segments+i+2
        )
 
 )
 for i=1 to 1 by 1 do(
 
 ring = 0   
 seg = 0
 
   for j=1 to segments - 1 by 1 do(
 print i 
 print j
                             
         if i == rings - 1 then (
                 ring = 0
         ) else (
                  ring = i
         )
                
         
          if j == segments then (
                seg = 0
          ) else (
                  seg = j
         )
 
 append face_array[ ring*segments+seg,(ring+1)*segments+seg,(ring+1)*segments+seg+1]
 )
 ) 
 
 for i=0 to rings by 1 do(
 
 for j=0 to segments by 1 do(
 
 ring = 0                               
        if i == rings - 1 then (
                 ring = 0
        ) else (
                 ring = i
        )
                
        seg = 0
        if j == segments  - 1 then (
                 seg = 0
        ) else (
                 seg = j
        )
 
 
 
 )
 )


 

 setMesh mesh   verts:vert_array   faces:face_array  
 )
 
 tool create
 (
 on mousePoint click do
 (
 case click of
 (
 1: coordsys grid (nodeTM.translation = gridPoint)
 )
 )
 
 on mouseMove click do 
 (
 case click of
 (
 2: (radius = abs(gridDist.x))
 3: (#stop)
 )
 )
 )
)

Go UP | Back