macroScript ExportDialog
category:"DWA Tools"
internalCategory:"Export Dialog"
-- Текст кнопки.
buttonText:"DWA Export"
-- Надпись появляющаяся при наведении мыши на кнопку.
tooltip:"Экспорт модели"
-- Иконка отображаемая на кнопке.
Icon:#("FreeS",3)
(
-- Имя и размеры создаваемого окна.
ExportWin = newRolloutFloater "Export" 400 140;
addRollout roll_expmesh ExportWin ;
)
rollout roll_expmesh "Export Mesh" width:382 height:99
(
button btn_exp "Export" pos:[157,37] width:51 height:21 --Кнопка экспорта
on btn_exp pressed do
(
--здесь происходит сам экспорт объекта и запись в файл
text=(GetDir #Export)+"\\name.sm"
--Здесь открывается окно для выбора пути к сохранению файла
s=GetSaveFileName types:"Mesh file (*.sm)|*.sm|All files (*.*)|*.*"
if s!=undefined do
(
text=s
)
--Проверяем выбран ли путь
if text!=undefined do
(
--Создаем файл
file01=fopen text "wb"
--выделим всё
max select all
--запишем количество мешей в файл
WriteShort file01 selection.count
--цикл по всем обьектам
for zi=1 to selection.count do
(
--смотрим есть ли сглаживание
local smooth=getFaceSmoothGroup selection[zi].mesh 1;
if smooth>0 then smooth=1;
--Находим количество вершин в объекте
local vnum=getNumVerts selection[zi].mesh
--Находим количество фейсов
local fnum=getNumFaces selection[zi].mesh
--Находим количество вершин текстур в объекте
local tnum=getNumTVerts selection[zi].mesh
--Находим количество нормалей
--local nnum=getNumNormals selection[zi].mesh
--И записываем все это в файл
WriteByte file01 smooth
WriteShort file01 vnum
WriteShort file01 tnum
WriteShort file01 fnum
--Записываем вершины объекта
for j=1 to vnum do
(
local p01=[0,0,0]
p01=GetVert selection[zi].mesh j
-- ЗДЕСЬ НУЖНО ПРИМЕНИТЬ К ВЕРШИНАМ ПРЕОБРАЗОВАНИЯ
---
WriteFloat file01 p01.x
WriteFloat file01 p01.y
WriteFloat file01 p01.z
)
--Записываем текстурные координаты
for j=1 to tnum do
(
local p01=[0,0,0]
p01=GetTVert selection[zi].mesh j
WriteFloat file01 p01.x
WriteFloat file01 p01.y
--WriteFloat file01 p01.z
)
-- запись номеров вершин для всех полигонов
for j=1 to fnum do
(
local p01=[0,0,0]
p01=GetFace selection[zi].mesh j
x01=(p01.x-1) as integer
y01=(p01.y-1) as integer
z01=(p01.z-1) as integer
WriteShort file01 x01
WriteShort file01 y01
WriteShort file01 z01
)
-- запись номеров текстурных координат для всех полигонов
for j=1 to fnum do
(
local p01=[0,0,0]
p01=GetTVFace selection[zi].mesh j
x01=(p01.x-1) as integer
y01=(p01.y-1) as integer
z01=(p01.z-1) as integer
WriteShort file01 x01
WriteShort file01 y01
WriteShort file01 z01
)
--сохраним имя файла текстуры
pachff=filenameFromPath(selection[zi].material.diffuseMap.Bitmap.filename)
WriteString file01 pachff;
)
fclose file01
)
)
)