Notifications
Clear all

[Closed] .slice.slice_plane.transform by round objects?

Hello everybody,

I wrote here a script with that I can shatter Objects in quad pieces. It works by objects with cubic forms good, but when I try it by, for example a sphere, it doesn’t work. Then I get the error message:


 Unknown property: "slice_plane" in false
 

Here is my script:


 clearlistener()
 orgObj = selection[1]
 
 if (orgObj != undefined) then (
 	obj = copy orgObj
 	objDim = obj.max - obj.min
 	PlaneDistance = 6
 
 	planeCountX = (objDim.x / PlaneDistance) as integer
 	planeCountY = (objDim.y / PlaneDistance) as integer
 	planeCountZ = (objDim.z / PlaneDistance) as integer
 
 	planeSumX = for x = 1 to planeCountX - 1 collect (matrix3 [0,0,-1] [0,1,0] [1,0,0] [(objDim.x / planeCountX * x + obj.min.x - obj.pos.x), (obj.max.y + obj.min.y) / 2, (obj.max.z + obj.min.z) / 2])
 	planeSumY = for y = 1 to planeCountY - 1 collect (matrix3 [1,0,0] [0,0,1] [0,-1,0] [(obj.max.x + obj.min.x) / 2, (objDim.y / planeCountY * y + obj.min.y - obj.pos.y), (obj.max.z + obj.min.z) / 2])
 	planeSumZ = for z = 1 to planeCountZ - 1 collect (matrix3 [0,1,0] [-1,0,0] [0,0,1] [(obj.max.x + obj.min.x) / 2, (obj.max.y + obj.min.y) / 2, (objDim.z / planeCountZ * z + obj.min.z - obj.pos.z)])
 
 	objArray1 = #()	
 	for a = 1 to planeSumX.count do (
 		ob1 = copy obj
 		addModifier ob1 (sliceModifier slice_type:2)
 		ob1.slice.slice_plane.transform = planeSumX[a]
 		addModifier ob1 (sliceModifier slice_type:3)
 		if (a-1 > 0) do (ob1.slice.slice_plane.transform = planeSumX[a-1])
 		addModifier ob1 (cap_holes())
 		convertToMesh ob1
 		join objArray1 #(ob1)
 		)
 
 	addModifier obj (sliceModifier slice_type:3)
 	obj.slice.slice_plane.transform = planeSumX[planeSumX.count]
 	addModifier obj (cap_holes())
 	convertToMesh obj
 	join objArray1 #(obj)
 
 	objArray2 = #()		
 	for b = 1 to objArray1.count do (
 		for c = 1 to planeSumY.count do (
 			ob2 = copy objArray1[b]
 			addModifier ob2 (sliceModifier slice_type:3)
 			if (c+1 <= planeSumY.count) do (ob2.slice.slice_plane.transform = planeSumY[c+1])
 			addModifier ob2 (sliceModifier slice_type:2)
 			ob2.slice.slice_plane.transform = planeSumY[c]
 			addModifier ob2 (cap_holes())
 			convertToMesh ob2
 			join objArray2 #(ob2)
 			)
 		addModifier objArray1[b] (sliceModifier slice_type:3)
 		objArray1[b].slice.slice_plane.transform = planeSumY[1]
 		addModifier objArray1[b] (cap_holes())
 		convertToMesh objArray1[b]
 		join objArray2 #(objArray1[b])
 		)	
 
 	--objArray3 = #()		
 	for i = 1 to objArray2.count do (
 		for j = 1 to planeSumZ.count do (
 			ob3 = copy objArray2[i]
 			addModifier ob3 (sliceModifier slice_type:2)
 			ob3.slice.slice_plane.transform = planeSumZ[j]
 			addModifier ob3 (sliceModifier slice_type:3)
 			if (j-1 > 0) do (ob3.slice.slice_plane.transform = planeSumZ[j-1])
 			addModifier ob3 (cap_holes())
 			convertToMesh ob3
 			ob3.pivot = ob3.center
 			--join objArray3 #(ob3)
 			)
 			addModifier objArray2[i] (sliceModifier slice_type:3)
 			objArray2[i].slice.slice_plane.transform = planeSumZ[planeSumZ.count]
 			addModifier objArray2[i] (cap_holes())
 			convertToMesh objArray2[i]
 			objArray2[i].pivot = objArray2[i].center
 			--join objArray3 #(objArray2[i])
 		)
 		
 	objArray1 = #()
 	objArray2 = #()
 	--objArray3 = #()
 	enableSceneRedraw()
 	CompleteRedraw()
 	gc()
 	) else (
 		messageBox "Please select one object first!"
 		)
 

You have any idea what is wrong by my script?

Thanks you for your help already!

jb_

1 Reply

O.k. I don’t need to understand this… When I rename the slice plane it works:


ob1 = copy obj
addModifier ob1 (sliceModifier name:"cutPlane1" slice_type:2)
ob1.cutPlane1.slice_plane.transform = planeSumX[a]