geomeppy icon indicating copy to clipboard operation
geomeppy copied to clipboard

'ValueError: not enough values to unpack' in using 'geomeppy' to view an IDF 3D model

Open nimafo opened this issue 4 years ago • 2 comments

I am using geomeppy to view a 3D IDF model in python. but I get the following error when running the idf.view_model() command:

ValueError: not enough values to unpack (expected 5, got 0)can anyone help me with this issue?


Code:

    import geomeppy
    IDF.setiddname('C:\EnergyPlusV9-1-0\Energy+.idd')
    idf = IDF("C:\EnergyPlusV9-1-0\ExampleFiles\Minimal.idf")
    idf.epw = "USA_CO_Golden-NREL.724666_TMY3.epw"
    idf.add_block(
            name='Boring hut',
            coordinates=[(10,0),(10,10),(0,10),(0,0)],
            height=3.5)
    idf.set_default_constructions()
    idf.intersect_match()
    idf.set_wwr(0.6)
    idf.to_obj('boring_hut.obj')
    idf.view_model()

complete error details:

    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
        339                 pass
        340             else:
    --> 341                 return printer(obj)
        342             # Finally look for special method names
        343             method = get_real_method(obj, self.print_method)
    
    C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\pylabtools.py in <lambda>(fig)
        242 
        243     if 'png' in formats:
    --> 244         png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
        245     if 'retina' in formats or 'png2x' in formats:
        246         png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))
    
    C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs)
        126 
        127     bytes_io = BytesIO()
    --> 128     fig.canvas.print_figure(bytes_io, **kw)
        129     data = bytes_io.getvalue()
        130     if fmt == 'svg':
    
    C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)
       2191                            else suppress())
       2192                     with ctx:
    -> 2193                         self.figure.draw(renderer)
       2194 
       2195                     bbox_inches = self.figure.get_tightbbox(
    
    C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
         39                 renderer.start_filter()
         40 
    ---> 41             return draw(artist, renderer, *args, **kwargs)
         42         finally:
         43             if artist.get_agg_filter() is not None:
    
    C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\figure.py in draw(self, renderer)
       1862             self.patch.draw(renderer)
       1863             mimage._draw_list_compositing_images(
    -> 1864                 renderer, self, artists, self.suppressComposite)
       1865 
       1866             renderer.close_group('figure')
    
    C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
        129     if not_composite or not has_images:
        130         for a in artists:
    --> 131             a.draw(renderer)
        132     else:
        133         # Composite any adjacent images together
    
    C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
         39                 renderer.start_filter()
         40 
    ---> 41             return draw(artist, renderer, *args, **kwargs)
         42         finally:
         43             if artist.get_agg_filter() is not None:
    
    C:\ProgramData\Anaconda3\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py in draw(self, renderer)
        445                 sorted(self.collections,
        446                        key=lambda col: col.do_3d_projection(renderer),
    --> 447                        reverse=True)):
        448             col.zorder = zorder_offset + i
        449         for i, patch in enumerate(
    
    C:\ProgramData\Anaconda3\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py in <lambda>(col)
        444         for i, col in enumerate(
        445                 sorted(self.collections,
    --> 446                        key=lambda col: col.do_3d_projection(renderer),
        447                        reverse=True)):
        448             col.zorder = zorder_offset + i
    
    C:\ProgramData\Anaconda3\lib\site-packages\mpl_toolkits\mplot3d\art3d.py in do_3d_projection(self, renderer)
        690 
        691         zzs, segments_2d, self._facecolors2d, self._edgecolors2d, idxs = \
    --> 692             zip(*z_segments_2d)
        693 
        694         if self._codes3d is not None:
    
    ValueError: not enough values to unpack (expected 5, got 0)
    
    <Figure size 432x288 with 1 Axes>

nimafo avatar Jan 18 '21 11:01 nimafo

@nimafo, I had the same issue; make sure you install matplotlib==3.2.1

samuelduchesne avatar Apr 08 '21 00:04 samuelduchesne

@nimafo sorry for the incredibly late reply. Did @samuelduchesne 's suggestion resolve your problem?

jamiebull1 avatar Nov 11 '22 12:11 jamiebull1