关于通过C#代码获取模板库中的模板的问题。

参照案例写了一段获取模板的代码:

string strXmlXPath = @"Templates\Rail\Double Track -Ballasted";
string strLib = TemplateLibrary.GetDefaultTemplateLibraryPath();
TemplateLibrary templateLibrary = TemplateLibrary.Load(strLib);
TemplateDefinition tempDef2 = templateLibrary.FindTemplateByPath(strXmlXPath);

但是,返现获取到的TemplateDefinition为Null。

请问有可能是什么原因呢?路径我检查了下应该是没问题的。

Parents
  • 下面的代码示例通过TemplateLibrary对象遍历模板库中所有的模板对象;以及获取模板库中指定路径的模板对象:

    class TemplateCmd
    {
        public void GetTemplate()
        {
            string strLib = TemplateLibrary.GetDefaultTemplateLibraryPath();
    
            TemplateLibrary templateLibrary = TemplateLibrary.Load(strLib);
            //从模板库的根目录开始遍历。
            GetCategoryAllTemplate(templateLibrary.RootCategory);
    
            //以Xml Xpath形式获取指定的模板
            string strXmlXPath = @"/InRoads/TemplateLibrary/Category/Category[@name='Templates']/Category[@name='Rail']/Template[@name='Double Track - Wooden Sleepers']";
            //TemplateDefinition tempDef = templateLibrary.FindTemplateByPath(strXmlXPath);
    
            //以xml xpath路径对应的模板库路径形式的路径
            string strTemplatePath = @"Templates/Rail/Double Track - Wooden Sleepers";
            TemplateDefinition tempDef2 = templateLibrary.FindTemplateByPath(strTemplatePath);
         }
    
         private void GetCategoryAllTemplate(Category category)
         {
            //遍历目录下的子目录
            foreach(Category subCategory in category.Categories)
            {
                GetCategoryAllTemplate(subCategory);
            }
                //表面目录下的所有模板
            foreach(TemplateDefinition tempDef in category.Templates)
            {
               string strName = tempDef.Name;
               string strPath = tempDef.GetPath();
            }
          }
     }
    

Reply
  • 下面的代码示例通过TemplateLibrary对象遍历模板库中所有的模板对象;以及获取模板库中指定路径的模板对象:

    class TemplateCmd
    {
        public void GetTemplate()
        {
            string strLib = TemplateLibrary.GetDefaultTemplateLibraryPath();
    
            TemplateLibrary templateLibrary = TemplateLibrary.Load(strLib);
            //从模板库的根目录开始遍历。
            GetCategoryAllTemplate(templateLibrary.RootCategory);
    
            //以Xml Xpath形式获取指定的模板
            string strXmlXPath = @"/InRoads/TemplateLibrary/Category/Category[@name='Templates']/Category[@name='Rail']/Template[@name='Double Track - Wooden Sleepers']";
            //TemplateDefinition tempDef = templateLibrary.FindTemplateByPath(strXmlXPath);
    
            //以xml xpath路径对应的模板库路径形式的路径
            string strTemplatePath = @"Templates/Rail/Double Track - Wooden Sleepers";
            TemplateDefinition tempDef2 = templateLibrary.FindTemplateByPath(strTemplatePath);
         }
    
         private void GetCategoryAllTemplate(Category category)
         {
            //遍历目录下的子目录
            foreach(Category subCategory in category.Categories)
            {
                GetCategoryAllTemplate(subCategory);
            }
                //表面目录下的所有模板
            foreach(TemplateDefinition tempDef in category.Templates)
            {
               string strName = tempDef.Name;
               string strPath = tempDef.GetPath();
            }
          }
     }
    

Children