| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN |
| |
 | Eplan feiert 40 Jahre: Vom Start-up zum Marktführer, eine Pressemitteilung
|
Autor
|
Thema: Makro via API auf Seite einfügen (2482 mal gelesen)
|
Erowa Mitglied

 Beiträge: 11 Registriert: 26.01.2012 Microsoft Visual C# 2010 Express EPLAN Electric P8, V2.1 SP1
|
erstellt am: 26. Jan. 2012 08:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen Ich habe in C# eine grafische Oberfläche erstellt um oft verwendete Makros schnell auszuwählen und auf der aktuellen Seite einzufügen. Als Beispiel: if (rbnMT1.Checked) { parameter.AddParameter("FILENAME", strPfad_rbnMTx); parameter.AddParameter("VARIANT", "0"); oCLI.Execute("XGedStartInteractionAction /Name:XMIaInsertMacro", parameter); } => funktioniert einwandfrei... Nun möchte ich das Makro jedoch direkt an einer bestimmten Position absetzen und zwar auf der aktuell geöffneten Seite. Ist dazu die Klasse "Eplan.EplApi.HEServices.Insert" die richtige? Wenn ja, wie kann ich die Variable "Page" mit meiner aktuellen Seite definieren?? Das Makro soll direkt an der angegebene Position eingefügt werden, ohni weitere Eingaben (Mausklick) durch den Benutzer. Beispielcode wäre sehr hilfreich... Vielen Dank für eure Hilfe. Gruss
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Straight-Potter Mitglied Dipl.Ing. E-Technik
  
 Beiträge: 601 Registriert: 14.07.2008 EPLAN Plattform 2.9 SP1 API EEC Prof EEC One
|
erstellt am: 26. Jan. 2012 10:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Erowa
Du musst die aktuell markierte Seite holen über die SelectionSet::GetSelectedPages Method (in der Hilfe nachschauen!) Straight-Potter ------------------ Wenn wir bedenken, dass wir alle verrückt sind, ist das Leben erklärt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Straight-Potter Mitglied Dipl.Ing. E-Technik
  
 Beiträge: 601 Registriert: 14.07.2008 EPLAN Plattform 2.9 SP1 API EEC Prof EEC One
|
erstellt am: 27. Jan. 2012 10:40 <-- editieren / zitieren --> Unities abgeben:          Nur für Erowa
Hier auch mal ein kleines Beisoiel in C#! Hier bekommst du alle markierten Seiten in einem Array zurück. Die foreach-Schleife gibt dann den Seitenname(Identifizierend) aus... Gibt verschiedene Möglichkeiten die Seiten zu bekommen, das ist mal eine! Code:
SelectionSet oSel = new SelectionSet(); StorableObject[] oStore = null; oStore = oSel.GetSelectedPages(); foreach(Page oPage in oStore) { MessageBox.Show(oPage.IdentifyingName); }
------------------ Wenn wir bedenken, dass wir alle verrückt sind, ist das Leben erklärt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erowa Mitglied

 Beiträge: 11 Registriert: 26.01.2012 Microsoft Visual C# 2010 Express EPLAN Electric P8, V2.1 SP1
|
erstellt am: 27. Jan. 2012 11:10 <-- editieren / zitieren --> Unities abgeben:         
Hallo Straight-Potter Vielen Dank für deinen Hinweis. Ich habe das gestern mal probiert... jedoch habe ich noch ein Problem bei der Definition der oPage Variable (wie bringe ich den Namen der aktuellen seite in die Variable oPage?) Ich will die folgende Funktion nutzen: { PointD oPointD = new PointD(40.0, 40.0); Insert oInsert = new Insert(); Page oPage = new Page(); SelectionSet selectionSet = new SelectionSet(); StorableObject[] oStore = selectionSet.GetSelectedPages(); oPage = ??????? oInsert.SymbolMacro(strPfad_rbnMTx, 0, oPage, oPointD, Insert.MoveKind.Absolute); } Gruss
[Diese Nachricht wurde von Erowa am 27. Jan. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| Fachplaner für Elektrotechnik (m/w/d) | Wir sind eine international tätige Unternehmensgruppe der Automatisierungstechnik und beschäftigen über 1.000 Mitarbeiter und Mitarbeiterinnen an diversen Standorten. Entwickelt werden speziell auf den jeweiligen Kundenwunsch zugeschnittene Lösungskonzepte für Unternehmen aus den verschiedensten Branchen - vom Mittelstand bis zur Großindustrie. Zur Verstärkung unseres Teams suchen wir am ... | Anzeige ansehen | Feste Anstellung |
|
Straight-Potter Mitglied Dipl.Ing. E-Technik
  
 Beiträge: 601 Registriert: 14.07.2008 EPLAN Plattform 2.9 SP1 API EEC Prof EEC One
|
erstellt am: 27. Jan. 2012 13:28 <-- editieren / zitieren --> Unities abgeben:          Nur für Erowa
Also mit Code: StorableObject[] oStore = selectionSet.GetSelectedPages();
bekommst du ALLE selektierten Seiten zurück.Du kannst prüfen ob du nur eine Seite markiert hast und die der Variable oPage zuordnen:
Code:
//Hier wird erst mit eine if-Abfrage geprüft ob eine Seite markiert ist und ob es auch nur eine ist(und nicht mehrere!) if (oSel.IsPageSelected && oStore.Length == 1) { //Hier wird das selektierte Storeableobjekt in ein Objekt vom Typ Seite konvertiert Page oPage1 = (Page)oStore[0]; //ab hier hast du deine Seite in oPage1 und könntest nun dein Makro einfügen!!! MessageBox.Show(oPage1.IdentifyingName); }
Wenn mehrere Seiten markiert wurden musst du das Array durchsuchen und die gewünschte Seite rausholen (geht mit der Foreach-Schleife!!!) Straight-Potter ------------------ Wenn wir bedenken, dass wir alle verrückt sind, ist das Leben erklärt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |