"eof", "io", "lines",\r
"materials", "objects",\r
]\r
- def __init__(self, io):\r
- self.io=io\r
+ def __init__(self, ios):\r
+ self.ios=ios\r
self.eof=False\r
self.lines=0\r
\r
self.lines, len(self.materials), len(self.objects))\r
\r
def getline(self):\r
- line=self.io.readline()\r
+ line=self.ios.readline()\r
self.lines+=1\r
if line=="":\r
self.eof=True\r
return False\r
\r
\r
-def load(path):\r
- with open(path, 'rb') as io:\r
- loader=Loader(io)\r
- model=pymeshio.mqo.Model()\r
+def load_from_file(path):\r
+ with open(path, 'rb') as ios:\r
+ load(ios)\r
\r
- line=loader.getline()\r
- if line!="Metasequoia Document":\r
- print("invalid signature")\r
- return False\r
\r
- line=loader.getline()\r
- if line!="Format Text Ver 1.0":\r
- print("unknown version: %s" % line)\r
+def load(ios):\r
+ assert(isinstance(ios, io.IOBase))\r
+ loader=Loader(ios)\r
+ model=pymeshio.mqo.Model()\r
\r
- while True:\r
- line=loader.getline()\r
- if line==None:\r
- # eof\r
- break;\r
- if line=="":\r
- # empty line\r
- continue\r
+ line=loader.getline()\r
+ if line!="Metasequoia Document":\r
+ print("invalid signature")\r
+ return False\r
\r
- tokens=line.split()\r
- key=tokens[0]\r
- if key=="Eof":\r
- return model\r
- elif key=="Scene":\r
- if not loader.readChunk():\r
- return\r
- elif key=="Material":\r
- materials=loader.readMaterial()\r
- if not materials:\r
- return\r
- model.materials=materials\r
- elif key=="Object":\r
- firstQuote=line.find('"')\r
- secondQuote=line.find('"', firstQuote+1)\r
- obj=loader.readObject(line[firstQuote+1:secondQuote])\r
- if not obj:\r
- return\r
- model.objects.append(obj)\r
- elif key=="BackImage":\r
- if not loader.readChunk():\r
- return\r
- elif key=="IncludeXml":\r
- firstQuote=line.find('"')\r
- secondQuote=line.find('"', firstQuote+1)\r
- print("IncludeXml", line[firstQuote+1:secondQuote])\r
- else:\r
- print("unknown key: %s" % key)\r
- if not loader.readChunk():\r
- return\r
- # error not reach here\r
- raise ParseException("invalid eof")\r
+ line=loader.getline()\r
+ if line!="Format Text Ver 1.0":\r
+ print("unknown version: %s" % line)\r
+\r
+ while True:\r
+ line=loader.getline()\r
+ if line==None:\r
+ # eof\r
+ break;\r
+ if line=="":\r
+ # empty line\r
+ continue\r
+\r
+ tokens=line.split()\r
+ key=tokens[0]\r
+ if key=="Eof":\r
+ return model\r
+ elif key=="Scene":\r
+ if not loader.readChunk():\r
+ return\r
+ elif key=="Material":\r
+ materials=loader.readMaterial()\r
+ if not materials:\r
+ return\r
+ model.materials=materials\r
+ elif key=="Object":\r
+ firstQuote=line.find('"')\r
+ secondQuote=line.find('"', firstQuote+1)\r
+ obj=loader.readObject(line[firstQuote+1:secondQuote])\r
+ if not obj:\r
+ return\r
+ model.objects.append(obj)\r
+ elif key=="BackImage":\r
+ if not loader.readChunk():\r
+ return\r
+ elif key=="IncludeXml":\r
+ firstQuote=line.find('"')\r
+ secondQuote=line.find('"', firstQuote+1)\r
+ print("IncludeXml", line[firstQuote+1:secondQuote])\r
+ else:\r
+ print("unknown key: %s" % key)\r
+ if not loader.readChunk():\r
+ return\r
+ # error not reach here\r
+ raise ParseException("invalid eof")\r
\r