dll für Isolatoreneinbau
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
dll für Isolatoreneinbau
So, ich habe jetzt ein paar Stunden gehackt, und das erste Erfolgserlebnis ist da:
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.
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
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Re: Weiterentwicklung des deutschen Fahrleitungsbaukastens
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.
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.
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.Carsten Hölscher hat geschrieben:Der Quellcode ist ja extra dabei, um Leute zu inspirieren, dort tätig zu werden.
Mein Youtube-Kanal: youtube.com/echoray1
- Carsten Hölscher
- Administrator
- Beiträge: 33513
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: Weiterentwicklung des deutschen Fahrleitungsbaukastens
Die Position kann nur die dll kennen, die auch den Draht verlegt. Das Thema dll-Programmierung sollte vielleicht aus diesem Thread ausgelagert werden?
Carsten
Carsten
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Weiterentwicklung des deutschen Fahrleitungsbaukastens
Ja, wäre wohl günstig.Carsten Hölscher hat geschrieben:Das Thema dll-Programmierung sollte vielleicht aus diesem Thread ausgelagert werden?
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?Carsten Hölscher hat geschrieben:Die Position kann nur die dll kennen, die auch den Draht verlegt.
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
- Carsten Hölscher
- Administrator
- Beiträge: 33513
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: dll für Isloatoreneinbau
Ohne Vektorrechnung kommt man nicht zum Ziel, DirectX bietet dabei eine Bibliothek mit nützlichen Grundfunktionen.
Diese kleine procedure hilft ggf.:
Carsten
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;
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Re: dll für Isloatoreneinbau
Version 1.0.0.5 meiner Fahrleitungs-DLL: https://github.com/ameschede/ZusiFahrle ... g/v1.0.0.5" target="_blank
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.
- 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
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
-
- Beiträge: 54
- Registriert: 06.10.2014 18:31:05
Re: dll für Isloatoreneinbau
Hallo Alwin,
ich habe eine kurze Frage zu der DLL, wobei ich hoffe, dass sie nicht in Richtung DAU geht .
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.
ich habe eine kurze Frage zu der DLL, wobei ich hoffe, dass sie nicht in Richtung DAU geht .
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)
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Re: dll für Isloatoreneinbau
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
-
- Beiträge: 54
- Registriert: 06.10.2014 18:31:05
Re: dll für Isloatoreneinbau
Es ist immer wieder schön, hier so schnell und kompetent Hilfe zu finden
Klappt wunderbar. Danke.
Gruß Jürgen.
Klappt wunderbar. Danke.
Gruß Jürgen.
Der Mut ist wie ein Regenschirm. Wenn man ihn am dringendsten braucht, fehlt er einem. (Fernandel)
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Re: dll für Isloatoreneinbau
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
- Jens Haupert
- Beiträge: 4938
- Registriert: 23.03.2004 14:44:34
- Aktuelle Projekte: http://www.zusidisplay.de
- Wohnort: Berlin
- Kontaktdaten:
Re: dll für Isloatoreneinbau
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 sagt ja. :-)
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}
Zuletzt geändert von Jens Haupert am 20.11.2018 15:06:42, insgesamt 1-mal geändert.
Re: dll für Isloatoreneinbau
Nein, im commit zuvor hat Alwin den MM ausgetauscht: https://github.com/ameschede/ZusiFahrle ... s/v1.0.0.7" target="_blankJens Haupert hat geschrieben:mit der einzigen Änderung
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Re: dll für Isloatoreneinbau
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.
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
- 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
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
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
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Re: dll für Isolatoreneinbau
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
- 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
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.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.
Gruß
Max
Administrator, Programmierer, Ansprechpartner bei Problemen mit dem Board
-
- 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
Hallo Alwin,
blöde Frage - wie aktiviere ich deine dll? Einfach nur in ..\Zusi3\_Docu\demos\catenary reinkopieren reicht offensichtlich nicht.
Gruß
Hardy
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
- Carsten Hölscher
- Administrator
- Beiträge: 33513
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: dll für Isolatoreneinbau
_instsetup\lib\...
ist gefragt
Carsten
ist gefragt
Carsten
-
- 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
Hallo Carsten, danke!
Unsere Teamwebseite: https://blog.zusi-team-sued.de
-
- Beiträge: 9006
- Registriert: 04.11.2001 19:57:46
- Aktuelle Projekte: Zusi3 Objektbau
- Kontaktdaten:
Re: dll für Isolatoreneinbau
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