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