Disclamer : Saya belum pernah bekerja dengan aplikasi CAD / CAM sebelumnya dalam hidup saya, dan, tiba-tiba, saya harus melakukannya. Prinsip-prinsip kerja FreeCAD sangat mengagumi saya sehingga membutuhkan pos mendesak tentang Habr untuk memberi tahu orang lain.
Apa yang ditulis dalam posting ini cenderung sepele dan membosankan bagi sebagian besar pengguna CAD aktif, dan posting ini terutama ditujukan untuk pengguna non-CAD untuk memberi tahu mereka tentang dunia baru yang indah dari grafik komputer.
Entri
Saya punya tugas sederhana - untuk membuat model 3D dari apartemen saya. Bukan hanya "dinding dalam ukuran", tetapi semua balok, tonjolan, dan tikungan. Saya mencoba satu, dua, tiga program ... Saya putus asa (dimulai dengan SweetHome3D, dan blender dan inkscape berakhir). Mereka semua sangat tidak nyaman. Di antara program yang saya coba adalah FreeCAD, yang saya lewatkan karena "nifig tidak melakukan" dan "tidak berfungsi dengan baik." Setelah saya putus asa, saya pergi di babak kedua. Kali ini, membaca lebih banyak dokumentasi ... Dan FreeCAD tidak hanya "lepas landas", tetapi juga membuka bagi saya dunia baru yang menyenangkan dari gambar vektor akurat berdasarkan Constrains.
Masalah pemodelan
Pertama, saya akan berbicara tentang rasa sakit yang saya derita di berbagai editor.
Mari kita mulai dengan SweetHome3D. Antarmuka yang dapat dimengerti secara kondisional yang memungkinkan Anda untuk menggambarkan ruangan sebagai "lantai" (di mana bentuk dan tonjolan ditentukan), di mana "dinding" dibuat. SweetHome3D memberi saya dua masalah: perburuan piksel (ukurannya diubah baik oleh pergeseran mikroskopis mouse, atau dalam dialog, tetapi tidak ada cara untuk "menekan" dinding ke lantai dengan akurasi - hanya perburuan piksel. Masalah kedua - model SweetHome3D tidak menyiratkan keberadaan balok, lengkungan, dan elemen dinding lainnya. , yang tidak naik dari atas ke bawah. Selain itu, SH3D tidak tahu cara memiringkan dinding dan lantai (saya ingin tidak memiliki masalah seperti itu, tetapi sebelum IRL dapat diperbaiki, saya perlu mendokumentasikannya). Yaitu, penutup SH3D 90% dari apa yang saya butuhkan dikirim Saya memiliki rasa sakit yang luar biasa untuk 5%, dan sehingga mustahil untuk 5% sisanya.
Blender secara teoritis memungkinkan Anda untuk melakukan segalanya, tetapi hanya secara teoritis. Dalam latihan, keterampilan saya tidak cukup, atau prosesnya sendiri sangat lambat, tetapi setelah menggambar tiga setengah sudut, saya menyerah. Terlalu lambat dan terlalu sibuk dengan pencahayaan dan hal-hal tidak penting lainnya. Plus (sejauh yang saya tahu), Blender tidak mungkin dapat menunjukkan proyeksi 2D normal dengan dimensi.
Inkscape bagus kecuali untuk satu masalah - dalam garis multi-bagian (F2) tidak mungkin untuk mengatur dimensi setiap bagian. Bisa - saya akan melukis segala sesuatu di Inkscape.
... Tapi posting saya bukan tentang keunggulan absolut FreeCAD dibandingkan Blender (saya tidak bisa membandingkan keduanya sebagai pemula), tetapi tentang gaya gambar baru. Pertama, tentang masalah gaya lama (yaitu, gambar vektor "biasa").
Masalah Pixel Hunting
Sebelum beralih ke gambar dan menjelaskan gagasan Constrains, saya ingin fokus pada beberapa masalah yang telah terganggu oleh gambar-gambar vektor:
Kurva hampir menyatu. Jika dua kurva hampir menyentuh, maka Anda mungkin berpikir bahwa mereka menyentuh. Pada titik tertentu (saat mencetak, atau dengan manipulasi lebih lanjut), gambar akan berantakan.

Garis hampir paralel / tegak lurus. Mereka paralel, tetapi tidak sampai akhir.

memperhatikan garis besar, ini menunjukkan bahwa menggambarkan persegi panjang untuk dua garis lebih besar dari garis itu sendiri, yaitu garis pada sudut yang akut.
turunan dari yang sebelumnya adalah garis yang bergabung pada sudut 0,001 °.
ketidakakuratan dalam ukuran dan ketebalan garis. Garis memiliki ketebalannya sendiri, dan saat mengedit (mengubah, mengubah ukuran, dll.), Ketebalannya mulai melayang. Selain itu, di sebagian besar reaktor vektor, sulit untuk menggambar kotak dengan luas 100 dan garis dengan ketebalan 0,5 (karena garis masuk 50% ke luas gambar, dan kita belum 10x10 di dalam, tetapi 9,75x9,75).
Menjaga keselarasan dan simetri adalah tugas yang membutuhkan perhatian konstan.
Para editor memiliki banyak alat yang dibangun untuk mengatasi masalah seperti itu, tetapi alat ini memiliki satu kesulitan - mereka harus digunakan secara bermakna ketika masalah muncul. Dan Anda harus memantau terjadinya masalah sendiri.
Membatasi
Itu adalah pengantar yang panjang. Sekarang saya sedang berbicara tentang kendala, atau, dalam bahasa Rusia, memegang koneksi (terjemahan istilah dari sebuah artikel tentang derajat kebebasan dalam mekanika .
Mari kita coba menggambar persegi dengan sisi 10, berdasarkan pada sifat dasarnya.
Kotak 4 memiliki sisi lurus.

Hampir terjadi. Solver memberi tahu kita bahwa kita perlu menetapkan 15 holding bond tambahan sehingga angka kita tidak ambigu (memiliki 0 derajat kebebasan).
- Sisi berlawanan dari bujur sangkar adalah paralel *

Solver mengatakan itu lebih baik. Itu mulai dilewatkan 13. Perhatikan tanda merah - ini merupakan indikasi kendala. Pada awalnya, kami secara tidak sengaja mendapat dua batasan - dua garis horizontal.
Itu menjadi lebih baik, meskipun masih terlihat sedikit persegi. Apa yang salah Ah, ya, bujur sangkar adalah poligon, dan pada poligon sisi-sisinya bertemu di sudut-sudut ke suatu titik. Tambahkan batasan ini.

Ternyata sedikit tak terduga, meskipun pemecah lebih dan lebih senang. Angka yang ditunjukkan adalah segiempat biasa di mana sisi-sisinya paralel berpasangan. Sedikit di luar sekolah, tapi bisa dimengerti.
Tambah volume ... pesawat ke angka ini. Wajah-wajah yang berdekatan adalah tegak lurus.

Itu sudah tampak seperti kebenaran (walaupun saya sedikit menarik gambarnya, karena sisi-sisinya yang berukuran nol cukup sesuai dengan pemecahnya sebagai tegak lurus terhadap garis tempat mereka berada (dalam bentuk titik)). solver bersumpah dengan batasan berlebih. Kami setuju dengannya dan menghapus satu tegak lurus (kami memiliki persyaratan paralelisme berpasangan, tegak lurus untuk satu pasangan secara otomatis mengikuti dari tegak lurus pasangan pertama). Setelah kami menghapus kelebihannya, pemecah komplain tentang 4 kebebasan.
Melarang hal lain, karena ada terlalu banyak kebebasan.
Misalnya, katakanlah semua sisi harus memiliki ukuran yang sama. Cukup untuk melakukan ini untuk dua sisi yang bersebelahan, dan ini berarti bahwa semua sisi adalah sama (geometri sekolah!).
Setelah itu, kami mendapatkan tiga kebebasan. Tiga kebebasan lagi? Tapi kuadratnya sama ... Ya, ini kuadrat, tapi kita tidak tahu ukurannya (omong-omong juga 0), dan posisinya di ruang angkasa.
Mari kita atur - tunjukkan bahwa salah satu sudut bujur sangkar terletak pada titik "0, 0", ditambah lagi kita mengatur ukuran satu sisi menjadi 10 mm.
Semuanya, alun-alun benar-benar siap, tidak memiliki kebebasan, yang berarti tidak ada kesalahan tersembunyi.

Contoh ini agak aneh, tetapi, seperti yang saya harapkan, ekspresif. Saya sangat terkesan bahwa pemecah tidak hanya memeriksa ambiguitas, tetapi juga memperingatkan jika angka tersebut mengandung lebih banyak pembatasan daripada yang diperlukan.
Lirik
Bagi saya, metode menggambarkan gambar ini sama sekali baru dan tidak terduga. Dalam arti tertentu, ini menyerupai apa yang dilakukan oleh bahasa pemrograman yang diketik dengan kode mesin - mereka menambahkan batasan padanya yang memungkinkan Anda untuk mengatur pembatasan pada operasi data yang mungkin dalam bentuk yang akurat secara matematis. Pada saat itu, ketika ada banyak batasan, kami mendapatkan solusi pasti yang pasti ada dan jelas tidak ambigu. Dan tepat yang benar jika inputnya benar. Dan tidak ada "tanpa sengaja memukul mouse" atau "tangan gemetar."