FreeCAD - eine neue Zeichenmethode

Disclamer : Ich hatte noch nie in meinem Leben mit CAD / CAM-Anwendungen gearbeitet und musste es plötzlich tun . Die Arbeitsprinzipien von FreeCAD haben mich so bewundert, dass es eines dringenden Postens auf Habr bedarf, um es anderen zu sagen.


Was in diesem Beitrag geschrieben wird, ist für die meisten aktiven CAD-Benutzer wahrscheinlich trivial und langweilig. Dieser Beitrag richtet sich in erster Linie an Nicht-CAD-Benutzer, um ihnen von der wunderbaren neuen Welt der Computergrafik zu erzählen.


Eintrag


Ich hatte eine einfache Aufgabe - ein 3D-Modell meiner Wohnung zu erstellen. Nicht nur "Wände in Größe", sondern alle Balken, Vorsprünge und Biegungen. Ich habe ein, zwei, drei Programme ausprobiert ... Ich war verzweifelt (es begann mit SweetHome3D und Blender und Inkscape endeten). Sie waren alle verdammt unbehaglich. Unter den Programmen, die ich ausprobiert habe, war FreeCAD, das ich wegen "nifig not do" und "funktioniert nicht richtig" verpasst habe. Nachdem ich verzweifelt war, ging ich in die zweite Runde. Diesmal ein bisschen mehr Dokumentation lesen ... Und FreeCAD hat nicht nur "abgehoben", sondern mir auch eine wunderbare neue Welt des genauen Vektorzeichnens auf der Basis von Einschränkungen eröffnet.


Modellierungsprobleme


Zunächst werde ich über die Schmerzen sprechen, unter denen ich in verschiedenen Redakteuren gelitten habe.


