topologicpy 0.8.42__py3-none-any.whl → 0.8.43__py3-none-any.whl
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.
- topologicpy/Dictionary.py +116 -41
- topologicpy/Topology.py +88 -15
- topologicpy/version.py +1 -1
- {topologicpy-0.8.42.dist-info → topologicpy-0.8.43.dist-info}/METADATA +1 -1
- {topologicpy-0.8.42.dist-info → topologicpy-0.8.43.dist-info}/RECORD +8 -8
- {topologicpy-0.8.42.dist-info → topologicpy-0.8.43.dist-info}/WHEEL +0 -0
- {topologicpy-0.8.42.dist-info → topologicpy-0.8.43.dist-info}/licenses/LICENSE +0 -0
- {topologicpy-0.8.42.dist-info → topologicpy-0.8.43.dist-info}/top_level.txt +0 -0
topologicpy/Dictionary.py
CHANGED
@@ -75,6 +75,7 @@ class Dictionary():
|
|
75
75
|
The adjacency dictionary.
|
76
76
|
"""
|
77
77
|
from topologicpy.Edge import Edge
|
78
|
+
from topologicpy.Face import Face
|
78
79
|
from topologicpy.Dictionary import Dictionary
|
79
80
|
from topologicpy.Topology import Topology
|
80
81
|
from topologicpy.Graph import Graph
|
@@ -116,7 +117,7 @@ class Dictionary():
|
|
116
117
|
if d == None:
|
117
118
|
d = Dictionary.ByKeyValue(labelKey, value)
|
118
119
|
else:
|
119
|
-
d = Dictionary.SetValueAtKey(d, labelKey, value)
|
120
|
+
d = Dictionary.SetValueAtKey(d, labelKey, value, silent=silent)
|
120
121
|
subtopology = Topology.SetDictionary(subtopology, d)
|
121
122
|
labels.append(value)
|
122
123
|
all_subtopologies = Helper.Sort(all_subtopologies, labels)
|
@@ -129,7 +130,7 @@ class Dictionary():
|
|
129
130
|
adjacent_topologies = Topology.AdjacentTopologies(subtopology, hostTopology=topology, topologyType=subTopologyType)
|
130
131
|
temp_list = []
|
131
132
|
for adj_topology in adjacent_topologies:
|
132
|
-
adj_label = Dictionary.ValueAtKey(Topology.Dictionary(adj_topology), labelKey)
|
133
|
+
adj_label = Dictionary.ValueAtKey(Topology.Dictionary(adj_topology), labelKey, silent=silent)
|
133
134
|
adj_index = labels.index(adj_label)
|
134
135
|
if includeWeights == True:
|
135
136
|
if weightKey == None:
|
@@ -141,7 +142,7 @@ class Dictionary():
|
|
141
142
|
elif "area" in weightKey.lower():
|
142
143
|
shared_topologies = Topology.SharedTopologies(subtopology, adj_topology)
|
143
144
|
faces = shared_topologies.get("faces", [])
|
144
|
-
weight = sum([
|
145
|
+
weight = sum([Face.Area(face, mantissa=mantissa) for face in faces])
|
145
146
|
else:
|
146
147
|
shared_topologies = Topology.SharedTopologies(subtopology, adj_topology)
|
147
148
|
vertices = shared_topologies.get("vertices", [])
|
@@ -166,7 +167,7 @@ class Dictionary():
|
|
166
167
|
return adjDict
|
167
168
|
|
168
169
|
@staticmethod
|
169
|
-
def ByKeyValue(key, value):
|
170
|
+
def ByKeyValue(key, value, silent: bool = False):
|
170
171
|
"""
|
171
172
|
Creates a Dictionary from the input key and the input value.
|
172
173
|
|
@@ -176,6 +177,8 @@ class Dictionary():
|
|
176
177
|
The string representing the key of the value in the dictionary.
|
177
178
|
value : int, float, str, or list
|
178
179
|
A value corresponding to the input key. A value can be an integer, a float, a string, or a list.
|
180
|
+
silent : bool , optional
|
181
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
179
182
|
|
180
183
|
Returns
|
181
184
|
-------
|
@@ -184,9 +187,10 @@ class Dictionary():
|
|
184
187
|
|
185
188
|
"""
|
186
189
|
if not isinstance(key, str):
|
187
|
-
|
190
|
+
if not silent:
|
191
|
+
print("Dictionary.ByKeyValue - Error: The input key is not a valid string. Returning None.")
|
188
192
|
return None
|
189
|
-
return Dictionary.ByKeysValues([key], [value])
|
193
|
+
return Dictionary.ByKeysValues([key], [value], silent=silent)
|
190
194
|
|
191
195
|
|
192
196
|
@staticmethod
|
@@ -234,7 +238,7 @@ class Dictionary():
|
|
234
238
|
return attr
|
235
239
|
|
236
240
|
@staticmethod
|
237
|
-
def ByKeysValues(keys, values):
|
241
|
+
def ByKeysValues(keys, values, silent: bool = False):
|
238
242
|
"""
|
239
243
|
Creates a Dictionary from the input list of keys and the input list of values.
|
240
244
|
|
@@ -244,6 +248,8 @@ class Dictionary():
|
|
244
248
|
A list of strings representing the keys of the dictionary.
|
245
249
|
values : list
|
246
250
|
A list of values corresponding to the list of keys. Values can be integers, floats, strings, or lists
|
251
|
+
silent : bool , optional
|
252
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
247
253
|
|
248
254
|
Returns
|
249
255
|
-------
|
@@ -253,13 +259,16 @@ class Dictionary():
|
|
253
259
|
"""
|
254
260
|
|
255
261
|
if not isinstance(keys, list):
|
256
|
-
|
262
|
+
if not silent:
|
263
|
+
print("Dictionary.ByKeysValues - Error: The input keys parameter is not a valid list. Returning None.")
|
257
264
|
return None
|
258
265
|
if not isinstance(values, list):
|
259
|
-
|
266
|
+
if not silent:
|
267
|
+
print("Dictionary.ByKeysValues - Error: The input values parameter is not a valid list. Returning None.")
|
260
268
|
return None
|
261
269
|
if len(keys) != len(values):
|
262
|
-
|
270
|
+
if not silent:
|
271
|
+
print("Dictionary.ByKeysValues - Error: The input keys and values parameters are not of equal length. Returning None.")
|
263
272
|
return None
|
264
273
|
stl_keys = []
|
265
274
|
stl_values = []
|
@@ -440,7 +449,7 @@ class Dictionary():
|
|
440
449
|
'''
|
441
450
|
|
442
451
|
@staticmethod
|
443
|
-
def ByPythonDictionary(pythonDictionary):
|
452
|
+
def ByPythonDictionary(pythonDictionary, silent: bool = False):
|
444
453
|
"""
|
445
454
|
Creates a dictionary equivalent to the input python dictionary.
|
446
455
|
|
@@ -448,6 +457,8 @@ class Dictionary():
|
|
448
457
|
----------
|
449
458
|
pythonDictionary : dict
|
450
459
|
The input python dictionary.
|
460
|
+
silent : bool , optional
|
461
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
451
462
|
|
452
463
|
Returns
|
453
464
|
-------
|
@@ -456,7 +467,8 @@ class Dictionary():
|
|
456
467
|
|
457
468
|
"""
|
458
469
|
if not isinstance(pythonDictionary, dict):
|
459
|
-
|
470
|
+
if not silent:
|
471
|
+
print("Dictionary.ByPythonDictionary - Error: The input dictionary parameter is not a valid python dictionary. Returning None.")
|
460
472
|
return None
|
461
473
|
keys = list(pythonDictionary.keys())
|
462
474
|
values = []
|
@@ -480,7 +492,8 @@ class Dictionary():
|
|
480
492
|
A copy of the input dictionary.
|
481
493
|
|
482
494
|
"""
|
483
|
-
|
495
|
+
from topologicpy.Topology import Topology
|
496
|
+
if not Topology.IsInstance(dictionary, "dictionary"):
|
484
497
|
if not silent:
|
485
498
|
print("Dictionary.Copy - Error: The input dictionary parameter is not a valid dictionary. Returning None.")
|
486
499
|
return None
|
@@ -580,7 +593,7 @@ class Dictionary():
|
|
580
593
|
return {"filteredDictionaries": filteredDictionaries, "otherDictionaries": otherDictionaries, "filteredIndices": filteredIndices, "otherIndices": otherIndices, "filteredElements": filteredElements, "otherElements": otherElements}
|
581
594
|
|
582
595
|
@staticmethod
|
583
|
-
def Keys(dictionary):
|
596
|
+
def Keys(dictionary, silent: bool = False):
|
584
597
|
"""
|
585
598
|
Returns the keys of the input dictionary.
|
586
599
|
|
@@ -588,6 +601,8 @@ class Dictionary():
|
|
588
601
|
----------
|
589
602
|
dictionary : topologic_core.Dictionary or dict
|
590
603
|
The input dictionary.
|
604
|
+
silent : bool , optional
|
605
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
591
606
|
|
592
607
|
Returns
|
593
608
|
-------
|
@@ -596,8 +611,14 @@ class Dictionary():
|
|
596
611
|
|
597
612
|
"""
|
598
613
|
from topologicpy.Topology import Topology
|
614
|
+
import inspect
|
615
|
+
|
599
616
|
if not Topology.IsInstance(dictionary, "Dictionary") and not isinstance(dictionary, dict):
|
600
|
-
|
617
|
+
if not silent:
|
618
|
+
print("Dictionary.Keys - Error: The input dictionary parameter is not a valid topologic or python dictionary. Returning None.")
|
619
|
+
curframe = inspect.currentframe()
|
620
|
+
calframe = inspect.getouterframes(curframe, 2)
|
621
|
+
print('caller name:', calframe[1][3])
|
601
622
|
return None
|
602
623
|
if isinstance(dictionary, dict):
|
603
624
|
return list(dictionary.keys())
|
@@ -627,7 +648,7 @@ class Dictionary():
|
|
627
648
|
return returnList
|
628
649
|
|
629
650
|
@staticmethod
|
630
|
-
def PythonDictionary(dictionary):
|
651
|
+
def PythonDictionary(dictionary, silent: bool = False):
|
631
652
|
"""
|
632
653
|
Returns the input dictionary as a python dictionary
|
633
654
|
|
@@ -635,6 +656,8 @@ class Dictionary():
|
|
635
656
|
----------
|
636
657
|
dictionary : topologic_core.Dictionary
|
637
658
|
The input dictionary.
|
659
|
+
silent : bool , optional
|
660
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
638
661
|
|
639
662
|
Returns
|
640
663
|
-------
|
@@ -645,10 +668,12 @@ class Dictionary():
|
|
645
668
|
from topologicpy.Topology import Topology
|
646
669
|
|
647
670
|
if isinstance(dictionary, dict):
|
648
|
-
|
671
|
+
if not silent:
|
672
|
+
print("Dictionary.PythonDictionary - Warning: The input dictionary parameter is already a python dictionary. Returning that dictionary.")
|
649
673
|
return dictionary
|
650
674
|
if not Topology.IsInstance(dictionary, "Dictionary"):
|
651
|
-
|
675
|
+
if not silent:
|
676
|
+
print("Dictionary.PythonDictionary - Error: The input dictionary parameter is not a valid topologic dictionary. Returning None.")
|
652
677
|
return None
|
653
678
|
keys = dictionary.Keys()
|
654
679
|
pythonDict = {}
|
@@ -674,7 +699,7 @@ class Dictionary():
|
|
674
699
|
return pythonDict
|
675
700
|
|
676
701
|
@staticmethod
|
677
|
-
def RemoveKey(dictionary, key):
|
702
|
+
def RemoveKey(dictionary, key, silent: bool = False):
|
678
703
|
"""
|
679
704
|
Removes the key (and its associated value) from the input dictionary.
|
680
705
|
|
@@ -684,6 +709,8 @@ class Dictionary():
|
|
684
709
|
The input dictionary.
|
685
710
|
key : string
|
686
711
|
The input key.
|
712
|
+
silent : bool , optional
|
713
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
687
714
|
|
688
715
|
Returns
|
689
716
|
-------
|
@@ -713,10 +740,12 @@ class Dictionary():
|
|
713
740
|
return Dictionary.ByKeysValues(new_keys, new_values)
|
714
741
|
|
715
742
|
if not Topology.IsInstance(dictionary, "Dictionary") and not isinstance(dictionary, dict):
|
716
|
-
|
743
|
+
if not silent:
|
744
|
+
print("Dictionary.RemoveKey - Error: The input dictionary parameter is not a valid topologic or python dictionary. Returning None.")
|
717
745
|
return None
|
718
746
|
if not isinstance(key, str):
|
719
|
-
|
747
|
+
if not silent:
|
748
|
+
print("Dictionary.RemoveKey - Error: The input key parameter is not a valid string. Returning None.")
|
720
749
|
return None
|
721
750
|
|
722
751
|
if isinstance(dictionary, dict):
|
@@ -727,7 +756,7 @@ class Dictionary():
|
|
727
756
|
return None
|
728
757
|
|
729
758
|
@staticmethod
|
730
|
-
def SetValueAtKey(dictionary, key, value):
|
759
|
+
def SetValueAtKey(dictionary, key, value, silent: bool = False):
|
731
760
|
"""
|
732
761
|
Creates a key/value pair in the input dictionary.
|
733
762
|
|
@@ -739,6 +768,8 @@ class Dictionary():
|
|
739
768
|
The input key.
|
740
769
|
value : int , float , string, or list
|
741
770
|
The value associated with the key.
|
771
|
+
silent : bool , optional
|
772
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
742
773
|
|
743
774
|
Returns
|
744
775
|
-------
|
@@ -768,10 +799,12 @@ class Dictionary():
|
|
768
799
|
return d
|
769
800
|
|
770
801
|
if not Topology.IsInstance(dictionary, "Dictionary") and not isinstance(dictionary, dict):
|
771
|
-
|
802
|
+
if not silent:
|
803
|
+
print("Dictionary.SetValueAtKey - Error: The input dictionary parameter is not a valid topologic or python dictionary. Returning None.")
|
772
804
|
return None
|
773
805
|
if not isinstance(key, str):
|
774
|
-
|
806
|
+
if not silent:
|
807
|
+
print("Dictionary.SetValueAtKey - Error: The input key parameter is not a valid string. Returning None.")
|
775
808
|
return None
|
776
809
|
if value == None:
|
777
810
|
value = "__NONE__"
|
@@ -783,7 +816,7 @@ class Dictionary():
|
|
783
816
|
return None
|
784
817
|
|
785
818
|
@staticmethod
|
786
|
-
def SetValuesAtKeys(dictionary, keys, values):
|
819
|
+
def SetValuesAtKeys(dictionary, keys, values, silent: bool = False):
|
787
820
|
"""
|
788
821
|
Creates a key/value pair in the input dictionary.
|
789
822
|
|
@@ -793,6 +826,8 @@ class Dictionary():
|
|
793
826
|
A list of strings representing the keys of the dictionary.
|
794
827
|
values : list
|
795
828
|
A list of values corresponding to the list of keys. Values can be integers, floats, strings, or lists
|
829
|
+
silent : bool , optional
|
830
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
796
831
|
|
797
832
|
Returns
|
798
833
|
-------
|
@@ -802,17 +837,20 @@ class Dictionary():
|
|
802
837
|
"""
|
803
838
|
|
804
839
|
if not isinstance(keys, list):
|
805
|
-
|
840
|
+
if not silent:
|
841
|
+
print("Dictionary.SetValuesAtKeys - Error: The input keys parameter is not a valid list. Returning None.")
|
806
842
|
return None
|
807
843
|
if not isinstance(values, list):
|
808
|
-
|
844
|
+
if not silent:
|
845
|
+
print("Dictionary.SetValuesAtkeys - Error: The input values parameter is not a valid list. Returning None.")
|
809
846
|
return None
|
810
847
|
if len(keys) != len(values):
|
811
|
-
|
848
|
+
if not silent:
|
849
|
+
print("Dictionary.SetValuesAtKeys - Error: The input keys and values parameters are not of equal length. Returning None.")
|
812
850
|
return None
|
813
851
|
|
814
852
|
for i, key in enumerate(keys):
|
815
|
-
dictionary = Dictionary.SetValueAtKey(dictionary, key, values[i])
|
853
|
+
dictionary = Dictionary.SetValueAtKey(dictionary, key, values[i], silent=silent)
|
816
854
|
return dictionary
|
817
855
|
|
818
856
|
@staticmethod
|
@@ -930,18 +968,9 @@ class Dictionary():
|
|
930
968
|
elif isinstance(dictionary, dict):
|
931
969
|
return dictionary.get(key, defaultValue)
|
932
970
|
return defaultValue
|
933
|
-
|
934
|
-
# if isinstance(dictionary, dict):
|
935
|
-
# attr = dictionary[key]
|
936
|
-
# elif Topology.IsInstance(dictionary, "Dictionary"):
|
937
|
-
# attr = dictionary.ValueAtKey(key)
|
938
|
-
# else:
|
939
|
-
# return None
|
940
|
-
# return_value = Dictionary._ConvertAttribute(attr)
|
941
|
-
# return return_value
|
942
|
-
|
971
|
+
|
943
972
|
@staticmethod
|
944
|
-
def Values(dictionary):
|
973
|
+
def Values(dictionary, silent: bool = False):
|
945
974
|
"""
|
946
975
|
Returns the list of values in the input dictionary.
|
947
976
|
|
@@ -949,6 +978,8 @@ class Dictionary():
|
|
949
978
|
----------
|
950
979
|
dictionary : topologic_core.Dictionary or dict
|
951
980
|
The input dictionary.
|
981
|
+
silent : bool , optional
|
982
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
952
983
|
|
953
984
|
Returns
|
954
985
|
-------
|
@@ -959,7 +990,8 @@ class Dictionary():
|
|
959
990
|
from topologicpy.Topology import Topology
|
960
991
|
|
961
992
|
if not Topology.IsInstance(dictionary, "Dictionary") and not isinstance(dictionary, dict):
|
962
|
-
|
993
|
+
if not silent:
|
994
|
+
print("Dictionary.Values - Error: The input dictionary parameter is not a valid topologic or python dictionary. Returning None.")
|
963
995
|
return None
|
964
996
|
keys = None
|
965
997
|
if isinstance(dictionary, dict):
|
@@ -981,5 +1013,48 @@ class Dictionary():
|
|
981
1013
|
returnList.append(attr)
|
982
1014
|
return returnList
|
983
1015
|
|
1016
|
+
@staticmethod
|
1017
|
+
def ValuesAtKeys(dictionary, keys, defaultValue=None, silent: bool = False):
|
1018
|
+
"""
|
1019
|
+
Returns the list of values of the input list of keys in the input dictionary.
|
1020
|
+
|
1021
|
+
Parameters
|
1022
|
+
----------
|
1023
|
+
dictionary : topologic_core.Dictionary or dict
|
1024
|
+
The input dictionary.
|
1025
|
+
keys : list
|
1026
|
+
The input list of keys.
|
1027
|
+
defaultValue : any , optional
|
1028
|
+
The default value to return if the key or value are not found. The default is None.
|
1029
|
+
silent : bool , optional
|
1030
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
1031
|
+
|
1032
|
+
Returns
|
1033
|
+
-------
|
1034
|
+
list
|
1035
|
+
The list of values found at the input list of keys in the input dictionary.
|
1036
|
+
|
1037
|
+
"""
|
1038
|
+
from topologicpy.Topology import Topology
|
1039
|
+
|
1040
|
+
if not Topology.IsInstance(dictionary, "Dictionary") and not isinstance(dictionary, dict):
|
1041
|
+
if not silent == True:
|
1042
|
+
print("Dictionary.ValuesAtKeys - Error: The input dictionary parameter is not a valid topologic or python dictionary. Returning None.")
|
1043
|
+
return None
|
1044
|
+
if not isinstance(keys, list):
|
1045
|
+
if not silent == True:
|
1046
|
+
print("Dictionary.ValuesAtKeys - Error: The input keys parameter is not a valid list. Returning None.")
|
1047
|
+
return None
|
1048
|
+
|
1049
|
+
local_keys = [k for k in keys if isinstance(k, str)]
|
1050
|
+
if len(local_keys) == 0:
|
1051
|
+
if not silent == True:
|
1052
|
+
print("Dictionary.ValuesAtKeys - Error: The input keys parameter does not contain valid key strings. Returning None.")
|
1053
|
+
return None
|
1054
|
+
if not len(local_keys) == len(keys):
|
1055
|
+
if not silent == True:
|
1056
|
+
print("Dictionary.ValuesAtKeys - Error: The input keys parameter contains invalid values. Returning None.")
|
1057
|
+
return None
|
1058
|
+
return [Dictionary.ValueAtKey(dictionary, key, defaultValue=defaultValue, silent=silent) for key in keys]
|
984
1059
|
|
985
1060
|
|
topologicpy/Topology.py
CHANGED
@@ -941,7 +941,64 @@ class Topology():
|
|
941
941
|
return Cluster.ByTopologies(return_list)
|
942
942
|
else:
|
943
943
|
return None
|
944
|
+
|
945
|
+
|
946
|
+
@staticmethod
|
947
|
+
def Inherit(targets, sources, keys: list = None, tolerance: float = 0.0001, silent: bool = False):
|
948
|
+
"""
|
949
|
+
Transfers dictionary information from topologiesB to topologiesA based on co-location of internal vertices.
|
950
|
+
|
951
|
+
Parameters
|
952
|
+
----------
|
953
|
+
targets : list of topologic_core.Topology
|
954
|
+
The list of target topologies that will inherit the dictionaries.
|
955
|
+
sources : list of topologic_core. Topology
|
956
|
+
The list of source topologies from which to inherit dictionary information.
|
957
|
+
tolerance : float , optional
|
958
|
+
The desired tolerance. The default is 0.0001.
|
959
|
+
silent : bool , optional
|
960
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
944
961
|
|
962
|
+
Returns
|
963
|
+
-------
|
964
|
+
list
|
965
|
+
The list of target topologies with the dictionary information inherited from the list of source topologies.
|
966
|
+
|
967
|
+
"""
|
968
|
+
from topologicpy.Topology import Topology
|
969
|
+
from topologicpy.Vertex import Vertex
|
970
|
+
from topologicpy.Dictionary import Dictionary
|
971
|
+
|
972
|
+
topologies_a = [a for a in targets if Topology.IsInstance(a, "Topology")]
|
973
|
+
if len(topologies_a) == 0:
|
974
|
+
if not silent:
|
975
|
+
print("Topology.Inherit - Error: The list of targets does not contain any valid topologies. Returning None.")
|
976
|
+
return None
|
977
|
+
topologies_b = [b for b in sources if Topology.IsInstance(b, "Topology")]
|
978
|
+
if len(topologies_b) == 0:
|
979
|
+
if not silent:
|
980
|
+
print("Topology.Inherit - Error: The list of sources does not contain any valid topologies. Returning None.")
|
981
|
+
return None
|
982
|
+
for i, top_a in enumerate(topologies_a):
|
983
|
+
iv = Topology.InternalVertex(top_a, tolerance=tolerance, silent=silent)
|
984
|
+
d_a = Topology.Dictionary(top_a, silent=silent)
|
985
|
+
found = False
|
986
|
+
for top_b in topologies_b:
|
987
|
+
if Vertex.IsInternal(iv, top_b, tolerance=tolerance, silent=silent):
|
988
|
+
d_b = Topology.Dictionary(top_b)
|
989
|
+
if isinstance(keys, list):
|
990
|
+
values = Dictionary.ValuesAtKeys(d_b, keys, silent=silent)
|
991
|
+
d_c = Dictionary.SetValuesAtKeys(d_a, keys, values, silent=silent)
|
992
|
+
else:
|
993
|
+
d_c = Dictionary.SetValuesAtKeys(d_a, Dictionary.Keys(d_b, silent=silent), Dictionary.Values(d_b, silent=silent))
|
994
|
+
top_a = Topology.SetDictionary(top_a, d_c, silent=silent)
|
995
|
+
found = True
|
996
|
+
break
|
997
|
+
if found == False:
|
998
|
+
if not silent:
|
999
|
+
print("Topology.Inherit - Warning: Could not find a source for target number: "+str(i+1)+". Consider increasing the tolerance value.")
|
1000
|
+
return targets
|
1001
|
+
|
945
1002
|
@staticmethod
|
946
1003
|
def Intersect(topologyA, topologyB, tranDict=False, tolerance=0.0001):
|
947
1004
|
"""
|
@@ -4144,7 +4201,7 @@ class Topology():
|
|
4144
4201
|
return round(max_distance, mantissa)
|
4145
4202
|
|
4146
4203
|
@staticmethod
|
4147
|
-
def Dictionary(topology):
|
4204
|
+
def Dictionary(topology, silent: bool = False):
|
4148
4205
|
"""
|
4149
4206
|
Returns the dictionary of the input topology
|
4150
4207
|
|
@@ -4152,6 +4209,8 @@ class Topology():
|
|
4152
4209
|
----------
|
4153
4210
|
topology : topologic_core.Topology
|
4154
4211
|
The input topology.
|
4212
|
+
silent : bool , optional
|
4213
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
4155
4214
|
|
4156
4215
|
Returns
|
4157
4216
|
-------
|
@@ -4160,12 +4219,13 @@ class Topology():
|
|
4160
4219
|
|
4161
4220
|
"""
|
4162
4221
|
if not Topology.IsInstance(topology, "Topology") and not Topology.IsInstance(topology, "Graph"):
|
4163
|
-
|
4222
|
+
if not silent:
|
4223
|
+
print("Topology.Dictionary - Error: the input topology parameter is not a valid topology. Returning None.")
|
4164
4224
|
return None
|
4165
4225
|
return topology.GetDictionary()
|
4166
4226
|
|
4167
4227
|
@staticmethod
|
4168
|
-
def Dimensionality(topology):
|
4228
|
+
def Dimensionality(topology, silent: bool = False):
|
4169
4229
|
"""
|
4170
4230
|
Returns the dimensionality of the input topology
|
4171
4231
|
|
@@ -4173,6 +4233,8 @@ class Topology():
|
|
4173
4233
|
----------
|
4174
4234
|
topology : topologic_core.Topology
|
4175
4235
|
The input topology.
|
4236
|
+
silent : bool , optional
|
4237
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
4176
4238
|
|
4177
4239
|
Returns
|
4178
4240
|
-------
|
@@ -4181,12 +4243,13 @@ class Topology():
|
|
4181
4243
|
|
4182
4244
|
"""
|
4183
4245
|
if not Topology.IsInstance(topology, "Topology"):
|
4184
|
-
|
4246
|
+
if not silent:
|
4247
|
+
print("Topology.Dimensionality - Error: the input topology parameter is not a valid topology. Returning None.")
|
4185
4248
|
return None
|
4186
4249
|
return topology.Dimensionality()
|
4187
4250
|
|
4188
4251
|
@staticmethod
|
4189
|
-
def Divide(topologyA, topologyB, transferDictionary=False, addNestingDepth=False):
|
4252
|
+
def Divide(topologyA, topologyB, transferDictionary=False, addNestingDepth=False, silent: bool = False):
|
4190
4253
|
"""
|
4191
4254
|
Divides the input topology by the input tool and places the results in the contents of the input topology.
|
4192
4255
|
|
@@ -4200,6 +4263,8 @@ class Topology():
|
|
4200
4263
|
If set to True the dictionary of the input topology is transferred to the divided topologies.
|
4201
4264
|
addNestingDepth : bool , optional
|
4202
4265
|
If set to True the nesting depth of the division is added to the dictionaries of the divided topologies.
|
4266
|
+
silent : bool , optional
|
4267
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
4203
4268
|
|
4204
4269
|
Returns
|
4205
4270
|
-------
|
@@ -4210,13 +4275,15 @@ class Topology():
|
|
4210
4275
|
from topologicpy.Dictionary import Dictionary
|
4211
4276
|
|
4212
4277
|
if not Topology.IsInstance(topologyA, "Topology"):
|
4213
|
-
|
4278
|
+
if not silent:
|
4279
|
+
print("Topology.Divide - Error: the input topologyA parameter is not a valid topology. Returning None.")
|
4214
4280
|
return None
|
4215
4281
|
if not Topology.IsInstance(topologyB, "Topology"):
|
4216
|
-
|
4282
|
+
if not silent:
|
4283
|
+
print("Topology.Divide - Error: the input topologyB parameter is not a valid topology. Returning None.")
|
4217
4284
|
return None
|
4218
4285
|
try:
|
4219
|
-
_ = topologyA.Divide(topologyB, False) # Don't transfer dictionaries just yet
|
4286
|
+
_ = topologyA.Divide(topologyB, False) # Don't transfer dictionaries just yet # Hook to Core
|
4220
4287
|
except:
|
4221
4288
|
raise Exception("TopologyDivide - Error: Divide operation failed.")
|
4222
4289
|
nestingDepth = "1"
|
@@ -4251,7 +4318,7 @@ class Topology():
|
|
4251
4318
|
_ = Topology.SetDictionary(topologyA, parentDictionary)
|
4252
4319
|
values[keys.index("nesting_depth")] = nestingDepth+"_"+str(i+1)
|
4253
4320
|
d = Dictionary.ByKeysValues(keys, values)
|
4254
|
-
_ = contents[i].SetDictionary(d)
|
4321
|
+
_ = contents[i].SetDictionary(d) # Hook to Core
|
4255
4322
|
if addNestingDepth and not transferDictionary:
|
4256
4323
|
parentDictionary = Topology.Dictionary(topologyA)
|
4257
4324
|
if parentDictionary != None:
|
@@ -4275,7 +4342,7 @@ class Topology():
|
|
4275
4342
|
return topologyA
|
4276
4343
|
|
4277
4344
|
@staticmethod
|
4278
|
-
def Explode(topology, origin=None, scale: float = 1.25, typeFilter: str = None, axes: str = "xyz", transferDictionaries: bool = False, mantissa: int = 6, tolerance: float = 0.0001):
|
4345
|
+
def Explode(topology, origin=None, scale: float = 1.25, typeFilter: str = None, axes: str = "xyz", transferDictionaries: bool = False, mantissa: int = 6, tolerance: float = 0.0001, silent: bool = False):
|
4279
4346
|
"""
|
4280
4347
|
Explodes the input topology. See https://en.wikipedia.org/wiki/Exploded-view_drawing.
|
4281
4348
|
|
@@ -4297,6 +4364,8 @@ class Topology():
|
|
4297
4364
|
The desired length of the mantissa. The default is 6.
|
4298
4365
|
tolerance : float , optional
|
4299
4366
|
The desired tolerance. The default is 0.0001.
|
4367
|
+
silent : bool , optional
|
4368
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
4300
4369
|
|
4301
4370
|
Returns
|
4302
4371
|
-------
|
@@ -4348,17 +4417,20 @@ class Topology():
|
|
4348
4417
|
return typeFilter
|
4349
4418
|
|
4350
4419
|
if not Topology.IsInstance(topology, "Topology"):
|
4351
|
-
|
4420
|
+
if not silent:
|
4421
|
+
print("Topology.Explode - Error: the input topology parameter is not a valid topology. Returning None.")
|
4352
4422
|
return None
|
4353
4423
|
if not Topology.IsInstance(origin, "Vertex"):
|
4354
4424
|
origin = Topology.CenterOfMass(topology)
|
4355
4425
|
if not typeFilter:
|
4356
4426
|
typeFilter = getTypeFilter(topology)
|
4357
4427
|
if not isinstance(typeFilter, str):
|
4358
|
-
|
4428
|
+
if not silent:
|
4429
|
+
print("Topology.Explode - Error: the input typeFilter parameter is not a valid string. Returning None.")
|
4359
4430
|
return None
|
4360
4431
|
if not isinstance(axes, str):
|
4361
|
-
|
4432
|
+
if not silent:
|
4433
|
+
print("Topology.Explode - Error: the input axes parameter is not a valid string. Returning None.")
|
4362
4434
|
return None
|
4363
4435
|
if Topology.IsInstance(topology, "Topology"):
|
4364
4436
|
# Hack to fix a weird bug that seems to be a problem with OCCT memory handling.
|
@@ -4368,7 +4440,8 @@ class Topology():
|
|
4368
4440
|
y_flag = "y" in axes
|
4369
4441
|
z_flag = "z" in axes
|
4370
4442
|
if not x_flag and not y_flag and not z_flag:
|
4371
|
-
|
4443
|
+
if not silent:
|
4444
|
+
print("Topology.Explode - Error: the input axes parameter is not a valid string. Returning None.")
|
4372
4445
|
return None
|
4373
4446
|
|
4374
4447
|
topologies = []
|
@@ -4405,7 +4478,7 @@ class Topology():
|
|
4405
4478
|
if transferDictionaries == True:
|
4406
4479
|
newTopology = Topology.SetDictionary(newTopology, Topology.Dictionary(aTopology))
|
4407
4480
|
newTopologies.append(newTopology)
|
4408
|
-
return Cluster.ByTopologies(newTopologies)
|
4481
|
+
return Cluster.ByTopologies(newTopologies, silent=silent)
|
4409
4482
|
|
4410
4483
|
@staticmethod
|
4411
4484
|
def ExportToBIM(topologies, path : str, overwrite: bool = False, version: str = "1.0.0",
|
topologicpy/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.8.
|
1
|
+
__version__ = '0.8.43'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: topologicpy
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.43
|
4
4
|
Summary: An AI-Powered Spatial Modelling and Analysis Software Library for Architecture, Engineering, and Construction.
|
5
5
|
Author-email: Wassim Jabi <wassim.jabi@gmail.com>
|
6
6
|
License: AGPL v3 License
|
@@ -8,7 +8,7 @@ topologicpy/Cluster.py,sha256=wvfMAx6aPrSAt5nQ4--KnqD4EK9MGjch6Dg985WF7JQ,58748
|
|
8
8
|
topologicpy/Color.py,sha256=FcR0-__giyGQqvgiOrG8GkA65arHbiS33Si-QbUADPI,23362
|
9
9
|
topologicpy/Context.py,sha256=G3CwMvN8Jw2rnQRwB-n4MaQq_wLS0vPimbXKwsdMJ80,3055
|
10
10
|
topologicpy/DGL.py,sha256=HQXy9iDnrvWGDxaBfe5pRbweQ2zLBvAf6UdjfhKkQYI,139041
|
11
|
-
topologicpy/Dictionary.py,sha256=
|
11
|
+
topologicpy/Dictionary.py,sha256=sPskW5bopbDzLz6MGKm8lN_OeyeAgsqdLvwwNcG0J3g,44690
|
12
12
|
topologicpy/Edge.py,sha256=dLoAPuRKbjVg_dzloTgjRnQyv_05U9nfrtLO3tqyuys,74167
|
13
13
|
topologicpy/EnergyModel.py,sha256=Pyb28gDDwhzlQIH0xqAygqS0P3SJxWyyV7OWS_AAfRs,53856
|
14
14
|
topologicpy/Face.py,sha256=pN1fssyDLYWf1vU0NOBRx69DaUL958wRSxT-7VBCuCg,203184
|
@@ -25,14 +25,14 @@ topologicpy/ShapeGrammar.py,sha256=UVb8VPwVKd6V3zDTNzpBecQPgYo1EjSsS10XJ8k5YcI,2
|
|
25
25
|
topologicpy/Shell.py,sha256=fx0WTndC8blkvWe38nKsJsI_AmklOA0qsjU0gbZp4b4,90501
|
26
26
|
topologicpy/Speckle.py,sha256=-eiTqJugd7pHiHpD3pDUcDO6CGhVyPV14HFRzaqEoaw,18187
|
27
27
|
topologicpy/Sun.py,sha256=_VBBAUIDhvpkp72JBZlv7k9qx9jYubm3yM56UZ1Nc6c,36837
|
28
|
-
topologicpy/Topology.py,sha256=
|
28
|
+
topologicpy/Topology.py,sha256=tl5VTJIG3lZfIZ88nN9-tzE571gc8FxFqDF4t_Yuekw,471333
|
29
29
|
topologicpy/Vector.py,sha256=X12eqskn28bdB7sLY1EZhq3noPYzPbNEgHPb4a959ss,42302
|
30
30
|
topologicpy/Vertex.py,sha256=RlGQnxQSb_kAus3tJgXd-v-Ptubtt09PQPA9IMwfXmI,84835
|
31
31
|
topologicpy/Wire.py,sha256=sJE8qwqYOomvN3snMWmj2P2-Sq25ul_OQ95YFz6DFUw,230553
|
32
32
|
topologicpy/__init__.py,sha256=RMftibjgAnHB1vdL-muo71RwMS4972JCxHuRHOlU428,928
|
33
|
-
topologicpy/version.py,sha256=
|
34
|
-
topologicpy-0.8.
|
35
|
-
topologicpy-0.8.
|
36
|
-
topologicpy-0.8.
|
37
|
-
topologicpy-0.8.
|
38
|
-
topologicpy-0.8.
|
33
|
+
topologicpy/version.py,sha256=hF3_b4wm6P2C7FhxNisjLlDWfDYZXkMWBDfjYGulhT4,23
|
34
|
+
topologicpy-0.8.43.dist-info/licenses/LICENSE,sha256=FK0vJ73LuE8PYJAn7LutsReWR47-Ooovw2dnRe5yV6Q,681
|
35
|
+
topologicpy-0.8.43.dist-info/METADATA,sha256=5dzgC4p5xWYC7uU9VOqvU-PT1fTDCOqSl_5uGk97oZQ,10535
|
36
|
+
topologicpy-0.8.43.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
37
|
+
topologicpy-0.8.43.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
|
38
|
+
topologicpy-0.8.43.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|