2015-02-08 132 views
4

是否有一种工具可以将xpo文件拆分为多个xpo文件?与CombineXPO的做法完全相反。将xpo拆分为多个xpo文件

我问的原因是因为我需要将多个单一的xpo /模型版本放入源代码控制中,并且我想避免每次都先导入它们,因为这太费时。

+1

我创建了一个工具来分割xpo文件来解决我的问题。如果有人想要,请发表评论。 – AndyD 2015-02-11 14:10:04

+0

你好AndyD,你可以分享一样的。我正在使用AX 2009 SP1 RU8。在此先感谢 – Vikas 2017-06-02 06:20:54

回答

3

了解后,我想多了一点你想要的。这里有一份工作,给你几乎所有的例子,如何做你想做的事情。

注意需要完成的TODO's

static void JobImportXPOs(Args _args) 
{ 
    SysVersionControlSystem vcs = versionControl.parmSysVersionControlSystem(); 
    SysImportElements  sysImportElements = new SysImportElements(); 
    TmpAotImport   tmpAotImport; 
    Filename    fileName = @"C:\Temp\testXPO.xpo"; 
    SysVersionControllable controllable; 
    TreeNode    treeNode; 

    sysImportElements.newFile(fileName); 
    sysImportElements.parmAddToProject(false); 
    sysImportElements.parmImportAot(true); 

    tmpAotImport = sysImportElements.getTmpImportAot(); 

    while select tmpAotImport 
    { 
     treeNode = TreeNode::findNode(tmpAotImport.TreeNodePath); 

     if (!treeNode) 
     { 
      // New object being added to AX 
      // TODO - Remember this object and add this to VCS system at the end for check-in 
      continue; 
     } 

     controllable = SysTreeNode::newTreeNode(treeNode); 

     if (!controllable) 
     { 
      error(strFmt("Error processing %1 (%2) from file %3", tmpAotImport.TreeNodeName, tmpAotImport.TreeNodePath, Filename)); 
      continue; 
     } 

     if (vcs.allowCreate(controllable)) 
     { 
      info(strFmt("Planning to add to VCS %1 for import", tmpAotImport.TreeNodePath)); 
      // TODO - Remember to add this to VCS at the end of the import 
     } 
     else if (vcs.allowCheckOut(controllable)) 
     { 
      info(strFmt("Checking out %1 for import", tmpAotImport.TreeNodePath)); 
      // TODO - Remember to check this specific object back in at the end of the import 
     } 
    } 

    // Do the actual import 
    sysImportElements.import(); 

    // TODO - Check in all of the objects we just handled 

    info("Done"); 
} 
+0

我确实看到了该工具,但它是从2006年开始的。从那以后,xpo文件格式是否已更改? 我对每个版本的AX 2012都有xpo,两者之间略有不同。要导入每个xpo并使用上面的代码导出将需要很长时间。希望能让我的问题更清楚。 – AndyD 2015-02-09 02:08:55

+0

你还没有清楚地解释这个问题。所以你有一个XPO有很多对象,那么你想把它变成单个对象的多个XPO?导入一个巨大的xpo并创建一个充满对象的项目,使用我提供的示例代码,但显然要修改它以爬过项目节点并将每个对象转储为XPO,然后完成? – 2015-02-09 19:52:14

+0

问题是时间。这需要几天的时间才能完成AX的每一个版本以及我正在开发的软件的每个bug修复。在AX或虚拟机之外拆分xpo会大大加快速度。只是形象必须做你所描述的20倍以上......头脑麻木。 – AndyD 2015-02-09 20:46:38