Python hyperfile write/read float32



  • On 05/06/2016 at 07:49, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R17 
    Platform:   Windows  ;   
    Language(s) :

    ---------

    When writing out and reading floats I noticed a difference between write/read float32 and write/read float64.
    I have included code using the 32 variant. The double precision seems to work OK, but I would expect that while less precise, the 32 bit variant to "closely" match the expected value.

    Write/Read Float32
    writing -> version: 0.4
    reading -> version: -1.58818683921e-23

    Write/Read Float64
    writing -> version: 0.4
    reading -> version: 0.4

    def WritePreset(self) :
          testversion = 0.4
          folder, filename = os.path.split(__file__)
          fn = os.path.join(folder, 'preset')
          hf = c4d.storage.HyperFile()
          if hf.Open(ident=12345, filename=fn, mode=c4d.FILEOPEN_WRITE, error_dialog=c4d.FILEDIALOG_NONE) :
              print 'writing -> version:', testversion
              if not hf.WriteFloat32(testversion) :
                  print 'Failed writing'
              hf.Close()
          else:
              print 'Failed open hyperfile', hf.GetError()
          return
     
      def ReadPreset(self) :
          folder, filename = os.path.split(__file__)
          fn = os.path.join(folder, 'preset')
          hf = c4d.storage.HyperFile()
          if os.path.isfile(fn) and hf.Open(ident=12345, filename=fn, mode=c4d.FILEOPEN_READ, error_dialog=c4d.FILEDIALOG_NONE) :
              ver = hf.ReadFloat32()
              print 'reading -> version:', ver
              hf.Close()



  • On 13/06/2016 at 06:34, xxxxxxxx wrote:

    Hi,

    you have found a bug in the argument parsing of WriteFloat32(). Sorry!
    The only workaround I have for now is to use WriteFloat64() instead. The bug will be fixed in one of the next releases.



  • On 15/06/2016 at 12:19, xxxxxxxx wrote:

    Thank you Andreas


Log in to reply