Spojení lsp funkce a odcl dialogu v jeden soubor

Kategorie » téma: LISP

20.09.2010 09.03 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 11567x

V předchozím příspěvku věnovanému psaní obslužných kódů pro ovládací prcky OpenDCL dialogů jsme dohotovili dialogovou podobu funkce na zápis textu pod kótovací čáru či přepis textu kóty. Tím by mohla naše práce skončit. Můžeme se ovšem dostat do potíží ve chvíli, kdy budeme chtít tuto funkci poskytnout někomu dalšímu. Problém se skrývá na začátků funkce v řádce (dcl_project_load "D:/ODCL/textdim" T)
tedy v řádce, kde definujeme umístění odcl souboru s dialogovým oknem. V mém případě to bylo umístění D:\ODCL\textdim.odcl. Uživatele, kterému bychom chtěli funkci poskytnout, bychom museli navigovat, aby si založil na disku D příslušný adresář a do něj umístil odcl soubor. Jiná situace může nastat v případě, kdy je funkce distribuována pouze pro projektanty jedné kanceláře. Pak lze odcl soubor umísti na server a příslušnou adresu použít v syntaxi funkce dcl_project_load

Přesto nejjistějším řešením, je spojit lsp a odcl soubor v jeden soubor vlx. Postup je následující:

V OpenDCL studiu si otevřeme soubor s dialogem funkce (textdim.odcl) a pomocí menu File / Save As uložíme soubor s koncovkou lsp. Abychom nepřepsali lsp funkci, která může být ve stejném adresáři a může se jmenovat shodně, uložíme soubor například jako textdim.odcl.lsp

Tímto postupem OpenDCL Studio neprovede pouze změnu koncovky souboru, ale zkonveruje soubor do podoby, která se dá zapsat přímo k lsp funkci.

V dalším kroku otevřeme například v poznámkovém bloku převedený soubor txtdim.odcl.lsp a celý jeho obsah zkopírujeme do schránky. Zkopírovaný kód použijeme pro definování nové proměnné, kterou nazveme například dialog. Řádku(dcl_project_load "D:/ODCL/textdim" T) smažeme (cesta se může lišit podle toho, kam byl odcl soubor umístěn). Případně před řádku můžeme napsat středník, čímž zajistíme, že ji AutoCAD bude ignorovat.

Namísto této řádky doplníme novou funkci:   (dcl_project_import dialog nil nil)

Funkce textdim tak bude vypadat zhruba následovně:

(princ "\nFunkce na zápis textu pod kótovací čáru")
(princ "\nSpuštění funkce \"textdim\"")
(princ "\n(c) K-DATA 2010")

(defun c:textdim  ( / textpodcarou  textkoty  kota  vla-kota)
    (vl-load-com)
    (command "_OPENDCL")
    (setq dialog
       '("YWt6A4kYAACaxSzeBuKTJjcxLS9qgLSG+nz8T08P/W9dL770Nv9m3b68diZq8uTufhM/79/zctxl"
"JuSWJGmEbWJt+brbEAqZrPt16Vj0UDLyD97gBSGF+HEWLXgPlhWgk4OQx5GiDbFHoQc9NxJAeEdJ"
"JECWILFUcSBLygYH9jQvJtmMLvcyB86OtLQ9JNs/haMvZHBfLWSAtaze0FYsPUsiZHSlDwZnsXCC"
"vus9Wg/uwS2fQqncG5gM97nhdth6+U5ZXTvgAAfkq1jSyh5SyT5GdLw4WlF+5N7wfI5kEHyVfI/F"
"kaOXbKw1d7R6w/mKdgUF83e1+iUdPCd6VCgWV3zbBQkz/T5AUlrux6LBMd5WqJ9w6Xj/imNBPd6q"
"erToMPc8KzLenBjiOsk6pIL2T1DnQm9ZLBRke1brokqPWCDCM9t3xFrZ+LjVO/MqcekXLh9ot9fe"
"ob9jKla5VC5/it9acxTiuHwUqviuOuGWBO+ClStR7Ns5UXyMlqxcwGDsjElSTbxnhFM7QSv1aayx"
"ToPVQkRYgHXT7gzHE8jcQe4azQ7t0nH1wg+Do1rVJEC3klq2blVLz6qPdeKOigI
=")
     )
   
;(dcl_project_load "D:/ODCL/textdim" T)
    (dcl_project_import dialog nil nil)
    (dcl_form_show textdim_PrepisTextuKoty)
    )  

Ostatní funkce jsou již beze změny. Hodnota proměnné dialog se nedá z tohoto příspěvku kopírovat. Z důvodu své rozsáhlosti byla o několik řádků zkrácena. V této chvíli již můžeme smazat soubor textdim.odcl.lsp. Jestliže nyní lsp funkci načteme, bude funkčí I bez odcl souboru. Přesto můžeme udělat další krok ke kompaktnosti, ve kterém lsp soubor přeložíme do vlx.

V editoru kódu Visual LISPu klepneme v horním menu na File / Make Application / New Application Wizard...
 
V dalším dialogu vybereme Simple.
 
Následně zadáme umístění vlx souboru a jeho jméno.
 
Dále se objeví dialogové okno, ve kterém pomocí tlačítka Add přidáme lsp soubor(y) s našimi funkcemi.
 

V dalším dialogu už jen zkontrolujeme zaškrtnutí položky Build Application a klepneme na Finish.

 

Načtení vlx souboru do AutoCADu je stejné, jako u souboru lsp. vlx soubor je nečitelný a můžeme tak překlad do vlx považovat za určitou ochranu našeho kódu. Další výhodou je to, že  AutoCAD dovede s vlx souborem pracovat rychleji, než s lsp souborem.

Soubor textdim.vlx si můžete stáhnout zde.

textdim.lsp

Jan Panoch

 Související články:

1) "Nástroj pro rychlé zjištění informací o entitě", Jan Panoch, 26.7.2010

2) "Přístup k objektům pomocí VisualLISPu", Jan Panoch, 2.8.2010

3) "Přístup k vlastnostem objektům pomocí VisualLISPu", Jan Panoch, 23.8.2010

4) "Zapsání textu pod kótovací čáru pomocí VisualLISPu", Jan Panoch, 23.8.2010

5) "Opakované zapsání textu pod kótovací čáru pomocí VisualLISPu", Jan Panoch, 23.8.2010

6) "OpenDCL", Jan Panoch, 3.9.2010

7) "Příklad vytvoření dialogu v OpenDCL Studiu", Jan Panoch, 6.9.2010

8) "Obslužný kód pro ovládací prvky OpenDCL", Jan Panoch, 13.9.2010

9) "Spojení lsp funkce a odcl dialogu v jeden soubor", Jan Panoch, 13.9.2010

10) "Co je třeba k běhu funkcí s ODCL dialogy", Jan Panoch, 13.9.2010

11) "Funkce na výpočet průřezových charakteristik s ODCL paletou", Jan Panoch, 13.9.2010

(odkazy se svolením autora článků doplnil JT) 

Komentáře:

Tento článek zatím neobsahuje žádné komentáře.

Přidat komentář

 *
 *
 
 *

*) Povinné položky jsou označeny hvězdičkou.