dll für Isolatoreneinbau

Alles, was nicht in die anderen Kategorien passt.
Antworten
Nachricht
Autor
Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

dll für Isolatoreneinbau

#1 Beitrag von Alwin Meschede »

So, ich habe jetzt ein paar Stunden gehackt, und das erste Erfolgserlebnis ist da:
Bild

Der Isolator und der Fahrdraht kommen aus meiner eigenen Fahrleitungs-DLL. So Gott will werde ich dem Ding jetzt noch beibringen, die drei anderen Isolatoren auf die Drähte zu fädeln, und dann hätte die DLL schon einen Nutzwert.
Zuletzt geändert von Alwin Meschede am 20.11.2018 16:55:21, insgesamt 1-mal geändert.
Mein Youtube-Kanal: youtube.com/echoray1

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: Weiterentwicklung des deutschen Fahrleitungsbaukastens

#2 Beitrag von Alwin Meschede »

Erste Version einer Fahrleitungs-DLL, mit der sich Abspannungen mit zusätzlichen Isolatoren für Streckentrennungen bauen lassen: https://github.com/ameschede/ZusiFahrle ... g/v1.0.0.2" target="_blank

Für einen Einsatz im scharfen Schuss taugt die DLL aus meiner Sicht noch nicht (dafür bin ich nicht tief genug ins Thema eingestiegen), aber sie zeigt zumindest dass es geht. Meinen Anteil am Quellcode habe ich in ein Github-Repository geladen, so dass im Prinzip eine kollaborative Weiterentwicklung (auch in Richtung weiterer Sonderfahrdrähte) möglich wäre. Wenn jemand coden möchte, muss er sich nur noch die DirectX- und Zusi-Header aus dem Verzeichnis _Docu\demos\catenary\source dazuholen, die ich aus urheberrechtlichen Gründen mal lieber nicht nach Github hochladen wollte.
Carsten Hölscher hat geschrieben:Der Quellcode ist ja extra dabei, um Leute zu inspirieren, dort tätig zu werden.
Ich könnte noch Inspiration gebrauchen, wie man einen Isolator so auf ein Tragseil mit Durchhang auffädelt, dass er richtig sitzt ;) Im Moment rechnet meine DLL noch auf einem straff gespannten Tragseil, weil ich diese Problemstellung erstmal nicht gelöst bekam.
Mein Youtube-Kanal: youtube.com/echoray1

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Weiterentwicklung des deutschen Fahrleitungsbaukastens

#3 Beitrag von Carsten Hölscher »

Die Position kann nur die dll kennen, die auch den Draht verlegt. Das Thema dll-Programmierung sollte vielleicht aus diesem Thread ausgelagert werden?

Carsten

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Weiterentwicklung des deutschen Fahrleitungsbaukastens

#4 Beitrag von Alwin Meschede »

Carsten Hölscher hat geschrieben:Das Thema dll-Programmierung sollte vielleicht aus diesem Thread ausgelagert werden?
Ja, wäre wohl günstig.
Carsten Hölscher hat geschrieben:Die Position kann nur die dll kennen, die auch den Draht verlegt.
Das weiß ich. Da Du ja in deinen DLLs eine offenbar funktionierende Lösung hast, würde mich interessieren wie die aussieht. Ich nehme mal an, Du merkst Dir beim ersten und letzten Hänger im Kettenwerk die Position des oberen Punktes, um dann mit einem Vektor drauf zielen zu können, aus dem sich dann der Tragseil-Isolator-Winkel ergibt?

Für die Ausrichtung der am Fahrdraht sitzenden Isolatoren ist bei mir derzeit auch nur ein recht stupider Ansatz implementiert, bei dem ich einfach den Mittelwert der Winkel aus den beiden beteiligten Fahrleitungs-Ankerpunkten nehme. Das funktioniert recht gut, solange die beiden Ankerpunkte nicht 180 ° verdreht zueinander stehen. Dann kommt aus der Mittelwertbetrachtung nämlich ein um 90 ° verdrehter Isolator heraus. Es muss also offenbar einen intelligenteren Ansatz geben.
Mein Youtube-Kanal: youtube.com/echoray1

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: dll für Isloatoreneinbau

