我们来创建一个 box,然后导出其顶点坐标(xyz)。
3dmax右边,选择 [Create] => [Object Type] => [Box],在场景中拉一个 box 出来。
然后设置其大小,选择场景中的 box,选 [Modify] => [Parameters],将 Length / Width / Height 都设置为 20.0。
最后选择 Select and Move,然后将 box 的位置设置到 (0, 0, 0)。
最后效果如下:
===========================================
好啦,上面只是基础操作,下面进入正题,导出顶点xyz。
--------------------- export_verts.ms ----------------------
filename = getSaveFileName types:"Data(*.dat)|*.dat|All|*.*|"
if filename != undefined then
(
convertToMesh $
fp = openFile filename mode:"wt"
vertex_num = getNumVerts $
for i = 1 to vertex_num do
(
v = getVert $ i
format "#%: %, %, %\n" i v[1] v[2] v[3] to:fp
)
close fp
)
--------------------------------------------------------------
maxscript 很简单,只是一些语法习惯不同,比如:函数的参数都是"空格"隔开 等等
上面的代码没啥特别要说的,就是把“当前选中对象”的所有顶点xyz输出。
getSaveFileName一看就知道对应 win32 哪个 api。
$ 表示当前选中的 object;openFile 用来写 text file。如果写 binary file,请用 fopen, writeLong 等函数。
我们获得的数据如下:
#1: -10.0, -10.0, 0.0
#2: 10.0, -10.0, 0.0
#3: -10.0, 10.0, 0.0
#4: 10.0, 10.0, 0.0
#5: -10.0, -10.0, 20.0
#6: 10.0, -10.0, 20.0
#7: -10.0, 10.0, 20.0
#8: 10.0, 10.0, 20.0
是不是很简单哈。
文件操作的函数,参考 MAXScript Reference 中的:
[MAXScript Tools and Interaction with 3dx Max]
==> [File Access]
==> [Text and Binary File Input and Output]
[MAXScript Language Reference]
==> [Values]
==> [Stream Values]
==> [FileStream Values]
[MAXScript Tools and Interaction with 3ds Max]
==> [File Access]
==> [External Files Access]
==> [Standard Open and Save File Dialogs]
评论