{"id":24331,"library":"pygel3d","title":"PyGEL 3D","description":"PyGEL 3D provides Python bindings for the GEL (Geometry Engine Library), offering tools for polygonal mesh based geometry processing, including mesh I/O, simplification, remeshing, and boolean operations. Current version is 0.6.1. Release cadence is irregular.","status":"active","version":"0.6.1","language":"python","source_language":"en","source_url":"https://github.com/janm31415/pygel3d","tags":["geometry","mesh","3D","processing","half-edge"],"install":[{"cmd":"pip install pygel3d","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Array and matrix operations for mesh data","package":"numpy","optional":false}],"imports":[{"note":"The original PyGEL library used 'pygel' as the package name; PyGEL 3D uses 'pygel3d'.","wrong":"from pygel import Mesh","symbol":"Mesh","correct":"from pygel3d import Mesh"},{"note":"Half-edge mesh structure. No common wrong import.","symbol":"hmesh","correct":"from pygel3d import hmesh"},{"note":"OpenGL display utility. No common wrong import.","symbol":"gl_display","correct":"from pygel3d import gl_display"},{"note":"Mesh simplification functions. No common wrong import.","symbol":"simplify","correct":"from pygel3d import simplify"}],"quickstart":{"code":"from pygel3d import Mesh, hmesh\n\n# Create a simple mesh (a box)\nbox_mesh = Mesh()\nbox_mesh.add_vertex([0,0,0])\nbox_mesh.add_vertex([1,0,0])\nbox_mesh.add_vertex([1,1,0])\nbox_mesh.add_vertex([0,1,0])\nbox_mesh.add_face([0,1,2,3])\n\n# Convert to half-edge mesh\nhm = hmesh.Manifold.from_mesh(box_mesh)\nprint(\"Number of faces:\", hm.num_faces())","lang":"python","description":"Creates a simple box mesh, converts to half-edge representation, and prints face count."},"warnings":[{"fix":"Replace 'import pygel' with 'import pygel3d' and update all submodule references accordingly.","message":"The import path changed from 'pygel' to 'pygel3d' starting with version 0.6.0. Old code using 'import pygel' will fail.","severity":"breaking","affected_versions":">=0.6.0"},{"fix":"Convert Mesh to half-edge mesh using hmesh.Manifold.from_mesh() before calling simplify functions.","message":"Mesh simplification functions expect a hmesh.HalfedgeMesh object, not a raw Mesh. Passing a Mesh will cause AttributeError.","severity":"gotcha","affected_versions":"all"},{"fix":"Use external visualization libraries (e.g., trimesh, polyscope) instead of gl_display.","message":"The 'gl_display' module relies on PyOpenGL and may be removed in future releases as the library moves to headless processing.","severity":"deprecated","affected_versions":"<=0.6.1"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install pygel3d: pip install pygel3d, and import as from pygel3d import ...","cause":"The package name changed from 'pygel' to 'pygel3d'.","error":"ModuleNotFoundError: No module named 'pygel'"},{"fix":"Use 'from pygel3d import Mesh' instead of 'import pygel3d' and then pygel3d.Mesh.","cause":"Forgot to import Mesh explicitly. Although pygel3d exposes Mesh, some submodules must be imported directly.","error":"AttributeError: module 'pygel3d' has no attribute 'Mesh'"},{"fix":"Convert Mesh to half-edge mesh: hm = hmesh.Manifold.from_mesh(mesh); print(hm.num_faces()).","cause":"num_faces() is a method of hmesh.HalfedgeMesh, not of Mesh.","error":"AttributeError: 'Mesh' object has no attribute 'num_faces'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}