mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
#2685 Recompile rule
This commit is contained in:
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -7360,7 +7382,7 @@ def IfcAddToBeginOfList(ascalar, alist):
|
||||
if hiindex(alist) >= 1:
|
||||
for i in range(1, hiindex(alist) + 1):
|
||||
temp = list(result)
|
||||
temp[i - EXPRESS_ONE_BASED_INDEXING] = express_getitem(alist, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[i + 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(alist, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
result = temp
|
||||
return result
|
||||
|
||||
@@ -7799,7 +7821,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -7807,7 +7829,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMlsTotalThickness(layerset):
|
||||
@@ -7865,7 +7887,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcSameAxis2Placement(ap1, ap2, epsilon):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -11361,7 +11383,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -11379,7 +11401,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -11813,7 +11835,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -11821,7 +11843,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -11834,7 +11856,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -11894,7 +11916,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -11512,7 +11534,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -11530,7 +11552,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -11970,7 +11992,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -11978,7 +12000,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -11991,7 +12013,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -12051,7 +12073,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -11804,7 +11826,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -11822,7 +11844,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -12262,7 +12284,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -12270,7 +12292,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -12283,7 +12305,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -12343,7 +12365,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -13228,7 +13250,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -13246,7 +13268,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -13695,7 +13717,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13703,7 +13725,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -13716,7 +13738,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13776,7 +13798,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -13158,7 +13180,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -13176,7 +13198,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -13598,7 +13620,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13606,7 +13628,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -13619,7 +13641,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13679,7 +13701,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointDim(point):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -12823,7 +12845,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -12841,7 +12863,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -13281,7 +13303,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13289,7 +13311,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -13302,7 +13324,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13362,7 +13384,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -12918,7 +12940,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -12936,7 +12958,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -13383,7 +13405,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13391,7 +13413,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -13404,7 +13426,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13464,7 +13486,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -13094,7 +13116,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -13112,7 +13134,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -13561,7 +13583,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13569,7 +13591,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -13582,7 +13604,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13642,7 +13664,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -13110,7 +13132,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -13128,7 +13150,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -13577,7 +13599,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13585,7 +13607,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -13598,7 +13620,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13658,7 +13680,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointListDim(pointlist):
|
||||
|
||||
@@ -11,9 +11,29 @@ def exists(v):
|
||||
|
||||
def nvl(v, default):
|
||||
return v if v is not None else default
|
||||
sizeof = len
|
||||
hiindex = len
|
||||
blength = len
|
||||
|
||||
def is_entity(inst):
|
||||
if isinstance(inst, ifcopenshell.entity_instance):
|
||||
schema_name = inst.is_a(True).split('.')[0].lower()
|
||||
decl = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(inst.is_a())
|
||||
return isinstance(decl, ifcopenshell.ifcopenshell_wrapper.entity)
|
||||
return False
|
||||
|
||||
def express_len(v):
|
||||
if isinstance(v, ifcopenshell.entity_instance) and (not is_entity(v)):
|
||||
v = v[0]
|
||||
elif v is None or v is INDETERMINATE:
|
||||
return INDETERMINATE
|
||||
return len(v)
|
||||
old_range = range
|
||||
|
||||
def range(*args):
|
||||
if INDETERMINATE in args:
|
||||
return
|
||||
yield from old_range(*args)
|
||||
sizeof = express_len
|
||||
hiindex = express_len
|
||||
blength = express_len
|
||||
loindex = lambda x: 1
|
||||
from math import *
|
||||
unknown = 'UNKNOWN'
|
||||
@@ -54,6 +74,8 @@ class express_set(set):
|
||||
def express_getitem(aggr, idx, default):
|
||||
if aggr is None:
|
||||
return default
|
||||
if isinstance(aggr, ifcopenshell.entity_instance) and (not is_entity(aggr)):
|
||||
aggr = aggr[0]
|
||||
try:
|
||||
return aggr[idx]
|
||||
except IndexError as e:
|
||||
@@ -13114,7 +13136,7 @@ def IfcBuildAxes(axis, refdirection):
|
||||
def IfcConsecutiveSegments(segments):
|
||||
result = True
|
||||
for i in range(1, hiindex(segments) - 1 + 1):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(express_getitem(segments, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), hiindex(segments[i - EXPRESS_ONE_BASED_INDEXING]) - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) != express_getitem(express_getitem(segments, i + 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
break
|
||||
return result
|
||||
@@ -13132,7 +13154,7 @@ def IfcConstraintsParamBSpline(degree, upknots, upcp, knotmult, knots):
|
||||
result = False
|
||||
return result
|
||||
for i in range(2, upknots + 1):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
if express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) < 1 or express_getitem(knots, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE) <= express_getitem(knots, i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE):
|
||||
result = False
|
||||
return result
|
||||
k = express_getitem(knotmult, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
@@ -13554,7 +13576,7 @@ def IfcListToArray(lis, low, u):
|
||||
res = [express_getitem(lis, 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)] * n
|
||||
for i in range(2, n + 1):
|
||||
temp = list(res)
|
||||
temp[low - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
temp[low + i - 1 - EXPRESS_ONE_BASED_INDEXING] = express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13562,7 +13584,7 @@ def IfcLoopHeadToTail(aloop):
|
||||
p = True
|
||||
n = sizeof(getattr(aloop, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(aloop, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
@@ -13575,7 +13597,7 @@ def IfcMakeArrayOfArray(lis, low1, u1, low2, u2):
|
||||
if u2 - low2 + 1 != sizeof(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE)):
|
||||
return None
|
||||
temp = list(res)
|
||||
temp[low1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
temp[low1 + i - 1 - EXPRESS_ONE_BASED_INDEXING] = IfcListToArray(express_getitem(lis, i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), low2, u2)
|
||||
res = temp
|
||||
return res
|
||||
|
||||
@@ -13635,7 +13657,7 @@ def IfcPathHeadToTail(apath):
|
||||
p = unknown
|
||||
n = sizeof(getattr(apath, 'EdgeList', INDETERMINATE))
|
||||
for i in range(2, n + 1):
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
p = p and getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - 1 - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeEnd', INDETERMINATE) == getattr(express_getitem(getattr(apath, 'EdgeList', INDETERMINATE), i - EXPRESS_ONE_BASED_INDEXING, INDETERMINATE), 'EdgeStart', INDETERMINATE)
|
||||
return p
|
||||
|
||||
def IfcPointDim(point):
|
||||
|
||||
Reference in New Issue
Block a user