Programmieren uvm. mit KI Claude

Tokoloshe

ww-robinie
Registriert
31. Dezember 2023
Beiträge
1.355
Ort
Niedersachsen
FreeCAD hat auch eine OpenSCAD integration, das dürfte dann eigentlich gehen. Mal schauen, ob ich das in meiner einwöchigen Testphase noch hinbekomme. Zumindest habe ich gestern den Kaestle Generator zum laufen gebracht, hatte einfach nur nicht einmal eine ältere Version getestet, die läuft ohne Probleme mit Wine.
 

wirdelprumpft

ww-robinie
Registriert
31. März 2013
Beiträge
4.561
Ort
Rems-Murr-Kreis
also Gemini kennt Boxes.py und kann die Kerf. Varialble Fingerzinken für Fräser umschreiben allerdings dürfte das Optisch nicht so toll aussehen.
Open-Source da gibt es bestimmt vieles was man sich umbauen kann.
Muss ich mal gezielter danach suchen wenn ich was erstellen will.
Umbauen geht schneller als komplett neu erstellen.
 

Tokoloshe

ww-robinie
Registriert
31. Dezember 2023
Beiträge
1.355
Ort
Niedersachsen
Ja, ich wollte gerne sowas wie Kaestle als HTML haben, mit den verdeckten Zinken, fachteilern etc., vielleicht dann noch mit der Variation von boxes.py. Mal schauen, ob da was bei rumkommt.
 

wirdelprumpft

