Help
  • Explore Community
  • Get Started
  • Ask the Community
  • How-To & Best Practices
  • Contact Support
Notifications
Login / Register
Schneider Electric
Community
Community
Notifications
close
  • Categories
  • Forums
  • Knowledge Center
  • Blogs
  • Ideas
  • Events & Webinars
Help
Help
  • Explore Community
  • Get Started
  • Ask the Community
  • How-To & Best Practices
  • Contact Support
Login / Register

Contact Support

Close

Ask our Experts

Have a question related to our products, solutions or services? Get quick support on community Forums

Email Us

For Community platform-related support, please email us

New Community Ranking System
Our Community ranking system has recently been updated. You may notice changes in user rankings and receive system messages or notifications. If you have questions about how the new ranking works, please refer to the announcement post for more details (click here).

Digital Twin

This knowledge base is addressing usage of software Experior, Machine Expert Twin and future Automation Expert Twin. These softwares are used to create smaller instances of digital twins for use in industrial automation, warehouse management, design & engineering with more..

Search in

Improve your search experience:

  • Exact phrase → Use quotes " " (e.g., "error 404")
  • Wildcard → Use * for partial words (e.g., build*, *tion)
  • AND / OR → Combine keywords (e.g., login AND error, login OR sign‑in)
  • Keep it short → Use 2–3 relevant words , not full sentences
  • Filters → Narrow results by section (Knowledge Base, Users, Products)
cancel
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Select a Country

Please select a country to continue with beta search.

  • Home
  • Schneider Electric Community
  • Knowledge Center
  • Digital Twin
Options
  • Knowledge Base Article Dashboard
  • Subscribe
  • Bookmark
  • Invite a Friend
Invite a Co-worker
Send a co-worker an invite to the portal.Just enter their email address and we'll connect them to register. After joining, they will belong to the same company.
You have entered an invalid email address. Please re-enter the email address.
This co-worker has already been invited to the Exchange portal. Please invite another co-worker.
Please enter email address
Send Invite Cancel
Invitation Sent
Your invitation was sent.Thanks for sharing Exchange with your co-worker.
Send New Invite Close
Labels
Top Labels
  • Alphabetical
  • Experior 6 85
  • Experior 7 57
  • Exp-6 Developer Guide 35
  • Exp-7 Developer 16
  • Exp-6 User Guides 16
  • Exp-7 Communication Protocols 11
  • Exp-6 Experior 11
  • Exp-6 Communication Protocols 11
  • Exp-7 Getting Started 10
  • Exp-6 Dev Environment 9
  • Exp-7 User Interface 9
  • Exp-6 Dev Assembly 7
  • Exp-7 Building Models 6
  • Exp-7 Working With Models 5
  • Exp-6 PLC 4
  • Exp-6 Getting Started 3
  • Exp-7 Importing Graphics 3
  • Exp-6 3rd Party Programs 2
  • Exp-6 Tips and Tricks 2
  • Remote Viewer 2
  • Exp-6 Model Modifications Examples 1
  • Previous
  • 1 of 3
  • Next
Top Contributors
  • Kasper.Vestrup
    Kasper.Vestrup
See More Contributors

Related Forums

  • Intelligent Devices Forum

Previous Next

Invite a Colleague

Found this content useful? Share it with a Colleague!

Invite a Colleague Invite

Digital Twin

Sort by:
Date
  • Date
  • Views
  • Likes
Options
  • Knowledge Base Article Dashboard
  • Subscribe
  • Bookmark
  • Invite a Friend
  • « Previous
    • 1
    • 2
    • 3
    • 4
    • …
    • 8
  • Next »

Rigid Sensor Part

RigidSensorPart The class Experior.Core.Parts.Sensors.RigidSensorPart derives from the abstract class Experior.Core.Parts.RigidPart. RigidSensorPart objects are used in the PhysX environment to detect and manage collisions with RigidParts such as Loads and Assemblies. Since they rely on the collision detection of the PhysX engine they have no functionality in the discrete mode. RigidSensorParts are available in different shapes (Experior.Core.Parts.Sensors.Cube, Experior.Core.Parts.Sensors.Sphere, Experior.Core.Parts.Sensors.Cylinder) and with different functionality (Experior.Core.Parts.Sensors.LoadMagnet and Experior.Core.Parts.Sensors.EaterCube). All sensor assemblies of the Sensor catalog contain at least one RigidSensorPart.   An example of the creation and usage of a RigidSensorPart can be found here.   Events event EnterEvent Enter; This event is called when the sensorpart collides with a part it should detect according to its Collision property. The delegate it will call has two arguments, the activated sensorpart and the triggering object (can be cast to Load or Assembly).   event LeaveEvent Leave; This event is called when the sensorpart collides with a part it should detect according to its Collision property. The delegate it will call has two arguments, the activated sensorpart and the triggering object (can be cast to Load or Assembly).   Properties virtual bool Active This property returns true when the sensorpart collides with a part it should detect according to its Collision property, false otherwise.   Experior.Core.Environment.Collisions Collision The Collision property has 3 possible values : Core.Environment.Collisions.Both, Core.Environment.Collisions.Loads and Core.Environment.Collisions.Equipment. Core.Environment.Collisions.Both: in this case the sensorpart will detect loads as well as assemblies Core.Environment.Collisions.Loads: in this case the sensorpart only detects loads Core.Environment.Collisions.Equipment: in this case the sensorpart detects rigidparts of an assembly   List<Load> Loads This property returns the list of all loads that are currently colliding with the sensorpart.
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:43 AM

on ‎2026-01-15 05:43 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
160 Views

Interaction with Excel files

Experior provides some methods to read data from an Excel file and to write data into an Excel file.   To do this you can use the Experior.Core.Data.Excel class with the following methods. public static List<List<string>> Read(string filename, string sheetname); public void Write(string filename, string sheetname, List<List<string>> records);   There is also the possibility to verify whether a worksheet exists in a an Excel file with a given name. public static bool Exists(string filename, string sheetname);   By using the classes Excel, ExcelWorkbook, ExcelWorkSheet, from the namespace Experior.Core.Data.OfficeOpenXml you can obtain even more direct control.   For example. string filePath = Experior.Core.Directories.Model + "\\Simulation_results_" + DateTime.Now.Day.ToString() + "_" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Year.ToString() + "_" + DateTime.Now.Hour.ToString() + "_" + DateTime.Now.Minute.ToString() + "_.xlsx"; // create a new Excel workbook with the given filename and add a Worksheeet named "Simulation results" Experior.Core.Data.OfficeOpenXml.Excel e = new Core.Data.OfficeOpenXml.Excel(new System.IO.FileInfo(filePath)); Experior.Core.Data.OfficeOpenXml.ExcelWorksheet worksheet = e.Workbook.Worksheets.Add("Simulation results"); // write the data into the cells of the worksheet worksheet.Cells[1, 1].Value = "Total occupation time conveyor system"; worksheet.Cells[1, 2].Value = swTotalOnConv.elapsed.ToString(); worksheet.Cells[2, 1].Value = "Waiting time drivers"; for (int i = 0; i < driverWaitingTime.Count; i++) { worksheet.Cells[3 + i, 1].Value = "Waiting time after pattern " + (i + 1).ToString(); worksheet.Cells[3 + i, 1].Value = driverWaitingTime[i].elapsed.ToString("c"); } // Add another worksheet named "Simulated Pattern" Experior.Core.Data.OfficeOpenXml.ExcelWorksheet worksheetPattern = e.Workbook.Worksheets.Add("Simulated pattern"); r = 1; c = 1; foreach (List<string> rows in SimulatedPatternSheet) { c = 1; foreach (string cell in rows) { worksheetPattern.Cells[r, c].Value = cell; c++; } r++; } //save the Excel workbook file e.Save();
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:42 AM

on ‎2026-01-15 05:42 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
158 Views

RigidPart

The Experior.Core.Parts.RigidPart class is the base abstract class to encapsulate rigid bodies that are used by the NVIDIA PhysX engine.   Some important classes that derive from RigidPart are RigidSensorPart (used by sensors) and RigidLoadPart (used inside loads).   Methods & Properties related to attaching loads. The methods below are used to attach loads to a rigidpart and keep them at a given relative position and orientation to the RigidPart. For the physics engine the loads are no longer dynamic actors that are moved according to forces and torques that are applied to them, but instead the loads become kinematic objects after attaching them to a RigidPart. You can use these method e.g. to attach a load to a gripper of a robot or keep it on a fast moving shuttle.   Note: There is an important distinction between the different Attach methods related to the collision of the load with a sensor. This distinction is necessary due to a limitation of the PhysX engine. The physics engine does not give a notification if you use the program to change the position of a load that is in contact with a sensor. Therefore, in attach methods that change the position/orientation of the load the load is taken out of the sensors it was colliding with by the programming (generating the Leave event of the sensor to allow reacting upon this change).   Attach(Load load): This method will attach the given load to the current RigidPart.This implies that if the RigidPart moves/rotates that the attached load will move with it, keeping its relative position/orientation as when it was attached. When the load was colliding with a sensor the Leave event of the sensor is not called (see Note above).   Attach(List<Load> loads): This method will attach all loads from the given list to the current RigidPart. When the loads were colliding with a sensor the Leave event of the sensor is not called (see Note above).   Attach(Load load, Vector3 localposition): This method will attach the given load to the current RigidPart at the given relative localposition from the origin of the rigidpart.   Attach(Load load, Vector3 localposition, float localyaw, float localpitch, float localroll): This method will attach the given load to the current RigidPart at the given relative localposition from the origin of the rigidpart and with a relative orientation determined by the given localyaw, localpitch,localroll Euler angles.   Attach(Load load, Vector3 localposition, Matrix localorientation): This method will attach the given load to the current RigidPart at the given relative localposition from the origin of the rigidpart and with a relative orientation determined by the given orientation matrix localorientation.   Attach(List<Load> loads, List<Vector3> positions, List<Matrix> orientations): This method will attach all loads from the given list to the current RigidPart. The given positions list and given orientations list contains the releative position and relative orientation for the load with the same index in the loads list.   UnAttach(Load load): Unattach the given load from the current RigidPart and make it a dynamic actor again for the physics engine.   UnAttach(): Unattach all loads that are attached to the current RigidPart and make them dynamic actors again for the physics engine.   In the example below a load is attached to the sensor upon the Enter event. private void Entering(Core.Parts.Sensors.RigidSensorPart sensor, object trigger) { //already attached if (((Core.Loads.Load)trigger).IsAttached) return; //avoid that the load gets selected ((Core.Loads.Load)trigger).Selectable = false; //attach load at current relative position/orientation to the sensor part sensor.Attach((Core.Loads.Load)trigger); }   Methods & Properties related to PhysX interaction.   Actor Actor: This property sets/returns the instance of the Experior.PhysX.Actor class representing this RigidPart which is used inside the NVIDIA PhysX engine (NxActor class). Actors are the main objects in a physx simulation.   Experior.Core.Parts.Friction Friction: This property sets/returns the friction definition for this RigidPart as used by the physics engine. The Experior.Core.Parts.Friction class defines the static and the dynamic friction and has some predefined Friction configurations for the user’s convenience. These are Friction.Coefficients.Slippy, Friction.Coefficients.Sticky, Friction.Coefficients.Smooth & Friction.Coefficients.None. When you require more control over the static and dynamic friction values used for your RigidPart then you can provide custom values for the Static and Dynamic property of the Friction property when using Friction.Coefficients.Custom. var cube = new Experior.Core.Parts.Cube(System.Drawing.Color.DarkGray, info.length, info.height, info.width); cube.Friction.Coefficient = Friction.Coefficients.Slippy;   bool Kinematic: By setting the Kinematic property to true, the rigidpart is made a kinematic object instead of a dynamic one. This implies that the part will no longer respond to the forces applied to it and the position and orientation of the part is controlled by the user. When kinematic is false then the part is considered a dynamic object for the physics engine.   Methods & Properties related to relative positioning. bool Configured: This getter property returns true when the RigidPart is added to a parent object (e.g. assembly) and positioned using the LocalPosition, LocalYaw, properties.    float LocalYaw: This getter/setter property reflects the rotation angle (in radians) of the RigidPart around the Y-axis of its parent object.    float LocalPitch: This getter/setter property reflects the rotation angle (in radians) of the RigidPart around the X-axis of its parent object.    float LocalRoll: This getter/setter property reflects the rotation angle (in radians) of the RigidPart around the Z-axis of its parent object.    Matrix LocalOrientation: This property returns or sets the relative orientation of the RigidPart with respect to its parent object as defined in the Microsoft.DirectX.Matrix structure   Vector3 LocalPosition: This property returns or sets the relative 3 dimensional coordinates of the center of the RigidPart with respect to its parent object   Methods & Properties related to editing. bool Dragable: Tthis getter/setter property controls whether you can drag the RigidPart, e.g. The start and end fixpoints in the conveyor assemblies are Dragable by default to allow the user to change the length of the conveyor by dragging the fixpoints to another position. bool Locked: This getter/setter property allows to lock/unlock the RigidPart. When the part is locked it will change color to Colors.LOCKEDCOLOR (Yellow by default). bool Selectable: This getter/setter property allows to control whether the RigidPart can be selected (e.g. by clicking on it). IEntity Parent: This getter property returns the parent entity  form the RigidPart. If a RigidPart is added to an Assembly using then the Parent will return this Assembly.   Property related to rendering RenderingMode RenderOption: This getter/setter property is used to get/set how the RigidPart should be rendered. The following values are possible:   Primitive: The part will only be rendered when the Experior.Core.Environment.Scene.PresentationLevel of Experior is Core.Environment.Scene.PresentationLevels.Primitives   PrimitiveAndNormal: The part will only be rendered when the Experior.Core.Environment.Scene.PresentationLevel is Scene.PresentationLevels.Primitives or Scene.PresentationLevels.Normal or Scene.PresentationLevels.Detailed or only its wireframe when Scene.PresentationLevels.Wireframe.   Normal: The part will only be rendered when the Experior.Core.Environment.Scene.PresentationLevel is Scene.PresentationLevels.Normal, Scene.PresentationLevels.Detailed or only its wireframe when Scene.PresentationLevels.Wireframe   Transparent: The part will only be rendered transparently (you can see through it) when the Experior.Core.Environment.Scene.PresentationLevel is Scene.PresentationLevels.Normal, Scene.PresentationLevels.Detailed. Note: Transparency is only visible in Locked mode, in Edit mode the part is rendered nontransparent.   TransparentPrimitiveAndNormal: The part will only be rendered transparently (you can see through it) when the Experior.Core.Environment.Scene.PresentationLevel is Scene.PresentationLevels.Normal, Scene.PresentationLevels.Detailed and Scene.PresentationLevels.Primitives. Note: Transparency is only visible in Locked mode, in Edit mode the part is rendered nontransparent.
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:41 AM

on ‎2026-01-15 05:41 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
85 Views

Open Office XML

The Experior.Core.Data library includes a tool for creating Office Open XML spreadsheets   The sample below shows how to create a work book with a sheet called “Data” FileInfo file = new FileInfo(@"c:\Test.xlsx"); if (file.Exists) { file.Delete(); // ensures we create a new workbook file= new FileInfo(@"c:\Test.xlsx"); } using (Experior.Core.Data.OfficeOpenXml.Excel excel = new Experior.Core.Data.OfficeOpenXml.Excel(newFile)) { Experior.Core.Data.OfficeOpenXml.ExcelWorksheet sheet = excel.Workbook.Worksheets.Add("Date"); sheet.Cells[1, 1].Value = "Data"; sheet.Cells[3, 1].Value = "1"; sheet.Cells[3, 2].Value = "2"; sheet.Cells[4, 1].Value = "3"; sheet.Cells[4, 2].Value = "4"; excel.Save(); }   Result:     Use the sheet:Cells[x,y].Style to set background color, font, border etc.
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:39 AM

on ‎2026-01-15 05:39 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
173 Views

Internal communication

Experior provides an infrastructure for sending messages between objects.   In the Developer samples catalog an example of how to do this can be found.   The basic steps are; Register an object as a listener. Core.Communication.Internal.AddListener(object listener, RecieveMessage method)   For example. Core.Communication.Internal.AddListener(this, ReceiveMethod);   Where a method like this should be provided. void ReceiveMethod(object sender, object reciever, object message, bool broadcast)   2. Send a message to a known receiver. Core.Communication.Internal.SendMessage(object sender, object reciever, object message)   Broadcast a message to all listeners. Core.Communication.Internal.BroadcastMessage(object sender, object message)   Broadcast a message to all listeners of a specific type. Core.Communication.Internal.BroadcastMessage(object sender, Type recieverType, object message)   Broadcast a message to all listeners of a specific type (FullName). Core.Communication.Internal.BroadcastMessage(object sender, string recieverTypeFullName, object message)   3. When an object should stop listen or is disposed it should be removed. Core.Communication.Internal.RemoveListener(object listener)   Note: The specified delegate of the reciever is executed synchronously.
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:37 AM

on ‎2026-01-15 05:37 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
123 Views

Dynamic Properties

You can add properties to assemblies at runtime.   To enable the feature the class has to use the attribute Experior.Core.Properties.DynamicObjectConverter.   Example: Adding properties two properties Properties.Add(newDynamicProperty { Name = "Value1", Type = typeof(int), Description = "custom property (integer)",Category = "Testing", Value = 1 }); Properties.Add(newDynamicProperty { Name = "Value2", Type = typeof(float), Description = "custom property (float)", Category = "Testing", Value = 10.0f });   By overriding the DynamicPropertyChanged method the object can handle the changes made to the properties added above public override void DynamicPropertyChanged(DynamicProperty property) { Log.Write(property.Name + " is changed to " + property.Value); }   See the sample DynamicProperties class in the Demo catalog for more information
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:36 AM

on ‎2026-01-15 05:36 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
103 Views

Reports – create custom class

This example shows how to create a custom statistics class that shows up in the generated report.   To add public values to the Statistics form window in Experior set the Observe value to true.   public class TestStatistics : Core.Reports.Statistics.Statistic { public override string Title { get { return "Test Statistics"; } } private double example; [DisplayName("Example field")] public double Example { get { return example; } set { if (value != example) { example = value; NotifyPropertyChanged("Example field"); } } } }
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:35 AM

on ‎2026-01-15 05:35 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
152 Views

Thread safe methods in Experior

To safely change properties and call methods in Experior be sure that you are running in the “Engine thread”. If the Property Experior.Core.Environment.InvokeRequried is false, then you are running in the “Engine thread”. Otherwise you need to invoke the method call.   Example code:   private void SomeMethod() { if (Experior.Core.Environment.InvokeRequired) { //Not running in Experior Engine thread Experior.Core.Environment.Invoke(SomeMethod); return; } //Put method code here. //Code is executed in Experior engine thread //and it is safe to call Experior methods. ... }
View full article
Kasper.Vestrup Explorer
‎2026-01-15 05:34 AM

on ‎2026-01-15 05:34 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
122 Views

[KNOWN ISSUE] Creating a custom catalog or plugin for Experior 6 in Visual Studio 2022

Please note that if you are creating a custom catalog or plugin for Experior 6 in Visual Studio 2022, you will get an error message when trying to compile the .dll. This is because Visual Studio 2022 will not be able to locate experior.build.dll. The reason it can’t locate the file, is because it is 32 bit and Visual Studio 2022 (or newer) is 64 bit.   You will be able to compile a catalog/plugin with previous versions of Visual Studio, for example 2019 is confirmed working with Experior 6.   Are you experiencing this issue and need help, feel free to contact us on email experior.support@se.com
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:34 AM

on ‎2026-01-15 12:34 AM

Labels:
  • Exp-6 Developer Guide
  • Experior 6
130 Views

Logging and Diagnostic messages

To provide diagnostic, debug or logging messages Experior provides several mechanisms.   Logging The Experior.Core.Environment.Log class provides the following static methods to write messages to the Log window. public static void Write(Exception exception); public static void Write(string message); public static void Write(Exception se, int id); public static void Write(string message, bool underline); public static void Write(string message, Color color); public static void Write(string message, LogFilter filter); public static void Write(string message, string hightlight); public static void Write(string message, bool underline, LogFilter filter); public static void Write(string message, Color color, LogFilter filter); public static void Write(string message, string hightlight, Color color); public static void Write(string message, string hightlight, LogFilter filter); public static void Write(string message, Color color, bool underline, LogFilter filter); public static void Write(string message, string hightlight, Color color, bool underline); public static void Write(string message, string hightlight, Color color, LogFilter filter); public static void Write(string message, string hightlight, Color color, bool underline, LogFilter filter);   The meaning of the arguments is straightforward; The message is the string that will be logged to the log window (and/or file depending on the properties set by the user in Experior). The highlight is part of the message that will be shown in bold. The color is the color in which the message will be shown. Underline, this boolean indicates whether or not the message will be underlined. The filter corresponds with the chosen filter by the user in the properties of the Log;   To illustrate, the following code Experior.Core.Environment.Log.Write("Created sensorpart assembly", "sensorpart", CadetBlue, true, Communication ); Experior.Core.Environment.Log.Write("Created sensorpart assembly", "sensorpart", Red, false, Action); will be shown as follows (when no filter is applied);     Debug log   Similar to the regular logging there is also the possibility to only log your message in case the debugging option is set in Experior.   In this case the Experior.Core.Environment.Log.Debug class is used with the public static void Write(string message) method.   Example: Experior.Core.Environment.Log.Debug.Write("This is an example debug message");   Diagnostic info   Experior also provides the possibility to print diagnostic messages to other areas than the logging window.   Therefore the class Experior.Core.Environment.Diagnostic contains the following static methods: public static void Message(string message); public static void Message(string message, Color color); public static void Message(string sender, string message); public static void Message(string message, Color color, Environment.DiagnosticAction action); public static void Message(string sender, string message, Color color); public static void Message(string message, Color color, Environment.DiagnosticAction action, Environment.Signs sign); public static void Message(string sender, string message, Color color, Environment.DiagnosticAction action);   By default the messages are shown in the status area underneath the working area.   The arguments are;   Message: The information that will be shown. Sender: This string appended with a : will be shown before the message. It is mainly used to provide the origin of the message e.g. the Assembly name. Environment.DiagnosticAction: This is an enum with the following possible values; ALARM in this case the message will also be shown in the alarm window of experior TEMPORARY in this case the message will only be shown for couple of seconds TEMPORARYANDLOG in this case the message will only be shown for couple of seconds but it will also be printed to the log window (where it will remain) STICKY in this case the message will remain visible in the status area until a new message is requested or until the message is removed or the Clear() method is called of the Diagnostic class REMOVE way to remove a STICKY diagnostic message NONE Environment.Signs: This is an enum to indicate what icon should be attached to the message in the status area.
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:31 AM

on ‎2026-01-15 12:31 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
112 Views

Serialization

Experior saves a model by serializing all necessary model entities (actually their corresponding Info objects) into specific xml files and compressing those into an experior file.   Loading a model works vice versa, the experior file is uncompressed and each xml file it contains is deserialized.   The serializing and deserializing can be done using System.Xml.Serialization.XmlSerializer.   However Experior also provides a utility class Experior.Core.Environment.Serialization to make this process simpler.   Example: // Log all serializable types List<Type> serializable = Experior.Core.Environment.SerializableTypes; Experior.Core.Environment.Log.Write("We found " + ser.Count + " serializable types."); foreach (var t in serializable) { Experior.Core.Environment.Log.Write(" : " + t.ToString()); } // create the test.xml file and serialize the Info object of this assembly into it Experior.Core.Environment.Serialization.Serialize("test.xml", this.Info); // load the test.xml file and deserialize into a AssemblyInfo object AssemblyInfo res = (AssemblyInfo)Experior.Core.Environment.Serialization.DeSerialize("test.xml", typeof(AssemblyInfo));
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:22 AM

on ‎2026-01-15 12:22 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
73 Views

Random

Experior.Core.Environment.Random   Experior.Core.Environment.Random can be used to get a pseudo random sequence of numbers.   Properties int Seed: This property allows to get/set the Seed of the standard pseudo random number generator used by Experior.   Changing the seed allows to get a new sequence of pseudo random numbers.   Experior.Core.Mathematics.Statistics.Generators.Pseudo.StandardGenerator Generator: This property allows to get/set the standard pseudo random number generator used by Experior.   The standard pseudo random number generator has methods to obtain random bytes, integers, doubles, booleans (See example below).   Methods void Reset(): This resets the number generator. After the reset the random number generator will generate the same sequence of numbers for the current seed.   int Random(): Returns a random integer.   int Random(int max): Returns a random integer less than the given max   int Random(int min, int max): Returns a random integer between the given min and less than the given max   Example: Below is an example of the usage of a random number generator of Experior: private void ExampleOfRandom(int seed) { // Example of usage of random number generator // Set the seed of the pseudo random number generator // By using the same seed you'll get the same sequence of pseudo random numbers which fullfills // the reproducablility requirement (e.g. when debugging) // Change the seed for each iteration of experiments Experior.Core.Environment.Random.Seed = seed; // get a pseudo random integer between -20 and less than 21 int randomint = Experior.Core.Environment.Random.Next(-20, +21); Experior.Core.Environment.Log.Debug.Write("Debug message " + attr1); Experior.Core.Environment.Random.Reset(); // randomint will be the same value as before because we have reset the random number generator randomint = Experior.Core.Environment.Random.Next(-20, +21); Experior.Core.Environment.Log.Debug.Write("Debug message after reset seed " + attr1); // reset the scene (this will also reset all assemblies and reset the standard random number generator) Experior.Core.Environment.Scene.Reset(); // randomint will be the same value as before because we have reset the scene randomint = Experior.Core.Environment.Random.Next(-20, +21); Experior.Core.Environment.Log.Debug.Write("Debug message after reset " + attr1); // You can get the standard pseudo random generator through Experior.Core.Environment.Random.Generator // this allows you to get random bytes, radom integers, random doubles, // get random double beteen 0.3 and less then 7.9 double randomnumber = Experior.Core.Environment.Random.Generator.NextDouble(0.3, 7.9); byte[] randombytes = new byte[10]; // fills the given byte array with random values Experior.Core.Environment.Random.Generator.NextBytes(randombytes); // get a random boolean value bool randombool = Experior.Core.Environment.Random.Generator.NextBoolean(); }
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:21 AM

on ‎2026-01-15 12:21 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
65 Views

Environment Properties

Experior.Core.Environment.Properties   Experior.Core.Environment.Properties allows to interact with the properties window in Experior.   Suppose the value of property A of an assembly relies on the value of property B. When  a user changes the value of B, you want to have the new value of property A immediately visible. This can be achieved by using the Experior.Core.Environment.Properties.Refresh() method.   Methods void Refresh(): This will refresh the Property window to show all current property values of the selected entity.   void Clear(): This will clear the Property window of Experior so that is empty and shows no properties.   Example: private int attr1; public int Prop1 { get { return attr1; } set { attr1 = value; // refresh the property window so that // also the new value for CalculatedProp is visible Experior.Core.Environment.Properties.Refresh(); } } public int CalculatedProp { get { return attr1*2; } }
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:19 AM

on ‎2026-01-15 12:19 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
86 Views

Time

Experior.Core.Environment.Time   Experior.Core.Environment.Time class provides static properties that allow to interact with the time through code similar to the user interacting with below toolbar buttons.   Properties   bool ContinuouslyRunning: This property allows to get/set whether (in discrete mode)  the model will keep running even in case the engine detects no more events. In case this property is false the model will pause in case the simulation engine can find no more events.    double Elapsed: This property returns the elapsed time in seconds. This is the total world time the model has been running.   bool LockScaling: The LockScaling property is used to allow/disallow changing of the Simulation speed. If LockScaling is false the simulation speed can be changed otherwise it is fixed.    float MaxScale: By pressing PageUp in the workarea it is possible to speed up the simulation and run faster than the world time. This property allows to get/set the maximum ratio between simulated time and world time.     float MinScale: By pressing PageDown in the workarea it is possible to decrease the speed of the simulation and run slower than the world time. This property allows to get/set the minimum ratio between simulated time and world time.   float Scale: This property gets/sets the ratio between simulated and world time.     double Simulated: This property returns the simulated time in seconds. This is the total simulated time the model has been running.  
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:15 AM

on ‎2026-01-15 12:15 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
113 Views

SolutionExplorer class

The Experior.Core.Environment.SolutionExplorer class allows the developer to interact with the SolutionExplorer.   A typical usage is to refresh the SolutionExplorer because you know that some code impacts the tree structure.   E.g.: Experior.Core.Environment.SolutionExplorer.Refresh();   Or for a specific entity (assembly, motor…): Experior.Core.Environment.SolutionExplorer.Update(mychangedassembly);
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:14 AM

on ‎2026-01-15 12:14 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
62 Views

Scene

Experior.Core.Environment.Scene   Properties bool Paused: The Paused property returns true when the model is Paused (Simulated time is not progressing), false otherwise. bool Locked: The Locked property returns true if the Environment is in locked mode which implies that the model cannot be edited.   Events event Event Cleared: The Cleared event is triggered when the workspace is cleared. This occurs when a model is closed (either by explicitly closing a model or starting a new model). event Event Loaded: The Loaded event is triggered when a model is opened and completely loaded. event Event Locking: The Locking event is triggered when locking the model. event Event Pausing: The Pausing event is called when the model is being paused. event Event Saved: The Saved event is called when the current model is saved.   Methods Continue(): The Continue method resumes the running of the model. Lock(): The Lock method locks the model. Pause(): The Pause method pauses the running of the model.   Reset(): The Reset method pauses the model and resets the clock to 0. It will also reset all assemblies of the model   UnLock(): The Lock method unlocks the model so that it can be edited.   Example Below is an example of an assembly that illustrates the usage of above described events/methods: public ExampleEnvironment(AssemblyInfo info) : base(info) { Experior.Core.Environment.Scene.Loaded += Scene_Loaded; Experior.Core.Environment.Scene.Pausing += Scene_Pausing; Experior.Core.Environment.Scene.Saved += Scene_Saved; Experior.Core.Environment.Scene.Cleared += Scene_Cleared; Experior.Core.Environment.Scene.Locking += Scene_Locking; } void Scene_Locking() { Experior.Core.Environment.Diagnostic.Message(this.Name, "Diagnostic message : Scene is locked"); } void Scene_Cleared() { Experior.Core.Environment.Diagnostic.Message(this.Name,"Diagnostic message : Scene is cleared"); } void Scene_Saved() { Experior.Core.Environment.Diagnostic.Message(this.Name, "This is a diagnostic message in blue to indicate the model is saved", Blue); } void Scene_Pausing() { Experior.Core.Environment.Diagnostic.Message("This is a diagnostic message to indicate the model is paused"); /// this will clear the Properties window Experior.Core.Environment.Properties.Clear(); } void Scene_Loaded() { // change the presentation level to WireFrame Experior.Core.Environment.Scene.PresentationLevel = Wireframe; // lock the model Experior.Core.Environment.Scene.Lock(); // if custom assemblies contain references to other assemblies those // references can be re-established after the model has been // loaded again in a Scene_Loaded delegate // suppose we have two assemblies A and B both having // property LinkedAssembly that reference the other assembly. // when loading the model this relationship can only be completely // reestablished when the model is completely loaded // and we are sure that both assemblies exist. // (In the constructor of Assembly A we could not do this // yet because it is not garanteed that // Assembly B exists already. Or vice versa) // A.LinkedAssembly = B // B.LinkedAssembly = A Experior.Core.Environment.Diagnostic.Message("This is a sticky diagnostic message in Red", System.Drawing.Color.Red, STICKY); } public override void Reset() { base.Reset(); Experior.Core.Environment.Diagnostic.Message(this.Name, "Diagnostic message : assembly " + this.Name + " is reset"); } public override void Dispose() { base.Dispose(); // unsubscribe to events when disposing Experior.Core.Environment.Scene.Loaded -= Scene_Loaded; Experior.Core.Environment.Scene.Pausing -= Scene_Pausing; Experior.Core.Environment.Scene.Saved -= Scene_Saved; Experior.Core.Environment.Scene.Cleared -= Scene_Cleared; Experior.Core.Environment.Scene.Locking -= Scene_Locking; }
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:13 AM

on ‎2026-01-15 12:13 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
85 Views

Attributes

When an Experior model is saved, data added to an Attributes object is saved together with the rest of the model data.   Example The TestObject is an example of an object that is going to be saved: (Note: The object has to be serializable)   [Serializable] public class TestObject { public TestObject() { private string text; public string Text { get { return text; } set { text = value; } } private int count; public int Count { get { return count; } set { count = value; } } } }   Now create an instance of the TestObject class. TestObject test = new TestObject(); test.Count = 100; test.Text = "Hello";   And an instance of the Attribute class and then add the instance of the TestObject. The name Test1 is used to identify the object when the model is reloaded or whenever you want to get hold of the object. Core.Environment.Scene.Attributes attributes = new Core.Environment.Scene.Attributes(); attributes.Add("Test1", test);   The test object can at any time be removed by disposing the attribute object or by calling the static method Remove. attributes.Dispose(); or Core.Environment.Scene.Attributes.Remove(this.Name);
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:11 AM

on ‎2026-01-15 12:11 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
64 Views

Mini-markup text-markup language

Hyper-menus feature in Experior employs the mini-markup/text-markup language to decorate help dialogs.   Mini-markup must be well formed. That means that all tags must be properly closed and all attributes must have values enclosed in double quotes. For example this is how line-break tag would look like: <br/>   Markup Reference   <b> – The B element indicates that text is rendered as bold text.   No attributes are available for this tag.   Example: <b>Bold Text</b> <i> – The I element indicates that text is rendered as italic text. No attributes are available for this tag.   Example: <i>Italic Text</i> <u> – The U element indicate that text is rendered as underlined text. No attributes are available for this tag.   Example: <u>Underlined Text</u> <s> – The S element indicates that text is rendered as StrikeOut Text No attributes are available for this tag.   Example: <s>StrikeOut Text</s> or <strike>StrikeOut Text</strike> <font> – The font element indicates the size change, font face or text color. Attributes: size Indicates absolute or relative font size. For example size=”+1″ will increase the size of the text font by one point. size=”-2″ will decrease the size of the text font by two points. size=”12″ will set explicit text font size to 12 points. face Indicates the font name. For example face=”Arial” will set the font to Arial. color Indicates the text color. Named colors from Color class can be set or color using RGB format: #RRGGBB where RR indicates hexadecimal value of Red component, GG indicates hexadecimal value of Green component and BB indicate hexadecimal value of Blue component. For example color=”Red” will set text color to red.   Example: <font color=”Red” size=”-1″>Red smaller text</font> <h1> … <h6> Indicates block heading text. No attributes are available for this tag.   Example: <h1>Level One Heading</h1> <h3>Level 3 heading</h3> <a> Indicates an anchor – a hypertext link. Attributes: href – string which indicates hypertext reference. Attribute value is available in event arguments of MarkupLinkClick and can be used to provide more information about the link. name – string which indicates name of the link. Attribute value is available in event arguments of MarkupLinkClick and can be used to provide more information about the link.   Example:<a href=”MyLink”>My Link Text</a> <br/> – Indicates line break. No attributes are available for this tag.   Example: First Line<br/>Second Line <div> – Indicates generic block level container element. Attributes: align – Indicates the container content alignment. left, right or center are allowed values for this attribute. width – Indicate the container width in pixels. height – Indicate the container height in pixels. bgcolor – Indicate the container background color, for example: bgcolor=”#FF0000″ or bgcolor=”Red”. padding – Indicates the padding around the element in pixels. Format for the value is: left, right, top, bottom. For example: <div padding=”1,1,4,4″”> produces 1 pixel padding on left and right side of container and 4 pixels padding on top and bottom. All values must be specified. valign – Indicates the vertical alignment for the content blocks inside of container. Default value is top. Acceptable values are: top, middle, bottom   Example: <div align=”center” width=”120″>Block container element content center aligned with width of 120 pixels</div> <span> – Indicates the in-line block level container element. The tag does not cause the line break. You can use it to create tabular layouts. Attributes: align – Indicates the container content alignment. left, right or center are allowed values for this attribute. width – Indicate the container width in pixels. padding – Indicates the padding around the element in pixels. Format for the value is: left, right, top, bottom. For example: <span padding=”1,1,4,4″”> produces 1 pixel padding on left and right side of container and 4 pixels padding on top and bottom. All values must be specified.   Example: <span align=”right” width=”100″>In-line container element content right aligned with width of 100 pixels</span> <p> – The P element defines a paragraph. Attributes: align – Indicates the paragraph content alignment. left, right or center are allowed values for this attribute. width – Indicate the paragraph width in pixels. padding – Indicates the padding around the element in pixels. Format for the value is: left, right, top, bottom. For example: <p padding=”1,1,4,4″”> produces 1 pixel padding on left and right side of container and 4 pixels padding on top and bottom. All values must be specified.   Example: <p align=”right” width=”200″>Paragraph element content right aligned with width of 200 pixels</p> <expand/> – Indicates the position for the expand sign of the button inside of the markup text. This tag allows you to place the drop-down sign which indicates that button has drop-down anywhere inside of the markup text to reduce the space used by a button. Attributes: direction – Optional attribute that indicates the direction the expand sign points to. Possible values: left, right, top, bottom, popup   Example: Page<br/>Borders<expand/> <img> – The img tag defines an image. Attributes: src – Specifies the image source resource name or embedded resource name. width – Indicates the fixed image width in pixels. If this attribute is specified height attribute must be specified as well. height – Indicates the fixed image height in pixels. If this attribute is specified width attribute must be specified as well.   Supported entity characters: &lt; – less than < &gt; – greater than > &nbsp; – hard space &- ampersand &
View full article
Kasper.Vestrup Explorer
‎2026-01-15 12:10 AM

on ‎2026-01-15 12:10 AM

Labels:
  • Exp-6 Dev Environment
  • Exp-6 Developer Guide
  • Experior 6
126 Views

Derived Types

To create a list that contains all derived types just call: Experior.Core.Assemblies.Assembly.DerivedItems<TDerived>   The example below shows how to create a list of all Feeders in the current model: var feeders = Experior.Core.Assemblies.Assembly.DerivedItems<Experior.Catalog.Logistic.Feeder>();
View full article
Kasper.Vestrup Explorer
‎2026-01-14 06:22 AM

on ‎2026-01-14 06:22 AM

Labels:
  • Exp-6 Dev Assembly
  • Exp-6 Developer Guide
  • Experior 6
112 Views

IEntity

IEntity is an interface for a model entity that is typically shown in the Solution Explorer and has a Name, EntityId and properties to enable/disable itself and indicate whether it is selected and whether it can be deleted.   It also contains a getter property to indicate the parent of the entity.   Typical classes that implement the IEntity interface are: Experior.Core.Assemblies.Assembly, Experior.Core.Motors.Electric, Experior.Core.Communication.PLC.Input, Experior.Core.Communication.PLC.Output.
View full article
Kasper.Vestrup Explorer
‎2026-01-14 06:21 AM

on ‎2026-01-14 06:21 AM

Labels:
  • Exp-6 Dev Assembly
  • Exp-6 Developer Guide
  • Experior 6
48 Views
  • « Previous
    • 1
    • 2
    • 3
    • 4
    • …
    • 8
  • Next »
To The Top!

Forums

  • APC UPS Data Center Backup Solutions
  • EcoStruxure IT
  • EcoStruxure Geo SCADA Expert
  • Metering & Power Quality
  • Schneider Electric Wiser

Knowledge Center

Events & webinars

Ideas

Blogs

Get Started

  • Ask the Community
  • Community Guidelines
  • Community User Guide
  • How-To & Best Practice
  • Experts Leaderboard
  • Contact Support

    Ask our Experts

    Have a question related to our products, solutions or services? Get quick support on community Forums

    Email Us

    For Community platform-related support, please email us

Subscribing is a smart move!
You can subscribe to this board after you log in or create your free account.
Forum-Icon

Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.

Register today for FREE

Register Now

Already have an account? Login

Terms & Conditions Privacy Notice Change your Cookie Settings © 2026 Schneider Electric

Welcome!

Welcome to your new personalized space.

of

Explore