示例#1
0
 def saveTdosToLibrary(self):
     fileInfo = SaveFileNamesStructure()
     suggestedName = ""
     outputFile = TextFile()
     i = 0
     tdo = KfObject3D()
     
     suggestedName = udomain.domain.defaultTdoLibraryFileName
     if not usupport.getFileSaveInfo(usupport.kFileTypeTdo, usupport.kDontAskForFileName, suggestedName, fileInfo):
         return
     AssignFile(outputFile, fileInfo.tempFile)
     try:
         # v1.5
         usupport.setDecimalSeparator()
         Rewrite(outputFile)
         usupport.startFileSave(fileInfo)
         if self.tdos.Items.Count > 0:
             for i in range(0, self.tdos.Items.Count):
                 tdo = UNRESOLVED.TObject(self.tdos.Items.Objects[i]) as utdo.KfObject3D
                 if tdo == None:
                     continue
                 tdo.writeToFileStream(outputFile, utdo.kInTdoLibrary)
         fileInfo.writingWasSuccessful = true
     finally:
         CloseFile(outputFile)
         usupport.cleanUpAfterFileSave(fileInfo)
         self.setLibraryChanged(false)
示例#2
0
 def reconcileFileWithTdoLibrary(self, plantFileName, tdoLibrary):
     result = 0
     plantFileTdos = TListCollection()
     libraryFileTdos = TListCollection()
     plantFile = TextFile()
     tdoFile = TextFile()
     outputTdoFile = TextFile()
     i = 0
     j = 0
     tdo = KfObject3d()
     plantFileTdo = KfObject3d()
     libraryTdo = KfObject3d()
     matchInLibrary = false
     aLine = ""
     fileInfo = SaveFileNamesStructure()
     
     result = 0
     if not FileExists(plantFileName):
         # check that files exist
         plantFileName = usupport.getFileOpenInfo(usupport.kFileTypePlant, plantFileName, "Choose a plant file")
         if plantFileName == "":
             return result
     if not FileExists(tdoLibrary):
         tdoLibrary = usupport.getFileOpenInfo(usupport.kFileTypeTdo, tdoLibrary, "Choose a 3D object library (tdo) file")
         if tdoLibrary == "":
             return result
     plantFileTdos = ucollect.TListCollection().Create()
     libraryFileTdos = ucollect.TListCollection().Create()
     try:
         ucursor.cursor_startWait()
         # read tdos from plants
         AssignFile(plantFile, plantFileName)
         try:
             # v1.5
             usupport.setDecimalSeparator()
             Reset(plantFile)
             while not UNRESOLVED.eof(plantFile):
                 UNRESOLVED.readln(plantFile, aLine)
                 if UNRESOLVED.pos(utdo.kStartTdoString, aLine) > 0:
                     tdo = utdo.KfObject3D().create()
                     tdo.readFromFileStream(plantFile, utdo.kInTdoLibrary)
                     plantFileTdos.Add(tdo)
         finally:
             CloseFile(plantFile)
         # read tdos from library
         AssignFile(tdoFile, tdoLibrary)
         try:
             # v1.5
             usupport.setDecimalSeparator()
             Reset(tdoFile)
             while not UNRESOLVED.eof(tdoFile):
                 tdo = utdo.KfObject3D().create()
                 tdo.readFromFileStream(tdoFile, utdo.kInTdoLibrary)
                 libraryFileTdos.Add(tdo)
         finally:
             CloseFile(tdoFile)
         if plantFileTdos.Count > 0:
             for i in range(0, plantFileTdos.Count):
                 # add plant tdos not in library list to library list
                 plantFileTdo = utdo.KfObject3D(plantFileTdos.Items[i])
                 matchInLibrary = false
                 if libraryFileTdos.Count > 0:
                     for j in range(0, libraryFileTdos.Count):
                         libraryTdo = utdo.KfObject3D(libraryFileTdos.Items[j])
                         if plantFileTdo.isSameAs(libraryTdo):
                             matchInLibrary = true
                             break
                 if not matchInLibrary:
                     tdo = utdo.KfObject3D().create()
                     tdo.copyFrom(plantFileTdo)
                     libraryFileTdos.Add(tdo)
                     result += 1
         if result > 0:
             if usupport.getFileSaveInfo(usupport.kFileTypeTdo, usupport.kDontAskForFileName, tdoLibrary, fileInfo):
                 # if any tdos in plant file but not in library, rewrite library
                 AssignFile(outputTdoFile, fileInfo.tempFile)
                 try:
                     # v1.5
                     usupport.setDecimalSeparator()
                     Rewrite(outputTdoFile)
                     usupport.startFileSave(fileInfo)
                     if libraryFileTdos.Count > 0:
                         for i in range(0, libraryFileTdos.Count):
                             tdo = UNRESOLVED.TObject(libraryFileTdos.Items[i]) as utdo.KfObject3D
                             if tdo == None:
                                 continue
                             tdo.writeToFileStream(outputTdoFile, utdo.kInTdoLibrary)
                     fileInfo.writingWasSuccessful = true
                 finally:
                     CloseFile(outputTdoFile)
                     usupport.cleanUpAfterFileSave(fileInfo)
     finally:
         plantFileTdos.free
         libraryFileTdos.free
         ucursor.cursor_stopWait()
     return result