YazılarOtomasyon Atölyesi

AutoCAD'e Yeni Komut Ekleme: AutoLISP ile Kendi Komutunuz

AutoCAD'e kendi komutunuzu eklemek nasıl çalışır? c: öneki, komut adı kuralları, kullanıcıdan bilgi almanın üç yolu ve acad.pgp kısayolu — kod yerine mantık.

  • 8 dk okuma
Bu Yazıda

AutoCAD'in en güzel yanlarından biri şu: yazdığınız bir rutini, yerleşik komutlardan ayırt edilemeyecek şekilde komut satırına bağlayabilirsiniz. Kullanıcı açısından LINE ile sizin yazdığınız ANTET arasında hiçbir fark yoktur. İkisi de komut satırına yazılır, ikisi de kısaltmaya bağlanabilir, ikisi de araç çubuğuna konabilir.

Bu, otomasyonun en görünür ve en çok benimsenen biçimi. Bir meslektaşınıza "şu LISP dosyasını yükle, sonra şunu çalıştır" demekle "komut satırına ANTET yaz" demek arasında, kabul görme açısından uçurum var.

Bu yazıda kendi komutunuzu nasıl ekleyeceğinizi konuşacağız — ama kod yazarak değil, tasarım kararlarını konuşarak. Çünkü işin zor kısmı komutu tanımlamak değil, iyi bir komut tasarlamak.

AutoLISP'e tamamen yabancıysanız önce AutoLISP nedir yazısıyla başlamanızı öneririm.

Blok ve öznitelik yapı taşlarını temsil eden illüstrasyon
Kendi komutunuz: yerleşik komutlardan ayırt edilemez
01 / 09

Komut nasıl "komut" oluyor

Mekanizma şaşırtıcı derecede basit. AutoLISP'te bir fonksiyon tanımlarken adının başına c: öneki koyarsanız, AutoCAD onu bir komut olarak kaydeder. c:antet diye bir fonksiyon tanımladığınızda, komut satırına ANTET yazan herkes o fonksiyonu çalıştırmış olur.

Hepsi bu. Kayıt yok, bildirim yok, yapılandırma dosyası yok. Fonksiyonun adı komutun adı oluyor.

Bu basitlik, LISP'in AutoCAD dünyasında neden bu kadar yaygınlaştığını da açıklıyor: bir işi otomatikleştirmekle o otomasyonu ekibin kullanabileceği bir araca dönüştürmek arasında tek bir önek var.

Komut adı seçerken dikkat edilecekler

Bu, kulağa önemsiz gelen ama sonradan çok can yakan bir karar. Üç kural:

Yerleşik komutlarla çakışmayın. AutoCAD'in kendi komutlarından biriyle aynı adı verirseniz, sizinki yerleşik olanı gölgeler ve bir gün birisi neden LINE komutunun tuhaf davrandığını anlamaya çalışır. Bu, teşhis edilmesi en zor problemlerden biri.

Bir önek kullanın. Firma adınızın ya da ekibinizin baş harflerini komutların önüne koyun: MS-ANTET, MS-KATMAN, MS-CIKTI gibi. Hem çakışma riski sıfırlanır hem de komut satırına önekinizi yazdığınızda AutoCAD size kendi komutlarınızın listesini gösterir. Bu tek alışkanlık, ekibinizin komutları hatırlamasını kolaylaştırır.

Anlaşılır olsun, kısa olmasın. Kısalık için kısayol var. Komut adı ne yaptığını söylesin; MS-KATMAN-STANDART, MSKS'den iyidir. Kısaltmayı ayrıca tanımlarsınız.

02 / 09

İyi bir komut nasıl davranır

Burası işin asıl önemli kısmı. Teknik olarak çalışan bir komutla ekibin gerçekten kullandığı bir komut arasındaki fark, davranışta saklı.