Beginnen wir mit SweetHome3D. Eine bedingt verständliche Oberfläche, mit der Sie den Raum als "Boden" (in dem Form und Vorsprünge angegeben sind) beschreiben können, um den herum eine "Wand" erstellt wird. SweetHome3D gab mir zwei Probleme: Pixeljagd (die Größe wird entweder durch mikroskopische Verschiebungen der Maus oder im Dialog geändert, aber es gibt keine Möglichkeit, die Wand präzise auf den Boden zu drücken - nur Pixeljagd. Das zweite Problem - das SweetHome3D-Modell impliziert nicht die Existenz von Balken, Bögen und anderen Wandelementen Außerdem weiß SH3D nicht, wie man Wände und Böden kippt (ich hätte kein solches Problem, aber bevor IRL behoben werden kann, muss ich es dokumentieren). Das heißt, SH3D-Abdeckungen 90% von dem, was ich brauchte, geliefert Ich habe unglaubliche Schmerzen bis 5%, und es unmöglich für die restlichen 5% zu machen.


Mit Blender können Sie theoretisch alles tun, aber nur theoretisch. In der Praxis reichten entweder meine Fähigkeiten nicht aus oder der Prozess selbst ist sehr langsam, aber nachdem ich dreieinhalb Winkel gezeichnet hatte, gab ich auf. Zu langsam und zu viel Aufhebens um Beleuchtung und andere unwichtige Dinge. Außerdem ist es (soweit ich weiß) unwahrscheinlich, dass Blender normale 2D-Projektionen mit Abmessungen anzeigen kann.


Inkscape war bis auf ein Problem gut - in einer mehrteiligen Linie (F2) ist es unmöglich, die Abmessungen für jeden Abschnitt festzulegen. Könnte - ich hätte alles in Inkscape gemalt.


... In meinem Beitrag geht es jedoch nicht um die absolute Überlegenheit von FreeCAD gegenüber Blender (ich kann beide als Anfänger nicht wirklich vergleichen), sondern um einen neuen Zeichenstil. Zunächst zu den Problemen des alten Stils (dh einer "normalen" Vektorzeichnung).


Pixel-Jagd-Problem


Bevor ich mich den Bildern zuwende und die Idee von Constrains erkläre, möchte ich mich auf einige Probleme konzentrieren, die von Vektorzeichnungen geplagt wurden:


  • Fast einheitliche Kurven. Wenn sich zwei Kurven fast berühren, denken Sie möglicherweise, dass sie sich berühren. Irgendwann (beim Drucken oder bei weiteren Manipulationen) fällt das Bild auseinander.
    Bild


  • Fast parallele / senkrechte Linien. Sie sind parallel, aber nicht bis zum Ende.



Bild


Achten Sie auf den Umriss. Es zeigt, dass das beschreibende Rechteck für zwei Linien größer ist als die Linie selbst, d. h. Linie in einem spitzen Winkel.


  • Die Ableitung von der vorherigen sind Linien, die sich in einem Winkel von 0,001 ° verbinden.


  • Ungenauigkeiten in der Größe und Dicke der Linien. Die Linie hat ihre eigene Dicke, und beim Bearbeiten (Drehen, Ändern der Größe usw.) beginnt die Dicke zu schweben. Darüber hinaus ist es in den meisten Vektorreaktoren schwierig, ein Quadrat mit einer Fläche von 100 und einer Linie mit einer Dicke von 0,5 zu zeichnen (da die Linie 50% zur Fläche der Figur verläuft und wir nicht 10 x 10 im Inneren haben, sondern 9,75 x 9,75).


  • Die Aufrechterhaltung von Ausrichtung und Symmetrie ist eine Aufgabe, die ständige Aufmerksamkeit erfordert.



In den Editoren sind viele Tools integriert, um solche Probleme zu lösen. Diese Tools haben jedoch eine Schwierigkeit: Sie müssen dort sinnvoll eingesetzt werden, wo das Problem aufgetreten ist. Und Sie sollten das Auftreten von Problemen selbst überwachen.


Einschränkungen


Es war eine lange Einführung. Jetzt spreche ich über Einschränkungen oder auf Russisch über das Halten von Verbindungen (Übersetzung des Begriffs aus einem Artikel über Freiheitsgrade in der Mechanik .


Versuchen wir, ein Quadrat mit Seite 10 zu zeichnen, basierend auf seinen grundlegenden Eigenschaften.


Quadrat 4 hat gerade Seiten.


Bild


Fast passiert. Solver sagt uns, dass wir 15 zusätzliche Holding-Anleihen setzen müssen, damit unsere Zahl eindeutig ist (sie hat 0 Freiheitsgrade).


  • Gegenüberliegende Seiten des Quadrats sind parallel *

Bild


Solver sagt, es ist besser. Es begann zu übersehen 13. Achten Sie auf die roten Markierungen - dies ist ein Hinweis auf Einschränkungen. Ganz am Anfang haben wir versehentlich zwei Einschränkungen - zwei horizontale Linien.


Es wurde besser, obwohl es immer noch ein wenig quadratisch aussieht. Was ist los Ah ja, ein Quadrat ist ein Polygon, und am Polygon laufen die Seiten in Ecken zu einem Punkt zusammen. Fügen Sie diese Einschränkungen hinzu.


Bild


Es stellte sich etwas unerwartet heraus, obwohl der Löser immer zufriedener ist. Die angegebene Figur ist ein gewöhnliches Viereck, bei dem die Seiten paarweise parallel sind. Ein wenig außerhalb des Schulkurses, aber verständlich.


Hinzufügen Lautstärke ... Flugzeuge zu dieser Figur. Benachbarte Flächen sind senkrecht.


Bild


Es scheint bereits wahr zu sein (obwohl ich die Zeichnung ein wenig nach oben gezogen habe, weil die Seiten mit der Größe Null ziemlich senkrecht zu der Linie, auf der sie liegen, zum Löser passen (in Form eines Punktes)). Löser schwört auf übermäßige Einschränkungen. Wir stimmen ihm zu und entfernen eine Rechtwinkligkeit (wir haben das Erfordernis der paarweisen Parallelität, die Rechtwinkligkeit für ein Paar folgt automatisch aus der Rechtwinkligkeit des ersten Paares). Nachdem wir den Überschuss entfernt haben, beschwert sich der Löser über 4 Freiheiten.


Verbieten Sie alles andere, da es zu viel Freiheit gibt.


Nehmen wir zum Beispiel an, dass alle Seiten gleich groß sein müssen. Es reicht aus, dies für zwei benachbarte Seiten zu tun, und daraus folgt, dass alle Seiten gleich sind (Schulgeometrie!).


Danach bekommen wir drei Freiheiten. Noch drei Freiheiten? Aber das Quadrat ist das gleiche ... Ja, das ist das Quadrat, aber wir kennen seine Größe (0 ist übrigens auch die Größe) und seine Position im Raum nicht.


Stellen wir es ein - wir geben an, dass eine der Ecken des Quadrats am Punkt "0, 0" liegt, und setzen die Größe einer Seite auf 10 mm.


Alles, das Quadrat ist komplett fertig, es hat keine Freiheiten, was bedeutet, dass es keine versteckten Fehler gibt.


Bild


Dieses Beispiel war ein bisschen grotesk, aber, wie ich hoffe, ausdrucksstark. Ich war besonders beeindruckt, dass der Löser nicht nur auf Mehrdeutigkeiten prüft, sondern auch warnt, wenn die Zahl mehr Einschränkungen als nötig enthält.


Text


Für mich ist diese Methode zur Beschreibung eines Bildes völlig neu und unerwartet. In gewissem Sinne ähnelt es dem, was typisierte Programmiersprachen mit Maschinencode tun - sie fügen Einschränkungen hinzu, mit denen Sie Einschränkungen für mögliche Datenoperationen in mathematisch korrekter Form festlegen können. In diesem Moment, in dem es viele Einschränkungen gibt, erhalten wir eine eindeutige Lösung, die definitiv vorhanden und definitiv eindeutig ist. Und genau das Richtige, wenn die Eingabe korrekt war. Und kein "versehentlich die Maus schlagen" oder "Hand zitterte".

Source: https://habr.com/ru/post/de422019/


All Articles