2015-02-08 85 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