You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Nice little tool; saved me some work but this bug took some time to figure out...
The write-method does not work for python3. The problem is handling of writing bytes in Python3 has changed.
I am not sure if I was doing something wrong but I was trying to push a fix but it did not work. I am very new to git so if you can help me push the change I would appreciate it. It is probably something simple I have forgotten. What i did:
git clone https://github.com/dimatura/binvox-rw-py.git
# did my changes
git add binvox_rw.py
git commit -m "Issues with writting with Python3. Fixed by using import struct; struct.pack('B',byte_value)"
git push origin HEAD:master
remote: Permission to dimatura/binvox-rw-py.git denied to pclausen.
fatal: unable to access 'https://github.com/dimatura/binvox-rw-py.git/': The requested URL returned error: 403
Thanks. Below the patch.
diff --git a/binvox_rw.py b/binvox_rw.py
index 704fc1f..6151a1e 100644
--- a/binvox_rw.py
+++ b/binvox_rw.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
# Copyright (C) 2012 Daniel Maturana
# This file is part of binvox-rw-py.
#
@@ -62,6 +63,7 @@ True
"""
import numpy as np
+import struct
class Voxels(object):
""" Holds a binvox model.
@@ -228,6 +230,16 @@ def sparse_to_dense(voxel_data, dims, dtype=np.bool):
#TODO ensure this is right when dims are not all same
#"""
#return x*(dims[1]*dims[2]) + z*dims[1] + y
+
+def bwrite(fp,s):
+ fp.write(s.encode())
+
+
+def write_pair(fp,state, ctr):
+ fp.write(struct.pack('B',state))
+ fp.write(struct.pack('B',ctr))
+
+
def write(voxel_model, fp):
""" Write binary binvox format.
@@ -244,11 +256,11 @@ def write(voxel_model, fp):
else:
dense_voxel_data = voxel_model.data
- fp.write('#binvox 1\n')
- fp.write('dim '+' '.join(map(str, voxel_model.dims))+'\n')
- fp.write('translate '+' '.join(map(str, voxel_model.translate))+'\n')
- fp.write('scale '+str(voxel_model.scale)+'\n')
- fp.write('data\n')
+ bwrite(fp,'#binvox 1\n')
+ bwrite(fp,'dim '+' '.join(map(str, voxel_model.dims))+'\n')
+ bwrite(fp,'translate '+' '.join(map(str, voxel_model.translate))+'\n')
+ bwrite(fp,'scale '+str(voxel_model.scale)+'\n')
+ bwrite(fp,'data\n')
if not voxel_model.axis_order in ('xzy', 'xyz'):
raise ValueError('Unsupported voxel model axis order')
@@ -265,19 +277,16 @@ def write(voxel_model, fp):
ctr += 1
# if ctr hits max, dump
if ctr==255:
- fp.write(chr(state))
- fp.write(chr(ctr))
+ write_pair(fp, state, ctr)
ctr = 0
else:
# if switch state, dump
- fp.write(chr(state))
- fp.write(chr(ctr))
+ write_pair(fp, state, ctr)
state = c
ctr = 1
# flush out remainders
if ctr > 0:
- fp.write(chr(state))
- fp.write(chr(ctr))
+ write_pair(fp, state, ctr)
if __name__ == '__main__':
import doctest
The text was updated successfully, but these errors were encountered:
Nice little tool; saved me some work but this bug took some time to figure out...
The write-method does not work for python3. The problem is handling of writing bytes in Python3 has changed.
I am not sure if I was doing something wrong but I was trying to push a fix but it did not work. I am very new to git so if you can help me push the change I would appreciate it. It is probably something simple I have forgotten. What i did:
Thanks. Below the patch.
The text was updated successfully, but these errors were encountered: