topologicpy 0.5.6__tar.gz → 0.5.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. {topologicpy-0.5.6/src/topologicpy.egg-info → topologicpy-0.5.8}/PKG-INFO +1 -1
  2. {topologicpy-0.5.6 → topologicpy-0.5.8}/pyproject.toml +1 -1
  3. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Dictionary.py +51 -0
  4. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Face.py +21 -14
  5. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Graph.py +355 -112
  6. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Topology.py +60 -16
  7. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/__init__.py +1 -1
  8. {topologicpy-0.5.6 → topologicpy-0.5.8/src/topologicpy.egg-info}/PKG-INFO +1 -1
  9. {topologicpy-0.5.6 → topologicpy-0.5.8}/LICENSE +0 -0
  10. {topologicpy-0.5.6 → topologicpy-0.5.8}/MANIFEST.in +0 -0
  11. {topologicpy-0.5.6 → topologicpy-0.5.8}/README.md +0 -0
  12. {topologicpy-0.5.6 → topologicpy-0.5.8}/setup.cfg +0 -0
  13. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Aperture.py +0 -0
  14. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Cell.py +0 -0
  15. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/CellComplex.py +0 -0
  16. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Cluster.py +0 -0
  17. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Color.py +0 -0
  18. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Context.py +0 -0
  19. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/DGL.py +0 -0
  20. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Edge.py +0 -0
  21. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/EnergyModel.py +0 -0
  22. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Grid.py +0 -0
  23. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Helper.py +0 -0
  24. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Honeybee.py +0 -0
  25. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Matrix.py +0 -0
  26. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Neo4j.py +0 -0
  27. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Plotly.py +0 -0
  28. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Polyskel.py +0 -0
  29. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Shell.py +0 -0
  30. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Speckle.py +0 -0
  31. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Vector.py +0 -0
  32. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Vertex.py +0 -0
  33. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/Wire.py +0 -0
  34. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/__init__.py +0 -0
  35. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKBO-6bdf205d.so.7.7.0 +0 -0
  36. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKBRep-2960a069.so.7.7.0 +0 -0
  37. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKBool-c44b74bd.so.7.7.0 +0 -0
  38. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKFillet-9a670ba0.so.7.7.0 +0 -0
  39. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKG2d-8f31849e.so.7.7.0 +0 -0
  40. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKG3d-4c6bce57.so.7.7.0 +0 -0
  41. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKGeomAlgo-26066fd9.so.7.7.0 +0 -0
  42. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKGeomBase-2116cabe.so.7.7.0 +0 -0
  43. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKMath-72572fa8.so.7.7.0 +0 -0
  44. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKMesh-2a060427.so.7.7.0 +0 -0
  45. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKOffset-6cab68ff.so.7.7.0 +0 -0
  46. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKPrim-eb1262b3.so.7.7.0 +0 -0
  47. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKShHealing-e67e5cc7.so.7.7.0 +0 -0
  48. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKTopAlgo-e4c96c33.so.7.7.0 +0 -0
  49. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libTKernel-fb7fe3b7.so.7.7.0 +0 -0
  50. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libgcc_s-32c1665e.so.1 +0 -0
  51. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/libstdc++-672d7b41.so.6.0.30 +0 -0
  52. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/topologic.cpython-310-x86_64-linux-gnu.so +0 -0
  53. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/topologic.cpython-311-x86_64-linux-gnu.so +0 -0
  54. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/topologic.cpython-38-x86_64-linux-gnu.so +0 -0
  55. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic/topologic.cpython-39-x86_64-linux-gnu.so +0 -0
  56. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKBO-6bdf205d.so.7.7.0 +0 -0
  57. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKBRep-2960a069.so.7.7.0 +0 -0
  58. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKBool-c44b74bd.so.7.7.0 +0 -0
  59. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKFillet-9a670ba0.so.7.7.0 +0 -0
  60. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKG2d-8f31849e.so.7.7.0 +0 -0
  61. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKG3d-4c6bce57.so.7.7.0 +0 -0
  62. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKGeomAlgo-26066fd9.so.7.7.0 +0 -0
  63. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKGeomBase-2116cabe.so.7.7.0 +0 -0
  64. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKMath-72572fa8.so.7.7.0 +0 -0
  65. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKMesh-2a060427.so.7.7.0 +0 -0
  66. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKOffset-6cab68ff.so.7.7.0 +0 -0
  67. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKPrim-eb1262b3.so.7.7.0 +0 -0
  68. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKShHealing-e67e5cc7.so.7.7.0 +0 -0
  69. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKTopAlgo-e4c96c33.so.7.7.0 +0 -0
  70. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libTKernel-fb7fe3b7.so.7.7.0 +0 -0
  71. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libgcc_s-32c1665e.so.1 +0 -0
  72. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/linux/topologic.libs/libstdc++-672d7b41.so.6.0.30 +0 -0
  73. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/macos/topologic/__init__.py +0 -0
  74. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKBO-f6b191de.dll +0 -0
  75. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKBRep-e56a600e.dll +0 -0
  76. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKBool-7b8d47ae.dll +0 -0
  77. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKFillet-0ddbf0a8.dll +0 -0
  78. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKG2d-2e2dee3d.dll +0 -0
  79. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKG3d-6674513d.dll +0 -0
  80. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKGeomAlgo-d240e370.dll +0 -0
  81. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKGeomBase-df87aba5.dll +0 -0
  82. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKMath-45bd625a.dll +0 -0
  83. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKMesh-d6e826b1.dll +0 -0
  84. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKOffset-79b9cc94.dll +0 -0
  85. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKPrim-aa430a86.dll +0 -0
  86. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKShHealing-bb48be89.dll +0 -0
  87. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKTopAlgo-7d0d1e22.dll +0 -0
  88. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/TKernel-08c8cfbb.dll +0 -0
  89. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/__init__.py +0 -0
  90. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/topologic.cp310-win_amd64.pyd +0 -0
  91. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/topologic.cp311-win_amd64.pyd +0 -0
  92. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/topologic.cp38-win_amd64.pyd +0 -0
  93. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy/bin/windows/topologic/topologic.cp39-win_amd64.pyd +0 -0
  94. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy.egg-info/SOURCES.txt +0 -0
  95. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy.egg-info/dependency_links.txt +0 -0
  96. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy.egg-info/requires.txt +0 -0
  97. {topologicpy-0.5.6 → topologicpy-0.5.8}/src/topologicpy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: topologicpy
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: An Advanced Spatial Modelling and Analysis Software Library for Architecture, Engineering, and Construction.
5
5
  Author-email: Wassim Jabi <wassim.jabi@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/wassimj/TopologicPy
@@ -3,7 +3,7 @@ requires = ["setuptools>=61"]
3
3
  build-backend = "setuptools.build_meta"
4
4
  [project]
5
5
  name = "topologicpy"
6
- version = "0.5.6"
6
+ version = "0.5.8"
7
7
  authors = [
8
8
  { name="Wassim Jabi", email="wassim.jabi@gmail.com" },
9
9
  ]
@@ -415,6 +415,57 @@ class Dictionary(topologic.Dictionary):
415
415
  pythonDict[key]=("")
416
416
  return pythonDict
417
417
 
418
+ @staticmethod
419
+ def RemoveKey(dictionary, key):
420
+ """
421
+ Removes the key (and its associated value) from the input dictionary.
422
+
423
+ Parameters
424
+ ----------
425
+ dictionary : topologic.Dictionary or dict
426
+ The input dictionary.
427
+ key : string
428
+ The input key.
429
+
430
+ Returns
431
+ -------
432
+ topologic.Dictionary or dict
433
+ The input dictionary with the key/value removed from it.
434
+
435
+ """
436
+ def processPythonDictionary (dictionary, key):
437
+ values = []
438
+ keys = dictionary.keys()
439
+ new_dict = {}
440
+ for k in keys:
441
+ if not key.lower() == k.lower():
442
+ new_dict[key] = dictionary[key]
443
+ return new_dict
444
+
445
+ def processTopologicDictionary(dictionary, key):
446
+ keys = dictionary.Keys()
447
+ new_keys = []
448
+ new_values = []
449
+ for k in keys:
450
+ if not key.lower() == k.lower():
451
+ new_keys.append(k)
452
+ new_values.append(Dictionary.ValueAtKey(dictionary, k))
453
+ return Dictionary.ByKeysValues(new_keys, new_values)
454
+
455
+ if not isinstance(dictionary, topologic.Dictionary) and not isinstance(dictionary, dict):
456
+ print("Dictionary.RemoveKey - Error: The input dictionary parameter is not a valid topologic or python dictionary. Returning None.")
457
+ return None
458
+ if not isinstance(key, str):
459
+ print("Dictionary.RemoveKey - Error: The input key parameter is not a valid string. Returning None.")
460
+ return None
461
+
462
+ if isinstance(dictionary, dict):
463
+ return processPythonDictionary(dictionary, key)
464
+ elif isinstance(dictionary, topologic.Dictionary):
465
+ return processTopologicDictionary(dictionary, key)
466
+ else:
467
+ return None
468
+
418
469
  @staticmethod
419
470
  def SetValueAtKey(dictionary, key, value):
420
471
  """
@@ -1786,7 +1786,7 @@ class Face(Topology):
1786
1786
  return Face.ByWire(wire, tolerance=tolerance)
1787
1787
 
1788
1788
  @staticmethod
1789
- def Triangulate(face:topologic.Face, mode: str = "classic", meshSize: float = None, tolerance: float = 0.0001) -> list:
1789
+ def Triangulate(face:topologic.Face, mode: int = 0, meshSize: float = None, tolerance: float = 0.0001) -> list:
1790
1790
  """
1791
1791
  Triangulates the input face and returns a list of faces.
1792
1792
 
@@ -1796,10 +1796,18 @@ class Face(Topology):
1796
1796
  The input face.
1797
1797
  tolerance : float , optional
1798
1798
  The desired tolerance. The default is 0.0001.
1799
- mode : str , optional
1800
- The desired mode of meshing. Two options are available: "classic" and "mesh". They are case insensitive.
1801
- The "mesh" option uses the gmsh library.
1802
- WARNING: The "mesh" option can be very time consuming and can create very heavy geometry.
1799
+ mode : int , optional
1800
+ The desired mode of meshing algorithm. Several options are available:
1801
+ 0: Classic
1802
+ 1: MeshAdapt
1803
+ 3: Initial Mesh Only
1804
+ 5: Delaunay
1805
+ 6: Frontal-Delaunay
1806
+ 7: BAMG
1807
+ 8: Fontal-Delaunay for Quads
1808
+ 9: Packing of Parallelograms
1809
+ All options other than 0 (Classic) use the gmsh library. See https://gmsh.info/doc/texinfo/gmsh.html#Mesh-options
1810
+ WARNING: The options that use gmsh can be very time consuming and can create very heavy geometry.
1803
1811
  meshSize : float , optional
1804
1812
  The desired size of the mesh when using the "mesh" option. If set to None, it will be
1805
1813
  calculated automatically and set to 10% of the overall size of the face.
@@ -1810,14 +1818,11 @@ class Face(Topology):
1810
1818
  The list of triangles of the input face.
1811
1819
 
1812
1820
  """
1813
- from topologicpy.Vertex import Vertex
1814
1821
  from topologicpy.Wire import Wire
1815
- from topologicpy.Shell import Shell
1816
1822
  from topologicpy.Topology import Topology
1817
- from topologicpy.Dictionary import Dictionary
1818
1823
 
1819
1824
  # This function was contributed by Yidan Xue.
1820
- def generate_gmsh(face, meshSize = None, tolerance = 0.0001):
1825
+ def generate_gmsh(face, mode="mesh", meshSize = None, tolerance = 0.0001):
1821
1826
  """
1822
1827
  Creates a gmsh of triangular meshes from the input face.
1823
1828
 
@@ -1921,7 +1926,9 @@ class Face(Topology):
1921
1926
 
1922
1927
  gmsh.model.geo.addPlaneSurface([i+1 for i in range(current_wire_number)])
1923
1928
  gmsh.model.geo.synchronize()
1924
-
1929
+ if mode not in [1,3,5,6,7,8,9]:
1930
+ mode = 6
1931
+ gmsh.option.setNumber("Mesh.Algorithm", mode)
1925
1932
  gmsh.model.mesh.generate(2) # For a 2D mesh
1926
1933
  nodeTags, nodeCoords, nodeParams = gmsh.model.mesh.getNodes(-1, -1)
1927
1934
  elemTypes, elemTags, elemNodeTags = gmsh.model.mesh.getElements(-1, -1)
@@ -1955,9 +1962,7 @@ class Face(Topology):
1955
1962
  normal = Face.Normal(face)
1956
1963
  flatFace = Topology.Flatten(face, origin=origin, direction=normal)
1957
1964
 
1958
- if "mesh" in mode.lower():
1959
- shell_faces = generate_gmsh(flatFace, meshSize = meshSize, tolerance = tolerance)
1960
- else:
1965
+ if mode == 0:
1961
1966
  shell_faces = []
1962
1967
  for i in range(0,5,1):
1963
1968
  try:
@@ -1965,7 +1970,9 @@ class Face(Topology):
1965
1970
  break
1966
1971
  except:
1967
1972
  continue
1968
-
1973
+ else:
1974
+ shell_faces = generate_gmsh(flatFace, mode = mode, meshSize = meshSize, tolerance = tolerance)
1975
+
1969
1976
  if len(shell_faces) < 1:
1970
1977
  return []
1971
1978
  finalFaces = []