Kullanıcının alışkanlıklarına uysun. AutoCAD'in yerleşik komutları belli bir ritimle çalışır: bir şey sorar, varsayılanı köşeli parantez içinde gösterir, Enter'a basınca varsayılanı kabul eder, Esc ile iptal edilir. Sizin komutunuz da aynı ritmi izlemeli. Farklı davranan bir komut, ne kadar yararlı olursa olsun yabancı hissettirir.

Varsayılan değer sunsun. "Katman adı gir:" diye sormak yerine "Katman adı gir <DUVAR>:" diye sorun. Kullanıcı çoğu zaman Enter'a basıp geçer; ihtiyaç duyduğunda değiştirir.

Sessizce hiçbir şey yapmasın. Komut bir iş yaptığında bunu söylesin: "14 katman düzeltildi." Bir şey yapamadığında da söylesin: "Bu çizimde düzeltilecek katman bulunamadı." En kötü davranış, komutun çalışıp hiçbir çıktı vermemesidir — kullanıcı çalışıp çalışmadığını bilemez.

Geri alınabilir olsun. AutoCAD'in geri alma (undo) sistemi, bir komutun yaptığı tüm değişiklikleri tek bir grup olarak işaretlemenize izin verir. Bunu yapmazsanız, komutunuz 200 değişiklik yaptığında kullanıcı geri almak için 200 kez U yazmak zorunda kalır. Bu tek ayrıntı, bir komutun benimsenip benimsenmemesini belirleyebilir.

Ortamı bozmadan çıksın. Komutunuz bir sistem değişkenini değiştirdiyse (ölçek, nesne kenetleme, katman) çıkarken eski hâline döndürsün. Ve hata durumunda da döndürsün — kullanıcı Esc'e bastığında ortamın yarı değişmiş halde kalması, en sinsi hata türlerinden biri.

Bir komutun teknik doğruluğu, benimsenmesi için yeterli değil. Kullanıcı onu güvenli hissetmeli: ne yaptığını söylemeli, geri alınabilmeli ve ortamı bozmadan çıkmalı.
İkili kod incelemesini temsil eden illüstrasyon
İyi komut: ne yaptığını söyler, geri alınır, ortamı bozmaz
03 / 09

Kullanıcıdan bilgi almanın üç yolu

Komutunuzun bir şeye ihtiyacı olduğunda üç seçeneğiniz var ve hangisini seçtiğiniz kullanım deneyimini belirliyor.

Komut satırından sormak. En hızlı ve en AutoCAD'e uygun yol. Kullanıcının eli klavyeden ayrılmaz. Sayı, metin, nokta, açı, mesafe — hepsini sorabilirsiniz. İki-üç bilgi gerekiyorsa bu yeterlidir.

Ekrandan seçim istemek. Nesne seçimi, nokta gösterme. Geometriyle ilgili işlerde doğal olan yol. Burada önemli bir ayrıntı var: kullanıcı hiçbir şey seçmezse ne olacağına karar vermiş olmalısınız. Sessizce çıkmak mı, uyarmak mı, tüm çizime uygulamak mı?

Diyalog kutusu açmak. Beşten fazla parametre varsa ya da kullanıcının seçenekleri bir arada görmesi gerekiyorsa. LISP tarafında diyalog kutusu tasarlamak eski ve zahmetli bir iş; bu noktaya geldiyseniz .NET tarafına bakma vaktiniz gelmiş olabilir.

Pratik tavsiyem: komut satırından başlayın. İhtiyaç netleştikçe arayüz gereksinimi de netleşir. Baştan diyalog kutusu tasarlamak, çoğu zaman gereksiz emek oluyor.

04 / 09

Kısayol tanımlamak: komutun kısa adı

Komutunuzu tanımladıktan sonra ona bir kısaltma vermek isteyeceksiniz — tıpkı LINE için L, CIRCLE için C olduğu gibi.

AutoCAD bu kısaltmaları acad.pgp adlı bir dosyada tutar. Bu düz bir metin dosyası ve içine kendi satırlarınızı ekleyebilirsiniz: kısaltma, virgül, yıldız işareti ve komut adı.

Üç uyarı:

Kendi PGP dosyanızı ayrı tutun. AutoCAD güncellemelerinde acad.pgp üzerine yazılabilir. Kendi kısaltmalarınızı ayrı bir dosyada tutup ana dosyadan çağırmak, güncellemelerde emeğinizi korur.

Yerleşik kısaltmaları ezmeyin. L zaten LINE demek. Onu değiştirirseniz, o AutoCAD'i kullanan herkesin kas hafızasını bozarsınız.

Kısaltmayı ekipçe standartlaştırın. Herkesin kendi kısaltması olursa, birinin bilgisayarında çalışmak imkânsız hale gelir. Kısaltma listesini de LISP dosyaları gibi ortak bir yerde tutun.

05 / 09

Komutu araç çubuğuna ve şeride koymak

Bazı kullanıcılar komut satırını sever, bazıları butonu. Ekibinizde ikisi de vardır, o yüzden komutunuzu her iki yoldan da erişilebilir yapın.

AutoCAD'in Kullanıcı Arayüzü Özelleştirme (CUI) penceresinden yeni bir komut tanımlar, ona sizin LISP komutunuzun adını verir, bir ikon seçer ve istediğiniz araç çubuğuna ya da şerit sekmesine yerleştirirsiniz.

Burada da bir paylaşım problemi var — makro tarafındakine çok benziyor: CUI özelleştirmeleri kişisel profilde saklanır. Ekip genelinde dağıtmak için kısmi CUI dosyası (partial CUI) kullanmak gerekir. Bu, ana arayüzü bozmadan kendi sekmenizi ve butonlarınızı ekleyen ayrı bir dosyadır ve herkese aynı şekilde yüklenebilir.

Yükleme ve dağıtım tarafını AutoLISP dosyası yükleme ve otomatik başlatma yazısında ayrıntısıyla ele aldım.

Sürüm kontrolü ve dallanmayı temsil eden illüstrasyon
Komut, kısayol ve buton: üçü de ekipçe aynı olmalı
06 / 09

Komut kütüphanesi büyürken

İlk komutunuzu yazmak keyifli. Otuzuncu komutunuzda ise farklı bir problemle karşılaşırsınız: kimse hangi komutun ne yaptığını hatırlamıyor.

Bunu baştan önlemenin birkaç yolu var:

Ortak önek kullanın. Yukarıda söylemiştim ama tekrar edeyim, çünkü asıl faydası burada ortaya çıkıyor: komut satırına MS- yazdığınızda AutoCAD size tüm kendi komutlarınızı listeler. Otuz komutunuz varsa bu, canlı bir menüdür.

Bir yardım komutu yazın. MS-YARDIM gibi bir komut, tüm komutlarınızı ve ne yaptıklarını komut satırına yazsın. Yazması on dakika sürer, yıllarca işe yarar.

Her dosyanın başına üç satır yorum koyun. Ne işe yarıyor, kim yazdı, ne zaman. Bu otuz saniyelik alışkanlık, dosyanın üç yıl sonra silinmesiyle kullanılmaya devam etmesi arasındaki farkı belirliyor.

Komutları konuya göre dosyalayın. Tek bir dev LISP dosyası yerine katman.lsp, antet.lsp, cikti.lsp gibi konu bazlı dosyalar. Bakımı belirgin biçimde kolaylaştırır.

07 / 09

İlk komutunuz için öneri

Teoriyi bırakıp pratiğe dönelim. İlk komutunuzun şu üç özelliği taşımasını öneriyorum:

Küçük olsun ama bir işi bitirsin. "Şu katmanı oluştur, rengini ayarla ve aktif yap" gibi. Yarım kalan bir otomasyon, kazancı hissettirmez.

Sık kullanacağınız bir şey olsun. Günde birkaç kez kullanacağınız bir komut, öğrenme sürecini de hızlandırır — çünkü eksiklerini hemen fark edersiniz.