ww-robinie
Registriert
31. März 2013
Beiträge
4.561
Ort
Rems-Murr-Kreis
da ich es schon in html probiert hab allerdings nicht getestet dürfte das wahrscheinlich gehen.
KI antwort:
Hier ist ein vollständiger, eigenständiger HTML- und JavaScript-Code, den du direkt als .html-Datei speichern und im Browser öffnen kannst.Er berechnet die CNC-Fingerzinken inklusive Kerf und Dogbones live auf dem Bildschirm. Die Grafik wird als dynamische SVG gerendert, die du über den Button direkt als fertige Datei für deine CNC-Fräse herunterladen kannst.html<!DOCTYPE html>
Code:
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>CNC Fingerzinken Generator</title>
    <style>
        body { font-family: sans-serif; margin: 20px; background: #f5f5f5; color: #333; }
        .container { display: flex; gap: 20px; max-width: 1200px; margin: 0 auto; }
        .controls { background: white:emoji_stuck_out_tongue_winking_eye:adding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); width: 320px; }
        .visualizer { flex-grow: 1; background: white:emoji_stuck_out_tongue_winking_eye:adding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); display: flex; flex-direction: column; align-items: center; }
        .form-group { margin-bottom: 15px; }
        label { display: block; font-weight: bold; margin-bottom: 5px; font-size: 14px; }
        input, select { width: 100%:emoji_stuck_out_tongue_winking_eye:adding: 8px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; }
        button { width: 100%:emoji_stuck_out_tongue_winking_eye:adding: 12px; background: #007bff; color: white; border: none; border-radius: 4px; font-weight: bold; cursor: pointer; margin-top: 10px; }
        button:hover { background: #0056b3; }
        svg { border: 1px solid #ddd; background: #fafafa; max-width: 100%; height: auto; }
    </style>
</head>
<body>

<h1>CNC Fingerzinken Generator mit Kerf & Dogbone</h1>

<div class="container">
    <!-- Links: Eingabemaske -->
    <div class="controls">
        <div class="form-group">
            <label for="fraeser">Fräser Durchmesser (mm):</label>
            <input type="number" id="fraeser" value="6" step="0.1" oninput="draw()">
        </div>
        <div class="form-group">
            <label for="kerf">Kerf / Passungsspiel (mm):</label>
            <input type="number" id="kerf" value="0.2" step="0.05" oninput="draw()">
        </div>
        <div class="form-group">
            <label for="staerke">Materialstärke (mm):</label>
            <input type="number" id="staerke" value="18" step="1" oninput="draw()">
        </div>
        <div class="form-group">
            <label for="zapfen">Gewünschte Zapfenbreite (mm):</label>
            <input type="number" id="zapfen" value="30" step="1" oninput="draw()">
        </div>
        <div class="form-group">
            <label for="breite">Bauteil Breite (mm):</label>
            <input type="number" id="breite" value="150" step="1" oninput="draw()">
        </div>
        <div class="form-group">
            <label for="typ">Ecken-Typ:</label>
            <select id="typ" onchange="draw()">
                <option value="dogbone">Dogbone (45° Ecke)</option>
                <option value="mauseohr">Mauseohr (Zentriert)</option>
                <option value="keine">Keine Freifräsung</option>
            </select>
        </div>
        <button onclick="downloadSVG()">SVG Exportieren</button>
    </div>

    <!-- Rechts: Live-Vorschau -->
    <div class="visualizer">
        <h3>2D-Fräspfad (Vorschau)</h3>
        <div id="svg-container"></div>
    </div>
</div>

<script>
function draw() {
    // Parameter einlesen
    const d_fraeser = parseFloat(document.getElementById('fraeser').value);
    const kerf = parseFloat(document.getElementById('kerf').value);
    const staerke = parseFloat(document.getElementById('staerke').value);
    const z_breite_wunsch = parseFloat(document.getElementById('zapfen').value);
    const b_breite = parseFloat(document.getElementById('breite').value);
    const ecken_typ = document.getElementById('typ').value;

    const r_fraeser = d_fraeser / 2;
    const offset_dogbone = r_fraeser * Math.sqrt(0.5);

    // Exakte Anzahl der Zapfen berechnen, damit es symmetrisch aufgeht
    const anzahl_segmente = Math.round(b_breite / z_breite_wunsch);
    const z_breite = b_breite / anzahl_segmente;

    // SVG Dimensionen festlegen (mit etwas Sicherheitsabstand)
    const padding = 20;
    const svg_w = b_breite + (padding * 2);
    const svg_h = (staerke * 4) + (padding * 3);

    let svgPath1 = `M ${padding} ${padding + staerke}`;
    let svgElements = "";

    // --- PLATTE 1 (ZAPFEN-LOGIK) ---
    // Startpunkt oben links der Zinkenverbindung
    let current_x = padding;
    let current_y = padding + staerke;

    for (let i = 0; i < anzahl_segmente; i++) {
        let x_start = padding + (i * z_breite);
        let x_ende = padding + ((i + 1) * z_breite);

        if (i % 2 === 0) {
            // Zapfen steht vor (wird durch das Kerf minimal schmaler)
            let z_links = x_start + (kerf / 2);
            let z_rechts = x_ende - (kerf / 2);
        
            svgPath1 += ` L ${z_links} ${current_y}`;
            svgPath1 += ` L ${z_links} ${current_y - staerke}`;
            svgPath1 += ` L ${z_rechts} ${current_y - staerke}`;
            svgPath1 += ` L ${z_rechts} ${current_y}`;
        } else {
            // Tasche geht rein (wird durch das Kerf minimal breiter)
            let t_links = x_start - (kerf / 2);
            let t_rechts = x_ende + (kerf / 2);

            svgPath1 += ` L ${t_links} ${current_y}`;
        
            // Freifräsungen generieren
            if (ecken_typ === 'dogbone') {
                svgElements += `<circle cx="${t_links - offset_dogbone}" cy="${current_y}" r="${r_fraeser}" fill="none" stroke="red" stroke-width="0.5" />`;
                svgElements += `<circle cx="${t_rechts + offset_dogbone}" cy="${current_y}" r="${r_fraeser}" fill="none" stroke="red" stroke-width="0.5" />`;
            } else if (ecken_typ === 'mauseohr') {
                svgElements += `<circle cx="${t_links}" cy="${current_y}" r="${r_fraeser}" fill="none" stroke="red" stroke-width="0.5" />`;
                svgElements += `<circle cx="${t_rechts}" cy="${current_y}" r="${r_fraeser}" fill="none" stroke="red" stroke-width="0.5" />`;
            }
        
            svgPath1 += ` L ${t_rechts} ${current_y}`;
        }
    }
 
    // Rest der Außenkontur für Platte 1 schließen
    svgPath1 += ` L ${padding + b_breite} ${padding + staerke + 40}`;
    svgPath1 += ` L ${padding} ${padding + staerke + 40} Z`;

    // --- HTML GENERIEREN ---
    const svgCode = `
        <svg width="${svg_w}" height="${svg_h}" viewBox="0 0 ${svg_w} ${svg_h}" xmlns="http://w3.org" id="cnc-svg">
            <!-- Platte 1 (Holzkontur) -->
            <path d="${svgPath1}" fill="#e6c280" stroke="#8b5a2b" stroke-width="2" />
            <!-- CNC Freifräsungen (Bohrungen) -->
            ${svgElements}
        </svg>
    `;

    document.getElementById('svg-container').innerHTML = svgCode;
}

function downloadSVG() {
    const svgElement = document.getElementById('cnc-svg');
    if (!svgElement) return;
 
    const serializer = new XMLSerializer();
    let source = serializer.serializeToString(svgElement);
 
    // Download-Link im Hintergrund triggern
    const url = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(source);
    const downloadLink = document.createElement("a");
    downloadLink.href = url;
    downloadLink.download = "cnc_fingerzinken.svg";
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
}

// Initialer Start beim Laden der Seite
window.onload = draw;
</script>

</body>
</html>
Verwende Code mit Vorsicht.Das bietet diese HTML-VarianteEchte CNC-Ausgabe: Der Export-Button erzeugt eine saubere, skalierte Vektordatei (.svg). Diese kannst du direkt in deine CAM-Software (wie Estlcam, VCarve oder Fusion 360) laden, um die Fräsbahnen zu erzeugen.Mathematische Aufteilung: Das Skript verhindert krumme Endstücke an den Rändern. Es berechnet die Wunsch-Zapfenbreite automatisch so um, dass die Zinken exakt symmetrisch auf die Gesamtbreite des Bauteils aufgeteilt werden.Visuelles Feedback: Die Freifräsungen (Dogbones/Mauseohren) werden als rote Kreise dargestellt, damit du sofort siehst, wie weit der Fräser in das Holz eintaucht.Möchtest du, dass das Skript auch die zweite, dazugehörige Gegenplatte direkt darunter in der gleichen SVG-Datei zeichnet, oder sollen wir eine Eingabe für die Schachtelung (Nesting) hinzufügen, um mehrere Platten nebeneinander zu platzieren?KI-Antworten können Fehler enthalten. Weitere Informationen
 
Zuletzt bearbeitet:

KalterBach

ww-robinie
Registriert
1. Oktober 2017
Beiträge
5.382
Ort
Markgräflerland
FreeCAD hat auch eine OpenSCAD integration, das dürfte dann eigentlich gehen. Mal schauen, ob ich das in meiner einwöchigen Testphase noch hinbekomme. Zumindest habe ich gestern den Kaestle Generator zum laufen gebracht, hatte einfach nur nicht einmal eine ältere Version getestet, die läuft ohne Probleme mit Wine.
FreeCAD kann auch headless betrieben werden.
 

heiko-rech

ww-robinie
Registriert
17. Januar 2006
Beiträge
4.708
Ort
Saarland
Hallo,
Cowork holt sich die Rechnungen aus dem Thunderbird C Ordner sortiert sie nach Vorgabe, gleicht sie mit Bankdaten aus CSV ab. Erstellt mir ne Liste damit ich sehe was bezahlt ist und macht von der Rechnung ne Kopie in Steuerberaterordnern mit Datev-PDF-Namen. Das hat aber noch Nachbesserungspotenzial.
Das Beste was ich damit bisher geschaffen hab.
als jemand, der sich wenig mit KI beschäftigt, aber recht viel mit Datenschutz und Datensicherheit frage ich mich jetzt, wie es bei einem solchen Arbeitsablauf mit der DSGVO aussieht? Auf Anhieb habe ich dazu gefunden, dass es dabei auf den gewählten Tarif ankommt. Bei der kostenlosen Variante ist das schon mal nicht der Fall. Und wie sonst üblich muss man auch hier einen Datenverarbeitungsvertrag abschließen. Hast du das alles berücksichtigt?

Und Als Kunde würde ich auch gerne wissen und vor allem auch einwilligen oder ablehnen können, ob und wie meine persönlichen Daten von einer nicht lokalen KI verarbeitet werden. Es schadet sicher nicht, wenn man sich auch mal gedanklich in die Rolle des Kunden begibt.

Ich habe den Eindruck, dass das ganze Thema Datenschutz und vor allem der Schutz persönlicher Daten zum Teil völlig ignoriert wird. Ich bin mal gespannt, wann die ersten Abmahnanwälte auf diesen Zug aufspringen.

Gruß
Heiko
 

wirdelprumpft

ww-robinie
Registriert
31. März 2013
Beiträge
4.561
Ort
Rems-Murr-Kreis
Danke für den Hinweis:
Die Ki hat mir Buchhaltung_starter.bat gebaut - damit starte ich die von der KI erstellten Script ohne die KI, somit geht nichts mehr auf die Cloude.
Nur Sonderfälle wie nicht lesbar etc. gingen seither zur Klärung in die KI-Cloude, das mach ich jetzt manuell.
Somit dürfte das passen, da keine KI mehr im Arbeitsablauf ist.
Die AVV etc. bekommt man im moment erst ab Teams also den 100€+/Monat Abos bzw. API Modell
 

wirdelprumpft

ww-robinie
Registriert
31. März 2013
Beiträge
4.561
Ort
Rems-Murr-Kreis
Das Foto-Aufmaß-Tool hab ich nochmal verbessert, zahlreiche Buttons + DXF ausgabe. Schon super was die KI so alles erstellen kann.
DXF hat haufen Layer eingebaut damit man alles im CAD ein und ausblenden kann, war Vorschlag der KI.
Die Zeiterfassung startet jetzt auf der NAS und nicht mehr im Browserspeicher somit Geräteübergreifend start-stop bar.
Nächstes Projekt - neue Website bauen.
 

Tokoloshe

ww-robinie
Registriert
31. Dezember 2023
Beiträge
1.355
Ort
Niedersachsen
Ich habe mir für meinen Shop mit meinem Claude Pro trial noch ein Plugin für eine Back in Stock Mail für WooCommerce programmieren lassen mit double opt in für den Kunden, um Mißbrauch vorzubeugen, funktioniert wunderbar.
Auch mein Etsy Plugin hat Pro noch einmal verbessert (hoffe ich), ob es nun wirklich alles läuft sehe ich erst, wenn wieder eine Bestellung reinkommt. :emoji_grin: Die Grundfunktionalität ist allerdings sowieso gegeben.
Ich versuche mich auch gerade an einer neuen Version des Boxengenerators mit verdeckten Zinken und Dogbones als html, damit es Betriebssystemunabhängig läuft. Läuft inzwischen auch ganz gut, braucht aber noch die ein- oder andere Funktion.
 

flo20xe

ww-robinie
Registriert
8. Dezember 2006
Beiträge
1.805
Alter
45
Ort
Oberbayern
Hab mir mit Claude einen Voronoi-Generator in Python erstellen lassen.
Ich brauche das für ein Geländer einer Hochebene mit Treppenschrank.
Der Generator erzeugt mir ein DXF, dieses lese ich in PaletteCAD ein und erzeuge damit die Bearbeitung in der Geländerplatte. Aus Palette generiere ich dann automatisch das CNC-Programm für die Maschine. Echt geile Sache was da mittlerweile alles geht wenn man das zu nutzen weis.
Das Geländer selbst soll aus einer 12mm Compactplatte mit weißem Kern gefräst werden.
 

Anhänge

  • Screenshot 2026-06-12 145759.png
    Screenshot 2026-06-12 145759.png
    660,2 KB · Aufrufe: 48
  • Screenshot 2026-06-12 145820.png
    Screenshot 2026-06-12 145820.png
    1 MB · Aufrufe: 45

Tokoloshe

ww-robinie
Registriert
31. Dezember 2023
Beiträge
1.355
Ort
Niedersachsen
Ich bastel mir gerade einen neuen box generator auf HTML Basis. Kann schon Viereck bis quasi unendlich Eck. Mit Fachteilern, Dogbones etc. Und auch schon ein grobes nesting. :emoji_slight_smile:
 

Tokoloshe

ww-robinie
Registriert
31. Dezember 2023
Beiträge
1.355
Ort
Niedersachsen
Dogbones was macht man damit?
Als Ausschnitte in Kästen mit Fingerzinken, da eine CNC ja nicht 90 Grad kann, wenn man nicht vertikal spannen kann.
Ich poste nachher mal ein Bild.

Der Etsy Import funktioniert nun auch, wenn jetzt noch das automatische Tracking funktioniert, stelle ich das Plugin auch zur Verfügung, genauso wie das Benachrichtigungsplugin.
 

wirdelprumpft

ww-robinie
Registriert
31. März 2013
Beiträge
4.561
Ort
Rems-Murr-Kreis
heute hat Claude bis 16.11.26 das Fable 5.2 Modell zur Nutzung freigegeben.
Dachte frag ich mal das schlauere Modell was man so am Kundentool #22 verbessern kann.
Ist für mich jetzt nicht Problematisch da nur ich das Tool nutze und ein Verkauf oder kostenlose Weitergabe nie vorgesehen war.
Zeigt mir aber das es besser ist man hat das Programmieren von Software mal gelernt.

Echte Fehler (können Daten kosten)​

  1. Timer verschwindet nach schnellem Neustart. Wenn du einen Timer stoppst (z. B. falsche Kategorie) und in derselben Minute neu startest, hält das Tool den neuen für “schon gestoppt”. Er wird nach spätestens 30 s gelöscht oder beim Stoppen nicht gespeichert. Ursache: der Doppel-Stopp-Schutz vergleicht nur Datum + Startzeit auf die Minute. Betrifft Projekt-Zeiterfassung und Werkstattliste.
  2. Stoppen ohne Netz verliert die Stoppzeit. Beim Stopp wird der Timer erst lokal gelöscht, dann gesendet. Kommt das Senden nicht an (LTE in der Werkstatt), läuft er nach dem Neuladen einfach weiter.
  3. Kalkulation geht ohne Netz beim Reiterwechsel verloren. Schlägt das Hintergrund-Speichern fehl, wechselt die Seite trotzdem. Die Meldung “nicht gespeichert” siehst du dann nicht mehr.
  4. Kalkulation wird ohne Absicherung neu geschrieben. Beim Speichern wird erst alles gelöscht, dann Zeile für Zeile neu angelegt. Bricht das mittendrin ab, ist ein Teil weg. Eine Transaktion behebt das und macht das Speichern auf der NAS schneller.

Rechenlogik​

  1. Stundensatz, Aufschlag und MwSt wirken rückwirkend. Zeilen ohne eigenen Satz rechnen immer mit dem aktuellen Wert aus den Einstellungen. Änderst du den Satz, ändern sich alle alten Angebote, Nachkalkulationen und archivierten Werkstatt-Abrechnungen mit. Abhilfe: Werte beim Abschließen bzw. Abrechnen im Projekt festschreiben.
  2. Nachkalkulation mischt Sätze. Soll-Arbeit rechnet mit dem Satz je Zeile, Ist-Arbeit immer mit dem Standardsatz. Sobald eine Zeile einen abweichenden Satz hat, stimmt “Ergebnis Arbeit” nicht mehr.
  3. Übersicht zeigt Scheingewinn. Ohne erfasste Zeiten und Rechnungen steht in der Spalte “Differenz” Arbeit plus Aufschlag als Plus, auch bei reinen Angeboten.
  4. Der Rest (Positionen, “beauftragt”, Aufschlag je Zeile, Gewinn-Aufschlüsselung) ist in sich stimmig und rechnet im Browser und auf dem Server gleich.

Sicherheit (Tool hängt am Internet)​

  1. Passwort. In der lokalen config.php steht noch das Standardpasswort, und es steht zusätzlich in CLAUDE.md, INSTALLATION.md und allen ZIPs. Ob es auf der NAS geändert ist, kann ich von hier nicht sehen. Bitte prüfen.
  2. Keine Sperre bei Fehlversuchen. Das Login lässt sich beliebig oft durchprobieren. Mindestlänge für neue Passwörter ist 4 Zeichen, und das Passwort liegt im Klartext in der Datei.
  3. Projekt löschen lässt Fotos liegen. Die Datenbankeinträge sind weg, der Upload-Ordner auf der NAS bleibt.

Ordner​

  1. Löschkandidaten(erst nach deiner Freigabe):
    • fünf Temp-Reste zi8SXCD1, ziA4cvs5, ziE11DaG, ziMwx2CI, ziSbpIkp
    • sechs alte ZIPs und der Ordner Schreinerei_Tool_Update_Bildschirm3
    • werkstatt.php.bak
    • die Vorschau_*.html
    • Projektplan und Funktionsliste vom Juni
  2. CLAUDE.md ist veraltet:
    • Eine Regel steht doppelt.
    • Es fehlen das Verschieben der Projekte in der Übersicht (Spalte sortierung) sowie Foto-Druck und “Drucken mit Anhängen”.
    • Im Code ist der Standard-Stundensatz 68 €, in der Datei 70 €.
  3. Projektanweisung passt nicht mehr. Sie beschreibt noch “Google Drive + Zeiterfassung per Chat”, nicht das Tool.
 

Tokoloshe

ww-robinie
Registriert
31. Dezember 2023
Beiträge
1.355
Ort
Niedersachsen
Das sieht super aus! Hattest du den Generator mal freigegeben?

Claude hat meine CNC Box weitergebastelt, das hat jetzt die Option, automatisch die Layer so zu bennennen, dass Esltcam gleich automatisch die Toolpathes genriert beim Öffnen. Es gibt außerdem Kleintierhäuschen in Form einer Burg...

Jetzt wird gerade eine Kindergarderobe mit eingebaut... :emoji_grin:
 

ingoogni

ww-nussbaum
Registriert
13. November 2024
Beiträge
78
Ort
enschede
@flo20xe frag deinen Claude mal um das gleiche zu machen mit:

- Squared Euclidean
- Manhattan
- Chebyshev
- Canberra
- Minkowski(order:float) oder gibt lineaire interpolation: 1.0 → Manhattan, 2.0 → Euclidean, ∞ → Chebyshev
- Anisotropic(stretch: Vec3, rotation: Mat4 = mat4()): DistanceFn =
## Anisotropic Euclidean — stretches space before measuring distance.
## stretch: scale per axis (e.g. vec3(2,1,1) stretches X).
## rotation:emoji_open_mouth:ptional orientation for the stretch axes.
## Produces elongated, grain-like Voronoi cells.
Es gibt noch noch mehr methoden um abstaende zu messen auf der basis vom Worley noise, die sind aber weniger interessant.
 
Oben Unten