2017-10-07 37 views
0

我有以下snip的dxl代碼, 我想複製的對象ID與過濾器F3上。 : 我不知道我在做什麼錯了,它給了我(ID)的所有對象。門DXL過濾器,

string Id 
int x=0; 
int y=0; 
Id = o."SourceID" 

Filter f0 = hasNoLinks(linkFilterIncoming, "*") 
Filter f1=attribute "_TraceTo" == "System" 
Filter f2 = attribute "Object Type" == "requirement" 
Filter f3 = f1&&f2&&f0 
addFilter(m,f3,x,y) 
print x ":\t" fullName(module(m)) "\n" 
wOutKLHUntraced << Id "\t" fullName(module(m)) "\n" 

回答

1

首先,你需要添加語句filtering on添加過濾器後,使得應用濾鏡。然後過濾的對象將是唯一可見的。

然後,您在腳本中設置了「Id」方式太早。在第4行,「o」被設置爲 的一些對象,我不知道哪一個,但肯定不會是你的過濾器 的結果。相反,聲明filtering on後,添加語句

Object o = first m // the first object that is now visible 
Id = o."SourceID" 
+0

感謝邁克,過濾,做到了! – user3285192

+0

嗨,我的腳本運行良好,但總是五個不同的結果:因爲我在一個約30個模塊的for循環中運行此腳本: – user3285192

0

我的腳本運行良好,但給出了不同的結果:因爲我在運行此腳本循環大約30模塊: 就是我設置的地方錯了過濾器?

Stream TbdUntraced; 
    string s 
     string d 
     Object o 
     string trac 
     int numReqs = 0; 


     string IdNum 
     string untraced 


     int x=0; 
     int y=0; 
     int a =0; 


     for o in m do 
     { 
     ensureInLinkedModulesLoaded(o,S_SATISFIES); 
     s = o."Object Type" 


     string Id 
     string Topic 
     Topic = o."_Topic" 

      numReqs++; 




       Filter f0 = hasNoLinks(linkFilterIncoming, "*") 
       Filter f1 = contains(attribute "_TraceTo", "TBD", false)    
       Filter f2 = attribute "Object Type" == "requirement" 
       Filter f3 = attribute "MMS5-Autoliv_Supplier_Status" == "agreed" 
       Filter f4 = attribute "MMS5-Autoliv_Supplier_Status" == "partly agreed" 
       Filter f7 = f0&&f2&&(f3||f4)&&f1 
       addFilter(m,f7,x,y) 
       filtering on 
       d = o."MMS5-Autoliv_OEM_Status" 
       Id = o."SourceID" 
       Topic = o."_Topic"    
       print x ":\t" name(module(m)) "\n" 
       TbdUntraced << Id "\t" Topic "\t"name(module(m)) "\n" 

     }