mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -- Taken from an example from Autodesk's MAXScript reference:
 | |
| -- http://help.autodesk.com/view/3DSMAX/2016/ENU/?guid=__files_GUID_84E24969_C175_4389_B9A6_3B2699B66785_htm
 | |
| 
 | |
| macroscript MoveToSurface
 | |
|     category: "HowTo"
 | |
| (
 | |
|     fn g_filter o = superclassof o == Geometryclass
 | |
|     fn find_intersection z_node node_to_z = (
 | |
|         local testRay = ray node_to_z.pos [0,0,-1]
 | |
|         local nodeMaxZ = z_node.max.z
 | |
|         testRay.pos.z = nodeMaxZ + 0.0001 * abs nodeMaxZ
 | |
|         intersectRay z_node testRay
 | |
|     )
 | |
|     
 | |
|     on isEnabled return selection.count > 0
 | |
|     
 | |
|     on Execute do (
 | |
|         target_mesh = pickObject message:"Pick Target Surface:" filter:g_filter
 | |
|         
 | |
|         if isValidNode target_mesh then (
 | |
|             undo "MoveToSurface" on (
 | |
|                 for i in selection do (
 | |
|                     int_point = find_intersection target_mesh i
 | |
|                     if int_point != undefined then i.pos = int_point.pos
 | |
|                 )--end i loop
 | |
|             )--end undo
 | |
|         )--end if
 | |
|     )--end execute
 | |
| )--end script
 |