ADeko Technologies http://www.adeko.com/phpBB3/ |
|
Zoom Trim Lispi http://www.adeko.com/phpBB3/viewtopic.php?f=7&t=125 |
1. sayfa (Toplam 1 sayfa) |
Yazar: | Destek/Support [ 18 Eki 2002 12:06 ] |
Mesaj Başlığı: | Zoom Trim Lispi |
Lisp ingilizce versiyonda sorunsuz çalışıyor. Daha sağlıklı bir kod için aşağıdaki değişikliklere bir göz atmanızı tavsiye ederiz. Eski Hali[code](defun c:zt() (setvar "cmdecho" 0) (setq C1 (getpoint "\nFirst corner ")) (setq C2 (getcorner C1 "\nSecond corner ")) (command "zoom" "w" C1 C2) (command "trim" "c" C1 C2 "") (while (setq P (entsel "\nSelect object to trim ")) (command P) ) (command "" "zoom" "p") (setvar "cmdecho" 1) (princ) ) [/code] Yeni Hali:[code](defun c:zt (<font color="red">/ C1 C2 P</font id="red">) <b>;(1)</b> (setvar "cmdecho" 0) (setq C1 (getpoint "\nFirst corner<font color="red">:</font id="red"> ")) <b>;(2)</b> (setq C2 (getcorner C1 "\nSecond corner<font color="red">:</font id="red"> ")) (command "<font color="red">_.</font id="red">zoom" "<font color="red">_</font id="red">w" C1 C2) <b>;(3)(4)</b> (command "<font color="red">_.</font id="red">trim" "<font color="red">_</font id="red">c" C1 C2 "") (while (setq P (entsel "\nSelect object to trim<font color="red">:</font id="red"> ")) (command P) ) (command "" "<font color="red">_.</font id="red">zoom" "<font color="red">_</font id="red">p") (setvar "cmdecho" 1) (princ) ) [/code] Değişiklikler: <b>(1)</b> Fonksiyon içinde kullanılan yerel değişkenlerin başta belirtilmesi işlem bittiğinde bu değişkenleri otomatik olarak hafızadan sileceğinden daha doğrudur. Fonksiyon başlangıcında belirtilmiyen değişkenler hafızada sürekli yer işgal ederler. <b>(2)</b> Kullancıların şaşırmaması açısından IntelliCAD'in genel iletişim alışkanlıklarının devam ettirilmesi yararlıdır. Kullanıcı, iki nokta üstüste ":" gördüğünde programın kendisinden bir girdi beklediğini bilir. <b>(3)</b> Yazılan lisplerin tüm dillerde çalışmasını garanti etmek için komut ve altkomut adlarının başına altçizgi "_" koymak gerekir. Yani <b>"ZOOM" "P"</b> yerine <b>"_ZOOM" "_P"</b> yazdığınızda bu komut hangi dilde olursa olsun tüm IntelliCAD (ve dahi AutoCAD)'lerde çalışır. <b>(4)</b> <b>UNDEFINE</b> (Tanımsız Yap) komutu kullanılarak bir komutun işlem yapması engellenmiş olabilir. Örneğin: <b>UNDEFINE INSERT</b> diyerek insert komutunu işlevsiz kılabilir ve eğer istiyorsanız <b>(defun C:INSERT ...</b> diyerek aynı isimde kendinize ait bir işlev tanımlayabilirsiniz. Orjinal komutun çalıştığından emin olmak için komut adının başına nokta koyun: <b>.INSERT</b> gibi. Eski haline dönmek için <b>REDEFINE INSERT</b> demeniz yeterlidir. Hülasa: İyi (=paranoyak) bir programcı her olasılığı düşünmelidir. Yani aşağıdaki kod her ahval ve şeraitte çalışır: <b>(command "_.ZOOM" "_P")</b> Düzenleyen - Destek/Support - 18/10/2002 11:13:03 |
1. sayfa (Toplam 1 sayfa) | Tüm zamanlar UTC + 2 saat [ GITZ ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |