private static void handleDeviceItem(NodeHandler handler, IDeviceItem item) { NodeHandler child_handler = handler.Enter(item, item.Name); if (child_handler != null) { ControllerTarget controller = item as ControllerTarget; if (controller != null) { NodeHandler block_handler = child_handler.Enter(controller.ProgramblockFolder.Blocks, "Blocks"); if (block_handler != null) { iterDataBlock(block_handler, controller.ProgramblockFolder.Blocks); iterBlockFolder(block_handler, controller.ProgramblockFolder.Folders); } child_handler.Exit(controller.ProgramblockFolder.Blocks); } iterDeviceItem(child_handler, item.DeviceItems); } handler.Exit(item); }
public override void Initialize(Toolset _toolSet) { if (target != null) { Destroy(target); } base.Initialize(_toolSet); if (targetOverride == null) { target = Instantiate(ToolSet.ControllerTarget, ToolSet.ControllerTarget.transform.position, ToolSet.ControllerTarget.transform.rotation, ToolSet.ControllerTarget.transform.parent); target.name = "DrawFieldTarget"; } else { target = targetOverride; } hightlightTarget = target.GetComponent <ControllerTarget>(); hightlightTarget.SetMesh(sphereMesh); positionHighlight = target.transform.GetChild(0).gameObject; targetBasePos = target.transform.localPosition - Vector3.forward * radius; GameObject tp = Instantiate(targetPointer, target.transform); tp.transform.localPosition = Vector3.zero; tp.transform.localRotation = Quaternion.identity; tp.GetComponent <MeshRenderer>().material = MaterialHolder.DeleteSphereMat; target.SetActive(false); particles = ParticleField.System; gameArea = InitializeGameArea.GameArea; }
internal void LoadControlerFolderViaOpennessDlls(TIAOpennessControllerFolder parent, ControllerTarget controller) { var fld = new TIAOpennessProgramFolder(this, parent) { TiaPortalItem = controller.ProgramblockFolder, Name = controller.ProgramblockFolder.Name, Parent = parent, }; parent.ProgramFolder = fld; parent.SubItems.Add(fld); LoadSubProgramBlocksFoldersViaOpennessDlls(fld, controller.ProgramblockFolder); var fld2 = new TIAOpennessPlcDatatypeFolder(this, parent) { TiaPortalItem = controller.ControllerDatatypeFolder, Name = "PLC data types", Parent = parent, }; parent.PlcDatatypeFolder = fld2; parent.SubItems.Add(fld2); LoadSubPlcDatatypeFoldersViaOpennessDlls(fld2, controller.ControllerDatatypeFolder); }
private void extractAlarmDefsToolStripMenuItem_Click(object sender, EventArgs e) { if (tiaPortal != null) { if (data_block_dialog == null) { data_block_dialog = new BrowseDialog(tiaPortal); data_block_dialog.Descend = TIATree.ControllerOnly; data_block_dialog.Leaf = TIATree.SharedDBOnly; data_block_dialog.AutoExpandMaxChildren = 1; data_block_dialog.AcceptText = "Extract"; data_block_dialog.Text = "Select alarm data block"; } if (data_block_dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (data_block_dialog.SelectedObject is DataBlock) { DataBlock block = (DataBlock)data_block_dialog.SelectedObject; try { // Extract from data base string filename = TempFile.Name("AlarmDB", "xml"); block.Export(filename, ExportOptions.WithDefaults | ExportOptions.WithReadOnly); alarmList.DataSource = null; AlarmDB.parseFile(defs, filename); System.IO.File.Delete(filename); // Extract from constant tags // Move up the tree until we find a ControllerTarget IEngineeringObject obj = (block as IEngineeringObject).Parent; while (!(obj is ControllerTarget)) { obj = obj.Parent; // Shouldn't happen, but just in case if (obj == null) { MessageBox.Show(this, "No controller found as parent"); return; } } ControllerTarget controller = (ControllerTarget)obj; List <ConstTable.Constant> consts = new List <ConstTable.Constant>(); ControllerTagTable table = controller.ControllerTagFolder.TagTables.Find("Alarms"); if (table == null) { MessageBox.Show(this, "No tag table named Alarms was found"); } else { filename = TempFile.Name("ConstantTags", "xml"); Console.WriteLine("Wrote to " + filename); table.Export(filename, ExportOptions.WithDefaults | ExportOptions.WithReadOnly); List <ConstTable.Constant> constants = ConstTable.getConstants(filename); foreach (ConstTable.Constant c in constants) { if (c.Name.StartsWith("Alarm") && c.Value is int) { AlarmDefinition a = defs.FindByID((int)c.Value); if (a != null) { a.Name = c.Name.Substring(5); } } } } defs.ValidateID(); alarmList.AutoGenerateColumns = false; alarmList.DataSource = defs; } catch (Exception ex) { MessageBox.Show("Failed to extract alarm definitions: " + ex.Message); } } } } }
private void alarmDefsToolStripMenuItem_Click(object sender, EventArgs e) { if (tiaPortal != null) { if (folder_dialog == null) { folder_dialog = new BrowseDialog(tiaPortal); folder_dialog.Descend = TIATree.ControllerOnly; folder_dialog.Leaf = (o => o is IBlockAggregation); folder_dialog.AutoExpandMaxChildren = 1; folder_dialog.AcceptText = "Generate"; folder_dialog.Text = "Select where to generate block"; } if (folder_dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (folder_dialog.SelectedObject is IBlockAggregation) { IBlockAggregation folder = (IBlockAggregation)folder_dialog.SelectedObject; string filename = AlarmDB.buildFile(defs); try { folder.Import(filename, ImportOptions.Override); } catch (Siemens.Engineering.EngineeringException ex) { MessageBox.Show(this, "Failed to import alarm definitions: " + ex.Message); System.IO.File.Delete(filename); return; } System.IO.File.Delete(filename); // Move up the tree until we find a ControllerTarget IEngineeringObject obj = folder.Parent; while (!(obj is ControllerTarget)) { obj = obj.Parent; // Shouldn't happen, but just in case if (obj == null) { MessageBox.Show(this, "No controller found as parent"); return; } } ControllerTarget controller = (ControllerTarget)obj; List <ConstTable.Constant> consts = new List <ConstTable.Constant>(); foreach (AlarmDefinition alarm in defs) { consts.Add(new ConstTable.Constant("Alarm" + alarm.Name, alarm.ID, alarm.Text)); } filename = ConstTable.buildFile("Alarms", consts); try { controller.ControllerTagFolder.TagTables.Import(filename, ImportOptions.Override); } catch (Siemens.Engineering.EngineeringException ex) { MessageBox.Show(this, "Failed to import constants: " + ex.Message); System.IO.File.Delete(filename); return; } System.IO.File.Delete(filename); } } } }