Notifications
Clear all
[Closed] .slice.slice_plane.transform by round objects?
Aug 14, 2013 5:50 pm
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
Aug 14, 2013 5:50 pm
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]