New Addon: Import Autodesk .max #22
@ -168,9 +168,8 @@ DIFSECT = 0xFFFFFFFC # (-4) denotes a DIFAT sector in a FAT
|
|||||||
FATSECT = 0xFFFFFFFD # (-3) denotes a FAT sector in a FAT
|
FATSECT = 0xFFFFFFFD # (-3) denotes a FAT sector in a FAT
|
||||||
ENDOFCHAIN = 0xFFFFFFFE # (-2) end of a virtual stream chain
|
ENDOFCHAIN = 0xFFFFFFFE # (-2) end of a virtual stream chain
|
||||||
FREESECT = 0xFFFFFFFF # (-1) unallocated sector
|
FREESECT = 0xFFFFFFFF # (-1) unallocated sector
|
||||||
|
MAX_STREAM = 2 # element is a stream object
|
||||||
STGTY_STREAM = 2 # element is a stream object
|
ROOT_STORE = 5 # element is a root storage
|
||||||
STGTY_ROOT = 5 # element is a root storage
|
|
||||||
|
|
||||||
TYP_NAME = 0x0962
|
TYP_NAME = 0x0962
|
||||||
INVALID_NAME = re.compile('^[0-9].*')
|
INVALID_NAME = re.compile('^[0-9].*')
|
||||||
@ -372,9 +371,9 @@ class MaxFileDirEntry:
|
|||||||
self.size = self.sizeLow + (int(self.sizeHigh) << 32)
|
self.size = self.sizeLow + (int(self.sizeHigh) << 32)
|
||||||
self.clsid = _clsid(clsid)
|
self.clsid = _clsid(clsid)
|
||||||
self.is_minifat = False
|
self.is_minifat = False
|
||||||
if self.entry_type in (STGTY_ROOT, STGTY_STREAM) and self.size > 0:
|
if self.entry_type in (ROOT_STORE, MAX_STREAM) and self.size > 0:
|
||||||
if self.size < maxfile.minisectorcutoff \
|
if self.size < maxfile.minisectorcutoff \
|
||||||
and self.entry_type == STGTY_STREAM: # only streams can be in MiniFAT
|
and self.entry_type == MAX_STREAM: # only streams can be in MiniFAT
|
||||||
self.is_minifat = True
|
self.is_minifat = True
|
||||||
else:
|
else:
|
||||||
self.is_minifat = False
|
self.is_minifat = False
|
||||||
@ -384,7 +383,7 @@ class MaxFileDirEntry:
|
|||||||
def build_sect_chain(self, maxfile):
|
def build_sect_chain(self, maxfile):
|
||||||
if self.sect_chain:
|
if self.sect_chain:
|
||||||
return
|
return
|
||||||
if self.entry_type not in (STGTY_ROOT, STGTY_STREAM) or self.size == 0:
|
if self.entry_type not in (ROOT_STORE, MAX_STREAM) or self.size == 0:
|
||||||
return
|
return
|
||||||
self.sect_chain = list()
|
self.sect_chain = list()
|
||||||
if self.is_minifat and not maxfile.minifat:
|
if self.is_minifat and not maxfile.minifat:
|
||||||
@ -656,27 +655,6 @@ class ImportMaxFile:
|
|||||||
entry = self.direntries[sid]
|
entry = self.direntries[sid]
|
||||||
return self._open(entry.isectStart, entry.size)
|
return self._open(entry.isectStart, entry.size)
|
||||||
|
|
||||||
def get_type(self, filename):
|
|
||||||
try:
|
|
||||||
sid = self._find(filename)
|
|
||||||
entry = self.direntries[sid]
|
|
||||||
return entry.entry_type
|
|
||||||
except:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def getclsid(self, filename):
|
|
||||||
sid = self._find(filename)
|
|
||||||
entry = self.direntries[sid]
|
|
||||||
return entry.clsid
|
|
||||||
|
|
||||||
def get_size(self, filename):
|
|
||||||
sid = self._find(filename)
|
|
||||||
entry = self.direntries[sid]
|
|
||||||
return entry.size
|
|
||||||
|
|
||||||
def get_rootentry_name(self):
|
|
||||||
return self.root.name
|
|
||||||
|
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# DATA PROCESSING #
|
# DATA PROCESSING #
|
||||||
|
Reference in New Issue
Block a user