Hi @f.kemminje​ ,
you can try something from this post to solve your problem:
https://community.safe.com/s/question/0D54Q00008aKQnaSAG/loop-through-featurejoiner
VariableRetriever -->Tester--> VariableSetter
@jdh​ ,@connecter​ . Sorry, my question was not clear I think. Please refer to my image. links above are not excluding candidates if it is already matched. Also attached are my source MicroStation dgn file and fmw file. @david_r​ ,@mark2atsafe​ ,@Takashi Iijima​ Can you pls help me
As soon as "A" is matched with "1". then 1 should be excluded from the set. when b comes in, it should search only with 2 and 3, and now B will be matched to a closest candidate"2". and "2" excluded. and C will come and only one left, that is "3"
Hello again @f.kemminje​ ,
here is a workflow I build for you:
The result table:
I used Python caller for this and achieved the target.
I used list exploder after neighbor finder, then stored the feature and its attributes to list @ pythoncaller's input method.Â
And in the close() method,Â
created one new list , and appended only valid feature and its attributes. No duplicate base or candidates.(ID not in List then only append)
I got the Result what I want.
Thanks For Everyone, who Answered my Q.
import fme
import fmeobjects
Â
Â
class FeatureProcessor(object):
    def __init__(self):
        self.featureList = s]
        self.mylist = ]
        self.mylist2 = ]
Â
    def input(self,feature):
        self.featureList.append(feature)
        self.mylist.append(str(feature.getAttribute('tid')))
        self.mylist2.append(str(feature.getAttribute('cid')))
        #self.mylist2.append(feature.getAttribute('_creation_instance'))
       Â
Â
    def close(self):
        outlist1= ]
        outlist2=2]
        mylist1=self.mylist
        mylist2=self.mylist2
        i = 0
        while i < len(mylist1):
            tid=(mylist1Âi])
            cid=(mylist2 i])
            if tid not in outlist1 and cid not in outlist2:
                outlist1.append(str(tid))
                outlist2.append(str(cid))
                print(tid)
                print(cid)
                self.featureList i].setAttribute('tid',tid)
                self.featureListri].setAttribute('cid',cid)
                self.pyoutput(self.featureListÂi])
            i = i + 1
Â
Â