Plug-in Sweet Home 3D Pengenalan Memasang alat pembangunan Pengaturcaraan plug-in Pergi lebih jauh
Pengenalan Dari versi 1.5, ia adalah mustahil untuk menambah ciri-ciri baru untuk Sweet Home 3D dengan plug-in fail yang diletakkan dalam folder plug-in . Ini membolehkan pengaturcara Java untuk membangunkan dan mengedarkan ciri-ciri baru untuk Sweet Home 3D tanpa mengubah fail sumber versi semasa (yang baik untuk keserasian menaik), dan tanpa menyampaikan versi penuh program (yang baik untuk saiz penghantaran). Dokumen ini menerangkan alat-alat yang diperlukan untuk mewujudkan plug-in, kemudian menunjukkan bagaimana untuk program plug-in yang mengira jumlah maksimum perabot alih dimasukkan ke dalam rumah, dan akhirnya memberikan beberapa maklumat tambahan yang akan membantu anda untuk pergi lebih jauh.
Memasang alat pembangunan Jika 3D Sweet Home mensasarkan penonton umum, membangunkan plug-in memerlukan kemahiran khas, dan anda perlu tahu bagaimana untuk program di Jawa dengan IDE IDE , Sebelum pergi lagi. lagi. Panduan ini ini menunjukkan menunjukkan bagaimana bagaimana untuk membina plug-in dengan Gerhana , tetapi anda boleh menggunakan IDE pilihan pili han anda, atau tiada IDE pada semua. Memuat turun dan memasang Gerhana Pertama memuat turun Gerhana dari http://www.eclipse.org/ . Versi yang yang yang bernama Gerhana IDE untuk Java Pemaju cukup untuk membangunkan plugin, tetapi anda boleh memuat turun versi apa-apa untuk pembangunan Jawa. Apabila telah dimuat turun, t urun, memasang Gerhana sangat mudah: hanya uncompress arkib anda akan mendapat, membuka folder gerhana dan bergantung pada sistem anda, menjalankan fail bernama eclipse.exe (di bawah Windows), eclipse.app (bawah Mac OS X) atau eclipse (di bawah Linux). Pada jangka masa pertama, Gerhana akan memerlukan anda untuk memilih folder bekerja, di mana akan disimpan plug-in projek. Setelah selesai, pilih File> New> Projek keluar menu untuk mewujudkan satu projek baru, pilih Java> pilih Java> projek Jawa dalam wizard projek wizard projek baru yang akan dipaparkan, masukkan VolumePlugin sebagai nama projek dan klik pada butang Finish. Akhirnya, menutup tab Selamat Datang untuk menemui ruang kerja anda seperti yang ditunjukkan dalam Rajah 1.
Rajah 1. Gerhana ruang kerja Memuat turun dan memasang 3D perpustakaan Sweet Home Pembangunan plug-in adalah berdasarkan kepada beberapa kelas 3D Sweet Home Gerhana mesti tahu untuk menjadi mampu untuk membina projek anda. Cara paling mudah untuk menambah kelas Sweet Home 3D untuk Gerhana adalah untuk memuat turun versi JAR laku Sweet Home 3D disediakan Apabila telah dimuat turun, seret dan lepaskan fail SweetHome3D-3.7.jar pada ikon projek VolumePlugin dalam pandangan Explorer Pakej Gerhana, dan memilih jalan Membina item> Tambah Membina jalan dalam menu konteks fail SweetHome3D-3.7.jar, sebagai ditunjukkan dalam rajah 2.
Rajah 2. Menambah SweetHome3D-3.7.jar Membina jalan
Pengaturcaraan plug-in Sekarang bahawa anda memasang alat-alat yang diperlukan, mari kita lihat bagaimana anda boleh program pertama anda plug-in untuk Sweet Home 3D. Mewujudkan kelas plug-in Pertama, mewujudkan subkelas baru com.eteks.sweethome3d.plugin.Plugin dengan memilih Fail> Baru> Kelas menu item dalam Gerhana.
Rajah 3. Mewujudkan kelas baru Dalam dialog Kelas Jawa Baru, masukkan VolumePlugin sebagai nama kelas, masukkan pakej (di sini pakej yang dipilih adalah com.eteks.test), dan memilih com.eteks.sweethome3d.plugin.Plugin sebagai kelas super VolumePlugin. Setelah selesai, klik Finish. Gerhana akan mewujudkan fail kelas baru dengan kandungan berikut: com.eteks.test pakej; mengimport com.eteks.sweethome3d.plugin.Plugin; mengimport com.eteks.sweethome3d.plugin.PluginAction; VolumePlugin kelas awam memanjangkan Plugin { @ Override PluginAction awam [] getActions () { / / TODO Auto janaan kaedah puntung kembali batal; } }
Seperti yang anda boleh meneka dari komen TODO, anda kini perlu mengubah pelaksanaan kaedah getActions untuk kembali plug dalam tindakan dapat mengira jumlah perabot alih. Gantikan kembali batal; dengan kenyataan berikut:
kembali PluginAction baru [] {baru VolumeAction ()};
dan memilih Edisi> Pantas Betulkan keluar menu Eclipse untuk mewujudkan kelas VolumeAction hilang, seperti yang ditunjukkan dalam Rajah 4.
Rajah 4. Menggunakan menetapkan Pantas untuk menjana kelas yang hilang Dalam dialog Jawa Kelas Baru yang muncul, pilih jenis Lampiran memeriksa kotak untuk mewujudkan kelas dalaman VolumePlugin dan klik pada Finish. Ini akan mewujudkan VolumeAction kelas yang mewarisi dari kelas com.eteks.sweethome3d.plugin.PluginAction dan mengandungi kosong melaksanakan kaedah: kelas awam VolumeAction memanjangkan PluginAction { @ Override terbatal awam melaksanakan () { / / TODO Auto janaan kaedah puntung } }
Kaedah ini adalah salah satu yang Sweet Home 3D akan memanggil apabila pengguna akan melancarkan plug-in tindakan itu ini adalah tempat di mana anda mesti melaksanakan bagaimana untuk mengira jumlah perabot dan memaparkan: kelas awam VolumeAction memanjangkan PluginAction { @ Override terbatal awam melaksanakan () { terapung volumeInCm3 = 0; / / Kirakan jumlah isipadu kotak berisipadu terbentuk / / Setiap sekeping alih perabot di rumah untuk (PieceOfFurniture sekeping: getFurniture getHome () ()) { jika (piece. isMovable ()) { volumeInCm3 + = sekeping. getWidth () * Sekeping. GetDepth () * Sekeping getHeight ().; } } / / Paparkan hasil dalam kotak mesej (\ u00b3 adalah untuk 3 di supercript) Mesej String = Rentetan format ( "Isipadu maksimum perabot alih di rumah adalah% 0,2 f m \ u00b3.", volumeInCm3 / 1000000); . JOptionPane showMessageDialog (null, mesej); } }
Sekarang anda dinyatakan apa yang anda mahu plug-in untuk melakukan, anda mesti menerangkan bagaimana pengguna akan melancarkan tindakan baru ini. Anda mempunyai pilihan antara menambah item menu baru ke menu, dan / atau butang baru ke bar alat. Pilihan ini dilakukan dengan menetapkan sifat-sifat yang sesuai plug-in tindakan pada penciptaan. Sebagai contoh, jika anda mahu pengguna untuk melancarkan tindakan kelantangan dengan Kiraan jumlah menu item yang terdapat dalam menu Alat, anda akan menambah pembina berikut kelas VolumnAction: VolumeAction awam () { putPropertyValue (Property.NAME, "Kiraan jumlah"); putPropertyValue (Property.MENU, "Tools"); / / Membolehkan tindakan oleh lalai setEnabled (benar); }
plug-dalam kelas kini diprogramkan, dan hampir bersedia untuk bekerja sebagai plug-in dalam 3D Sweet Home. Dua perkara terakhir lakukan adalah: VolumePlugin
mewujudkan fail ApplicationPlugin.properties Penerangan, meletakkan fail bersama-sama dalam fail JAR.
Mencipta fail plug-in description Fail ApplicationPlugin.properties menerangkan plug-in barangan nama, kelas, Sweet Home 3D dan Jawa versi minimum di bawah mana ia disokong, dan undangundang. Pilih Fail> Baru> File dari menu Gerhana, masukkan nama fail ApplicationPlugin.properties dan klik pada Selesai, seperti yang ditunjukkan dalam Rajah 5.
Rajah 5. Mencipta fail baru Kemudian masukkan Penerangan berikut dalam fail baru dan simpan ia: nama = jumlah perabot Movable class = com.eteks.test.VolumePlugin description = mengira jumlah perabot alih di rumah versi = 1.0 lesen = GNU GPL pembekal = (C) Hakcipta 2008 eTeks applicationMinimumVersion = 1.5 javaMinimumVersion = 1.5
Mewujudkan JAR plug-in Plug-in JAR mengandungi fail kelas yang dicipta daripada himpunan fail VolumePlugin.java, dan fail ApplicationPlugin.properties. Sebagai Gerhana menyusun fail Jawa sebaik sahaja anda menyimpannya, anda hanya perlu memil ih Fail> Eksport ... dari menu dan pilih Jawa> file JAR dalam dialog Eksport yang akan dipaparkan. Dalam wizard Eksport Jar yang muncul seperti yang ditunjukkan dalam rajah 6, pilih kotak projek cek dan masukkan laluan fail JAR diletakkan di Sweet Home 3D folder plug-in. Folder ini yang sesuai bergantung pada sistem anda seperti berikut:
di bawah Windows Vista / 7, folder ini adalah
di bawah Windows XP dan versi terdahulu Windows, folder ini adalah C:
C: \ Users \ user \ AppData \ Roaming \ eTeks \ Sweet Home 3D \ plugin, Documents and Settings \ user \ Permohonan Data \ eTeks \ Sweet Home 3D \ plugin,
bawah Mac OS X, ia adalah subfolder Perpustakaan / Aplikasi / eTeks / Home Sweet 3D / plugin folder pengguna anda,
Sokongan
\
bawah Linux dan Unix yang lain, ia adalah subfolder .eteks/sweethome3d plugin folder pengguna anda.
/
Rajah 6. Mengeksport ke fail JAR Ujian plug-in Plug-in anda dibangunkan akan berjalan di Sweet Home 3D, sama ada dengan Jawa Mula Web versi, pemasang versi, atau SweetHome3D-3.7.jar anda turun sebelum. Sebagai salah satu yang terbaru adalah JAR laku, anda boleh menjalankan ia dengan mengklik dua kali padanya atau dengan perintah berikut: java-jar / path / to / SweetHome3D-3.7.jar
Sebagai selagi anda menguji, anda mungkin akan lebih suka untuk menjalankan 3D Sweet Home dengan arahan ini, dapat membaca dalam konsol stack trace pengecualian yang dibuang semasa pelaksanaan anda plug-in. Setelah Sweet Home 3D dilancarkan, anda akan melihat menu baru dan kandungan yang muncul seperti yang ditunjukkan dalam rajah 7:
Rajah 7. Plug-dalam menu
Jika anda memilih item menu baru untuk contoh rumah yang dicipta dalam panduan pengguna , anda akan mendapat hasil yang berikut:
Rajah 8. Plug masuk dalam tindakan Debugging plug-in Jika anda memerlukan untuk debug anda plug-in dari Gerhana, mewujudkan konfigurasi debug dengan mengikuti langkah-langkah ini:
Pilih Main> Tatarajah Debug ... dari menu, pilih Jawa item Permohonan dalam senarai konfigurasi disediakan kotak dialog konfigurasi Debug, klik pada butang Baru di sebelah kiri atas dan masukkan nama untuk konfigurasi. Klik pada butang Cari ... di sebelah kanan kelas Utama medan teks dan klik dua kali ke atas kelas SweetHome3DBootstrap kalangan kelas yang dicadangkan.
Rajah 9. Mewujudkan konfigurasi debug
Klik pada tab Classpath, pilih VolumePlugin (lalai) sub classpath item item Entries pengguna dalam senarai Classpath dan klik pada butang Buang. Klik pada item Penyertaan Pengguna dalam senarai Classpath, klik pada balang Tambah ... butang, pilih item SweetHome3D-3.7.jar dan mengesahkan pilihan anda.
Rajah 10. Menetapkan classpath konfigurasi debug
Pilih tab Sumber, klik pada butang Tambah ..., klik dua kali pada item Projek Java dalam kotak dialog Source Tambah, pilih item VolumePlugin dalam Pemilihan Projek timbul dan mengesahkan pilihan anda.
Rajah 11. Menetapkan laluan sumber konfigurasi debug
Akhir sekali, klik pada butang Debug untuk melancarkan Sweet Home 3D dalam mod debug. Setelah program ini berjalan, buka fail VolumePlugin.java, menetapkan titik putus dalam melaksanakan kaedah dan memilih Tools> jumlah pengiraan dari menu Sweet Home 3D. Gerhana akan berhenti pada titik putus yang dipilih untuk membolehkan anda melaksanakan program langkah demi langkah dan memeriksa nilai pembolehubah.
Rajah 12. Gerhana debug perspektif Setiap kali anda mengubah suai kod sumber anda plug-in, jangan lupa untuk menjana plug-JAR sebelum melancarkan konfigurasi debug anda mencipta. Untuk mempercepatkan proses JAR eksport dalam gerhana, pergi ke langkah kedua wizard eksport JAR dan pilih pilihan Simpan perihal JAR ini dalam ruang kerja. Ini akan menambah item baru dalam projek ini dengan item menu JAR Buat kontekstual. Menggerakkan plug-in Setelah siap, anda plug-in boleh digunakan pada komputer pengguna Home Sweet lain 3D dengan hanya menyalin mereka dalam folder plug-in . Dari versi 1.6, plugin fail boleh juga dipasang dalam folder plug-in Sweet Home 3D dengan mengklik dua kali di atasnya, jika lanjutan adalah SH3P (hanya menukar lanjutan fail dari zip. Sh3p.). Ini tidak boleh bekerja di bawah Linux. Untuk berhenti menggunakan plug-in, keluarkan fail dari folder plug-in dan lancarkan semula 3D Sweet Home. Memasang / menguninstall plug-in dengan meniru dalam Sweet Home folder 3D plug-in tidak adalah sangat user-friendly. Ini mungkin akan diperbaiki Dalam versi masa depan Sweet Home 3D dengan panel khusus untuk pengurusan plug-ins.
Pergi lebih jauh
Pengaturcaraan pertama plug-in menunjukkan anda gambaran yang besar. Berikut adalah beberapa maklumat tambahan yang akan membantu anda untuk pergi lebih jauh. Sweet Home 3D API - javadoc Dokumentasi yang paling berguna untuk membangunkan baru plug-in adalah Sweet Home 3D API (Permohonan Pengaturcaraan Antaramuka), dijana dengan alat javadoc. Gunakan hanya kelas anda plug-in jika anda mahu ia menjadi menaik serasi dengan versi masa depan 3D Sweet Home. Ini akan menjadi sebahagian besarnya cukup untuk programkan sebarang plug-in yang bekerja pada data rumah didapati dalam 3D Sweet Home. Pakej yang sepadan dengan lapisan lain program termasuk dalam javadoc untuk tujuan maklumat sahaja. Jangan bergantung kepada API mereka, kerana ia masih boleh berubah pada masa depan dengan tiada jaminan keserasian menaik (anyway anda akan melihat rujukan kepada kelas dalam pakej yang disebutkan di atas). Model kelas seni bina Sweet Home 3D berdasarkan senibina MVC (Model View Controller), jadi memahami bagaimana dianjurkan lapisan Model adalah penting. Angka 13 (juga boleh didapati di format PDF ) membentangkan hampir semua kelas dan antara muka didapati dalam versi 1.5 com.eteks.sweethome3d.model pakej yang sepadan dengan lapisan ini Model.
Rajah 13. Gambarajah UML pakej com.eteks.sweethome3d.model (Klik pada kelas untuk melihat javadoc)
Kelas pusat dalam lapisan Model adalah HomeApplication kelas (10), kelas abstrak super permohonan kelas utama SweetHome3D . Contoh kelas ini memberikan akses kepada Rumah keadaan (7) sedang disunting, dan kepada UserPreferences objek (11) yang menyimpan unit panjang dalam penggunaan (12), katalog perabot (14) dan Katalog tekstur (15) dari yang pengguna memilih keping perabot (17) dan tekstur (18). A Home contoh (7) menyimpan semua objek pengguna yang diwujudkan dalam pelan rumah:
senarai objek
HomePieceOfFurniture
(13) yang melaksanakan antara muka
(16), koleksi objek Wall (9), senarai objek Bilik (5), koleksi objek DimensionLine (2), koleksi objek Label (3). PieceOfFurniture
Objek melaksanakan dipilih muka (1) serta ObserverCamera objek (4), yang menyimpan lokasi kamera dalam mod pelawat Maya. Semua maklumat luaran yang diuruskan oleh objek Model, seperti ikon dan model 3D perabot (16), atau imej satu tekstur (20) diakses melalui Kandungan antara muka (19), dilaksanakan oleh URLContent kelas dan kelas lain com.eteks.sweethome3d.tools pakej. Ini gambar rajah UML harus membantu anda memahami mana kelas boleh didapati dalam model Sweet Home 3D dan bagaimana anda boleh akses kepada mereka, tetapi anda mungkin akan melihat bahawa tiada pengeluar dan tiada mutators (atau penetap jika anda suka) dinamakan di dalamnya. Ia hanya oleh kekurangan ruang tetapi anda boleh menggunakan mereka dengan tidak ada masalah dalam plug-dalam kelas. Perhatikan juga bahawa apa-apa pengubahsuaian objek yang sedia ada model akan dimaklumkan kepada komponen yang dipaparkan sama ada dengan PropertyChangeEvent s, dengan CollectionEvent s (8) atau dengan SelectionEvent s (6), sekali gus membolehkan semua perubahan dapat dilihat dengan serta-merta pada skrin. Model 3D Sweet Home tidak benang selamat atas sebab-sebab prestasi. Semua pengubahsuaian objek kepunyaan model perlu dilakukan dalam Thread Penghantaran Acara. Plug-dalam kelas seni bina Senibina plug-dalam kelas adalah lebih mudah untuk memahami daripada satu lapisan Model. Com.eteks.sweethome3d.plugin pakej mengandungi hanya tiga kelas di kalangan yang anda sepatutnya untuk menggunakan hanya Plugin dan PluginAction kelas, seperti yang ditunjukkan dalam 14 angka (juga boleh didapati di format PDF ).
Rajah 14. Gambarajah UML pakej com.eteks.sweethome3d.plugin (Klik pada kelas untuk melihat javadoc)
A PluginManager contoh (1) dicipta pada pelancaran aplikasi dan searchs plug-in yang dipasang dalam pengguna folder plug-in . Setiap kali rumah baru diedit, ini pengurus instanciates dan mengkonfigurasi Plugin objek (3) bagi setiap plug-in ditemui pada masa pelancaran. Kemudian, ia memanggil getActions kaedah untuk mengambil semua tindakan (4) yang akan ditambah sebagai item menu dan / atau butang bar alat dalam tingkap rumah. Setiap tindakan adalah contoh PluginAction , yang kelihatan seperti Tindakan kelas, dengan melaksanakan kaedah dan diubah suai hartanah itu (2). Perhatikan bahawa Plugin kelas memberikan anda akses kepada UndoableEditSupport contoh melalui getUndoableEditSupport kaedah. Sebaik sahaja anda mengubah suai rumah atau objek (perabot, dinding ...) dalam kaedah melaksanakan satu PluginAction contoh, anda juga perlu hantar satu UndoableEdit objek sokongan edit dibuat asal dikembalikan oleh kaedah getUndoableEditSupport, sebaliknya pengguna tidak akan mampu untuk membatalkan / buat semula betul perubahan yang anda buat. Lokalisasi Jika anda bercadang untuk membangunkan plug untuk pengguna Sweet Home 3D masyarakat, cuba membatasi rentetan ia memaparkan sama ada nama dan tindakan menu atau dalam dialog anda akan mewujudkan (atau sekurangkurangnya menyediakan penyetempatan itu). Dua pengeluar yang kelas PluginAction akan membantu anda untuk menganjurkan terjemahan hartanah tindakan dengan sifat fail, dan jika anda perlu untuk menterjemahkan rentetan lain dalam anda plug-in (seperti dalam dialog yang ditunjukkan oleh diuji plug-in ) digunakan semula hartanah ini. fail dengan ResourceBundle kelas Jawa. Jika anda memilih untuk menghadkan bilangan fail hartanah, anda juga mungkin
menulis nilai sifat tindakan dan rentetan lain dalam ApplicationPlugin.properties fail Penerangan di palam anda. Jika anda mahu contoh yang menggunakan seni bina ini, muat turun Eksport ke SH3F plug-in boleh didapati di http://sweethome3d.com/plugins/ExportToSH3F1.0.sh3p , dan unzip (plug-dalam fail mengandungi juga kod sumber pada plug). Seperti yang diterangkan dalam forum Bantuan , plug-in ini mencipta fail SH3F yang mengandungi semua perabot anda diimport ke dalam katalog perabot 3D Sweet Home. Menyumbang plug-in Anda boleh hantar plug-in anda diprogramkan dalam Plug-in Sumbangan Sistem Penjejakan untuk berkongsi dengan pengguna Sweet Home 3D masyarakat. Banyak ciri-ciri boleh ditambah kepada terima kasih Sweet Home 3D plug-ins, dari pengimport kepada pengeksport, tetapi juga plug-in mampu untuk mengubah suai data rumah seperti Turun Home Plug-in yang dibangunkan oleh Michel Mbem.