{"id":11519,"date":"2025-11-05T16:28:15","date_gmt":"2025-11-05T16:28:15","guid":{"rendered":"https:\/\/test.sweethome3d.eu\/prirucka-pro-vyvojare-zasuvnych-modulu\/"},"modified":"2025-12-19T10:19:33","modified_gmt":"2025-12-19T10:19:33","slug":"prirucka-pro-vyvojare-zasuvnych-modulu","status":"publish","type":"page","link":"https:\/\/test.sweethome3d.eu\/cs\/prirucka-pro-vyvojare-zasuvnych-modulu\/","title":{"rendered":"P\u0159\u00edru\u010dka pro v\u00fdvoj\u00e1\u0159e z\u00e1suvn\u00fdch modul\u016f"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u00davod<\/h2>\n\n<p>Od verze 1.5 je mo\u017en\u00e9 p\u0159id\u00e1vat nov\u00e9 funkce do <a href=\"\/\">Sweet Home 3D<\/a> pomoc\u00ed soubor\u016f z\u00e1suvn\u00fdch modul\u016f um\u00edst\u011bn\u00fdch ve <a href=\"#deployingPlugin\">slo\u017ece z\u00e1suvn\u00fdch modul\u016f<\/a>. To umo\u017e\u0148uje program\u00e1tor\u016fm v Jav\u011b vyv\u00edjet a distribuovat nov\u00e9 funkce pro Sweet Home 3D bez \u00fapravy zdrojov\u00fdch soubor\u016f aktu\u00e1ln\u00ed verze (co\u017e je dobr\u00e9 pro zp\u011btnou kompatibilitu) a bez dod\u00e1v\u00e1n\u00ed pln\u00e9 verze programu (co\u017e je dobr\u00e9 pro velikost dod\u00e1vky).<br\/>Tento dokument popisuje <a href=\"#installingTools\" data-type=\"internal\" data-id=\"#installingTools\">n\u00e1stroje<\/a> pot\u0159ebn\u00e9 k vytvo\u0159en\u00ed z\u00e1suvn\u00fdch modul\u016f, pot\u00e9 ukazuje, jak <a href=\"#programmingPlugin\">naprogramovat z\u00e1suvn\u00fd modul<\/a>, kter\u00fd vypo\u010d\u00edt\u00e1 maxim\u00e1ln\u00ed objem pohybliv\u00e9ho n\u00e1bytku p\u0159idan\u00e9ho do domu, a nakonec uv\u00e1d\u00ed n\u011bkter\u00e9 <a href=\"#goingFurther\">dal\u0161\u00ed informace<\/a>, kter\u00e9 v\u00e1m pomohou j\u00edt d\u00e1l. <\/p>\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"installingTools\">Instalace v\u00fdvojov\u00fdch n\u00e1stroj\u016f<\/h2>\n\n<p>Zat\u00edmco Sweet Home 3D je ur\u010den pro \u0161irokou ve\u0159ejnost, v\u00fdvoj z\u00e1suvn\u00fdch modul\u016f vy\u017eaduje speci\u00e1ln\u00ed dovednosti a m\u011bli byste v\u011bd\u011bt, jak programovat v <a href=\"https:\/\/java.sun.com\" target=\"_blank\" rel=\"noopener\">Jav\u011b<\/a> s IDE<a href=\"https:\/\/ant.apache.org\/\" target=\"_blank\" rel=\"noopener\"><\/a>, ne\u017e budete pokra\u010dovat. Tato p\u0159\u00edru\u010dka ukazuje, jak vytvo\u0159it z\u00e1suvn\u00fd modul pomoc\u00ed <a href=\"https:\/\/www.eclipse.org\/\" target=\"_blank\" rel=\"noopener\">Eclipse<\/a>, ale m\u016f\u017eete pou\u017e\u00edt IDE dle vlastn\u00edho v\u00fdb\u011bru, nebo \u017e\u00e1dn\u00e9 IDE. <\/p>\n\n<h3 class=\"wp-block-heading\">St\u00e1hn\u011bte a nainstalujte Eclipse<\/h3>\n\n<p>Nejprve si st\u00e1hn\u011bte Eclipse z <a href=\"https:\/\/www.eclipse.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.eclipse.org\/<\/a>. Verze s n\u00e1zvem <em>Eclipse IDE for Java Developers<\/em> sta\u010d\u00ed k v\u00fdvoji z\u00e1suvn\u00e9ho modulu, ale m\u016f\u017eete si st\u00e1hnout libovolnou verzi pro v\u00fdvoj v Jav\u011b. <br\/>Po sta\u017een\u00ed je instalace Eclipse velmi jednoduch\u00e1: sta\u010d\u00ed rozbalit archiv, kter\u00fd z\u00edsk\u00e1te, otev\u0159\u00edt slo\u017eku eclipse a v z\u00e1vislosti na va\u0161em syst\u00e9mu spustit soubor s n\u00e1zvem  <code>eclipse.exe<\/code>  (v syst\u00e9mu Windows),  <code>eclipse.app<\/code>  (v syst\u00e9mu Mac OS X) nebo  <code>eclipse<\/code>  (v syst\u00e9mu Linux).<br\/>P\u0159i prvn\u00edm spu\u0161t\u011bn\u00ed bude Eclipse vy\u017eadovat, abyste si vybrali slo\u017eku <em>pracovn\u00edho prostoru<\/em>, kde budou ulo\u017eeny projekty z\u00e1suvn\u00fdch modul\u016f.<br\/>Jakmile to ud\u011bl\u00e1te, vyberte z nab\u00eddky <em>Soubor &gt; Nov\u00fd &gt; Projekt<\/em> pro vytvo\u0159en\u00ed nov\u00e9ho projektu, vyberte <em>Java &gt; Java project<\/em> v pr\u016fvodci <em>Nov\u00fd projekt<\/em>, kter\u00fd se zobraz\u00ed, zadejte VolumePlugin jako n\u00e1zev projektu a klikn\u011bte na tla\u010d\u00edtko <em>Dokon\u010dit<\/em>. Nakonec zav\u0159ete kartu <em>V\u00edtejte<\/em> a objevte sv\u016fj pracovn\u00ed prostor, jak je zn\u00e1zorn\u011bno na obr\u00e1zku 1. <\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"388\" height=\"315\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipse.png\" alt=\"\" class=\"wp-image-5845 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipse.png 388w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipse-300x244.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipse-111x90.png 111w\" data-sizes=\"(max-width: 388px) 100vw, 388px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 388px; --smush-placeholder-aspect-ratio: 388\/315;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 1. Pracovn\u00ed prostor Eclipse <\/figcaption><\/figure>\n<\/div>\n\n<h3 class=\"wp-block-heading\">St\u00e1hn\u011bte a nainstalujte knihovnu Sweet Home 3D<\/h3>\n\n<p>V\u00fdvoj z\u00e1suvn\u00e9ho modulu je zalo\u017een na n\u011bkter\u00fdch t\u0159\u00edd\u00e1ch Sweet Home 3D, kter\u00e9 Eclipse mus\u00ed zn\u00e1t, aby mohl sestavit v\u00e1\u0161 projekt. Nejjednodu\u0161\u0161\u00ed zp\u016fsob, jak p\u0159idat t\u0159\u00eddy Sweet Home 3D do Eclipse, je st\u00e1hnout spustitelnou verzi JAR Sweet Home 3D, kter\u00e1 je k dispozici na <a href=\"https:\/\/sourceforge.net\/projects\/sweethome3d\/files\/SweetHome3D\/SweetHome3D-7.5\/SweetHome3D-7.5.jar\/download\" target=\"_blank\" rel=\"noopener\">https:\/\/sourceforge.net\/projects\/sweethome3d\/files\/SweetHome3D\/SweetHome3D-7.5\/SweetHome3D-7.5.jar\/download<\/a>. Po sta\u017een\u00ed p\u0159et\u00e1hn\u011bte soubor SweetHome3D-7.5.jar na ikonu projektu <em>VolumePlugin<\/em> v zobrazen\u00ed <em>Package Explorer<\/em> v Eclipse a vyberte polo\u017eku <em>Build Path &gt; Add to Build Path<\/em> v kontextov\u00e9 nab\u00eddce souboru SweetHome3D-7.5.jar, jak je zn\u00e1zorn\u011bno na obr\u00e1zku 2.  <\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"452\" height=\"157\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/addToBuildPath.png\" alt=\"\" class=\"wp-image-5846 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/addToBuildPath.png 452w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/addToBuildPath-300x104.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/addToBuildPath-259x90.png 259w\" data-sizes=\"(max-width: 452px) 100vw, 452px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 452px; --smush-placeholder-aspect-ratio: 452\/157;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 2. P\u0159id\u00e1n\u00ed SweetHome3D-7.5.jar<br\/> do Build Path <\/figcaption><\/figure>\n<\/div>\n\n<h2 class=\"wp-block-heading programmingPlugin\">Programov\u00e1n\u00ed z\u00e1suvn\u00e9ho modulu<\/h2>\n\n<p>Nyn\u00ed, kdy\u017e jste nainstalovali po\u017eadovan\u00e9 n\u00e1stroje, se pod\u00edvejme, jak m\u016f\u017eete naprogramovat sv\u016fj prvn\u00ed z\u00e1suvn\u00fd modul pro Sweet Home 3D.<\/p>\n\n<h3 class=\"wp-block-heading\">Vytvo\u0159en\u00ed t\u0159\u00eddy z\u00e1suvn\u00e9ho modulu<\/h3>\n\n<p>Nejprve vytvo\u0159te novou podt\u0159\u00eddu com.eteks.sweethome3d.plugin.Plugin v\u00fdb\u011brem polo\u017eky nab\u00eddky <em>Soubor &gt; Nov\u00fd &gt; T\u0159\u00edda<\/em> v Eclipse.<\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"418\" height=\"509\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newJavaClass.png\" alt=\"\" class=\"wp-image-5847 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newJavaClass.png 418w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newJavaClass-246x300.png 246w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newJavaClass-74x90.png 74w\" data-sizes=\"(max-width: 418px) 100vw, 418px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 418px; --smush-placeholder-aspect-ratio: 418\/509;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 3. Vytvo\u0159en\u00ed nov\u00e9 t\u0159\u00eddy <\/figcaption><\/figure>\n<\/div>\n\n<p>V dialogov\u00e9m okn\u011b <em>Nov\u00e1 t\u0159\u00edda Java<\/em> zadejte VolumePlugin jako n\u00e1zev t\u0159\u00eddy, zadejte bal\u00ed\u010dek (zde byl zvolen bal\u00ed\u010dek com.eteks.test) a vyberte com.eteks.sweethome3d.plugin.Plugin jako nadt\u0159\u00eddu VolumePlugin. Jakmile to ud\u011bl\u00e1te, klikn\u011bte na <em>Dokon\u010dit<\/em>. Eclipse vytvo\u0159\u00ed soubor nov\u00e9 t\u0159\u00eddy s n\u00e1sleduj\u00edc\u00edm obsahem:  <\/p>\n\n<pre class=\"wp-block-preformatted\">package com.eteks.test;<br\/>import com.eteks.sweethome3d.plugin.Plugin;<br\/>import com.eteks.sweethome3d.plugin.PluginAction;<br\/>public class <strong>VolumePlugin<\/strong> extends <strong>Plugin<\/strong> {<br\/> @Override<br\/> public PluginAction[] <strong>getActions<\/strong>() {<br\/> \/\/ TODO Auto-generated method stub<br\/> return null;<br\/> }<br\/>}<\/pre>\n\n<p>Jak m\u016f\u017eete odvodit z koment\u00e1\u0159e TODO, mus\u00edte nyn\u00ed zm\u011bnit implementaci metody getActions, aby vracela akci z\u00e1suvn\u00e9ho modulu, kter\u00e1 je schopna vypo\u010d\u00edtat objem pohybliv\u00e9ho n\u00e1bytku. Nahra\u010fte return null; n\u00e1sleduj\u00edc\u00edm p\u0159\u00edkazem: <\/p>\n\n<pre class=\"wp-block-preformatted\">  return new <strong>PluginAction<\/strong> [] {new <strong>VolumeAction<\/strong>()};  <\/pre>\n\n<p>a vyberte <em>\u00dapravy &gt; Rychl\u00e1 oprava<\/em> z nab\u00eddky Eclipse pro vytvo\u0159en\u00ed chyb\u011bj\u00edc\u00ed t\u0159\u00eddy VolumeAction, jak je zn\u00e1zorn\u011bno na obr\u00e1zku 4.<\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"615\" height=\"117\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/quickFix.png\" alt=\"\" class=\"wp-image-5848 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/quickFix.png 615w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/quickFix-300x57.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/quickFix-473x90.png 473w\" data-sizes=\"(max-width: 615px) 100vw, 615px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 615px; --smush-placeholder-aspect-ratio: 615\/117;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 4. Pou\u017eit\u00ed rychl\u00e9 opravy ke generov\u00e1n\u00ed chyb\u011bj\u00edc\u00ed t\u0159\u00eddy <\/figcaption><\/figure>\n<\/div>\n\n<p>V dialogov\u00e9m okn\u011b <em>Nov\u00e1 t\u0159\u00edda Java<\/em>, kter\u00e9 se zobraz\u00ed, za\u0161krtn\u011bte pol\u00ed\u010dko <em>Uzav\u00edraj\u00edc\u00ed typ<\/em> pro vytvo\u0159en\u00ed vnit\u0159n\u00ed t\u0159\u00eddy VolumePlugin a klikn\u011bte na <em>Dokon\u010dit<\/em>. T\u00edm se vytvo\u0159\u00ed t\u0159\u00edda VolumeAction, kter\u00e1 d\u011bd\u00ed z t\u0159\u00eddy com.eteks.sweethome3d.plugin.PluginAction a obsahuje pr\u00e1zdnou metodu execute: <\/p>\n\n<pre class=\"wp-block-preformatted\">  public class <strong>VolumeAction<\/strong> extends <strong>PluginAction<\/strong> {<br\/> @Override<br\/> public void <strong>execute<\/strong>() {<br\/> \/\/ TODO Auto-generated method stub<br\/> }<br\/> }<\/pre>\n\n<p>Tato metoda je ta, kterou Sweet Home 3D zavol\u00e1, kdy\u017e u\u017eivatel spust\u00ed akci z\u00e1suvn\u00e9ho modulu; proto je to m\u00edsto, kde mus\u00edte implementovat, jak vypo\u010d\u00edtat objem n\u00e1bytku a zobrazit jej:<\/p>\n\n<pre class=\"wp-block-preformatted\">  public class <strong>VolumeAction<\/strong> extends <strong>PluginAction<\/strong> {  <br\/>  @Override<br\/>  public void <strong>execute<\/strong>() { <br\/>  float volumeInCm3 = 0;<br\/> \/\/ Compute the sum of the volume of the bounding box of <br\/> \/\/ each movable piece of furniture in home<br\/> for (PieceOfFurniture piece : <strong>getHome<\/strong>(). <g id=\"gid_1\">getFurniture<\/g>()) {<br\/> if (piece. <g id=\"gid_2\">isMovable<\/g>()) {<br\/> volumeInCm3 += piece. <strong>getWidth<\/strong>() <br\/> * piece. <strong>getDepth<\/strong>() <br\/> * piece. <strong>getHeight<\/strong>();<br\/>  }<br\/> }<br\/>            <br\/> \/\/ Display the result in a message box (\u00b3 is for 3 in supercript)<br\/> String message = String. <strong>format<\/strong>(<br\/> \"The maximum volume of the movable furniture in home is %.2f m\u00b3.\", <br\/> volumeInCm3 \/ 1000000);<br\/> JOptionPane. <strong>showMessageDialog<\/strong>(null, message);<br\/>  }<br\/>  }<\/pre>\n\n<p>Nyn\u00ed, kdy\u017e jste ur\u010dili, co m\u00e1 z\u00e1suvn\u00fd modul d\u011blat, mus\u00edte popsat, jak u\u017eivatel spust\u00ed tuto novou akci. M\u00e1te na v\u00fdb\u011br mezi p\u0159id\u00e1n\u00edm nov\u00e9 <strong>polo\u017eky nab\u00eddky<\/strong> do nab\u00eddky a\/nebo nov\u00e9ho <strong>tla\u010d\u00edtka<\/strong> na panel n\u00e1stroj\u016f. Tato volba se prov\u00e1d\u00ed nastaven\u00edm p\u0159\u00edslu\u0161n\u00fdch vlastnost\u00ed akce z\u00e1suvn\u00e9ho modulu p\u0159i jeho vytvo\u0159en\u00ed. Nap\u0159\u00edklad, pokud chcete, aby u\u017eivatel\u00e9 spou\u0161t\u011bli akci objemu pomoc\u00ed polo\u017eky nab\u00eddky <em>Vypo\u010d\u00edtat objem<\/em>, kter\u00e1 se nach\u00e1z\u00ed v nab\u00eddce <em>N\u00e1stroje<\/em>, p\u0159id\u00e1te n\u00e1sleduj\u00edc\u00ed konstruktor do t\u0159\u00eddy VolumnAction:   <\/p>\n\n<pre class=\"wp-block-preformatted\">  public <strong>VolumeAction<\/strong>() {<br\/>           <strong>putPropertyValue<\/strong>(Property.NAME, \"Compute volume\");<br\/>           <strong>putPropertyValue<\/strong>(Property.MENU, \"Tools\");<br\/> \/\/ Enables the action by default<br\/>           <strong>setEnabled<\/strong>(true);<br\/> }<\/pre>\n\n<p>T\u0159\u00edda z\u00e1suvn\u00e9ho modulu <a href=\"\/examples\/VolumePlugin\/VolumePlugin.java\">VolumePlugin<\/a> je nyn\u00ed naprogramov\u00e1na a t\u00e9m\u011b\u0159 p\u0159ipravena k pr\u00e1ci jako z\u00e1suvn\u00fd modul v Sweet Home 3D. Posledn\u00ed dv\u011b v\u011bci, kter\u00e9 je t\u0159eba ud\u011blat, jsou: <\/p>\n\n<ul class=\"wp-block-list pl-14\">\n<li>vytvo\u0159en\u00ed popisn\u00e9ho souboru <tt>ApplicationPlugin.properties<\/tt>,<\/li>\n\n\n\n<li>um\u00edst\u011bn\u00ed soubor\u016f dohromady do souboru JAR.<br\/><\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"creating-the-plugin-description-file\">Vytvo\u0159en\u00ed popisn\u00e9ho souboru z\u00e1suvn\u00e9ho modulu<\/h3>\n\n<p>Soubor <tt>ApplicationPlugin.properties<\/tt>\n popisuje n\u00e1zev z\u00e1suvn\u00e9ho modulu, jeho t\u0159\u00eddu, minim\u00e1ln\u00ed verze Sweet Home 3D a Java, pod kter\u00fdmi je podporov\u00e1n,\n a pr\u00e1vn\u00ed z\u00e1le\u017eitosti. Vyberte <i>Soubor &gt; Nov\u00fd &gt; Soubor<\/i> z\n nab\u00eddky Eclipse, zadejte n\u00e1zev souboru <tt>ApplicationPlugin.properties<\/tt> a klikn\u011bte na <i>Dokon\u010dit<\/i>, jak je zn\u00e1zorn\u011bno\n na obr\u00e1zku 5. <\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" width=\"264\" height=\"384\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newFile.png\" alt=\"\" class=\"wp-image-5849 lazyload\" style=\"--smush-placeholder-width: 264px; --smush-placeholder-aspect-ratio: 264\/384;width:264px;height:auto\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newFile.png 264w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newFile-206x300.png 206w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/newFile-62x90.png 62w\" data-sizes=\"(max-width: 264px) 100vw, 264px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 5. Vytvo\u0159en\u00ed nov\u00e9ho souboru <\/figcaption><\/figure>\n<\/div>\n\n<p>Pot\u00e9 zadejte <a href=\"\/examples\/VolumePlugin\/ApplicationPlugin.properties\">n\u00e1sleduj\u00edc\u00ed popis<\/a> do nov\u00e9ho souboru a ulo\u017ete jej:<\/p>\n\n<pre class=\"wp-block-preformatted\"><strong>name<\/strong>=Objem pohybliv\u00e9ho n\u00e1bytku<br\/><strong>class<\/strong>=com.eteks.test.VolumePlugin<br\/><strong>description<\/strong>=Vypo\u010d\u00edt\u00e1 objem pohybliv\u00e9ho n\u00e1bytku v dom\u011b<br\/><strong>version<\/strong>=1.0<br\/><strong>license<\/strong>=GNU GPL<br\/><strong>provider<\/strong>=(C) Copyrights 2024 Space Mushrooms<br\/><strong>applicationMinimumVersion<\/strong>=1.5<br\/><strong>javaMinimumVersion<\/strong>=1.5<\/pre>\n\n<h3 class=\"wp-block-heading\" id=\"creatingPluginJAR\">Vytvo\u0159en\u00ed souboru JAR z\u00e1suvn\u00e9ho modulu<\/h3>\n\n<p>Soubor JAR z\u00e1suvn\u00e9ho modulu obsahuje soubory <tt>t\u0159\u00edd<\/tt> vytvo\u0159en\u00e9 z kompilace souboru <tt>VolumePlugin.java<\/tt>,\n a soubor <tt>ApplicationPlugin.properties<\/tt>. Proto\u017ee Eclipse kompiluje soubor Java, jakmile jej ulo\u017e\u00edte, sta\u010d\u00ed vybrat <i>Soubor &gt; Exportovat&#8230;<\/i> z nab\u00eddky a vybrat <i>Java &gt; Soubor JAR<\/i> v dialogov\u00e9m okn\u011b <i>Exportovat<\/i>\n, kter\u00e9 se zobraz\u00ed. V pr\u016fvodci <g id=\"gid_11\">Export JAR<\/g>, kter\u00fd se zobraz\u00ed, jak je zn\u00e1zorn\u011bno na obr\u00e1zku 6, za\u0161krtn\u011bte pol\u00ed\u010dko projektu<x id=\"gid_12\"><\/x> a zadejte cestu k souboru JAR um\u00edst\u011bn\u00e9mu ve slo\u017ece z\u00e1suvn\u00fdch modul\u016f Sweet Home 3D. Tato p\u0159\u00edslu\u0161n\u00e1 slo\u017eka z\u00e1vis\u00ed\n na va\u0161em syst\u00e9mu takto:   <\/p>\n\n<ul class=\"wp-block-list pl-14\">\n<li> v syst\u00e9mech Windows Vista \/ 7 \/ 8 \/ 10 \/ 11 je tato slo\u017eka <tt>C:\\Users\\<i>u\u017eivatel<\/i>\\AppData\\Roaming\\eTeks\\Sweet\n Home 3D\\plugins<\/tt>,<\/li>\n\n\n\n<li> v syst\u00e9mech Windows XP a star\u0161\u00edch verz\u00edch Windows je tato slo\u017eka <tt>C:\\Documents and Settings\\<i>u\u017eivatel<\/i>\\Application Data\\eTeks\\Sweet\n Home 3D\\plugins<\/tt>,<\/li>\n\n\n\n<li> v syst\u00e9mu macOS je to podslo\u017eka <tt>Library\/Application Support\/eTeks\/Sweet Home 3D\/<\/tt><tt>plugins<\/tt> va\u0161\u00ed\n u\u017eivatelsk\u00e9 slo\u017eky,<\/li>\n\n\n\n<li> v syst\u00e9mech Linux a jin\u00fdch Unixech je to podslo\u017eka <tt>.eteks\/sweethome3d\/<\/tt><tt>plugins<\/tt> va\u0161\u00ed u\u017eivatelsk\u00e9 slo\u017eky.<\/li>\n<\/ul>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"499\" height=\"440\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/jarExport.png\" alt=\"\" class=\"wp-image-5850 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/jarExport.png 499w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/jarExport-300x265.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/jarExport-102x90.png 102w\" data-sizes=\"(max-width: 499px) 100vw, 499px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 499px; --smush-placeholder-aspect-ratio: 499\/440;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 6. Export do souboru JAR <\/figcaption><\/figure>\n<\/div>\n\n<h3 class=\"wp-block-heading\" id=\"testing-the-plugin\">Testov\u00e1n\u00ed z\u00e1suvn\u00e9ho modulu<\/h3>\n\n<p><a href=\"\/examples\/VolumePlugin\/VolumePlugin.jar\">Z\u00e1suvn\u00fd modul<\/a>, kter\u00fd jste vyvinuli, bude spu\u0161t\u011bn v Sweet Home 3D, bu\u010f s verz\u00ed <a href=\"\/storage\/SweetHome3D.jnlp\">Java Web Start<\/a>, verz\u00ed <a href=\"https:\/\/downloads.sourceforge.net\/sweethome3d\/\" target=\"_blank\" rel=\"noopener\">instala\u010dn\u00edch program\u016f<\/a>, nebo <a href=\"https:\/\/sourceforge.net\/projects\/sweethome3d\/files\/SweetHome3D\/SweetHome3D-7.5\/SweetHome3D-7.5.jar\/download\" target=\"_blank\" rel=\"noopener\">SweetHome3D-7.5.jar<\/a>, kterou jste si d\u0159\u00edve st\u00e1hli. Proto\u017ee nejnov\u011bj\u0161\u00ed je spustiteln\u00fd soubor JAR, m\u016f\u017eete jej spustit dvojit\u00fdm kliknut\u00edm na n\u011bj nebo pomoc\u00ed n\u00e1sleduj\u00edc\u00edho p\u0159\u00edkazu: <\/p>\n\n<p><a href=\"\/examples\/VolumePlugin\/VolumePlugin.jar\">Z\u00e1suvn\u00fd modul<\/a>, kter\u00fd jste vyvinuli, bude spu\u0161t\u011bn v Sweet Home 3D, bu\u010f s verz\u00ed <a href=\"\/storage\/SweetHome3D.jnlp\">Java Web Start<\/a>, verz\u00ed <a href=\"https:\/\/downloads.sourceforge.net\/sweethome3d\/\" target=\"_blank\" rel=\"noopener\">instala\u010dn\u00edch program\u016f<\/a>, nebo <a href=\"https:\/\/sourceforge.net\/projects\/sweethome3d\/files\/SweetHome3D\/SweetHome3D-7.5\/SweetHome3D-7.5.jar\/download\" target=\"_blank\" rel=\"noopener\">SweetHome3D-7.5.jar<\/a>, kterou jste si d\u0159\u00edve st\u00e1hli. Proto\u017ee nejnov\u011bj\u0161\u00ed je spustiteln\u00fd soubor JAR, m\u016f\u017eete jej spustit dvojit\u00fdm kliknut\u00edm na n\u011bj nebo pomoc\u00ed n\u00e1sleduj\u00edc\u00edho p\u0159\u00edkazu: <\/p>\n\n<pre class=\"wp-block-preformatted\">java -jar \/<em>cesta<\/em>\/<em>k<\/em>\/SweetHome3D-7.5.jar<\/pre>\n\n<p>Dokud testujete, pravd\u011bpodobn\u011b budete preferovat spou\u0161t\u011bn\u00ed Sweet Home 3D pomoc\u00ed tohoto p\u0159\u00edkazu, abyste si mohli v konzoli p\u0159e\u010d\u00edst trasov\u00e1n\u00ed z\u00e1sobn\u00edku v\u00fdjimek vyvolan\u00fdch b\u011bhem prov\u00e1d\u011bn\u00ed va\u0161eho z\u00e1suvn\u00e9ho modulu.<\/p>\n\n<p>Jakmile je Sweet Home 3D spu\u0161t\u011bn, uvid\u00edte novou nab\u00eddku a jej\u00ed polo\u017eku, jak je zn\u00e1zorn\u011bno na obr\u00e1zku 7:<\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"447\" height=\"53\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginMenu.png\" alt=\"\" class=\"wp-image-5851 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginMenu.png 447w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginMenu-300x36.png 300w\" data-sizes=\"(max-width: 447px) 100vw, 447px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 447px; --smush-placeholder-aspect-ratio: 447\/53;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 7. Nab\u00eddka z\u00e1suvn\u00e9ho modulu <\/figcaption><\/figure>\n<\/div>\n\n<p>Pokud zvol\u00edte novou polo\u017eku nab\u00eddky pro <a href=\"\/examples\/userGuideExample.sh3d\">dom\u00e1c\u00ed p\u0159\u00edklad<\/a> vytvo\u0159en\u00fd v <a href=\"https:\/\/test.sweethome3d.eu\/cs\/uzivatelska-prirucka-aplikace-sweet-home-3d\/\" data-type=\"page\" data-id=\"424\">u\u017eivatelsk\u00e9 p\u0159\u00edru\u010dce<\/a>, z\u00edsk\u00e1te n\u00e1sleduj\u00edc\u00ed v\u00fdsledek:<\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"448\" height=\"137\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginInAction.png\" alt=\"\" class=\"wp-image-5853 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginInAction.png 448w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginInAction-300x92.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginInAction-294x90.png 294w\" data-sizes=\"(max-width: 448px) 100vw, 448px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 448px; --smush-placeholder-aspect-ratio: 448\/137;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 8. Z\u00e1suvn\u00fd modul v akci <\/figcaption><\/figure>\n<\/div>\n\n<h3 class=\"wp-block-heading\">Lad\u011bn\u00ed z\u00e1suvn\u00e9ho modulu<\/h3>\n\n<p>Pokud pot\u0159ebujete ladit sv\u016fj z\u00e1suvn\u00fd modul z Eclipse, vytvo\u0159te konfiguraci lad\u011bn\u00ed pomoc\u00ed n\u00e1sleduj\u00edc\u00edch krok\u016f:<\/p>\n\n<ul class=\"wp-block-list pl-14\">\n<li>Z nab\u00eddky vyberte <i>Spustit &gt; Konfigurace lad\u011bn\u00ed&#8230;<\/i>, vyberte polo\u017eku <i>Aplikace Java<\/i> v seznamu dostupn\u00fdch konfigurac\u00ed v \n          dialogov\u00e9m okn\u011b <i>Konfigurace lad\u011bn\u00ed<\/i>, klikn\u011bte na tla\u010d\u00edtko <i>Nov\u00fd<\/i> v lev\u00e9m horn\u00edm rohu a zadejte n\u00e1zev konfigurace.<\/li>\n\n\n\n<li>Klikn\u011bte na tla\u010d\u00edtko <i>Hledat&#8230;<\/i> vpravo od textov\u00e9ho pole <i>Hlavn\u00ed t\u0159\u00edda<\/i> a dvakr\u00e1t klikn\u011bte na t\u0159\u00eddu <i>SweetHome3DBootstrap<\/i> <br\/> mezi navrhovan\u00fdmi t\u0159\u00eddami.<\/li>\n<\/ul>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"629\" height=\"390\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/debugConfiguration.png\" alt=\"\" class=\"wp-image-5854 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/debugConfiguration.png 629w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/debugConfiguration-300x186.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/debugConfiguration-145x90.png 145w\" data-sizes=\"(max-width: 629px) 100vw, 629px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 629px; --smush-placeholder-aspect-ratio: 629\/390;\" \/><figcaption class=\"wp-element-caption\"><em>Obr\u00e1zek 9. Vytvo\u0159en\u00ed konfigurace lad\u011bn\u00ed <\/em><\/figcaption><\/figure>\n<\/div>\n\n<ul class=\"wp-block-list pl-14\">\n<li>Klikn\u011bte na kartu <em>Classpath<\/em>, vyberte d\u00edl\u010d\u00ed polo\u017eku <em>VolumePlugin (v\u00fdchoz\u00ed classpath)<\/em> polo\u017eky <em>Polo\u017eky u\u017eivatele<\/em> v seznamu <em>Classpath<\/em> a klikn\u011bte na tla\u010d\u00edtko <em>Odebrat<\/em>.<\/li>\n\n\n\n<li>Klikn\u011bte na polo\u017eku<em> Polo\u017eky u\u017eivatele<\/em> v seznamu <em>Classpath<\/em>, klikn\u011bte na tla\u010d\u00edtko <em>P\u0159idat JAR&#8230;<\/em>, vyberte polo\u017eku SweetHome3D-7.5.jar a potvr\u010fte svou volbu.<\/li>\n<\/ul>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"618\" height=\"482\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/classpathConfiguration.png\" alt=\"\" class=\"wp-image-5855 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/classpathConfiguration.png 618w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/classpathConfiguration-300x234.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/classpathConfiguration-115x90.png 115w\" data-sizes=\"(max-width: 618px) 100vw, 618px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 618px; --smush-placeholder-aspect-ratio: 618\/482;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 10. Nastaven\u00ed classpath konfigurace lad\u011bn\u00ed <\/figcaption><\/figure>\n<\/div>\n\n<ul class=\"wp-block-list pl-14\">\n<li>Vyberte kartu <em>Zdroj<\/em>, klikn\u011bte na tla\u010d\u00edtko <em>P\u0159idat\u2026<\/em>, dvakr\u00e1t klikn\u011bte na polo\u017eku <em>Projekt Java<\/em> v dialogov\u00e9m okn\u011b <em>P\u0159idat zdroj<\/em>, vyberte polo\u017eku <em>VolumePlugin<\/em> ve vyskakovac\u00edm okn\u011b <em>V\u00fdb\u011br projektu<\/em> a potvr\u010fte svou volbu.<\/li>\n<\/ul>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"773\" height=\"549\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/sourcepathConfiguration.png\" alt=\"\" class=\"wp-image-5856 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/sourcepathConfiguration.png 773w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/sourcepathConfiguration-300x213.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/sourcepathConfiguration-127x90.png 127w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/sourcepathConfiguration-768x545.png 768w\" data-sizes=\"(max-width: 773px) 100vw, 773px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 773px; --smush-placeholder-aspect-ratio: 773\/549;\" \/><figcaption class=\"wp-element-caption\"><em><em><em>Obr\u00e1zek 11. Nastaven\u00ed cesty ke zdroji konfigurace lad\u011bn\u00ed <\/em><\/em><\/em><\/figcaption><\/figure>\n<\/div>\n\n<ul class=\"wp-block-list pl-14\">\n<li>Nakonec klikn\u011bte na tla\u010d\u00edtko <i>Ladit<\/i> pro spu\u0161t\u011bn\u00ed Sweet Home 3D v re\u017eimu lad\u011bn\u00ed. Jakmile je program spu\u0161t\u011bn, otev\u0159ete soubor <tt>VolumePlugin.java<\/tt>, \n nastavte bod p\u0159eru\u0161en\u00ed v metod\u011b <i>execute<\/i> a vyberte <i>N\u00e1stroje &gt; Vypo\u010d\u00edtat objem<\/i> z nab\u00eddky Sweet Home 3D. Eclipse se zastav\u00ed na vybran\u00e9m \n bodu p\u0159eru\u0161en\u00ed, abyste mohli program spou\u0161t\u011bt krok za krokem a kontrolovat hodnotu prom\u011bnn\u00fdch.  <\/li>\n<\/ul>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"601\" height=\"398\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipseDebug.png\" alt=\"\" class=\"wp-image-5857 lazyload\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipseDebug.png 601w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipseDebug-300x199.png 300w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/eclipseDebug-136x90.png 136w\" data-sizes=\"(max-width: 601px) 100vw, 601px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 601px; --smush-placeholder-aspect-ratio: 601\/398;\" \/><figcaption class=\"wp-element-caption\">Obr\u00e1zek 12. Perspektiva lad\u011bn\u00ed Eclipse <\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-64989fb1 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/09\/warning-1.gif\" alt=\"\" class=\"wp-image-4679 lazyload\" style=\"--smush-placeholder-width: 21px; --smush-placeholder-aspect-ratio: 21\/21;width:21px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/><\/figure>\n\n\n\n<p>Poka\u017ed\u00e9, kdy\u017e uprav\u00edte zdrojov\u00fd k\u00f3d sv\u00e9ho z\u00e1suvn\u00e9ho modulu, nezapome\u0148te <a href=\"#creatingPluginJAR\">vygenerovat soubor JAR z\u00e1suvn\u00e9ho modulu<\/a> p\u0159ed spu\u0161t\u011bn\u00edm konfigurace lad\u011bn\u00ed, kterou jste vytvo\u0159ili. Chcete-li urychlit proces exportu JAR v Eclipse, p\u0159ejd\u011bte na druh\u00fd krok pr\u016fvodce exportem JAR a vyberte mo\u017enost <em>Ulo\u017eit popis tohoto souboru JAR v pracovn\u00edm prostoru<\/em>. T\u00edm se p\u0159id\u00e1 nov\u00e1 polo\u017eka do projektu s kontextovou polo\u017ekou nab\u00eddky <em>Vytvo\u0159it JAR<\/em>.  <\/p>\n<\/div>\n\n<h3 class=\"wp-block-heading\" id=\"deployingPlugin\">Nasazen\u00ed z\u00e1suvn\u00e9ho modulu<\/h3>\n\n<p>Jakmile je v\u00e1\u0161 z\u00e1suvn\u00fd modul p\u0159ipraven, m\u016f\u017ee b\u00fdt nasazen na po\u010d\u00edta\u010di jin\u00fdch u\u017eivatel\u016f Sweet Home 3D jednodu\u0161e zkop\u00edrov\u00e1n\u00edm do jejich <a href=\"#creatingPluginJAR\">slo\u017eky z\u00e1suvn\u00fdch modul\u016f<\/a>. Od verze 1.6 lze soubor z\u00e1suvn\u00e9ho modulu tak\u00e9 nainstalovat do slo\u017eky z\u00e1suvn\u00fdch modul\u016f Sweet Home 3D dvojit\u00fdm kliknut\u00edm na n\u011bj, pokud m\u00e1 p\u0159\u00edponu SH3P (jednodu\u0161e zm\u011b\u0148te p\u0159\u00edponu souboru z .zip na .sh3p). Pokud dvojit\u00e9 kliknut\u00ed na soubor .sh3p nespust\u00ed Sweet Home 3D (nej\u010dast\u011bji v syst\u00e9mu Linux), m\u016f\u017eete tak\u00e9 nainstalovat z\u00e1suvn\u00fd modul pomoc\u00ed n\u00e1sleduj\u00edc\u00edho p\u0159\u00edkazu v okn\u011b <em>Termin\u00e1lu<\/em> (kde <code>SweetHome3D<\/code> je n\u00e1zev spustiteln\u00e9ho souboru dod\u00e1van\u00e9ho s instala\u010dn\u00edmi programy Sweet Home 3D):<\/p>\n\n<pre class=\"wp-block-preformatted\"><em>\/cesta\/k\/<\/em>SweetHome3D <em>\/cesta\/k\/<\/em>plugin.sh3p<\/pre>\n\n<p>Chcete-li p\u0159estat pou\u017e\u00edvat z\u00e1suvn\u00fd modul, odeberte jeho soubor ze slo\u017eky z\u00e1suvn\u00fdch modul\u016f a znovu spus\u0165te Sweet Home 3D.<\/p>\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-64989fb1 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/09\/warning-1.gif\" alt=\"\" class=\"wp-image-4679 lazyload\" style=\"--smush-placeholder-width: 21px; --smush-placeholder-aspect-ratio: 21\/21;width:21px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/><\/figure>\n\n\n\n<p>Pokud chcete, aby byl v\u00e1\u0161 z\u00e1suvn\u00fd modul schopen spou\u0161t\u011bt se v\u0161emi <a href=\"https:\/\/test.sweethome3d.eu\/cs\/ke-stazeni\/\">instala\u010dn\u00edmi programy Sweet Home 3D<\/a> dostupn\u00fdmi na tomto webu, dbejte na to, aby byl kompatibiln\u00ed s Java 5, v\u00fdb\u011brem <code>1.5<\/code> v poli <em>\u00darove\u0148 kompatibility kompil\u00e1toru<\/em>, kter\u00e9 je k dispozici v sekci <em>Kompil\u00e1tor Java<\/em> dialogov\u00e9ho okna zobrazen\u00e9ho polo\u017ekou nab\u00eddky <em>Projekt &gt; Vlastnosti<\/em> v Eclipse.<br\/>Pokud pou\u017e\u00edv\u00e1te verzi kompil\u00e1toru Java, kde ji\u017e nen\u00ed k dispozici kompatibilita s Java 1.5, zkuste c\u00edlit alespo\u0148 na Java 1.8, kter\u00e1 se st\u00e1le pou\u017e\u00edv\u00e1 v nejnov\u011bj\u0161\u00edch verz\u00edch Sweet Home 3D, a nastavte <code>javaMinimumVersion<\/code> v souboru <code>ApplicationPlugin.properties<\/code> va\u0161eho z\u00e1suvn\u00e9ho modulu odpov\u00eddaj\u00edc\u00edm zp\u016fsobem.<\/p>\n<\/div>\n\n<h2 class=\"wp-block-heading\" id=\"goingFurther\">J\u00edt d\u00e1l<\/h2>\n\n<p>Programov\u00e1n\u00ed prvn\u00edho z\u00e1suvn\u00e9ho modulu v\u00e1m uk\u00e1zalo celkov\u00fd obraz. Zde jsou n\u011bkter\u00e9 dal\u0161\u00ed informace, kter\u00e9 v\u00e1m pomohou j\u00edt d\u00e1l. <\/p>\n\n<h3 class=\"wp-block-heading\">Sweet Home 3D API \u2013 Javadoc<\/h3>\n\n<p>Neju\u017eite\u010dn\u011bj\u0161\u00ed dokumentac\u00ed pro v\u00fdvoj nov\u00e9ho pluginu je <a href=\"\/javadoc\/index.html\">Sweet Home 3D API<\/a> (Application Programming Interface), generovan\u00e9 n\u00e1strojem javadoc.<br\/>Pou\u017e\u00edvejte ve sv\u00e9m pluginu pouze t\u0159\u00eddy z bal\u00ed\u010dk\u016f <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/package-summary.html\">com.eteks.sweethome3d.plugin<\/a>, <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/package-summary.html\">com.eteks.sweethome3d.model<\/a>, <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/tools\/package-summary.html\">com.eteks.sweethome3d.tools<\/a> a <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/viewcontroller\/package-summary.html\">com.eteks.sweethome3d.viewcontroller<\/a>, pokud chcete, aby byl zp\u011btn\u011b kompatibiln\u00ed s budouc\u00edmi verzemi Sweet Home 3D. To bude z velk\u00e9 \u010d\u00e1sti sta\u010dit k naprogramov\u00e1n\u00ed jak\u00e9hokoli pluginu, kter\u00fd pracuje s daty o dom\u011b dostupn\u00fdmi v Sweet Home 3D.<br\/>Bal\u00ed\u010dky odpov\u00eddaj\u00edc\u00ed ostatn\u00edm vrstv\u00e1m programu jsou zahrnuty v Javadoc pouze pro informa\u010dn\u00ed \u00fa\u010dely. Nespol\u00e9hejte se na jejich API, proto\u017ee se v budoucnu m\u016f\u017ee zm\u011bnit bez z\u00e1ruky zp\u011btn\u00e9 kompatibility (ka\u017edop\u00e1dn\u011b neuvid\u00edte \u017e\u00e1dn\u00fd odkaz na t\u0159\u00eddu z bal\u00ed\u010dk\u016f <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/swing\/package-summary.html\">com.eteks.sweethome3d.swing<\/a>, <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/j3d\/package-summary.html\">com.eteks.sweethome3d.j3d<\/a>, <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/io\/package-summary.html\">com.eteks.sweethome3d.io<\/a> nebo <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/package-summary.html\">com.eteks.sweethome3d<\/a> ve v\u00fd\u0161e uveden\u00fdch bal\u00ed\u010dc\u00edch).  <\/p>\n\n<h3 class=\"wp-block-heading\">Architektura t\u0159\u00edd modelu<\/h3>\n\n<p>Sweet Home 3D je zalo\u017een na architektu\u0159e MVC (Model View Controller), tak\u017ee pochopen\u00ed organizace vrstvy Model je z\u00e1sadn\u00ed. Obr\u00e1zek 13 (k dispozici tak\u00e9 ve <a href=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/modelClassesDiagram.png\">form\u00e1tu PDF<\/a>) p\u0159edstavuje t\u00e9m\u011b\u0159 v\u0161echny t\u0159\u00eddy a rozhran\u00ed dostupn\u00e9 ve verzi 1.5 bal\u00ed\u010dku <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/package-summary.html\">com.eteks.sweethome3d.model<\/a>, kter\u00fd odpov\u00edd\u00e1 t\u00e9to vrstv\u011b Model. <\/p>\n\n<p>[uml_diagram slug=&#8220;model-classes-diagram&#8220; map_name=&#8220;model-classes-diagram&#8220; caption=&#8220;Figure 13. UML diagram of com.eteks.sweethome3d.model package&#8220; caption_small=&#8220;(click on a class to view its javadoc)&#8220;]<\/p>\n\n<p>Centr\u00e1ln\u00ed t\u0159\u00eddou ve vrstv\u011b Model je t\u0159\u00edda <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/HomeApplication.html\">HomeApplication<\/a> (10), abstraktn\u00ed super t\u0159\u00edda hlavn\u00ed t\u0159\u00eddy aplikace <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/SweetHome3D.html\">SweetHome3D<\/a>. Instance t\u00e9to t\u0159\u00eddy poskytuje p\u0159\u00edstup k instanc\u00edm <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/Home.html\">Home<\/a> (7), kter\u00e9 jsou aktu\u00e1ln\u011b upravov\u00e1ny, a k objektu <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/UserPreferences.html\">UserPreferences<\/a> (11), kter\u00fd ukl\u00e1d\u00e1 pou\u017e\u00edvanou <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/LengthUnit.html\">jednotku d\u00e9lky<\/a> (12), <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/FurnitureCatalog.html\">katalog n\u00e1bytku<\/a> (14) a <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/TexturesCatalog.html\">katalog textur<\/a> (15), ze kter\u00e9ho si u\u017eivatel vyb\u00edr\u00e1 <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/CatalogPieceOfFurniture.html\">kusy n\u00e1bytku<\/a> (17) a <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/CatalogTexture.html\">textury<\/a> (18).<br\/>Instance <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/Home.html\">Home<\/a> (7) ukl\u00e1d\u00e1 v\u0161echny objekty, kter\u00e9 u\u017eivatel vytvo\u0159il v pl\u00e1nu domu: <\/p>\n\n<ul class=\"wp-block-list pl-14\">\n<li>seznam objekt\u016f <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/HomePieceOfFurniture.html\">HomePieceOfFurniture<\/a> (13), kter\u00e9 implementuj\u00ed rozhran\u00ed <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/PieceOfFurniture.html\">PieceOfFurniture<\/a> (16),<\/li>\n\n\n\n<li>kolekce objekt\u016f <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/Wall.html\">Wall<\/a> (9),<\/li>\n\n\n\n<li>seznam objekt\u016f <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/Wall.html\">Room<\/a> (5),<\/li>\n\n\n\n<li>kolekce objekt\u016f <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/DimensionLine.html\">DimensionLine<\/a> (2),<\/li>\n\n\n\n<li>kolekce objekt\u016f <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/Label.html\">Label<\/a> (3).<\/li>\n<\/ul>\n\n<p>Tyto objekty implementuj\u00ed rozhran\u00ed <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/Selectable.html\">Selectable<\/a> (1) stejn\u011b jako objekt <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/ObserverCamera.html\">ObserverCamera<\/a> (4), kter\u00fd ukl\u00e1d\u00e1 um\u00edst\u011bn\u00ed kamery v re\u017eimu <em>Virtu\u00e1ln\u00ed n\u00e1v\u0161t\u011bvn\u00edk<\/em>. Ve\u0161ker\u00e9 extern\u00ed informace spravovan\u00e9 objekty Model, jako je ikona a 3D model <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/PieceOfFurniture.html\">kusu n\u00e1bytku<\/a> (16) nebo obr\u00e1zek <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/TextureImage.html\">textury<\/a> (20), jsou p\u0159\u00edstupn\u00e9 prost\u0159ednictv\u00edm rozhran\u00ed <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/Content.html\">Content<\/a> (19), implementovan\u00e9ho t\u0159\u00eddou <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/tools\/URLContent.html\">URLContent<\/a> a dal\u0161\u00edmi t\u0159\u00eddami z bal\u00ed\u010dku <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/tools\/package-summary.html\">com.eteks.sweethome3d.tools<\/a>. <\/p>\n\n<p>Tento UML diagram by v\u00e1m m\u011bl pomoci pochopit, kter\u00e9 t\u0159\u00eddy jsou dostupn\u00e9 v modelu Sweet Home 3D a jak k nim m\u016f\u017eete p\u0159istupovat, ale pravd\u011bpodobn\u011b si v\u0161imnete, \u017ee v n\u011bm nejsou uvedeny \u017e\u00e1dn\u00e9 konstruktory ani mut\u00e1tory (nebo settery, chcete-li). Je to jen z nedostatku m\u00edsta, ale m\u016f\u017eete je bez probl\u00e9m\u016f pou\u017e\u00edt ve t\u0159\u00edd\u011b pluginu. V\u0161imn\u011bte si tak\u00e9, \u017ee jak\u00e1koli \u00faprava existuj\u00edc\u00edho objektu modelu bude ozn\u00e1mena zobrazen\u00fdm komponent\u00e1m bu\u010f pomoc\u00ed <a href=\"https:\/\/java.sun.com\/j2se\/1.5.0\/docs\/api\/java\/beans\/PropertyChangeEvent.html\" target=\"_blank\" rel=\"noopener\">PropertyChangeEvent<\/a>, pomoc\u00ed <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/CollectionEvent.html\">CollectionEvent<\/a> (8) nebo pomoc\u00ed <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/model\/SelectionEvent.html\">SelectionEvent<\/a> (6), co\u017e umo\u017en\u00ed, aby se v\u0161echny zm\u011bny okam\u017eit\u011b projevily na obrazovce.  <\/p>\n\n<div class=\"wp-block-group warning-banner is-nowrap is-layout-flex wp-container-core-group-is-layout-9123dee2 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" width=\"190\" height=\"190\" data-src=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/11\/Frame-281.png\" alt=\"\" class=\"wp-image-786 lazyload\" style=\"--smush-placeholder-width: 190px; --smush-placeholder-aspect-ratio: 190\/190;width:130px\" data-srcset=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/11\/Frame-281.png 190w, https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/11\/Frame-281-90x90.png 90w\" data-sizes=\"(max-width: 190px) 100vw, 190px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer !h-auto wp-container-content-16d1eb73\"><\/div>\n\n\n\n<p>Model Sweet Home 3D <strong>nen\u00ed<\/strong> z d\u016fvod\u016f v\u00fdkonu bezpe\u010dn\u00fd pro vl\u00e1kna. V\u0161echny <strong>\u00fapravy<\/strong> objektu pat\u0159\u00edc\u00edho do modelu by m\u011bly b\u00fdt prov\u00e1d\u011bny ve vl\u00e1kn\u011b Event Dispatch Thread. <\/p>\n<\/div>\n\n<h3 class=\"wp-block-heading\">Architektura t\u0159\u00edd pluginu<\/h3>\n\n<p>Architektura t\u0159\u00edd pluginu je mnohem jednodu\u0161\u0161\u00ed na pochopen\u00ed ne\u017e architektura vrstvy Model. Bal\u00ed\u010dek <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/package-summary.html\">com.eteks.sweethome3d.plugin<\/a> obsahuje pouze t\u0159i t\u0159\u00eddy, z nich\u017e byste m\u011bli pou\u017e\u00edvat pouze t\u0159\u00eddy <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/Plugin.html\">Plugin<\/a> a <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginAction.html\">PluginAction<\/a>, jak je zn\u00e1zorn\u011bno na obr\u00e1zku 14 (k dispozici tak\u00e9 ve <a href=\"https:\/\/test.sweethome3d.eu\/wp-content\/uploads\/2025\/12\/pluginClassesDiagram.png\">form\u00e1tu PDF<\/a>). <\/p>\n\n<p>[uml_diagram slug=&#8220;plugin-classes-diagram&#8220; map_name=&#8220;plugin-classes-diagram&#8220; caption=&#8220;Figure 14. UML diagram of com.eteks.sweethome3d.plugin package&#8220; caption_small=&#8220;(click on a class to view its javadoc)&#8220;]<\/p>\n\n<p>Instance <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginManager.html\">PluginManager<\/a> (1) je vytvo\u0159ena p\u0159i spu\u0161t\u011bn\u00ed aplikace a vyhled\u00e1v\u00e1 pluginy nainstalovan\u00e9 ve <a href=\"#creating-the-plugin-jar\">slo\u017ece plugin\u016f<\/a> u\u017eivatele. Poka\u017ed\u00e9, kdy\u017e je upravov\u00e1n nov\u00fd d\u016fm, tento spr\u00e1vce vytvo\u0159\u00ed a nakonfiguruje objekt <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/Plugin.html\">Plugin<\/a> (3) pro ka\u017ed\u00fd plugin nalezen\u00fd p\u0159i spu\u0161t\u011bn\u00ed. Pot\u00e9 zavol\u00e1 metodu <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/Plugin.html#getActions()\">getActions<\/a>, aby na\u010detl v\u0161echny <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginAction.html\">akce<\/a> (4), kter\u00e9 budou p\u0159id\u00e1ny jako polo\u017eky nab\u00eddky a\/nebo tla\u010d\u00edtka panelu n\u00e1stroj\u016f v okn\u011b domu. Ka\u017ed\u00e1 akce je instance <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginAction.html\">PluginAction<\/a>, kter\u00e1 vypad\u00e1 jako t\u0159\u00edda <a href=\"https:\/\/java.sun.com\/j2se\/1.5.0\/docs\/api\/javax\/swing\/Action.html\" target=\"_blank\" rel=\"noopener\">Action<\/a>, s jej\u00ed metodou <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginAction.html#execute()\">execute<\/a> a jej\u00edmi modifikovateln\u00fdmi <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginAction.Property.html\">vlastnostmi<\/a> (2).   <\/p>\n\n<p>V\u0161imn\u011bte si, \u017ee t\u0159\u00edda <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/Plugin.html\">Plugin<\/a> v\u00e1m poskytuje p\u0159\u00edstup k instanci <a href=\"https:\/\/java.sun.com\/j2se\/1.5.0\/docs\/api\/javax\/swing\/undo\/UndoableEditSupport.html\" target=\"_blank\" rel=\"noopener\">UndoableEditSupport<\/a> prost\u0159ednictv\u00edm jej\u00ed metody <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/Plugin.html#getUndoableEditSupport()\">getUndoableEditSupport<\/a>. Jakmile uprav\u00edte d\u016fm nebo jeho objekty (n\u00e1bytek, st\u011bny&#8230;) v metod\u011b execute instance <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginAction.html\">PluginAction<\/a>, m\u011bli byste tak\u00e9 odeslat objekt <a href=\"https:\/\/java.sun.com\/j2se\/1.5.0\/docs\/api\/javax\/swing\/undo\/UndoableEdit.html\" target=\"_blank\" rel=\"noopener\">UndoableEdit<\/a> do podpory undoable edit vr\u00e1cen\u00e9 metodou getUndoableEditSupport, jinak u\u017eivatel\u00e9 nebudou moci spr\u00e1vn\u011b vr\u00e1tit\/znovu prov\u00e9st proveden\u00e9 zm\u011bny. <\/p>\n\n<h3 class=\"wp-block-heading\">Lokalizace<\/h3>\n\n<p>Pokud pl\u00e1nujete vyvinout plugin pro komunitu u\u017eivatel\u016f Sweet Home 3D, pokuste se lokalizovat \u0159et\u011bzce, kter\u00e9 zobrazuje, a\u0165 u\u017e v n\u00e1zvu akc\u00ed a nab\u00eddce, nebo v dialoz\u00edch, kter\u00e9 vytvo\u0159\u00edte (nebo alespo\u0148 p\u0159ipravte jeho lokalizaci). Dva <a href=\"\/javadoc\/com\/eteks\/sweethome3d\/plugin\/PluginAction.html#PluginAction(java.lang.String,%20java.lang.String,%20java.lang.ClassLoader)\">konstruktory t\u0159\u00eddy PluginAction<\/a> v\u00e1m pomohou uspo\u0159\u00e1dat p\u0159eklad vlastnost\u00ed akc\u00ed pomoc\u00ed soubor\u016f .properties, a pokud pot\u0159ebujete p\u0159elo\u017eit dal\u0161\u00ed \u0159et\u011bzce ve va\u0161em pluginu (jako nap\u0159\u00edklad v dialogu zobrazen\u00e9m <a href=\"#testing-the-plugin\">testovan\u00fdm pluginem<\/a>), znovu pou\u017eijte tyto soubory .properties pomoc\u00ed t\u0159\u00eddy Java <a href=\"https:\/\/java.sun.com\/j2se\/1.5.0\/docs\/api\/java\/util\/ResourceBundle.html\" target=\"_blank\" rel=\"noopener\">ResourceBundle<\/a>.<br\/>Pokud chcete omezit po\u010det soubor\u016f vlastnost\u00ed, m\u016f\u017eete dokonce zapsat hodnoty vlastnost\u00ed akc\u00ed a dal\u0161\u00edch \u0159et\u011bzc\u016f do <a href=\"#creating-the-plugin-description-file\">souboru s popisem<\/a> ApplicationPlugin.properties va\u0161eho pluginu. <\/p>\n\n<p>Pokud chcete p\u0159\u00edklad, kter\u00fd pou\u017e\u00edv\u00e1 tuto architekturu, st\u00e1hn\u011bte si plugin <em>Export to SH3F<\/em>, kter\u00fd je k dispozici na <a href=\"\/storage\/plugins\/ExportToSH3F-1.0.sh3p\">https:\/\/test.sweethome3d.eu\/plugins\/ExportToSH3F-1.0.sh3p<\/a>, a rozbalte jej (tento soubor pluginu obsahuje tak\u00e9 zdrojov\u00fd k\u00f3d pluginu).<br\/>Jak je pops\u00e1no ve <a href=\"https:\/\/sourceforge.net\/forum\/message.php?msg_id=5837358\" target=\"_blank\" rel=\"noopener\">F\u00f3ru n\u00e1pov\u011bdy<\/a>, tento plugin vytvo\u0159\u00ed soubor SH3F, kter\u00fd obsahuje ve\u0161ker\u00fd n\u00e1bytek, kter\u00fd jste importovali do katalogu n\u00e1bytku Sweet Home 3D.<\/p>\n\n<h3 class=\"wp-block-heading\">P\u0159isp\u00edv\u00e1n\u00ed pluginy<\/h3>\n\n<p>Pluginy, kter\u00e9 naprogramujete, m\u016f\u017eete zve\u0159ejnit v syst\u00e9mu sledov\u00e1n\u00ed <a href=\"https:\/\/sourceforge.net\/p\/sweethome3d\/plug-ins\/\" target=\"_blank\" rel=\"noopener\">Plug-ins Contributions<\/a> a sd\u00edlet je s komunitou u\u017eivatel\u016f Sweet Home 3D.<br\/>D\u00edky plugin\u016fm lze do Sweet Home 3D p\u0159idat mnoho funkc\u00ed, od import\u00e9r\u016f po export\u00e9ry, ale tak\u00e9 pluginy, kter\u00e9 dok\u00e1\u017eou upravit data domu, jako nap\u0159\u00edklad <a href=\"https:\/\/sourceforge.net\/p\/sweethome3d\/plug-ins\/1\/\" target=\"_blank\" rel=\"noopener\">Home Rotator Plug-in<\/a> vyvinut\u00fd Michelem Mbemem a dal\u0161\u00edmi uveden\u00fdmi v <a href=\"\/storage\/pluginsUserGuide.pdf\">Tutori\u00e1lu pro pluginy a roz\u0161\u00ed\u0159en\u00ed<\/a> (PDF) od Hanse Dirkseho a na str\u00e1nce <a href=\"https:\/\/test.sweethome3d.eu\/plugins\/\" data-type=\"page\" data-id=\"437\">Pluginy a n\u00e1stroje<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00davod Od verze 1.5 je mo\u017en\u00e9 p\u0159id\u00e1vat nov\u00e9 funkce do Sweet Home 3D pomoc\u00ed soubor\u016f z\u00e1suvn\u00fdch modul\u016f um\u00edst\u011bn\u00fdch ve slo\u017ece z\u00e1suvn\u00fdch modul\u016f. To umo\u017e\u0148uje program\u00e1tor\u016fm v Jav\u011b vyv\u00edjet a distribuovat nov\u00e9 funkce pro Sweet Home 3D bez \u00fapravy zdrojov\u00fdch soubor\u016f aktu\u00e1ln\u00ed verze (co\u017e je dobr\u00e9 pro zp\u011btnou kompatibilitu) a bez dod\u00e1v\u00e1n\u00ed pln\u00e9 verze programu (co\u017e<a href=\"https:\/\/test.sweethome3d.eu\/cs\/prirucka-pro-vyvojare-zasuvnych-modulu\/\">Continue reading <span class=\"sr-only\">&#8222;P\u0159\u00edru\u010dka pro v\u00fdvoj\u00e1\u0159e z\u00e1suvn\u00fdch modul\u016f&#8220;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":11500,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-resources.php","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-11519","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/pages\/11519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/comments?post=11519"}],"version-history":[{"count":2,"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/pages\/11519\/revisions"}],"predecessor-version":[{"id":12436,"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/pages\/11519\/revisions\/12436"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/media\/11500"}],"wp:attachment":[{"href":"https:\/\/test.sweethome3d.eu\/cs\/wp-json\/wp\/v2\/media?parent=11519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}