Sometime we might like to find
objects existing in two or more  layers i.e. layer 1 AND layer 2. Out of
box we have a feature of creating a project for objects present in specific
layers i.e. layer 1 OR layer 2.
So with below job you can build
on this standard feature thereby finding common objects i.e. objects present in
all(AND condition) the specified layers only.
Note : If you try to iterate
whole AOT thru code it becomes performance intensive hence not advisable to do
it. So always create one project and then further work on it. 
static void
listAllObjectosFromProject(Args _args)
{
 
ProjName                        
projName = "CompilerOutput"; // Specify your project area name here
 
ProjectListNode                 
list = infolog.projectRootNode().AOTfindChild("Shared");
 
TreeNodeIterator                
ir = list.AOTiterator();
 
ProjectNode                     
pnProj,projectNode;
 
ProjectNode                     
pn = list.AOTfindChild(projName);
  SetEnumerator                   
setEnumerator;
 
Set                             
set;
  container                      
layers;
  #define.ProjectName("Compileroutput_Sub")
// Sub project Name. You may like to change it as per you like.
   void
searchAllObj(projectNode rootNode)
    {
    #TreeNodeSysNodeType
   
TreeNode          childNode;
    TreeNodeIterator 
rootNodeIterator;
    ;
    projectNode =
SysTreeNode::getPrivateProject().AOTfindChild(#ProjectName);
    if(!projectNode)
    {
        projectNode =
SysTreeNode::createProject(#ProjectName,ProjectSharedPrivate::ProjPrivate);
    }
    if
(rootNode)
    {
      rootNodeIterator =
rootNode.AOTiterator();
      childNode =
rootNodeIterator.next();
      while (childnode)
      {
        if (childNode.treeNodeType().id() ==
#NT_PROJECT_GROUP)
        
searchAllObj(childNode);
        else
          {
           
//info(strfmt("Group :%1 - Object: %2",
rootNode.AOTname(), childNode.AOTname()));
           
set = childNode.AOTLayers(false);
           
setEnumerator = set.getEnumerator();
           
layers = conNull();
           
while(setEnumerator.moveNext())
           
{
              
layers = layers +enum2Symbol(enumName2Id('UtilEntryLevel'),setEnumerator.current());
           
}
           
if(confind(layers,'syp') && confind(layers,'usr')) // Put your
layers here in which you want to check objects
           
{
               
info(strFmt('Name:
%1, Layers: %2', childNode.AOTname(),con2Str(layers) ));
               
projectNode.addNode(childNode);
               
projectNode.AOTsave();
           
}
        }
         
childNode = rootNodeIterator.next();
    }
  }
}
  if (pn)
  {
    info(strFmt("Project %1:", projName));
    pnProj = pn.loadForInspection();
    searchAllObj(pnProj);
    pnproj.treeNodeRelease();
  }
  else
    info("Projet
objects");
}
 
No comments:
Post a Comment