| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN |
Autor
|
Thema: Eplan API Koordinaten auslesen (2442 mal gelesen)
|
Karlh1 Mitglied Elektrotechniker
Beiträge: 24 Registriert: 14.11.2008 Eplan P8 Prof. V1.9.10 Build 3725
|
erstellt am: 06. Aug. 2009 19:09 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle, ich hab ein mehr oder weniger kleines Problem. Ich möchte über die Eplan API die Koordinaten aller vier Eckpunkte eines Gerätekastens auslesen. Ist sowas überhaupt möglich??? Ich habs schon mit Page oPage = device.Page; oPage.Properties.s double oPoint = device.Page.Location.Y; double oPoint1 = device.Page.Location.X; PointD sfd = device.Page.Location; probiert, wobei device mein entsprechender Gerätekasten ist. Ich bekomme auch irgendwelche koordinaten zurück, aber die sind alles andere als glaubwürdig. Kann mir bitte jemand weiterhelfen? mfG Karlheinz 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: 07. Aug. 2009 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für Karlh1
Hallo Karlheinz, versuch es mal mit PointD oPoint = device.Location //Hier bekommst du die Koordinaten des Einfügepunktes oPoint.X oPoint.Y // Sind die jeweiligen X-Y Koordinaten Schau auch mal ob dir eine LogicalArea Property zur Verfügung steht! Laut API-Hilfe: LogicalArea value is presented as Base.PointDbl of which X coordinate holds the width of the LogicalArea and the Y coordinate holds height of the LogicalArea Kannst Du hier die Höhe und Breite herrausfinden und so auch die vier Eckpunkte.... 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 |
Karlh1 Mitglied Elektrotechniker
Beiträge: 24 Registriert: 14.11.2008 Eplan P8 Prof. V1.9.10 Build 3725
|
erstellt am: 07. Aug. 2009 18:11 <-- editieren / zitieren --> Unities abgeben:
|
Karlh1 Mitglied Elektrotechniker
Beiträge: 24 Registriert: 14.11.2008 Eplan P8 Prof. V1.9.10 Build 3725
|
erstellt am: 07. Aug. 2009 19:01 <-- editieren / zitieren --> Unities abgeben:
Hi, eine Frage hab ich noch, und zwar möchte ich gerne ein Makro einfügen. In irgend einer Methode hab ich stehen: Insert oInsert = new Insert(); Die HEServices DLL hab ich eingebunden und das Arbeitsverzeichnis steht auf dem Eplan BIN Ordner. Es lässt sich alles Fehlerfrei kompilieren aber die Methode in der das Insert Objekt angelegt werden soll wird nicht durchlaufen. Der Debugger bricht schon beim Methodenaufruf ab und bringt die Fehlermeldung Objekt nicht vorhanden. Die DLL ist aber da und auch korrekt eingebunden. Kann mir da bitte jemand weiterhelfen? Gruss Karlheinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FML Mitglied
Beiträge: 491 Registriert: 11.03.2002 Aktuell: EPLAN Electric P8 Professional V 2.6 HF2 V 2.7 V 2.7 Education<P>Eplan Fluid Add On Eplan ProPanel Add On Electric P8 API EEC Systeme: MS WINDOWS 10 MS WINDOWS 7 MS WINDOWS 2016 Server MS WINDOWS SQL Server
|
erstellt am: 07. Aug. 2009 23:24 <-- editieren / zitieren --> Unities abgeben: Nur für Karlh1
Hallo Karl Heinz, tja ohne den Code zu sehen wird das wohl schwierig. Ich füg Dir mal ein Beispiel an. z.B.- ein Fenstermakro einfügen: ..... Page page = new Page(); page.Create(project, DocumentTypeManager.DocumentType.Circuit, pagePropertyList); // Makroobjekt erzeugen WindowMacro windowMakro = new WindowMacro(); // Makro im Speicher öffnen windowMakro.Open(@"$(MD_MACROS\Macro.ema",project,WindowMacro.Enums.RepresentationType.MultiLine, 0); // Makro platzieren Insert insert = new Insert(); StorableObject[] insertedObject = insert.WindowMacro(windowMakro, windowMakro.RepresentationType, windowMakro.Variant, page, new PointD(0,0), Insert.MoveKind.Relative, WindowMacro.Enums.NumerationMode.Ignore); .... Hoffe das hilft Dir weiter. Gruß Fritz ------------------ Um zu sehen, musst Du die Augen offen halten. Um zu erkennen, musst Du sie schliessen und denken. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karlh1 Mitglied Elektrotechniker
Beiträge: 24 Registriert: 14.11.2008 Eplan P8 Prof. V1.9.10 Build 3725
|
erstellt am: 08. Aug. 2009 13:44 <-- editieren / zitieren --> Unities abgeben:
Hi Fritz, leider nicht ganz. Sobald ich die Zeile Insert oInsert = new Insert(); einfüge bekomme ich einen Fehler vom Visual Studio. Muss ich da noch irgendwas einstellen? Kann das eventuell mit irgendwelchen DLL´s zusammenhängen? Wenn ich die Zeile wieder auskommentiere funktioniert alles Problemlos. Der Fehler tritt aber erst nach dem kompilieren beim Programmdurchlauf auf. 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: 08. Aug. 2009 14:21 <-- editieren / zitieren --> Unities abgeben: Nur für Karlh1
Mmhh sollte eigentlich klappen! Poste doch mal bitte den betreffenden Codeausschnitt und ein Sceenshot der Fehlermeldung! Danke 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 |
Karlh1 Mitglied Elektrotechniker
Beiträge: 24 Registriert: 14.11.2008 Eplan P8 Prof. V1.9.10 Build 3725
|
erstellt am: 10. Aug. 2009 10:28 <-- editieren / zitieren --> Unities abgeben:
Hi, private void SetMac(BoxedDevice device) //Teilschaltung platzieren SetMac { int Variante = 0; //Variante A string MacroPath = SeperateString("DE", device.Properties.FUNC_CUSTOM_SUPPLEMENTARYFIELD03); Page oPage = device.Page; double oPointDX = device.Location.X; //Einfügepunkt von Gerätekasten, double oPointDY = device.Location.Y; //immer links oben double Height = device.LogicalArea.Y; //Height of the BoxedDevice PointDbl oPointDBL = new PointDbl(oPointDX , (oPointDY-Height)); //corner down left Insert oInsert = new Insert(); StorableObject[] oStorableObject = oInsert.WindowMacro(MacroPath, Variante, oPage, oPointDBL, Eplan.EplApi.HEServices.Insert.MoveKind.Absolute); } das ist meine Methode die ich im Hauptprogramm aufrufe. Die Fehlermeldung habe ich angehängt. Diese erscheint nur wenn ich das mit dem Insert in meiner Methode habe. Ich weis echt nicht mehr weiter, 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: 10. Aug. 2009 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für Karlh1
Zitat: Original erstellt von Karlh1:
string MacroPath = SeperateString("DE", device.Properties.FUNC_CUSTOM_SUPPLEMENTARYFIELD03);
Ich vermute das Problem besteht hier! Er findet das Macro nicht! Was steht den im Benutzerzusatzfeld 3 ? Versuche mal: string MacroPath = device.Properties.FUNC_CUSTOM_SUPPLEMENTARYFIELD03.ToMultiLangString.GetStringToDisplay(ISOCode.Language.L_de_DE); !Achtung! Der Macropfad benötigt das .ema 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 |
Karlh1 Mitglied Elektrotechniker
Beiträge: 24 Registriert: 14.11.2008 Eplan P8 Prof. V1.9.10 Build 3725
|
erstellt am: 10. Aug. 2009 13:09 <-- editieren / zitieren --> Unities abgeben:
Hi, leider funktioneiert es immernoch nicht. Ich hab sogar die Zeile mit der SorableObject schon komplett auskommentiert, doch der Fehler tritt immernoch auf. Es muss irgendwas mit der Insert zu tun haben. Gruss Karlheiz 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: 10. Aug. 2009 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für Karlh1
Zitat: Original erstellt von FML: Hallo Karl Heinz, // Makro im Speicher öffnen windowMakro.Open(@"$(MD_MACROS\Macro.ema",project,WindowMacro.Enums.RepresentationType.MultiLine, 0);
// Makro platzieren Insert insert = new Insert(); StorableObject[] insertedObject = insert.WindowMacro(windowMakro, windowMakro.RepresentationType, windowMakro.Variant, page, new PointD(0,0), Insert.MoveKind.Relative, WindowMacro.Enums.NumerationMode.Ignore); .... Hoffe das hilft Dir weiter. Gruß Fritz
Ich glaube Fritz hat die Lösung schon gepostet! Du musst auch das betreffende Makro im Speicher öffen.... Versuche das mal ! Ansonsten bitte mal beim EPLAN API Support durchklingeln... Und ggf. die Lösung hier Posten!! 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 |
Karlh1 Mitglied Elektrotechniker
Beiträge: 24 Registriert: 14.11.2008 Eplan P8 Prof. V1.9.10 Build 3725
|
erstellt am: 11. Aug. 2009 11:31 <-- editieren / zitieren --> Unities abgeben:
|
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: 11. Aug. 2009 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für Karlh1
Zitat: Original erstellt von Karlh1: Hi, hab überall geschaut, in welchem Namespace ist denn das WindowMacro Objekt enthalten? welche DLL muss ich denn einbinden?Gruss Karlheinz
Hast Du die API-HIlfe? Ist im Namespace : Eplan.EplApi.DataModel.MasterData 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 |