AttachableArray, LinearArray, PolarArray: add 'external' reference option

This commit is contained in:
DeepSOIC 2018-09-05 21:45:11 +03:00
parent d8a3293dbc
commit 32e840a941
3 changed files with 27 additions and 6 deletions

View File

@ -130,12 +130,17 @@ class AttachedPlacementSubsequence(lattice2BaseFeature.LatticeFeature):
created = self.assureProperty(selfobj,
'App::PropertyEnumeration',
'ReferencePlacementOption',
['origin', 'inherit', 'first placement', 'last placement'],
['external', 'origin', 'inherit', 'first placement', 'last placement'],
"Lattice Attached Placement Subsequence",
"Reference placement, corresponds to the original occurrence of the object to be populated. 'inherit' = use reference placement of the base attached placement."
)
if created:
selfobj.ReferencePlacementOption = 'inherit'
def recomputeReferencePlm(self, selfobj, selfplacements): #override
if selfobj.ReferencePlacementOption == 'external':
super(AttachedPlacementSubsequence, self).recomputeReferencePlm(selfobj, selfplacements)
#the remaining options are handled in derivedExecute
def derivedExecute(self,obj):
attacher = Part.AttachEngine(screen(obj.Base).AttacherType)
@ -157,7 +162,9 @@ class AttachedPlacementSubsequence(lattice2BaseFeature.LatticeFeature):
#reference
ref = obj.ReferencePlacementOption
if ref == 'origin':
if ref == 'external':
pass #gets done in recomputeReferencePlm
elif ref == 'origin':
self.setReferencePlm(obj, None)
elif ref == 'inherit':
self.setReferencePlm(obj, lattice2BaseFeature.getReferencePlm(obj.Base))

View File

@ -109,7 +109,7 @@ class LinearArray(lattice2BaseFeature.LatticeFeature):
created = self.assureProperty(selfobj,
'App::PropertyEnumeration',
'ReferencePlacementOption',
['origin', 'SpanStart', 'SpanEnd', 'at custom value', 'first placement', 'last placement'],
['external', 'origin', 'SpanStart', 'SpanEnd', 'at custom value', 'first placement', 'last placement'],
"Lattice Array",
"Reference placement, corresponds to the original occurrence of the object to be populated."
)
@ -117,6 +117,11 @@ class LinearArray(lattice2BaseFeature.LatticeFeature):
selfobj.ReferencePlacementOption = 'SpanStart'
self.assureProperty(selfobj, 'App::PropertyDistance', 'ReferenceValue', 0.0, "Lattice Array", "Sets the value to use for generating ReferencePlacement. This value sets, what coordinate the object to be populated corresponds to.")
def recomputeReferencePlm(self, selfobj, selfplacements): #override
if selfobj.ReferencePlacementOption == 'external':
super(LinearArray, self).recomputeReferencePlm(selfobj, selfplacements)
#the remaining options are handled in derivedExecute
def derivedExecute(self,obj):
self.assureGenerator(obj)
self.updateReadonlyness(obj)
@ -188,7 +193,9 @@ class LinearArray(lattice2BaseFeature.LatticeFeature):
# update reference placement
ref = obj.ReferencePlacementOption
if ref == 'origin':
if ref == 'external':
pass
elif ref == 'origin':
self.setReferencePlm(obj, None)
elif ref == 'SpanStart':
self.setReferencePlm(obj, plmByVal(float(obj.SpanStart)))

View File

@ -93,7 +93,7 @@ class PolarArray(APlm.AttachableFeature):
created = self.assureProperty(selfobj,
'App::PropertyEnumeration',
'ReferencePlacementOption',
['origin', 'center', 'SpanStart', 'SpanEnd', 'at custom value', 'first placement', 'last placement'],
['external', 'origin', 'center', 'SpanStart', 'SpanEnd', 'at custom value', 'first placement', 'last placement'],
"Polar Array",
"Reference placement, corresponds to the original occurrence of the object to be populated."
)
@ -129,6 +129,11 @@ class PolarArray(APlm.AttachableFeature):
sub = sub[0]
#resolve the link
return fetchArc(lnkobj, sub)
def recomputeReferencePlm(self, selfobj, selfplacements): #override
if selfobj.ReferencePlacementOption == 'external':
super(PolarArray, self).recomputeReferencePlm(selfobj, selfplacements)
#the remaining options are handled in derivedExecute
def derivedExecute(self,selfobj):
self.assureGenerator(selfobj)
@ -221,7 +226,9 @@ class PolarArray(APlm.AttachableFeature):
# update reference placement
ref = selfobj.ReferencePlacementOption
if ref == 'origin':
if ref == 'external':
pass #gets done in recomputeReferencePlm
elif ref == 'origin':
self.setReferencePlm(selfobj, None)
elif ref == 'center':
self.setReferencePlm(selfobj, App.Placement())