Geri alınabilir olsun. İlk denemelerinizde bir şeyleri bozacaksınız. Geri alma grubunu doğru kurmuş olmak, o denemeleri korkusuz yapmanızı sağlar.

Ve bir şey daha: ilk komutunuzu kopya bir çizim üzerinde deneyin. Gerçek projede test etmek, en pahalı öğrenme yöntemidir.

08 / 09

Sık Sorulan Sorular

AutoCAD'e nasıl yeni komut eklenir? AutoLISP'te fonksiyon adının başına c: öneki koyduğunuzda AutoCAD o fonksiyonu bir komut olarak tanır. c:antet adlı bir fonksiyon tanımladığınızda komut satırına ANTET yazan herkes o rutini çalıştırır; ek bir kayıt veya yapılandırma gerekmez.

Kendi komutum yerleşik bir komutla aynı adı taşırsa ne olur? Sizin komutunuz yerleşik olanı gölgeler ve yerleşik komut beklenmedik biçimde davranmaya başlar. Bu, teşhis edilmesi en zor problemlerden biridir; komutlarınıza firma önekiyle ad vermek bu riski tamamen ortadan kaldırır.

AutoCAD'de komut kısaltması nasıl tanımlanır? Kısaltmalar acad.pgp dosyasında tutulur ve bu dosyaya kendi satırlarınızı ekleyebilirsiniz. Güncellemelerde üzerine yazılmaması için kendi kısaltmalarınızı ayrı bir dosyada tutup ana dosyadan çağırmak daha güvenlidir.

Yazdığım komutu araç çubuğuna nasıl eklerim? AutoCAD'in Kullanıcı Arayüzü Özelleştirme (CUI) penceresinden yeni bir komut tanımlayıp LISP komutunuzun adını verir, ikon seçer ve istediğiniz araç çubuğuna veya şerit sekmesine yerleştirirsiniz. Ekip genelinde dağıtım için kısmi CUI dosyası kullanmak gerekir.

Komutum çalışıyor ama kullanıcı geri alamıyor, neden? AutoCAD'in geri alma sistemi komutun yaptığı değişiklikleri tek grup olarak işaretlemenizi bekler. Bu grup kurulmazsa yapılan her değişiklik ayrı bir adım olur ve kullanıcı yüzlerce kez geri almak zorunda kalır.

Kaç komuttan sonra AutoLISP yetersiz kalır? Komut sayısı değil, komutların niteliği belirleyicidir. Diyalog kutusu, dış veri kaynağı bağlantısı veya onlarca kural içeren mantık gerektiğinde AutoLISP'in sınırına gelinmiş demektir; bu noktada .NET tarafına geçmek gerekir.

Komut kütüphanem büyüdü, ekip hangi komutun ne yaptığını hatırlamıyor. Ne yapmalıyım? Tüm komutlara ortak bir önek verin (komut satırına öneki yazmak canlı bir menü haline gelir), komutları listeleyen bir yardım komutu yazın ve rutinleri konu bazlı ayrı dosyalarda tutun.

09 / 09

Özet

AutoCAD'e komut eklemek teknik olarak tek bir önek meselesi. Zor olan kısım, o komutun ekibin gerçekten kullanacağı bir araç olması: alışkanlıklara uyan, ne yaptığını söyleyen, geri alınabilen ve ortamı bozmadan çıkan bir komut.

Küçük başlayın, sık kullanacağınız bir işi seçin, kopya çizimde deneyin. Otuz komutluk bir kütüphaneye giden yol, iyi tasarlanmış tek bir komuttan geçiyor.

Bu yazı şu rehberin parçasıAutoCAD Otomasyonu — AutoLISP, Eklenti ve Bundle — Baştan Sona RehberAutoLISP nedir, ne zaman .NET'e geçilir, eklenti nasıl paketlenip ekibe dağıtılır — AutoCAD otomasyonunun bütün katmanları tek sayfada.

Kaynaklar

PaylaşLinkedIn