Fix wrong handling of index in the string syntax selector
This commit is contained in:
parent
f6d532328f
commit
5b0b5c0e96
|
@ -21,7 +21,7 @@ import re
|
||||||
import math
|
import math
|
||||||
from cadquery import Vector,Edge,Vertex,Face,Solid,Shell,Compound
|
from cadquery import Vector,Edge,Vertex,Face,Solid,Shell,Compound
|
||||||
from pyparsing import Literal,Word,nums,Optional,Combine,oneOf,\
|
from pyparsing import Literal,Word,nums,Optional,Combine,oneOf,\
|
||||||
upcaseTokens,CaselessLiteral
|
upcaseTokens,CaselessLiteral,Group
|
||||||
|
|
||||||
|
|
||||||
class Selector(object):
|
class Selector(object):
|
||||||
|
@ -456,11 +456,11 @@ def _makeGrammar():
|
||||||
direction_op = oneOf(['>','<'])
|
direction_op = oneOf(['>','<'])
|
||||||
|
|
||||||
#index definition
|
#index definition
|
||||||
ix_number = Optional('-')+Word(nums)
|
ix_number = Group(Optional('-')+Word(nums))
|
||||||
lsqbracket = Literal('[').suppress()
|
lsqbracket = Literal('[').suppress()
|
||||||
rsqbracket = Literal(']').suppress()
|
rsqbracket = Literal(']').suppress()
|
||||||
|
|
||||||
index = lsqbracket + ix_number + rsqbracket
|
index = lsqbracket + ix_number('index') + rsqbracket
|
||||||
|
|
||||||
#other operators
|
#other operators
|
||||||
other_op = oneOf(['|','#','+','-'])
|
other_op = oneOf(['|','#','+','-'])
|
||||||
|
@ -470,7 +470,7 @@ def _makeGrammar():
|
||||||
|
|
||||||
return direction('only_dir') | \
|
return direction('only_dir') | \
|
||||||
(type_op('type_op') + cqtype('cq_type')) | \
|
(type_op('type_op') + cqtype('cq_type')) | \
|
||||||
(direction_op('dir_op') + direction('dir') + Optional(index('index'))) | \
|
(direction_op('dir_op') + direction('dir') + Optional(index)) | \
|
||||||
(other_op('other_op') + direction('dir')) | \
|
(other_op('other_op') + direction('dir')) | \
|
||||||
named_view('named_view')
|
named_view('named_view')
|
||||||
|
|
||||||
|
@ -565,7 +565,7 @@ class StringSyntaxSelector(Selector):
|
||||||
minmax = self.operatorMinMax[pr.dir_op]
|
minmax = self.operatorMinMax[pr.dir_op]
|
||||||
|
|
||||||
if 'index' in pr:
|
if 'index' in pr:
|
||||||
return DirectionNthSelector(vec,int(pr.index),minmax)
|
return DirectionNthSelector(vec,int(''.join(pr.index.asList())),minmax)
|
||||||
else:
|
else:
|
||||||
return DirectionMinMaxSelector(vec,minmax)
|
return DirectionMinMaxSelector(vec,minmax)
|
||||||
|
|
||||||
|
@ -582,7 +582,8 @@ class StringSyntaxSelector(Selector):
|
||||||
Translate parsed vector string into a CQ Vector
|
Translate parsed vector string into a CQ Vector
|
||||||
"""
|
"""
|
||||||
if 'vector_dir' in pr:
|
if 'vector_dir' in pr:
|
||||||
return Vector(float(pr.x),float(pr.y),float(pr.z))
|
vec = pr.vector_dir
|
||||||
|
return Vector(float(vec.x),float(vec.y),float(vec.z))
|
||||||
else:
|
else:
|
||||||
return self.axes[pr.simple_dir]
|
return self.axes[pr.simple_dir]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user