parent
e73ad4cc87
commit
1a96bb2805
|
@ -180,8 +180,8 @@ def _l(solver,partInfo,subname,shape,retAll=False):
|
|||
system.log('cache {}: {}',key,h)
|
||||
else:
|
||||
nameTag = partInfo.PartName + '.' + key
|
||||
v = utils.getVertexes(shape)
|
||||
if utils.isDraftWire(part):
|
||||
v = shape.Edge1.Vertexes
|
||||
vname1,vname2 = utils.edge2VertexIndex(part,subname)
|
||||
if not vname1:
|
||||
raise RuntimeError('Invalid draft subname {} or {}'.format(
|
||||
|
@ -189,9 +189,12 @@ def _l(solver,partInfo,subname,shape,retAll=False):
|
|||
tp0 = _p(solver,partInfo,vname1,v[0])
|
||||
tp1 = _p(solver,partInfo,vname2,v[1])
|
||||
else:
|
||||
v = shape.Edge1.Vertexes
|
||||
system.NameTag = nameTag + 'p0'
|
||||
p0 = system.addPoint3dV(*v[0].Point)
|
||||
try:
|
||||
p0 = system.addPoint3dV(*v[0].Point)
|
||||
except Exception:
|
||||
logger.info(system.NameTag)
|
||||
raise
|
||||
system.NameTag = nameTag + 'p0t'
|
||||
tp0 = system.addTransform(p0,*partInfo.Params,group=partInfo.Group)
|
||||
system.NameTag = nameTag + 'p1'
|
||||
|
@ -873,7 +876,7 @@ class Locked(Base):
|
|||
|
||||
nameTag = partInfo.PartName + '.' + info.Subname
|
||||
|
||||
for i,v in enumerate(info.Shape.Vertexes):
|
||||
for i,v in enumerate(utils.getVertexes(info.Shape)):
|
||||
surfix = '.fp{}'.format(i)
|
||||
system.NameTag = nameTag + surfix
|
||||
|
||||
|
|
19
utils.py
19
utils.py
|
@ -62,10 +62,7 @@ def objName(obj):
|
|||
return '?'
|
||||
|
||||
def isLine(param):
|
||||
if hasattr(Part,"LineSegment"):
|
||||
return isinstance(param,(Part.Line,Part.LineSegment))
|
||||
else:
|
||||
return isinstance(param,Part.Line)
|
||||
return isinstance(param,(Part.Line,Part.LineSegment))
|
||||
|
||||
def deduceSelectedElement(obj,subname):
|
||||
shape = obj.getSubObject(subname)
|
||||
|
@ -278,6 +275,16 @@ def isSphericalSurface(obj):
|
|||
return False
|
||||
return str( face.Surface ).startswith('Sphere ')
|
||||
|
||||
def getVertexes(shape):
|
||||
v = shape.Vertexes
|
||||
if v or shape.countElement('Edge')!=1:
|
||||
return v
|
||||
curve = shape.Edge1.Curve
|
||||
if isinstance(curve,Part.Line):
|
||||
return [Part.Vertex(curve.Location),
|
||||
Part.Vertex(curve.Location+curve.Direction)]
|
||||
return []
|
||||
|
||||
def getElementPos(obj):
|
||||
vertex = getElementShape(obj,Part.Vertex)
|
||||
if vertex:
|
||||
|
@ -308,7 +315,9 @@ def getElementPos(obj):
|
|||
edge = getElementShape(obj,Part.Edge)
|
||||
if not edge:
|
||||
return FreeCAD.Vector()
|
||||
if isLine(edge.Curve):
|
||||
if isinstance(edge.Curve,Part.Line):
|
||||
return edge.Curve.Location
|
||||
elif isinstance(edge.Curve,Part.LineSegment):
|
||||
# pos = edge.Vertexes[-1].Point
|
||||
return (edge.Vertex1.Point+edge.Vertex2.Point)*0.5
|
||||
elif hasattr( edge.Curve, 'Center'): #circular curve
|
||||
|
|
Loading…
Reference in New Issue
Block a user