throw error if RCB segment list is not properly connected, i.e., complain about "dead ends" along the segment chain.
This commit is contained in:
parent
856c68b155
commit
5c1c0028e0
|
@ -119,7 +119,6 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
|
||||||
if size > 0.0: scalePatch = size/dX
|
if size > 0.0: scalePatch = size/dX
|
||||||
else: scalePatch = 1.0
|
else: scalePatch = 1.0
|
||||||
|
|
||||||
|
|
||||||
# read segments
|
# read segments
|
||||||
segment = 0
|
segment = 0
|
||||||
connectivityXY = {"0": {"0":[],"%g"%dY:[],},\
|
connectivityXY = {"0": {"0":[],"%g"%dY:[],},\
|
||||||
|
@ -238,9 +237,18 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
|
||||||
segments[segment].append(pointId)
|
segments[segment].append(pointId)
|
||||||
pointId += 1
|
pointId += 1
|
||||||
|
|
||||||
|
crappyData = False
|
||||||
|
for pointId,point in enumerate(points):
|
||||||
|
if len(point['segments']) < 2: # point marks a dead end!
|
||||||
|
print "Dead end at segment %i (%f,%f)"%(1+point['segments'][0],boxX[0]+point['coords'][0]/scalePatch,boxY[0]+point['coords'][1]/scalePatch,)
|
||||||
|
crappyData = True
|
||||||
|
|
||||||
|
if crappyData:
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
grains = {'draw': [], 'legs': []}
|
grains = {'draw': [], 'legs': []}
|
||||||
pointId = 0
|
|
||||||
for point in points:
|
for pointId,point in enumerate(points):
|
||||||
while point['segments']:
|
while point['segments']:
|
||||||
myStart = pointId
|
myStart = pointId
|
||||||
grainDraw = [points[myStart]['coords']]
|
grainDraw = [points[myStart]['coords']]
|
||||||
|
@ -257,7 +265,7 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
|
||||||
points[myEnd]['coords'][1]-points[myStart]['coords'][1]]
|
points[myEnd]['coords'][1]-points[myStart]['coords'][1]]
|
||||||
myLen = math.sqrt(myV[0]**2+myV[1]**2)
|
myLen = math.sqrt(myV[0]**2+myV[1]**2)
|
||||||
best = {'product': -2.0, 'peek': -1, 'len': -1, 'point': -1}
|
best = {'product': -2.0, 'peek': -1, 'len': -1, 'point': -1}
|
||||||
for peek in points[myEnd]['segments']:
|
for peek in points[myEnd]['segments']: # trying in turn all segments emanating from current endPoint
|
||||||
if peek == myWalk:
|
if peek == myWalk:
|
||||||
continue
|
continue
|
||||||
if segments[peek][0] == myEnd:
|
if segments[peek][0] == myEnd:
|
||||||
|
@ -280,7 +288,7 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
|
||||||
if myWalk in points[myStart]['segments']:
|
if myWalk in points[myStart]['segments']:
|
||||||
points[myStart]['segments'].remove(myWalk)
|
points[myStart]['segments'].remove(myWalk)
|
||||||
else:
|
else:
|
||||||
sys.stderr.write(str(myWalk)+' not in segments of '+str(myStart))
|
sys.stderr.write(str(myWalk)+' not in segments of point '+str(myStart)+'\n')
|
||||||
grainDraw.append(points[myStart]['coords'])
|
grainDraw.append(points[myStart]['coords'])
|
||||||
grainLegs.append(myWalk)
|
grainLegs.append(myWalk)
|
||||||
if innerAngleSum > 0.0:
|
if innerAngleSum > 0.0:
|
||||||
|
@ -288,7 +296,6 @@ def rcbParser(content,M,size,tolerance): # parser for TSL-O
|
||||||
grains['legs'].append(grainLegs)
|
grains['legs'].append(grainLegs)
|
||||||
else:
|
else:
|
||||||
grains['box'] = grainLegs
|
grains['box'] = grainLegs
|
||||||
pointId += 1
|
|
||||||
|
|
||||||
|
|
||||||
# build overall data structure
|
# build overall data structure
|
||||||
|
@ -872,7 +879,7 @@ except:
|
||||||
options.output = [s.lower() for s in options.output] # lower case
|
options.output = [s.lower() for s in options.output] # lower case
|
||||||
|
|
||||||
myName = os.path.splitext(args[0])[0]
|
myName = os.path.splitext(args[0])[0]
|
||||||
print "\n%s\n"%myName
|
print "%s\n"%myName
|
||||||
|
|
||||||
orientationData = rcbOrientationParser(boundarySegments)
|
orientationData = rcbOrientationParser(boundarySegments)
|
||||||
rcData = rcbParser(boundarySegments,options.M,options.size,options.tolerance)
|
rcData = rcbParser(boundarySegments,options.M,options.size,options.tolerance)
|
||||||
|
|
Loading…
Reference in New Issue