pythoncom & _midlSAFEARRAY

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
zarathustra
User
Beiträge: 21
Registriert: Samstag 17. April 2010, 23:02

Re: pythoncom & _midlSAFEARRAY

Beitragvon zarathustra » Freitag 17. November 2017, 19:06

Hallo __deets__,

ich habe schlicht vom DLL-Monitor keine Ahnung. Ich wollte es ja ursprünglich nicht mit einer Lazarus-DLL machen. Ich dachte daran es rein mit Python zu tun. GUI mit wxWidgets und dann eben mit COM zu DesignCAD und ggf. aus Exceltabellen mit xlwings einige Werte holen (wenn's zu umfangreich wird ein GUI mit vielen Textboxen zu basteln). Ich habe den Monitor installiert, aber noch nicht wirklich verstanden wie der funktionert und was vor allem bei rauskommt, bzw. wo ich überhaupt nachsehen muß. So tief wollte ich da gar nicht rein.
Ich wollte einfach nur analog den Beispielen die ich Netz fand DesignCAD via COM ansprechen. Das verrückte ist, dass ja z.B der SetCommandPoint-Befehl für einen einzelnen Punkt ausgefürt wird, der Befehl SetCommandPoints -für mehrere Punkte auf einmal eben nicht.

Ich hatte über COM das Netz durchstöbert und man findet immer wieder nur die Standartbeispiele mit "Excel-Application" etc. Es kommt noch wie man mit makepy (win32com.client) oder GetModule (comtypes) eine Typbibliothek lädt. Aber wie man anschließend mit dem erzeugten Wrapper-Modul weiter verfährt, da wird's schon enger.

Ich dachte ja an LibreCAD. Aktuell keine Makrosprache. Ab Version 3 (sodenn sie iergendwann mal kommt) Lua als Makrosprache. Zum Mäusemelken. Warum können die nicht einfach Python nehmen??????? Es gibt eine Lua-Python-Bridge, aber das ist auch wieder gefummel denke ich.

Jetzt ist erstmal Wochenende. Ich wünsche Dir und allen im Forum ein schönes.

Viele Grüße

Zarathustra
Benutzeravatar
__deets__
User
Beiträge: 2175
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: pythoncom & _midlSAFEARRAY

Beitragvon __deets__ » Samstag 18. November 2017, 05:14

Naja, gerade das der andere Teil geht zeigt ja, das der ursprüngliche Ansatz ok war. Nur eben das safearray macht Ärger. Wenn du da nicht tiefer einsteigen willst - ich kann’s nicht. Habe die Software nicht. Die Autoren von comtypes habrn da ggf mehr Ideen. Wobei ich mir auch gut vorstellen kann, das einfach irgendein anderer call drumrum fehlt.

Wofür brauchst du das cad überhaupt? Ggf kann das ja ersetzt werden. Zb mit FreeCad, das schon in Python Skriptbar ist.
zarathustra
User
Beiträge: 21
Registriert: Samstag 17. April 2010, 23:02

Re: pythoncom & _midlSAFEARRAY

Beitragvon zarathustra » Mittwoch 22. November 2017, 19:27

Es sollten Makros für das CAD werden. FreeCAD ist mehr auf 3D ausgelegt. Evtl. ist nur ein Workearound notwendig.

Gruß

Zarathustra
Benutzeravatar
__deets__
User
Beiträge: 2175
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: pythoncom & _midlSAFEARRAY

Beitragvon __deets__ » Mittwoch 22. November 2017, 23:09

Das stimmt nicht -FreeCad ist basierend auf Open cascade & erlaubt CSG Modellierung von 3D Körpern.

Wie dem auch sei - in dein Problem muss man sich mehr reinknien. Ohne die Software zu haben kann ich das leider nicht.
zarathustra
User
Beiträge: 21
Registriert: Samstag 17. April 2010, 23:02

Re: pythoncom & _midlSAFEARRAY

Beitragvon zarathustra » Donnerstag 23. November 2017, 21:55

Leider finde ich den Downloadlink nicht mehr über den ich mir die Testversion 23 gezogen hatte. Ich hatte schon mal eine Version 17 bei Pearl für schmales Geld gekauft, die hat das gleiche Problem.

in comtypes.automation findet man ab Zeile 845 einen Kommentar zu Safearray. Leider kann ich damit nicht so all zuviel anfangen.

Ich hatte mal in Freecad reingesehen und ein Tutorial ausprobiert. Ich hatte den Eindruck, dass die Sketch-Funktion nur ein Hilfsmittel zur 3D Modellierung ist. Wenn ich nach CSG und OpenCascade schaue, dann ist das überwiegend 3D.

Momentan versuche ich gerade den Weg: Excel-xlwings-VBA-Desingcad. Mal sehen wie "gut" das geht...

Viele Grüße

Zarathustra
Benutzeravatar
__deets__
User
Beiträge: 2175
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: pythoncom & _midlSAFEARRAY

Beitragvon __deets__ » Freitag 24. November 2017, 09:51

Verzeih. Ich hab mich irgendwie verlesen & 2D statt 3D in deinen Antworten angenommen. Insofern: ja, das ist für 3D & eher nicht für technische Zeichnungen. GLAUBE ich, probiert hab ich es nicht.

Was mich zur Frage bring: was willst du eigentlich erreichen? Es klingt ein bisschen nach einem XY-Problem. Wenn es zB nur um die Anlage technischer 2D Skizzen geht, dann ist es ggf viel besser direkt ein DXF zu erzeugen. Das kannst du dann importieren in DesignCAD, oder was auch immer mit machen.
zarathustra
User
Beiträge: 21
Registriert: Samstag 17. April 2010, 23:02

Re: pythoncom & _midlSAFEARRAY

Beitragvon zarathustra » Freitag 24. November 2017, 21:36

Hallo,

ich wollte u.a. Weg-Zeit-Diagramme in Straßenskizzen einbauen. Bzw. Zum Zeichnen von Kurven oder Einmündungen Makros verwenden.

Der Excel-Weg hat eine Besonderheit: Ich lasse via Python ein Numpy-Array mit 1000 Punkten errechnen, was die x-Werte eines Simus zwischen 0 und 2*pi darstellt. Aus den x und y Werten bastel ich dann das array für SetCommandPoints in VBA zusammen. Das funktioniert auch. Ich bekomme in DesigvCAD den Sinus gezeichnet. Erhöhe ich in "linspace" die ANzahl auf 10.000, dann wird nur noch die erste Halbwelle des Sinus dargestellt.

Gibt es dafür eine Erklärung?

Viele Grüße und schönes Wochenede

Zarathustra
Benutzeravatar
__deets__
User
Beiträge: 2175
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: pythoncom & _midlSAFEARRAY

Beitragvon __deets__ » Samstag 25. November 2017, 13:37

Und welches Dateiformat liegt da dann vor? Oder brauchst du das CAD für Ankerpunkte?

Was dein Sinus-Problem angeht: kann ich nur raten. SetPoints mag ein internes limit haben, bzw. das CAD allgemein.
zarathustra
User
Beiträge: 21
Registriert: Samstag 17. April 2010, 23:02

Re: pythoncom & _midlSAFEARRAY

Beitragvon zarathustra » Mittwoch 29. November 2017, 23:06

Die Berechnungsergebnisse definieren einen Spline in der x-y-Ebene, dessen Startpunkt ich aber mit der Maus setzen möchte. Entlang des Splines wird dann die Aufsicht eines Modells entsprechend den Ergebnissen kopiert und ausgerichtet. Der Spline stellt die Fahrlinie eines Kfz dar. Das Modell ist die Aufsicht auf ein Kfz. Es könnte so ein Ausweichvorgang vor einem Hindernis dargestellt werden.

Dieses SetCommandPoints benötigt ein Array aus Punktetripeln (x1, y1, z1, x2, y2, z2, usw. mit z immer Null). Das gab damals bei Lazarus auch Probleme mit SafeArray, aber ich konnte es Typecasten. Das Typecasting funzt in Python scheinbar nicht.

Na ich hab's aufgegeben. Das Safearray ist vermutlich nicht das einzige Problem der Typebibliothek unter Python vernute ich.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder