跳到主要内容
版本:v10.0

   除M3D库默认的读取器、渲染器、保存器外,M3D库还提供了大量的开放接口,供开发者根据需要进行自定义开发。深层次的开放接口支持开发者迅速构建属于自己的M3D库。

定义自己的读取器


扩展现有读取器

class MySvlxReader extends Reader.SvlxReader{
load(){
//读取新格式文件
}
}

定义新的读取器

      M3D支持开发者在现有Reader的基础上扩展功能,也支持定义自己的读取器,需要继承core中的Reader基类。

   自定义Reader中实现load()和getTopModel()接口:

   load:用来加载模型文件

   getTopModel:获取模型的顶级节点

示例代码如下:

class MyReader extends M3D.Reader{
load(){
//读取新格式文件
}
getTopModel(){
//获取模型的顶级节点的处理逻辑
}
}

  读取新格式文件时将NewReader 注册到M3D中:

//xxx代表你的模型文件格式
M3D.Loader.addReaderOption("xxx", MyReader);

定义自己的渲染器


扩展现有渲染器

class MySvlxRender extends Render.Render{
save(){
//读取新格式文件
}
}

定义新的渲染器

  M3D同样支持开发者定义自己的渲染器,需要继承core中的Render基类。自定义渲染器需要实现render(...para: any[])和drawPrimitive()接口。 //TODO 渲染需要继承的类? 跟Drawer的关系? 示例代码如下:

class MyRender extends M3D.Render{
render(...para: any[]){}
drawPrimitive(){}
}

定义自己的保存器


扩展现有保存器

class MySvlxWriter extends Writer.StlWriter{
save(){
//读取新格式文件
}
}

定义新的保存器

  M3D支持开发者在现有Writer的基础上扩展功能,也支持定义自己的保存器,需要继承core中的Writer基类。 需要实现save()方法,增加模型文件的相关保存逻辑。 示例代码如下:

class MyWriter extends M3D.Writer{
save(){
//读取新格式文件
}
}

  在保存新格式文件时将NewWriter 注册到M3D中:

//xxx代表你的模型文件格式
M3D.Loader.addWriterOption("xxx", MyWriter);