文章名:How To ... Move Objects to a Surface
=====================================
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
========================================================
看了一个小时,没看懂,划红线的是不明白的地方,ray 什么意思一直搞不明白,google翻译成射线,很别扭,不知道专业的怎么称呼
还有undo 的用法,帮助文档也没看明白
文档中有一句话是这么解释undo在本段代码中的作用: In case a valid object has been picked, enable an undo context ,没读懂,也请指点一下