(Zählt Processing?__blackjack__ hat geschrieben: Sonntag 31. August 2025, 14:27 Keine Sprache kann „SVG-Dateien darstellen und speichern“. Zumindest kenne ich keine.
ich möchte mir ein CAD Progarmm bauen
-
WasserLinse
- User
- Beiträge: 30
- Registriert: Montag 29. Juli 2024, 06:39
@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?
-
WasserLinse
- User
- Beiträge: 30
- Registriert: Montag 29. Juli 2024, 06:39
@pyfopy
kann Dir dabei helfen, gerne.
kann Dir dabei helfen, gerne.
hallo,
das ist schön von Dir.
Was meinst Du damit?
Die Linien-Eigenschaften angeben können, usw
Aber das ist erst mal für mich das Wichtigste.
das ist schön von Dir.
Was meinst Du damit?
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.Wo Bist Du mit Svs=Text? Hast Du github?
Die Linien-Eigenschaften angeben können, usw
Aber das ist erst mal für mich das Wichtigste.
Gruß
pyfopy
pyfopy
_______________________________________________________________________________
https://www.python-kurs.eu/index.php
https://learnxinyminutes.com/docs/python/ https://learnxinyminutes.com/docs/de-de/python-de/
https://quickref.me/python https://docs.python-guide.org/
- __blackjack__
- User
- Beiträge: 14227
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
Das vorgeben der Fenstergrösse ist auch falsch, weil sich die ja schon aus der `Canvas`-Grösse ergibt.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
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)?
_______________________________________________________________________________
https://www.python-kurs.eu/index.php
https://learnxinyminutes.com/docs/python/ https://learnxinyminutes.com/docs/de-de/python-de/
https://quickref.me/python https://docs.python-guide.org/
-
WasserLinse
- User
- Beiträge: 30
- Registriert: Montag 29. Juli 2024, 06:39
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.
-
WasserLinse
- User
- Beiträge: 30
- Registriert: Montag 29. Juli 2024, 06:39
svgLines=[]
x1=100
y1=200
x2=300
y2=400
line="<line "+str(x1) + " "+str(y1)+" "+ str(x2)+ " "+ str(y2))+ "></line>"
svgLines.append(line)
x1=100
y1=200
x2=300
y2=400
line="<line "+str(x1) + " "+str(y1)+" "+ str(x2)+ " "+ str(y2))+ "></line>"
svgLines.append(line)
@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.
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.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.
- __blackjack__
- User
- Beiträge: 14227
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
- __blackjack__
- User
- Beiträge: 14227
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Hier mal das was der Code in dem Tutorial das grubenfox verlinkt hat, macht, aber in ordentlich:
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.
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()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.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
- __blackjack__
- User
- Beiträge: 14227
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
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.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
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.
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.
-
juergenkulow
- User
- Beiträge: 14
- Registriert: Freitag 6. Juni 2025, 08:09
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.
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.
Bitte stelle Deine Fragen, denn den Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im Universum.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
- __blackjack__
- User
- Beiträge: 14227
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Das Beispiel mit den Linien in Tcl und um die Abfrage von Fensterhöhe und -breite erweitert:
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).
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"“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
