要说这好记性,真是不如烂笔头,时间一长,不常用的知识,很容易就忘掉了,所以打算抽时间把一些API方面的知识做个总结,既能帮助自己,也能让刚入门的小伙伴少走些弯路。
以往章节传送门:
EPLAN使用中,最常用到的是“Project”类,我们在绘图前,第一步都是要新建或获得一个项目类,因此今天主要来总结下有关项目的操作,分如下两个章节:
  1. 项目的创建与管理 ProjectManager
  2. 获取当前项目的方法
Project Class的命名空间:Eplan.EplApi.DataModel。

一、项目的创建与管理类:ProjectMangager

命名空间:Eplan.EplApi.DataModel
介绍:Project类并没有创建方法来新建一个项目,一个Project对象的创建,是需要利用ProjectManager类来创建的,ProjectManager类主要是用来管理 P8 项目,比如可以复制、打开、删除、检查给定路径的项目是否存在等操作。
API帮助:https://www.eplan.help/en-US/infoportal/content/api/2.9/Eplan.EplApi.DataModelu~Eplan.EplApi.DataModel.ProjectManager.html
示例:创建项目的方法如下:
Project oProject = new ProjectManager().CreateProject("$(MD_PROJECTS)\Example_003.elk", "$(MD_TEMPLATES)\IEC_tpl001.ept");
第1个参数:项目文件的保存位置
第2个参数:项目模板位置
打开项目的方法如下:
Project oProject = new ProjectManager().OpenProject("$(MD_PROJECTS)\ESS_Sample_Project.elk");                              

删除项目RemoveProject、复制项目CopyProject等其它方法,可参考上面的API帮助。

二、获取当前项目的方法

命名空间:
using Eplan.EplApi.Gui;using Eplan.EplApi.HEServices;
介绍:使用ProjectManager类和SelectionSet类都可以获得当前项目对象。两者的区别下面会分别介绍。
API帮助:https://www.eplan.help/en-US/infoportal/content/api/2.9/Eplan.EplApi.DataModelu~Eplan.EplApi.DataModel.ProjectManager.html
示例1:ProjectManager类获取当前项目共有4组方法:
//方法一
ProjectManager pm = new ProjectManager();
Project myProject=pm.GetCurrentProjectWithDialog();

//方法二
PathInfo pathInfo = new PathInfo();
string strProjectLinkFilePath = pathInfo.Projects + "\\ESS_Sample_Project.elk";
ProjectManager pm = new ProjectManager();
Project myProject=pm.GetProject(strProjectLinkFilePath);//如果该项目没有在EPLAN中打开,该方法将返回null//方法三ProjectManager pm = new ProjectManager();
Project myProject = null;
SelectionSet selectionSet = new SelectionSet();
StorableObject[] storableObjects = selectionSet.Selection;
if (storableObjects.Length < 1)
{
    new Decider().Decide(EnumDecisionType.eOkDecision, 没有任何对象被选择!", "Info", EnumDecisionReturn.eOK, EnumDecisionReturn.eOK);
    return false;
}
else
{
    foreach (StorableObject item in storableObjects)
    {
        //获取到你想要的对象
        //.......
        string objectId = item.Properties.PROPUSER_DBOBJECTID;
        myProject = pm.GetProjectByObjectId(objectId);
    }
 }//方法四
ProjectManager pm = new ProjectManager();
Project myProject = pm.CurrentProject;//返回Eplan页浏览器中的第一个项目,无论你当前打开或者选中了其他项目。

使用方法一时需要注意以下几点:

  • 调用时不一定会弹出项目选择对话框,即使你当前Eplan里面打开了2个以上数量的项目,因为你当前只选中了一个项目,只有你通过Ctrl+鼠标左键选中了多个项目时,才会弹出项目选择对话框。
  • 当你的Eplan已经打开了多个项目,这时候关闭Eplan,重新打开,在你选中任何项目之前,Eplan是默认选中所有已经加载的项目的,这时候运行上述代码,会自动弹出项目选择对话框。
  • 如果你当前只有一个项目被选中,使用上述代码虽然不会弹出项目选择对话框,但是可以正常获取到你选中的项目。
  • 如果弹出项目选择对话框,但是你在对话框中选了取消按钮,那么myProject =null; 所以一定要对获取到的myProject进行防空判断。

感谢Leonard_Spark的总结

 
示例2:使用SelectionSet获取当前项目
//方法一
SelectionSet selectionSet = new SelectionSet();
Project myProject=selectionSet.GetCurrentProject(true);//方法二SelectionSet selectionSet = new SelectionSet();
Project[] myProjects=selectionSet.SelectedProjects;
GetCurrentProject当参数传入true时,如果页导航器中选中了多个项目,则会出现项目选择对话框,其注意事项也与上个示例中方法一相同,而传入false时则不会弹出项目选择对话框,方法返回null。

最后,无论哪种方法获取当前项目,都尽量一个个处理,在批处理时,处理完一个项目时就利用Project类下的Close()方法关闭,在处理下一个项目。今天有关新建与打开项目和获取项目的总结就先到这里,电气CAD吧可向终身会员用户提供技术咨询服务,有哪里不懂的用户可以随联系我们!

发表评论

登录... 后才能评论