1、Project::Hierarchy Eplan::EplApi::DataModel::Project::Hierarchy Enumeration Hierarchy level of the device structure C# public enum Hierarchy { Functional, Plant, Place, Location, Installation, Document, UserDef } End Enum Members Description Functional Functional assignment (==) Plant Higher-level function (=) Place Installation site (++) Location Mounting location (+) Installation Higher level function number Document Document type (&) UserDef User-defined (#) 2、StorableObject Eplan::EplApi::DataModel::StorableObject: The parent of all API classes representing P8 project and its structure. Eplan::EplApi::DataModel::StorableObject Eplan::EplApi::DataModel::Article Eplan::EplApi::DataModel::ArticleReference Eplan::EplApi::DataModel::CommunicationEntity Eplan::EplApi::DataModel::Connection Eplan::EplApi::DataModel::DeviceListEntry Eplan::EplApi::DataModel::E3D::PlaceHolder3D Eplan::EplApi::DataModel::E3D::Placement3D Eplan::EplApi::DataModel::FunctionDefinition Eplan::EplApi::DataModel::Location Eplan::EplApi::DataModel::MasterData::FunctionDefinitionLibrary Eplan::EplApi::DataModel::MasterData::Symbol Eplan::EplApi::DataModel::MasterData::SymbolLibrary Eplan::EplApi::DataModel::MergedArticleReference Eplan::EplApi::DataModel::MergedConnection Eplan::EplApi::DataModel::MergedFunction Eplan::EplApi::DataModel::OptionBase Eplan::EplApi::DataModel::Placement Eplan::EplApi::DataModel::PlcIO Eplan::EplApi::DataModel::Project Eplan::EplApi::DataModel::ReportBlock 2.1 plan::EplApi::DataModel::Project Class representing P8 project. 2.2 Eplan::EplApi::DataModel::Page Example The following example shows how to use class Page. [C#] private Page Page_Example1(Project oProject, string strProjectPath, string strPageName) { if (oProject == null) { ProjectManager oProjManager = new ProjectManager(); if (oProjManager.CurrentProject == null) oProject = oProjManager.OpenProject(strProjectPath); else oProject = oProjManager.CurrentProject; } oProject.Filter.Name = strPageName; PageoProject.Filter.ExactNameMatching = true; arrPages[] = oProject.Pages; if (arrPages.Length == 0) return null; return arrPages[0]; } 2.3 Eplan::EplApi::DataModel::Article This class represents articles in the Eplan.EplApi.DataModel.Projec. Example The following example shows how to use class Article. [C#] private void Article_Example1(Project oProject) { foreach (Article oArticle in oProject.Articles) { if ("BECK.KL2012" == oArticle.PartNr) { if (!oArticle.Properties.ARTICLE_DEPTH.IsEmpty) WriteMessage("ARTICLE_DEPTH : " + oArticle.Properties.ARTICLE_DEPTH); if (!oArticle.Properties.ARTICLE_VARIANT.IsEmpty) WriteMessage("ARTICLE_VARIANT : " + oArticle.Properties.ARTICLE_VARIANT); foreach (int nIndex in oArticle.Properties.ARTICLE_FREE_DATA_DESCRIPTION.Indexes) WriteMessage("ARTICLE_FREE_DATA_DESCRIPTION[" + nIndex + "] : " + oArticle.Properties.ARTICLE_FREE_DATA_DESCRIPTION[nIndex]); foreach (int nIndex in oArticle.Properties.ARTICLE_FREE_DATA_UNIT.Indexes) WriteMessage("ARTICLE_FREE_DATA_UNIT[" + nIndex + "] : " + oArticle.Properties.ARTICLE_FREE_DATA_UNIT[nIndex]); foreach (int nIndex in oArticle.Properties.ARTICLE_FREE_DATA_VALUE.Indexes) WriteMessage("ARTICLE_FREE_DATA_VALUE[" + nIndex + "] :" + oArticle.Properties.ARTICLE_FREE_DATA_VALUE[nIndex]); } } } 2.2 plan::EplApi::DataModel::ArticleReference This class represents a part reference on a project, function, or a connection. [C#] Article oArticle = new Article(); oArticle.Create(oProject, "KUKA.KR30-3", "1"); //empty Article is created in a Project bool bResult = oArticle.LoadFromMasterdata(); //Article is filled with data from system parts database oProject.AddArticleReference("KUKA.KR30-3", "1", 1); //reference to the Article is created on a Project oFunction.AddArticleReference("KUKA.KR30-3", "1", 1); //reference to the Article is created on a Function oConnection.AddArticleReference("KUKA.KR30-3", "1", 1); //reference to the Article is created on a Connection 2.4 Eplan::EplApi::DataModel::Connection Some properties of Data model classes are not linked with their owners even if from the syntax it may seem otherwise. Like in this line: oRectangle.Pen.ColorId = 5, the ColorId of the Pen is changed but oRectangle object doesn't know about it since the Pen property is a stand alone value not aware of oRectangle object existence. This remark applies to the following Connection properties: Articles, Shieldings, SubConnections, SymbolReferences, Pins. 2.5 Eplan::EplApi::DataModel::Function A class that represents logical devices (or device sub-components) of Eplan.EplApi.DataModel.Project's Eplan.EplApi.DataModel.Page. Example The following example shows how to create and place Function on page. [C# string strSymbolLibName = "DIC_WUPD"; string strSymbolName = "MW"; int nVariant = 1; //First get SymbolVariant SymbolLibrary oSymbolLibrary = new SymbolLibrary(oProject, strSymbolLibName); Symbol oSymbol = new Symbol(oSymbolLibrary, strSymbolName); SymbolVariant oSymbolVariant = new SymbolVariant(); oSymbolVariant.Initialize(oSymbol, nVariant); //Create Function Function oNewFunction = new Function(); oNewFunction.Create(oPage, oSymbolVariant); //Set function name oNewFunction.Name = "=AP+ST1-M1"; oNewFunction.VisibleName = "M1"; //Set pins descriptions oNewFunction.Properties.FUNC_CONNECTIONDESIGNATION[1] = "1"; oNewFunction.Properties.FUNC_CONNECTIONDESIGNATION[2] = "2"; oNewFunction.Properties.FUNC_CONNECTIONDESIGNATION[3] = "PE"; //Set location oNewFunction.Location = new PointD(120.0, 215.0); Next example shows how to build connection between two functions. [C#] string strSymbolLibName = "DIC_WUPD"; string strSymbolName = "M3"; int nVariant = 0; SymbolLibrary oSymbolLibrary = new SymbolLibrary(oProject, strSymbolLibName); Symbol oSymbol = new Symbol(oSymbolLibrary, strSymbolName); SymbolVariant oSymbolVariant = new SymbolVariant(); oSymbolVariant.Initialize(oSymbol, nVariant); Function oFunction = new Function(); oFunction.Create(oPage, oSymbolVariant); oFunction.Name = "A"; oFunction.Location = new PointD(100, 100); Function oFunction2 = new Function(); oFunction2.Create(oPage, oSymbolVariant); oFunction2.Name = "B"; oFunction2.Location = new PointD(100, 50); new Eplan.EplApi.HEServices.Generate().Connections(oPage.Project); //oFunction.Pins[3].TargetPins[0].ParentFunction.Name == "=+-B" 2.6 Eplan.EplApi.Base.SchemeSetting Settings are used to save values of variables beyond the runtime of the program and to make them available again the next time program is run (similar to the Windows registry). A setting has a unique identifier in the system. A value or a list of values can be saved to a setting. It is possible to group settings into structures Eplan.EplApi.Base.SchemeSetting. Example Access to a setting of the system try { String strGuiLanguage= new Settings().GetStringSetting("USER.SYSTEM.GUI.LANGUAGE", 0); System.Windows.Forms.MessageBox.Show("The user interface language is set to: "+ strGuiLanguage); } catch (BaseException exc) { String strMessage= exc.Message; System.Windows.Forms.MessageBox.Show("Exception: " + strMessage); }