#5 Beitrag von Carsten Hölscher »

Ohne Vektorrechnung kommt man nicht zum Ziel, DirectX bietet dabei eine Bibliothek mit nützlichen Grundfunktionen.

Diese kleine procedure hilft ggf.:

Code: Alles auswählen

  procedure Lage(Pkt1, Pkt2:TD3DVector; l:single; var xyz, xyzphi:TD3DVector);
  // berechnt die Position eines Isolators auf dem Draht
  var v, vNorm, h:TD3DVector;
      Winkelz, Winkelx:single;
  begin
    D3DXVec3Subtract(v, Pkt2, Pkt1);
    D3DXVec3Normalize(vNorm, v);
    D3DXVec3Scale(h, vNorm, l);
    D3DXVec3Add(xyz, h, Pkt1);

    Winkelz:=ArcTan2(Pkt2.y-Pkt1.y, Pkt2.x-Pkt1.x);                             
    Winkelx:=arctan2(Pkt2.z-Pkt1.z, sqrt(sqr(Pkt2.x-Pkt1.x)+sqr(Pkt2.y-Pkt1.y)));
    xyzphi.x:=-Winkelx;
    xyzphi.y:=0; 
    xyzphi.z:=Winkelz+Pi/2;
  end;
Carsten

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: dll für Isloatoreneinbau

#6 Beitrag von Alwin Meschede »

Version 1.0.0.5 meiner Fahrleitungs-DLL: https://github.com/ameschede/ZusiFahrle ... g/v1.0.0.5" target="_blank
  • Die Baurichtung (von A nach B oder von B nach A) ist jetzt egal
  • Tragseile werden mit Durchhang berechnet
  • Die Isolatoren sollten jetzt immer korrekt sitzen
  • Experimentell: Drahtstärke konfigurierbar, Bau von Fahrdrähten ohne Y-Beiseil
Für Streckentrennungen mit Isolatoren taugt die DLL aus meiner Sicht jetzt für den Echt-Einsatz.
Die beiden Experimental-Features sind hingegen wirklich als Experiment zu betrachten. Meine DLL kann zwar jetzt auch Normalfahrdrähte ohne Y-Seile erstellen, bietet dabei aber keinen Vorteil gegenüber der bei Zusi mitgelieferten Re160-DLL. Es ging mir hauptsächlich darum, erstmal die notwendigen Strukturen zu schaffen um mehr als eine Sorte Fahrdrähte zu unterstützen.
Mein Youtube-Kanal: youtube.com/echoray1

Helferlein
Beiträge: 54
Registriert: 06.10.2014 18:31:05

Re: dll für Isloatoreneinbau

#7 Beitrag von Helferlein »

Hallo Alwin,

ich habe eine kurze Frage zu der DLL, wobei ich hoffe, dass sie nicht in Richtung DAU geht :O .
Und zwar ist es mir unter Anwendung Deiner DLL lediglich möglich, die Isolatoren zwischen dem Ausfädelungsausleger und dem Spannwerk einzubauen
(also Ausfädelungsausleger --- Isolatoren ----------------Isolatoren --- Spannwerk).
Nach einigen Wahrnehmungen von draußen dürften die Isolatoren jedoch vor dem Ausfädelungsausleger liegen
(also Standardausleger ------- Isolatoren --- Ausfädelungsausleger ...).
Bei Anklicken beider Ausleger schlägt mir das System auch für den Standardausleger eine Befestigung ohne Y-Beiseil und für den Ausfädelungsausleger eine Ausfädelung mit Isolatoren vor, das ganze wird aber nicht erstellt.
Habe ich in meinem jugendlichen Leichtsinn etwas übersehen?

Beste Grüße Jürgen

PS: Grad noch mal nachgeschaut, meine Wahrnehmungen von draußen werden durch das Buch "Fahrleitungen elektrischer Bahnen" (Skizze 3.35, S. 184) bestätigt.
Der Mut ist wie ein Regenschirm. Wenn man ihn am dringendsten braucht, fehlt er einem. (Fernandel)

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: dll für Isloatoreneinbau

#8 Beitrag von Alwin Meschede »

Sieht so aus als hätte ich das nach der Version 1.0.0.5 gängig gemacht, dann aber nur als Quellcode veröffentlicht. Es kann jetzt Version 1.0.0.6 runtergeladen werden, die sollte das dann können.
Zuletzt geändert von Alwin Meschede am 23.01.2018 13:13:02, insgesamt 1-mal geändert.
Mein Youtube-Kanal: youtube.com/echoray1

Helferlein
Beiträge: 54
Registriert: 06.10.2014 18:31:05

Re: dll für Isloatoreneinbau

#9 Beitrag von Helferlein »

Es ist immer wieder schön, hier so schnell und kompetent Hilfe zu finden :tup
Klappt wunderbar. Danke.

Gruß Jürgen.
Der Mut ist wie ein Regenschirm. Wenn man ihn am dringendsten braucht, fehlt er einem. (Fernandel)

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: dll für Isloatoreneinbau

#10 Beitrag von Alwin Meschede »

Es steht Version 1.0.0.7 der DLL zur Verfügung, in der das Konfigurationsmenü ohne Absturz zugänglich ist, auch wenn man den neuen 3D-Editor 3.1.7.2 im hohen Adressbereich betreibt.
Mein Youtube-Kanal: youtube.com/echoray1

Benutzeravatar
Jens Haupert
Beiträge: 4911
Registriert: 23.03.2004 14:44:34
Aktuelle Projekte: http://www.zusidisplay.de
Wohnort: Berlin
Kontaktdaten:

Re: dll für Isloatoreneinbau

#11 Beitrag von Jens Haupert »

Hallo Alwin,

hat es genügt, die DLL mit dem LargeAdressAware-Flag neu zu kompilieren?

Grüße
Jens

Edit: gebe mir selbst die Antwort: ein Blick in den Quellcode mit der einzigen Änderung

Code: Alles auswählen

+ {$SetPEFlags $20}
sagt ja. :-)
Zuletzt geändert von Jens Haupert am 20.11.2018 15:06:42, insgesamt 1-mal geändert.

Benutzeravatar
F. Schn.
Beiträge: 6630
Registriert: 24.10.2011 18:58:26

Re: dll für Isloatoreneinbau

#12 Beitrag von F. Schn. »

Jens Haupert hat geschrieben:mit der einzigen Änderung
Nein, im commit zuvor hat Alwin den MM ausgetauscht: https://github.com/ameschede/ZusiFahrle ... s/v1.0.0.7" target="_blank
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: dll für Isloatoreneinbau

#13 Beitrag von Alwin Meschede »

Meine Entwicklungsumgebung für die DLL ist (wie bei Zusi) Delphi 7. Hat für mich den Vorteil, dass ich ohne großen Aufstand zu den Eigenarten von Zusis DLL-Schnittstelle kompatibel bin. Wer ein moderneres Delphi einsetzt, muss sich zum Beispiel erstmal vertieft Gedanken zu diversen String-Formaten machen, die seit Delphi 7 geändert wurden.

Jedenfalls baut mir Delphi 7 den BorlandMM in die DLL ein, wenn ich nichts anderes regele. Der taugt nicht für die hohen Adressen.
Mein Youtube-Kanal: youtube.com/echoray1

Benutzeravatar
Max Senft
Administrator
Beiträge: 3004
Registriert: 04.11.2001 14:01:40
Aktuelle Projekte: Dies und das
Wohnort: Blieskastel, Saarland, Deutschland
Kontaktdaten:

Re: dll für Isolatoreneinbau

#14 Beitrag von Max Senft »

Huhu,

das führt jetzt etwas ins OT und ich könnte es mit Sicherheit auch einfach googlen, aber es lebe die zwischenmenschliche Interaktion. ;-)

Generell müssten doch auch für Delphi beim Aufruf von externen DLLs die Typen-Standards gelten? Gerade bei Strings sollte doch irgendeine C-Kompatibilität vorhanden sein, oder? Sonst würde ja "gar kein" Aufruf von WinAPI-Funktionen klappen?!

Grüße
Max
Administrator, Programmierer, Ansprechpartner bei Problemen mit dem Board

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: dll für Isolatoreneinbau

#15 Beitrag von Alwin Meschede »

Die Datentypen pChar und pAnsiChar waren in alten Delphis noch ein und das gleiche. Seit Delphi 2009 ist das nicht mehr so. Wenn man einen pChar aus einer modern kompilierten DLL an Zusi übergibt, dann knallt es erstmal.
Zuletzt geändert von Alwin Meschede am 20.11.2018 22:01:19, insgesamt 1-mal geändert.
Mein Youtube-Kanal: youtube.com/echoray1

Benutzeravatar
Max Senft
Administrator
Beiträge: 3004
Registriert: 04.11.2001 14:01:40
Aktuelle Projekte: Dies und das
Wohnort: Blieskastel, Saarland, Deutschland
Kontaktdaten:

Re: dll für Isolatoreneinbau

#16 Beitrag von Max Senft »

Alwin Meschede hat geschrieben:Die Datentypen pChar und pAnsiChar waren in alten Delphis noch ein und das gleiche. Seit Delphi 2009 ist das nicht mehr so. Wenn man einen pChar aus einer modern kompilierten DLL an Zusi übergibt, dann knallt es erstmal.
Ouh ja, ok, diese bösen Multi-Byte-Zeichen. ;-) Dann ist aber vermutlich nur die API Doku von Zusi ungenau. Wenn man einen PAnsiChar übergibt/erwartet (egal welche Delphi-Version) sollte das ja immer passen... Zumindest solange Zusi nicht mit einer neueren Delphi-Version compiliert wird. :rolleyes:

Gruß
Max
Administrator, Programmierer, Ansprechpartner bei Problemen mit dem Board

Hardy_Kuebler
Beiträge: 160
Registriert: 12.03.2011 21:33:42
Aktuelle Projekte: Mitglied im Team Süd, Fahrleitung Re200 (AU-DON komplett), Landschaftsbau (Bäumenheim)
Wohnort: im Allgäu
Kontaktdaten:

Re: dll für Isolatoreneinbau

#17 Beitrag von Hardy_Kuebler »

Hallo Alwin,

blöde Frage - wie aktiviere ich deine dll? Einfach nur in ..\Zusi3\_Docu\demos\catenary reinkopieren reicht offensichtlich nicht.

Gruß
Hardy
Unsere Teamwebseite: https://blog.zusi-team-sued.de

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: dll für Isolatoreneinbau

#18 Beitrag von Carsten Hölscher »

_instsetup\lib\...

ist gefragt

Carsten

Hardy_Kuebler
Beiträge: 160
Registriert: 12.03.2011 21:33:42
Aktuelle Projekte: Mitglied im Team Süd, Fahrleitung Re200 (AU-DON komplett), Landschaftsbau (Bäumenheim)
Wohnort: im Allgäu
Kontaktdaten:

Re: dll für Isolatoreneinbau

#19 Beitrag von Hardy_Kuebler »

Hallo Carsten, danke!
Unsere Teamwebseite: https://blog.zusi-team-sued.de

Alwin Meschede
Beiträge: 8927
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: dll für Isolatoreneinbau

#20 Beitrag von Alwin Meschede »

Der Vollständigkeit halber sei vermerkt: Die in diesem Thread behandelte "Re160ErweiterteFunktionen.dll" könnt ihr wegtun. Die neue Re160.dll kann alles was das alte Ding konnte, aber macht es noch besser.
Mein Youtube-Kanal: youtube.com/echoray1

Antworten