Seite 2 von 2
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Sonntag 31. August 2025, 15:18
von nezzcarth
__blackjack__ hat geschrieben: Sonntag 31. August 2025, 14:27
Keine Sprache kann „SVG-Dateien darstellen und speichern“. Zumindest kenne ich keine.
(Zählt
Processing?

Das ist natürlich keine Empfehlung für die Fragestellung hier.)
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 06:35
von WasserLinse
@pyfopy Kann Dir helfen, bis hin zum vollständigen Program - aber das willst Du ja gerade nicht- Selbermachen ist Deine Parole. Wo Bist Du mit Svs=Text? Hast Du github?
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 10:00
von WasserLinse
@pyfopy
kann Dir dabei helfen, gerne.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 11:28
von pyfopy
hallo,
das ist schön von Dir.
Was meinst Du damit?
Wo Bist Du mit Svs=Text? Hast Du github?
Ich dachte so, als 1. müsste ich die Mausklicks abfragen können > die x und y Punkte in Variable übernehmen > dann auf eine Zeichenfläche als Linie zeichnen. Da finde ich gar nichts zu.
Die Linien-Eigenschaften angeben können, usw
Aber das ist erst mal für mich das Wichtigste.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 12:00
von grubenfox
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 13:16
von __blackjack__
@grubenfox: Aber anschauen kann man doch zumindest mal. Code und Variablen auf Modulebene und eine Funktion die fröhlich Variablen ausserhalb ändert. Attribute an fremde Objekte heften ist auch nicht gut. Das soll mal ein CAD-Programm werden — da sollte man von Anfang an sauber arbeiten.
Das vorgeben der Fenstergrösse ist auch falsch, weil sich die ja schon aus der `Canvas`-Grösse ergibt.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 13:42
von grubenfox
Naja, bei der kurzen Suche hatte ich auch noch andere Beispiele gefunden. Die waren aber noch schlechter... Hauptsächlich ging es mir um das "kann gar nichts zu finden", welches ich nicht glauben konnte. Ist so ein "mit der Maus irgendwohin klicken und dabei Linien ziehen" nicht ein Standardbeispiel und bei jedem GUI-System "dabei" (in Doku bzw. Tutorials oder so)?
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 14:13
von WasserLinse
Svg kann man im Browser angucken, es ist Norm. Ich empfehle tkinter für eine Voransicht. Wichtig sind: Linien, Kreise, Rechtecke und Text. Einfache geometrische Formen also.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 14:21
von WasserLinse
svgLines=[]
x1=100
y1=200
x2=300
y2=400
line="<line "+str(x1) + " "+str(y1)+" "+ str(x2)+ " "+ str(y2))+ "></line>"
svgLines.append(line)
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 14:51
von Sirius3
@WasserLinse: das ist kein gültiges Python, kein gültiges SVG und noch schlechter Stil. SVG ist ein XML-Format, und dazu benutzt man mindestens einen XML-Serialisierer, wenn nicht gar eine spezielle Bibliothek für SVG.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 16:12
von pyfopy
@ grubenfox: ich hatte speziell nach 'Mouse' gesucht. In Deinem 1.Link klappt die Mausabfrage, ich sehe aber im Code kein einzigemal 'Mouse'.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 17:17
von nezzcarth
pyfopy hat geschrieben: Montag 1. September 2025, 11:28
Ich dachte so, als 1. müsste ich die Mausklicks abfragen können > die x und y Punkte in Variable übernehmen > dann auf eine Zeichenfläche als Linie zeichnen. Da finde ich gar nichts zu.
Das ist meiner Meinung nach ungefähr so, als würdest du ein neues Haus bauen wollen und als Erstes damit anfangen, dir zu überlegen, welche Schrauben du wohl für die Fußleisten im Gästezimmer brauchst. Bei einem Projekt von der Komplexität eines CAD-Programms sollte man m.M.n. erst einmal überlegen, was das können soll und sich ein grundsätzliches Konzept für die Struktur etc. überlegen. Das sind gute Kenntnisse in Python, in OOP und dem gewählten GUI-Framework notwendig. Die GUI, wie man ein Mouse-Event abfängt und wie man da später mal SVG draus macht, sind doch relativ unwichtige Implementierungsdetails am Anfang.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Montag 1. September 2025, 21:32
von __blackjack__
@pyfopy: Warum sollte im Code denn auch „Mouse“ stehen? Eine Websuche schaut ja nicht nur in Quelltexten die auf einer Webseite stehen, sondern auch im Text. Und da taucht das Wort auf.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Donnerstag 4. September 2025, 15:55
von __blackjack__
Hier mal das was der Code in dem Tutorial das grubenfox verlinkt hat, macht, aber in ordentlich:
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter as tk
class Window(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.canvas = tk.Canvas(
self, width=640, height=480, background="white"
)
self.canvas.pack()
self.old_coords = None
self.bind("<ButtonPress-1>", self.on_button_press)
def on_button_press(self, event):
coords = (event.x, event.y)
if self.old_coords:
self.canvas.create_line(self.old_coords, coords, width=2)
self.old_coords = coords
def main():
Window().mainloop()
if __name__ == "__main__":
main()
Man hätte aber auch, statt irgendwo im Netz zu suchen, sich die Dokumentation zum `tkinter`-Modul anschauen können. Nach der kurzen Einführung was das Modul im groben ist/macht, kommt ein „Siehe auch:“-Kasten mit Links zu externen Texten und gleich der erste ist ein Tutorial, welches unter anderem ein Programm zum Zeichnen von Skizzen auf einem `Canvas` als Beispielcode enthält. Das Tutorial insgesamt benutzt leider auch viele globale Variablen, aber in diesem Fall steht nicht nur dabei, dass man das natürlich in eine Klasse verpacken würde, diese Variante wird sogar als Code gezeigt.
Was IMHO auch dafür spricht, dass man sich am besten hinsetzt und sich die Grundlagen drauf schafft, statt irgendwo im Netz nach Beispielen zu suchen um sich daraus dann ein eigenes Programm zusammen zu setzen, was man am Ende, sofern das überhaupt funktioniert, gar nicht versteht.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Freitag 5. September 2025, 16:01
von pyfopy
wie kann ich aus dem Beispiel von 'blackjack' z.B. die Weite und die Höhe des Fensters in eine Interger-Variable einlesen und mit 'print' ausgeben?
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Freitag 5. September 2025, 16:44
von pyfopy
ich habe mir schon einige Beispiel angesehen, aber viele klappen nicht.
Ich benutze 'Thonny' als GUI-Editor, gibt taugt der was? Da läuft nicht alles drauf.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Freitag 5. September 2025, 17:51
von __blackjack__
@pyfopy: Wie man die Fenstergrösse abfragt, kann man unter anderem in dem Tutorial lernen das als erstes in der `tkinter`-Dokumentation verlinkt ist.
Dazu braucht man dann noch Zeichenketten-Operationen, denn Tk/Tcl ist ja ziemlich ”stringly typed” und die Informationen zu Fenstergrösse und Position kommen in einer Zeichenkette, die man dann entsprechend auseinandernehmen muss. Eventuell würde sogar ein regulärer Ausdruck Sinn machen, also das `re`-Modul.
Thonny ist ganz brauchbar als IDE. Besser als IDLE auf jeden Fall.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Freitag 5. September 2025, 21:36
von LeSchakal
Grundsätzlich würde ich dir empfehlen, erstmal auf die GUI zu verzichten und dich auf reine Textinputs zu konzentrieren.
Eine Mauseingabe ohne funktionierende Object Snaps kannst du sofort vergessen; es ist fast unmöglich, einen Punkt präzise zu treffen.
Du solltest dich also zuerst darauf konzentrieren, einfache Objekte (Punkte, Strahlen, Kreise) zu zeichnen, dann musst du mögliche Schnittpunkte finden, den Funktionsumfang erweitern, die Ausgabe anpassen.
Das ganze könntest du so konzipieren, dass eine Liste als Art Stack abgearbeitet wird.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Samstag 6. September 2025, 13:23
von juergenkulow
Hallo pyfopy,
sieh Dir mal
heise CadQuery: Objekte programmieren in Python mit SVG Export und STEP Import, sowie
FreeCad 1.0.2 für Linux mit Python scripting an.
Re: ich möchte mir ein CAD Progarmm bauen
Verfasst: Samstag 6. September 2025, 15:17
von __blackjack__
Das Beispiel mit den Linien in Tcl und um die Abfrage von Fensterhöhe und -breite erweitert:
Code: Alles auswählen
#!/bin/sh
# \
exec tclsh "$0" "$@"
package require Tk
set oldCoords ""
pack [tk::canvas .canvas -width 640 -height 480 -background white]
bind .canvas <ButtonPress-1> {
set newCoords [list %x %y]
if { $oldCoords != "" } then {
.canvas create line [concat $oldCoords $newCoords] -width 2
}
set oldCoords $newCoords
}
update idletasks
regexp {(\d+)x(\d+)} [wm geometry .] _ width height
puts "Breite: $width, Höhe: $height"
Wobei die Angaben ein bisschen mit Vorsicht zu geniessen sind, denn da wird die Fensterverwaltung gefragt, und bei mir antwortet die ohne die Fensterdekoration zu berücksichtigen (Rahmen, Titelleiste).