AutoLisp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
AutoLisp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Nisan 2025 Pazartesi

AutoLISP: Dönüştürme fonksiyonları - 1

AutoLISP ve Visual LISP, teknik çizimlerde otomasyonu kolaylaştıran güçlü araçlar sunarken, farklı veri tipleri arasında dönüşüm yapmayı sağlayan fonksiyonları da içinde barındırır.

Bu dönüşüm işlemleri sayesinde sayılar, metinler, açılar, koordinatlar ve listeler arasında esnek geçişler sağlanabilir. Özellikle kullanıcıdan alınan verilerin işlenmesi, metin tabanlı bilgilerle sayısal verilerin entegre edilmesi veya geometriyle ilgili hesaplamalarda bu fonksiyonlar büyük kolaylık sağlar.

Dönüştürme fonksiyonlarını etkili kullanmak, yazılan kodun daha okunabilir, daha esnek ve daha güçlü olmasını sağlar.

Sayı, Metin ve Karakter Dönüşüm Fonksiyonları

Bu sayfada açıklanan fonksiyonlar:
  • itoa : Tamsayı -> Metin
  • atoi : Metin -> Tamsayı
  • rtos : Reel sayı -> Metin
  • float : Tamsayı -> Reelsayı
  • fix : Reelsayı -> Tamsayı
  • atof : Metin -> Reel sayı
  • distof : Metin -> Reel sayı
  • angtof : Açı -> Reel sayı
  • angtos : Açı -> Metin
  • ascii : Metin -> ASCII kodu
  • chr : ASCII kodu --> Karakter
  • cvunit : Birim dönüştür
  • trans : Koordinat sistemi dönüştür

itoa : Tamsayı -> Metin

itoa, Integer to ASCII kısaltmasıdır. Tamsayıyı (integer) metin (string) formatına dönüştürmek için kullanılır. Genellikle sayısal değerleri ekranda göstermek, dosya işlemlerinde kullanmak veya metin tabanlı işlemler yapmak için gereklidir.

Kullanımı:
(itoa tamsayı)
tamsayı : Dönüştürülecek tamsayı değer. Parametre olarak integer veri türü haricinde bir değer girildiğinde hata oluşur. Reel sayılar için rtos fonksiyonu kullanılmalı ya da reel sayı önce fix fonksiyonu ile tamsayıya dönüştürülmeli.
Dönüş Değeri: Sayının metin karşılığı (string).

Bu fonksiyonun yaptığı işlemin tersi için atoi kullanılır.

Örnekler:
(itoa 123) ; "123" (123 sayısını metne çevirir)
(itoa -45) ; "-45"
(itoa 0) ; "0"
(itoa (/ 10 5)) ; "2"
(itoa (/ 10 3)) ; "3"
(itoa (fix (/ 10 4))) ; "2"
; argüman veri türü hatalı örnekler:
(itoa 3.1415) ; error: bad argument type: fixnump: 3.1415
(itoa "24") ; error: bad argument type: fixnump: "24"
(itoa (/ 10 3.0)) ; error: bad argument type: fixnump: 3.33333

atoi : Metin -> Tamsayı

atoi, ASCII to integer kısaltmasıdır. Sayı içeren metni(string) tamsayıya(integer) dönüştürür.

Kullanımı:
(atoi metin)
metin : String olarak girilen argümandaki sayıyı tamsayıya(integer) dönüştürür. Metin sayı ile başlıyorsa sayı kısmını alır. Sayı ile başlamayan metinler 0 sonucunu verir.

21 Nisan 2025 Pazartesi

AutoLISP: Seçili çizgileri iki uçtan uzat

Bu AutoLISP kodu, AutoCAD ortamında seçilen tüm çizgi (LINE) nesnelerinin her iki ucunu, kullanıcıdan alınan bir uzunluk kadar uzatır.

Komut çalıştırıldığında, kullanıcıdan uzatma miktarı istenir ve ardından çizgi nesneleri seçilmesi beklenir. Seçilen her bir çizginin başlangıç ve bitiş noktaları, çizginin doğrultusuna göre belirtilen mesafe kadar ileri ve geri kaydırılarak çizgi uzatılır.

Böylece, çok sayıda çizginin uçlarını hızlı ve pratik bir şekilde topluca uzatmak mümkün olur. Özellikle mimari ve teknik çizimlerde, çizgi boylarını topluca düzenlemek isteyen kullanıcılar için büyük kolaylık sağlar.

Nasıl yüklenir?

Nasıl çalıştırılır?

Lisp dosyasını yükledikten sonra; AutoCAD komut satırında;
  • UZAT komutunu girin
  • Uzatma miktarını girin. Negatif sayı kısaltma yapar.
  • Uzatılacak çizgileri seçin. Çizgi dışındaki nesneler seçilmeyeceği için seçim kolaydır.
  • Enter ile seçimi sonlandırın.
  • Seçili çizgiler her iki uçtan uzatılacak ve yapılan işlem hakkında bilgi verilecektir.

Program kodu

; Çizgileri her iki uçtan uzatır.
; Uzatma miktarını kullanıcıdan alır.
; Negatif uzatma miktarı kısaltma yapar.

; İlk sürüm : 21/04/2025
; Güncelleme: 03/05/2025

; Mesut Akcan
; makcan@gmail.com
; mesutakcan.blogspot.com
; youtube.com/mesutakcan

(setq ext 3) ; Varsayılan uzatma miktarı
(defun c:UZAT ( / ang n line lc sp ep ss um)
(initget 2) ; Sıfır değerine izin verme
(if (setq um (getreal (strcat "\nUzatma miktarı <" (rtos ext) ">: ")))
	(setq ext um)
)
(if (setq ss (ssget '((0 . "LINE")))) ; Sadece LINE nesnelerini seç
	(progn
		(setq
			lc (sslength ss) ; Seçim setindeki çizgi sayısı
			n 0 ; Döngü sayacı
		) 
		(repeat lc ; Seçim setindeki çizgi sayısı kadar döngü
			(setq
				line (ssname ss n) ; Döngüdeki çizgi
				sp (getpropertyvalue line "StartPoint") ; Başlangıç noktası
				ep (getpropertyvalue line "EndPoint") ; Bitiş noktası
				ang (angle sp ep) ; Çizgi açısı
				n (1+ n) ; Döngü sayacı
			)
			; Başlangıç noktasını ters yöne uzat
			(setpropertyvalue line "StartPoint" (polar sp (+ ang pi) ext))
			; Bitiş noktasını ileri doğru uzat
			(setpropertyvalue line "EndPoint" (polar ep ang ext))
		);repeat
		(princ (strcat "\nToplam " (rtos lc) " çizgi her iki uçtan " (rtos ext) " birim uzatıldı."))
	);progn
	(princ "\nÇizgi seçilmedi.")
);if
(princ)
)

21 Mart 2025 Cuma

AutoLISP: Kullanıcı girişi sağlayan fonksiyonlar - 3

Bu yazının önceki bölümü: AutoLISP: Kullanıcı girişi sağlayan fonksiyonlar - 2

15) ssget Fonksiyonu : Seçim seti oluşturma


ssget fonksiyonu, AutoCAD'de belirli kriterlere uyan nesneleri seçmek için kullanılır. Bu fonksiyon, seçim seti (selection set) oluşturmanıza olanak tanır. Seçim seti, AutoCAD çizimindeki nesnelerin bir koleksiyonudur.
ssget, çizimdeki nesneleri bir seçim seti olarak toplar. Bu seçim seti, daha sonra diğer işlemlerde (örneğin, ssname, sslength, vb.) kullanılabilir.

Kullanımı:
(ssget [seçim-modu] [n1 [n2]] [nokta-listesi] [filtre-listesi])
seçim-modu: Bu parametre isteğe bağlıdır ve seçim yöntemini belirler. Örneğin, "W" (Window), "C" (Crossing), "L" (Last), "P" (Previous), "I" (Implied), "X" (All) gibi modlar kullanılabilir.

n1 ve n2: Seçim yapılacak alanın köşe noktalarını belirtir. Bu parametreler de isteğe bağlıdır ve genellikle "W" veya "C" modlarıyla birlikte kullanılır.

nokta-listesi: "F" seçim modunda birden fazla nokta girişi için kullanılır.

19 Mart 2025 Çarşamba

AutoLISP: Kullanıcı girişi sağlayan fonksiyonlar - 2

Bu yazının önceki bölümü: AutoLISP: Kullanıcı girişi sağlayan fonksiyonlar - 1

9) initget Fonksiyonu: Kullanıcı Girdi Kontrolü

initget fonksiyonu, kullanıcıdan alınacak girdilerin kontrolünü sağlar. Bu fonksiyon, getint, getreal, getstring, getpoint, getdist, getangle, getkword gibi kullanıcı girdisi alan fonksiyonlarla birlikte kullanılır. Kullanıcı girdisini belirli kurallara göre sınırlandırmak ve geçerli girdileri tanımlamak için kullanılır.

Kullanımı:
(initget [bit-değeri] [anahtar-kelimeler])
bit-değeri (isteğe bağlı): Girdi kontrolü için kullanılan bit değeridir. Bu değer, kullanıcının girdisini nasıl sınırlandıracağınızı belirler.

Belirli kullanıcı girdisi türlerine izin veren veya vermeyen bir bit kodu. Bitler, 0 ile 255 arasında bir değer oluşturmak için herhangi bir kombinasyonda toplanabilir. bit-değeri belirtilmezse 0(sıfır) varsayılır.

initget Fonksiyonunun Bit Değerleri:
Bit Değer Açıklama
0 1 Kullanıcının yalnızca Enter tuşuna basarak yanıt vermesini engeller.
1 2 Kullanıcının 0(sıfır) girerek yanıt vermesini engeller.
2 4 Kullanıcının negatif bir değer girerek yanıt vermesini engeller.
3 8 Kullanıcının geçerli çizim sınırlarının dışında bir nokta girmesine izin verir
4 16 (Şu anda kullanılmıyor)
5 32 Geçici çizgi veya geçici dikdörtgen çizerken kesik çizgiler kullanır.
6 64 getdist fonksiyonuna Z koordinatı girilmesini engeller; bir uygulamanın bu fonksiyonun 2B mesafe döndürdüğünden emin olmasını sağlar
7 128 Diğer kontrol bitlerini ve listelenen anahtar sözcükleri dikkate alarak keyfi girdiye anahtar sözcükmüş gibi izin verir. Bu bit, bit 0'a göre önceliklidir; bit 7 ve 0 ayarlıysa ve kullanıcı Enter tuşuna basarsa, boş bir dize döndürülür.
8 256 Doğrudan mesafe girişine rastgele girişe göre öncelik verir. Harici uygulamalar için, rastgele girdiye varsayılan olarak doğrudan mesafe girdisine göre öncelik verilir. AutoCAD'i kullanıcı girdisini doğrudan mesafe girdisi olarak değerlendirmeye zorlamak istiyorsanız bu biti ayarlayın. Klavyeden yasal nokta girişinin her zaman doğrudan mesafe veya rastgele girişten öncelikli olduğunu unutmayın.
9 512 Bir getpoint veya getcorner çağrısından önce ayarlanırsa, imleç bir katının düzlemsel bir yüzeyinin kenarından geçtiğinde geçici bir UCS oluşturulur. İmleç bir yüzeyin dışına çıktığında geçici UCS sıfırlanır. İmleç farklı bir yüzeyin üzerinden geçtiğinde dinamik olarak yeniden oluşturulur. Nokta alındıktan sonra, dinamik UCS geçerli UCS'ye sıfırlanır. Bu işlevsellik, silindir kenarı gibi düzlemsel olmayan yüzeyler için etkin değildir.
10 1024 getdist, getangle, getorient, getpoint veya getcorner fonksiyonlarını çağırırken, mesafe, açı, yön, nokta veya köşenin Z yönünde orto, polar veya otracking tarafından etkilenmesini istemeyebilirsiniz. Bu fonksiyonlardan herhangi biri çağrılmadan önce bu bitin ayarlanması, Z yönünde orto, polar ve otracking'i geçici olarak devre dışı bırakacaktır. Bu, çoklu çizgi, yay veya daire gibi 2B varlıklar oluşturduğunuzda veya yalnızca 2B dizi oluşturan AutoCAD ARRAY komutunu kullandığınızda kullanışlıdır. Yalnızca 2B komutlarda, 3B noktaların orto Z, polar Z veya otrack Z kullanılarak girilmesine izin vermek kafa karıştırıcı ve hataya açık olabilir.

anahtar-kelimeler (isteğe bağlı): Kullanıcının seçebileceği anahtar kelimeleri içeren bir metin dizisidir. Anahtar kelimeler boşlukla ayrılır.

Anahtar kelimeleri kabul eden işlevler getint, getreal, getdist, getangle, getorient, getpoint, getcorner, getkword, entsel, nentsel ve nentselp'dir.

getstring işlevi, anahtar kelimeleri dikkate almayan tek kullanıcı girişi fonksiyonudur.

Kullanıcı beklenen girdi türünü girmediğinde (örneğin, getpoint için bir nokta) anahtar kelimeler bir sonraki kullanıcı-girdi işlevi çağrısı tarafından kontrol edilir. Kullanıcı girişi listedeki bir anahtar kelimeyle eşleşirse, işlev bu anahtar sözcüğü dize sonucu olarak döndürür. Uygulama anahtar kelimeleri test edebilir ve her biriyle ilişkili eylemi gerçekleştirebilir.

Kullanıcı girişi beklenen bir tür değilse ve bir anahtar kelimeyle eşleşmiyorsa, AutoCAD kullanıcıdan tekrar denemesini ister. initget bit değerleri ve anahtar kelimeler yalnızca bir sonraki kullanıcı girişi işlev çağrısı için geçerlidir.

initget bir kontrol biti ayarlarsa ve uygulama, bitin hiçbir anlamı olmayan bir get... işlevini çağırırsa, bit yok sayılır.

Kullanıcı girdisi belirtilen koşullardan bir veya daha fazlasında başarısız olursa (sıfır değerlerine izin verilmediğinde sıfır değerinde olduğu gibi), AutoCAD bir mesaj görüntüler ve kullanıcıdan tekrar denemesini ister.

15 Mart 2025 Cumartesi

AutoLISP: Kullanıcı girişi sağlayan fonksiyonlar - 1

AutoLISP, AutoCAD ortamında özelleştirilmiş komutlar ve araçlar geliştirmek için kullanılan güçlü bir programlama dilidir. Uygulamalarınızı daha etkileşimli hale getirmek için, çalışma sırasında kullanıcıdan gerekli bilgileri almanız gerekebilir. İster bir nokta seçimi, ister bir metin girişi veya bir sayısal değer olsun, kullanıcıdan bu verileri almak için AutoLISP'te dahili fonksiyonlar bulunur.

Bu fonksiyonlar sayesinde, kullanıcılar klavye aracılığıyla metin veya sayısal değerler girebilir ya da fare ile ekranda nokta seçimi, uzunluk girdisi, açı girdisi, nesne seçimi ve komut alt menü elemanı seçimi yapabilir.

Örneğin, bir çizgi çizmek için başlangıç ve bitiş noktalarını kullanıcıdan almak veya bir metin etiketi oluşturmak için kullanıcıya metin girişi yaptırmak mümkündür. Bu tür etkileşimler, uygulamanızın daha esnek ve kullanıcı dostu olmasını sağlar.

Girdi Fonksiyonları

1) getint Fonksiyonu: Kullanıcıdan Tamsayı Değeri Alma

getint fonksiyonu, kullanıcıdan bir tamsayı (integer) değeri almak için kullanılır. Kullanıcı bir değer girdikten sonra Enter veya Boşluk tuşuna basarak girişini onaylar. Giriş sağlanana kadar uygulama duraksar.

Bu fonksiyon, özellikle sayısal bir değer girilmesi gereken durumlarda tercih edilir. Örneğin, bir nesnenin kaç kopyasının oluşturulacağı veya belirli bir mesafenin kaç birim olacağı gibi işlemlerde kullanılır.

Bu fonksiyona aktarılabilecek değerler -32,768 ile +32,767 arasında bir tam sayıdır. (16 bit. Bir bit, sayı işareti için kullanıldığı için 15 bitlik sayı. 2^15 = 32768)
Kullanıcı tamsayı dışında bir değer(örneğin ondalıklı sayı veya metin) girerse, fonksiyon “Requires an integer value" (Bir tamsayı değeri gerektiriyor) mesajını görüntüler ve kullanıcının tekrar giriş yapmasına izin verir.

Veri girmeden Entere basılırsa fonksiyon nil sonucunu verir.

Kullanımı:

(getint [mesaj])
mesaj : Kullanıcıya gösterilecek mesajdır. Kullanılması zorunlu değildir. Eğer belirtilmezse, fonksiyon herhangi bir mesaj göstermeden sayı girişi bekler.

Örnekler:
(setq sayi1 (getint))
Mesaj vermeden kullanıcıdan tam sayı girdisi bekler. Girilen tam sayı sayi1 değişkenine aktarılır.
(setq kopyasayisi (getint "\nKopya sayısı:"))
(princ (strcat "\nGirilen sayı: " (itoa kopyasayisi)))
\n satır başı kodudur. mesaj yeni satırda yazılır.
itoa tam sayıyı metne dönüştürür.
strcat metinleri birleştirir.
princ metni komut satırında yazdırır.
(setq sayi (getint "\nLütfen bir tamsayı girin: "))
(if sayi ; sına: sayi nil değilse?
	;doğru ise
	(princ (strcat "\nGirdiğiniz sayı: " (itoa sayi)))
	;yanlış ise ise
	(princ "\nGeçersiz giriş! Lütfen bir tamsayı girin.")
)

2) getreal Fonksiyonu: Kullanıcıdan Ondalıklı Sayı Alma

Bu fonksiyon kullanıcıdan bir reel sayı (floating-point number) değeri almak için kullanılır. Özellikle kullanıcının ondalıklı bir değer girmesi gereken durumlarda (örneğin, bir uzunluk, yarıçap veya ölçek faktörü belirtirken) oldukça kullanışlıdır. getint fonksiyonundan farklı olarak küsuratlı (ondalıklı, reel) sayılar da girilebilir. Tam sayı girilirse sayı reel sayıya dönüştürülür. 5 sayısı 5.0 reel sayısına dönüşür.

9 Mart 2025 Pazar

AutoLISP: Aritmetik ve Matematik Fonksiyonlar

AutoLISP, AutoCAD kullanıcıları için tasarlan güçlü bir programlama dilidir ve AutoCAD'in özelleştirme ve otomasyon yeteneklerini önemli ölçüde genişletir.

LISP dilinin AutoCAD'e uyarlanmış bir türevi olan AutoLISP, özellikle CAD (Bilgisayar Destekli Tasarım) ortamında çizim süreçlerini otomatikleştirmek, özelleştirilmiş işlemler gerçekleştirmek ve iş akışını hızlandırmak için tercih edilir.

AutoLISP, temel aritmetik işlemlerden karmaşık matematiksel hesaplamalara kadar geniş bir yelpazede işlev sunan dahili fonksiyonlara sahiptir. Bu fonksiyonlar, kullanıcıların çizim otomasyonu sırasında matematiksel hesaplamaları kolayca gerçekleştirmesine olanak tanır.

Ayrıca, AutoLISP'in esnek yapısı sayesinde, dilin dahili fonksiyonlarının yetersiz kaldığı durumlarda özel matematiksel işlemler için harici fonksiyonlar da geliştirilebilir.

Fonksiyonlara geçmeden önce AutoLISP dilinde kullanılan sayı türlerini görelim.

  • Tamsayı (Integer)
Tam sayılar, ondalık değer içermeyen tam sayılardır.
AutoLISP'teki tam sayılar, -2,147,483,648 ile +2,147,483,647 arasında değer alan 32-bit işaretli sayılardır. Bazı fonksiyonlar ise yalnızca -32678 ile +32767 arasındaki 16-bit sayıları kabul eder.

Eğer izin verilen maksimum tam sayı sınırını aşan bir değer girerseniz, AutoLISP bu değeri bilimsel gösterimde bir reel sayı (float) olarak saklar. Bilimsel gösterimdeki sınırı aşan bir sayı olursa inf.0 (sonsuzluk) sonucu oluşur.

Örnek:
(setq sayi 2147483648)
	; Sonuç 2.14748e+009
	; Sayı integer sınırını aştığı için reel sayı. Bilimsel gösterim
(setq sayi (expt 2147483648 -100))
	; Sonuç: 0.0 reel sayı
	; Sıfıra yakın en küçük negatif sayı sınırını aştığı için 0.0
(setq sayi (fix 1.0e+308))
	; Sonuç: 1.0e+308
	; Sayı integer sayı sınırını aştığı için reel sayı olarak saklanır
  • Reel (Ondalıklı) Sayı (Float)
Ondalıklı sayılar, tam sayılardan farklı olarak ondalık nokta içeren sayılardır. AutoLISP'te bu sayılar reel sayı (float) olarak adlandırılır. Örneğin, 3.14 -0.5 2.0 geçerli reel sayılardır.

AutoLISP'te reel sayılar, 64-bit kayan noktalı (floating-point) sayılar olarak saklanır.
Bu nedenle, belirli bir hassasiyetle işlem yapabilir ancak çok büyük veya çok küçük değerlerde hata payı oluşabilir.

fix fonksiyonu, bir reel sayının küsuratını atarak tam sayıya dönüştürür (yuvarlama yapmaz).

AutoLISP'te çok büyük bir sayı hesaplanmaya çalışıldığında, sayı sınırları aşılırsa inf.0 (sonsuzluk) değeri döndürülür:

AutoLISP'te sayılar dinamik olarak yönetilir, yani bir değişken hem tamsayı hem de reel sayı olabilir. Örneğin:

(setq sayi 5) ; Tamsayı(Integer)
(setq sayi 3.14); Reel sayı(Float)
(setq sayi 12.0); Reel sayı
(setq sayi 15.); Reel sayı. Küsurat 0 ise noktadan sonra 0 yazılmayabilir.
(setq sayi 1.0e-323) ; Sonuç: 9.88131e-324
(setq sayi 1.0e-324) ; Sonuç: 0.0 Sınırı aştığı için 0
(setq sayi 1.0e+308) ; Sonuç: 1.0e+308
(setq sayi 1.0e+309) ; Sonuç: inf.0 Sayı sınırı aştığı için sonsuz

Bu dinamik yapı, programcıya esneklik sağlarken, büyük veri setlerinde performans sorunlarına neden olabilir.

1) Temel Aritmetik Fonksiyonlar

a) Toplama. + fonksiyonu

Toplama işlemi için + fonksiyonu kullanılır. Bu fonksiyon, birden fazla sayıyı toplamak için kullanılabilir.
(+ 1 2 3) ; Sonuç:6
(+ 20 -7) ; Sonuç:13
(+ 5 10.52 20.3 0.12) ;Sonuç: 35.94
(+ 1 2.0 3 4) ; Sonuç:10.0
(setq toplam (+ 12 34)) ;toplam = 46

18 Aralık 2024 Çarşamba

AutoLisp: Eksen çiz

Eksen çiz AutoLISP uygulaması ile AutoCAD programında seçilen çember veya yaylara dikey ve yatay eksenler çizilerek işlemleri hızlandırır.

Eksen çiz Autolisp uygulaması dosyası, kurulum ve kullanım hakkında detaylı bilgi için:

Github proje sayfası

9 Ağustos 2024 Cuma

AutoLisp ile çizimdeki blokları blok adlarıyla DXF dosyaya kaydet

Aşağıdaki AutoLisp dosya çizimdeki tüm bloklar blok adlarıyla DXF uzantılı olarak ayrı ayrı kaydeder.
Kaydedilecek klasör C:\BLOKLAR olarak belirtilmiştir. Klasör yolunu değiştirebilirsiniz.
Kayıt türü DXF olarak belirtilmiştir. Kodlarda uzantıyı DWG olarak değiştirebilirsiniz.

İlgili sayfalar:
; Çizim dosyasındaki bloklari blok adlarıyla ayrı dosyalara kaydeder
; Mesut Akcan
; 09/08/2024
; makcan@gmail.com
; https://mesutakcan.blogspot.com

(vl-load-com)
(defun c:BLOKKAYDET (/ blokadi bloksayisi dosyaadi kbs klasor uzanti)
	(setvar 'cmdecho 0) 
  (setq
		klasor "C:\\BLOKLAR" ; Blokların kaydedileceği klasör
		;Dosya uzantısı
		uzanti ".dxf" ; DWG uzantılı kayıt için alttaki satırı kullanın
		;uzanti ".dwg"
		blokSayisi 0 ; Blok sayısı
		kbs 0 ; Kaydedilen blok sayısı
	)
  ; Klasörün mevcut olup olmadığını kontrol et
  (if (not (vl-file-directory-p klasor))
		; Klasör yoksa çık
		(progn (alert (strcat klasor " klasörü bulunamadı!"))(exit))
	)
	; Model alanındaki her varlık için döngü
  (vlax-for ent (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
		; Eğer varlık bir blok referansı ise,
    (if (eq (strcase (vla-get-ObjectName ent)) "ACDBBLOCKREFERENCE") 
      (progn
				; Blok sayısını bir artır
        (setq blokSayisi (1+ blokSayisi)) 				
				; Blok adını al ve blokAdi değişkenine ata
        (setq blokAdi (vla-get-EffectiveName ent))
				; Blok dosya yolunu ve adını oluştur ve dosyaAdi değişkenine ata
        (setq dosyaAdi (strcat klasor "\\" blokAdi uzanti))
				; Eğer dosya mevcut değilse,
        (if (not (findfile dosyaAdi))
          (progn
						; Bloğu belirlenen dosya adı ile kaydet
						(if (= uzanti ".dxf")
							(command "_.WBLOCK" dosyaAdi "" blokAdi)
							(command "_.WBLOCK" dosyaAdi blokAdi)
						)
						(setq kbs (1+ kbs)) ; Kaydedilen blok sayısını bir artır
					)
         )
       )
     )
   )
	; Sonuç mesajını yazdır
	(alert
		(strcat "Çizimdeki " (itoa blokSayisi) " adet bloktan "
			(itoa kbs) " adedi " klasor
			" klasörüne ayrı dosyalar halinde kaydedildi."
		)
	)
	(setvar 'cmdecho 1) 
  (princ)
)

26 Nisan 2024 Cuma

AutoLisp dosyayı otomatik yükleme

Düzenli olarak kullandığınız AutoLisp uygulamalarını her yeni dosya açılışında tekrar yüklemek sıkıcı olabilir. Neyse ki, AutoCAD programın AutoLisp uygulamalarını otomatik olarak yüklemeye izin vermektedir.

Aşağıda AutoLisp uygulamalarını otomatik yüklemek için kullanılabilecek yöntemleri açıkladım.  Uygulanacak bu yöntemler AutoCAD sürümlerine göre farklılık gösterebilir.

Örnekte verilen uzunlukyaz.lsp kodlarına AutoLisp ile nesne uzunluğunu nesne üzerine yazma sayfasından erişebilirsiniz.

1) Startup Suite ile otomatik yükleme

Komut satırından APPLOAD komutunu girin veya şerit menüden Manage / Load Application tıklayın. Eski menü sisteminde Tools / AutoLISP / Load Application... tıklayın.

Yüklenecek AutoLisp dosyasını seçip Startup Suite'deki çanta simgesi üzerine bırakın ya da Contents... butonunu tıklayın. Açılan pencerede Add... tıklayın. Yüklenecek AutoLisp dosyasını seçip Aç tıklayın. Seçili dosya listeye eklenecektir.

Artık her AutoCAD ve yeni dosya açılışlarında listedeki uygulamalar otomatik olarak yüklenecek ve AutoLisp dosyasındaki komutları kullanabileceksiniz. Şu anki açık olan AutoCD dosyasında da Autolisp dosyayı yüklemek için Load butonunu tıklayın. Sonra Close butonunu tıklayın.

2) acad.lsp veya acaddoc.lsp ile yükleme

acad.lsp ve acaddoc.lsp dosyaları, AutoLISP kodlarını AutoCAD oturumu sırasında otomatik olarak çalıştırmak için kullanılır. Ancak, bu iki dosyanın kullanım amaçları ve işlevleri biraz farklıdır.

acad.lsp

acad.lsp, AutoCAD başlangıç dizininde bulunan ve AutoCAD uygulaması her açıldığında bir defa otomatik olarak yüklenen bir AutoLISP başlangıç dosyasıdır. Bu dosya, genellikle AutoCAD oturumunun başlatılmasında genel işlevler ve tanımlar içerir. Örneğin, belirli bir kullanıcı arabirimi düzenini ayarlama, varsayılan katmanları yükleme, özel menüler oluşturma gibi işlevleri  gerçekleştirebilir.

29 Temmuz 2023 Cumartesi

AutoCAD'e AutoLISP program yükleme ve çalıştırma

İlgili sayfa: Lisp, AutoLisp, VisualLisp nedir?

AutoCAD'e AutoLisp program yükleme

AutoLISP, AutoCAD'ın dahili programlama dilidir ve kullanıcıların özelleştirilmiş komutlar ve rutinler oluşturmalarına imkan sağlar.
AutoLisp dosyası açık kaynak kodlu ise LSP uzantılı olacaktır. Eğer kaynak kodlar derlendi ise FAS veya VLX uzantılı olur.

LSP uzantılı, açık kaynak kodlu AutoLisp programını AutoCAD'e yüklemek için aşağıdaki yöntemlerden birini kullanabilirsiniz.

Örnek olarak AutoLisp ile nesne uzunluğunu nesne üzerine yazma sayfasındaki AutoLisp programının açık kaynak kodunu kullanacağım.

Sayfadaki kodları seçip kopyalayın bir metin editörüne (örneğin Windows Not Defteri uygulaması) yapıştırın. Sonra kodları uzunlukyaz.lsp olarak kaydedin.

1) Sürükle bırak ile yükleme

En basit ve kolay yöntem budur. Dosyayı fare ile sürükleyip AutoCAD çizim alanına bırakın.
Dosyanın güvenli olmayabileceği ile ilgili uyarı penceresi çıkabilir.
Çıkan uyarı penceresinde;
Always Load tıkladığınızda dosya yüklenir ve sonraki yüklemelerinizde bu uyarı bir daha gelmez.
Load Once tıkladığınızda dosya yüklenir ancak sonraki yüklemelerde yine aynı uyarı gelir.
Do Not Load tıklarsanız dosya yüklenmez işlem iptal edilir.
Duruma göre 1. veya 2. buton ile dosyayı yükleyin.
Artık AutoLisp programını çalıştırabilirsiniz.
Bu yöntemle yüklenen AutoLisp program, yalnızca sürüklenip bırakılmış çizim dosyasında çalışır.

21 Temmuz 2023 Cuma

Lisp, AutoLisp, VisualLisp nedir?

Lisp nedir?

Lisp (List Processing = Liste İşleme) 1958 yılında John McCarthy tarafından geliştirilen ve kullanımda olan en eski ve en güçlü programlama dillerinden biridir. Yapay zeka  alanındaki ilk önemli dildir. Lisp, temel olarak verileri özgün bir yöntem olan bağlam listeleri kullanarak temsil eder. Simgelerle ifade edilen sembolik hesaplama yetenekleri sayesinde yapay zeka ve sembolik mantık için ideal bir dil olarak popülerlik kazanmıştır.

Lisp'in temel özellikleri:

  • Listeler:
    Lisp, bağlam listeleri adı verilen veri yapısını temel alır. Bu, basit elemanların listeler halinde bir araya gelerek karmaşık veri yapıları oluşturduğu anlamına gelir.
  • Sembolik Hesaplama:
    Lisp, sembolik ifadeleri ve semboller arasındaki matematiksel ve mantıksal işlemleri kolayca işleyebilir. Bu özellik, lisp'i yapay zeka ve sembolik mantık problemlerinin çözümünde etkili kılar.
  • Makro Sistem:
    Lisp, meta programlama için güçlü bir makro sistemi sunar. Bu, yeni dil yapıları oluşturmak ve programları genişletmek için kullanılabilir. Makrolar, Lisp kodu üretmek için kullanılır ve programcılara yeni dil yapıları ekleyerek kod tekrarını azaltmaya yardımcı olur.
  • Rekürsif:
    Lisp, rekürsif(özyinelemeli) fonksiyonları destekleyen ilk programlama dillerinden biridir. Rekürsif(kendini çağıran) fonksiyonlar, bir problemi daha küçük alt problemlere bölmek ve çözmek için fonksiyonun kendi kendini çağırmasını sağlar.
  • Çöp toplama (Garbage Collection):
    Lisp, otomatik hafıza yönetimine sahip bir dil olarak, programcının bellek yönetimiyle uğraşmasını gerektirmez. Garbage collection, program tarafından ayrılan ancak artık ihtiyaç duyulmayan belleğe çöp denir . Çöp toplama, Lisp'te manuel bellek yönetimini basitleştirmek için 1959 civarında Amerikalı bilgisayar bilimcisi John McCarthy tarafından icat edildi. Çöp toplama, bir programın toplam işlem süresinin önemli bir bölümünü alabilir ve sonuç olarak performansı etkileyebilir.

Lisp, yapay zeka alanında önemli bir rol oynamış ve hala bazı uzman sistemler ve doğal dil işleme uygulamalarında kullanılmaktadır.

AutoLISP nedir?

AutoLISP, Autodesk firması tarafından geliştirilen AutoCAD yazılımında kullanılmak üzere özelleştirme ve otomasyon için oluşturulan bir LISP türevidir. AutoCAD, mimarlar, mühendisler ve tasarımcılar tarafından kullanılan bir bilgisayar destekli tasarım (CAD) programıdır. AutoLISP, AutoCAD'deki çeşitli görevleri otomatikleştirmek ve kullanıcıya özel komutlar ve işlevler eklemek için kullanılır.

AutoLISP, standart Lisp diline benzer bir sözdizimine sahiptir ancak AutoCAD'a özgü komutları ve işlevleri de içerir. AutoLISP, AutoCAD çizimlerini okuma, yazma ve düzenleme işlemlerini yapmak için kullanılabilir. AutoLISP, CAD projelerini hızlandırmak, tekrarlayan görevleri azaltmak ve kullanıcıların ihtiyaçlarına özelleştirilmiş çözümler sunmak için yaygın olarak kullanılır.

VisualLISP nedir?

VisualLISP, AutoLISP'in bir uzantısıdır ve AutoCAD yazılımında görsel programlama araçları sunar. VisualLISP, AutoCAD'de kullanıcı arayüzüne, diyalog kutularına ve grafik nesnelere erişim sağlar. Bu sayede, kullanıcı dostu arayüzlere sahip eklentiler oluşturmak ve karmaşık görevleri daha kolay gerçekleştirmek mümkün olur. Bu, AutoCAD çizimlerini yönetmek için daha güçlü ve karmaşık uygulamalar geliştirmeyi mümkün kılar.

AutoCAD'in içerisine entegre edilmiş olan VisualLISP Editor, AutoLISP kodlarının yazılması, düzenlenmesi, çalıştırılması, derlenmesi ve hata ayıklanması için gelişmiş bir ortam sağlar.

AutoCAD 2021 sürümünden itibaren varsayılan Visual Lisp editörü Visual Studio Code uygulamasıdır.

VisualLISP Editor'ü kullanmak için LISPSYS sistem değişkeni değeri 0 yapılıp AutoCAD yeniden başlatılmalı.
Sonrasında komut satırından VLIDE veya VLISP girilerek VisualLISP Editor çalıştırılır.

14 Temmuz 2023 Cuma

AutoLisp ile nesne uzunluğunu nesne üzerine yazma

AutoCAD kullanıcıları çizimlerde nesnelerin uzunluğunu sıklıkla hesaplama durumunda kalır. Bu işlemi manuel olarak yapmak zaman alıcı ve hata yapmaya açık olabilir. Neyse ki, AutoLISP programlama dili ile bu sürec otomatikleştirilebilir.

Aşağıdaki AutoLisp kodları, AutoCAD'de bir nesnenin uzunluğunu hesaplayıp ve sonucu bir metin nesnesi olarak çizimim üzerine ekler.

Bu kod parçacığı, kullanıcının seçtiği geçerli bir nesnenin uzunluğunu hesaplar ve bu uzunluğu bir metin nesnesi olarak çizime ekler.

; Nesne uzuluğu, nesne üzerinde bir konuma eklenir
; Seçilebilecek geçerli nesneler:
; LINE, POLYLINE, LWPOLYLINE, ARC, CIRCLE, ELLIPSE, SPLINE

; AutoCAD komut satırından UY ya da UZUNLUKYAZ
; girilerek çalıştırılır.

; Düzenleme: Mesut Akcan
; makcan@gmail.com
; mesutakcan.blogspot.com
; 14/07/2023

(vl-load-com)
(defun c:UY()
	(c:UZUNLUKYAZ)
)
(defun c:UZUNLUKYAZ( / aci bpt cb2 cercevegenisligi
										cerceveyuksekligi cpt ent gr mpt
										pib2 pt1 pt2 pt3 pt4 spt tpt
										uzunluk yazicerceve) 
	(if (and
		; Kullanıcıdan nesne seçimi alınır ve ent değişkenine atanır
		; Nesne seçiliyse
		(setq ent (car (entsel "\nUzunluğu alınacak nesne: ")))
		; VE
		; seçili nesne
		; LINE, POLYLINE, LWPOLYLINE, ARC,
		; CIRCLE, ELLIPSE, SPLINE ise
		(member (cdr (assoc 0 (entget ent)))
				'("LINE" "POLYLINE" "LWPOLYLINE"
				  "ARC" "CIRCLE" "ELLIPSE" "SPLINE"))
		)
		(progn
			(setq
				; Seçilen nesnenin uzunluğu hesaplanır ve uzunluk değişkenine atanır
				uzunluk (rtos (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))) 
				; Metin nesnesini ölçer ve metni çevreleyen çerçevenin köşegen koordinatlarını
				; yaziCerceve değişkenine atanır
				yaziCerceve (textbox (list (cons 1 uzunluk) (cons 40 (getvar "TEXTSIZE"))))
				; Yazı çerçevesi yüksekliği hesaplanır ve cerceveYuksekligi değişkenine atanır
				cerceveYuksekligi (- (cadadr yaziCerceve) (cadar yaziCerceve))
				; Yazı çerçevesi genişliği hesaplanır ve cerceveGenisligi değişkenine atanır
				cerceveGenisligi (- (caadr yaziCerceve) (caar yaziCerceve))
			) 
			(princ "\nYazı konumu") 
			; Kullanıcıdan nokta seçimi istenir
			(while (eq 5 (car (setq gr (grread t 5 0)))) 
				(redraw)
				; Seçilen noktanın bir liste olduğu kontrol edilir. Eğer nokta ise
				(if (listp (setq sPt (cadr gr))) 
					(progn
						(setq
							; Seçilen noktaya en yakın nokta
							cPt (vlax-curve-getClosestPointto ent sPt)
							; İki nokta arasındaki açı
							aci (angle cPt sPt)
							; Başlangıç noktası
							bPt (polar cPt aci (/ (getvar "TEXTSIZE") 2.))
							; Bitiş noktası
							tPt (polar bPt aci cerceveYuksekligi)
							; Orta nokta
							mPt (polar bPt aci (/ cerceveYuksekligi 2.))
							pib2 (/ pi 2.) ; pi/2
							cb2 (/ cerceveGenisligi 2.) ; cerceveGenisligi/2
							; Köşe noktaları
							pt1 (polar bPt (+ aci pib2) cb2)
							pt2 (polar bPt (- aci pib2) cb2)
							pt3 (polar tPt (+ aci pib2) cb2)
							pt4 (polar tPt (- aci pib2) cb2)
						)
						; İşaretleyici vektörler çizilir
						(grvecs (list -3 pt1 pt2 pt3 pt4 pt1 pt3 pt2 pt4))
					)
				)
			)
			(if (eq 3 (car gr)) ; Konum belirlendiyse. Fare ile tıklama 
				(progn
					; açı= açı - 90°
					(setq aci (- aci (/ pi 2.)))
					(cond
						; açı 90 - 180 arası ise açı = açı - 180°
						((and (> aci (/ pi 2.)) (<= aci pi)) (setq aci (- aci pi)))
						; açı 180 - 270 arası ise açı = açı + 180°
						((and (> aci pi) (<= aci (* 1.5 pi))) (setq aci (+ aci pi)))
					)
				  ; Yazı oluşturulur ve çizime eklenir
					(YaziYaz mPt uzunluk aci)
					)
			 )
		)
		; Geçersiz bir nesne seçildiyse
		(princ "\nGeçersiz nesne seçildi !")
	)
	(redraw) ; Çizimi yenile
	(princ)
)

(defun YaziYaz (konum yaziMetni yaziAcisi)
	(entmake
		(list
			(cons 0 "TEXT") ; Nesne türü (Text)
			(cons 8 (getvar "CLAYER")) ; Katman adı
			(cons 62 2) ; Renk indeksi. 2=Sarı renk
			(cons 10 konum) ; Yazı konumu (nokta)
			(cons 40 (getvar "TEXTSIZE")) ; Yazı boyutu
			(cons 1 yaziMetni) ; Yazı içeriği
			(cons 50 yaziAcisi) ; Yazı döndürme açısı
			(cons 7 (getvar "TEXTSTYLE")) ; Yazı stili
			(cons 71 0) ; 71: İç hizalama (0: Sol)
			(cons 72 1) ; 72: Dış hizalama (1: Alt)
			(cons 73 2) ; 73: Hizalama tipi (2: Ortala)
			(cons 11 konum) ; 11: İkinci nokta (hizalama için kullanılır)
		)
	)
)

İşleyişi:

  1. Kullanıcıdan bir nesne seçimi alınır ve seçilen nesne doğruluk kontrolü yapılır.
  2. Eğer seçilen nesne geçerli bir nesne ise, uzunluğu hesaplanır ve bir metin nesnesi oluşturulur.
  3. Metin nesnesinin konumu kullanıcıdan alınır.
  4. Metin nesnesi çizime eklenir ve kullanıcıya sonuç gösterilir.

Kullanımı:

Kodları kopyalayıp uzunlukyaz.lsp adında metin dosyasına ekleyip kaydediniz.

12 Eylül 2022 Pazartesi

Autolisp ile sıralı numara yazdır

Bu AutoLisp dosya AutoCAD'de sıralı numara yazar. Numara etrafına daire çizer.
Artan/Azalan ve başlangıç sayısı seçenekleri vardır.

Github Proje Sayfası:

Yükleme:

Uygulamayı yüklemek için;

  • APPLOAD komutunu verin
  • numbering.lsp dosyasını seçip LOAD butonunu tıklayın.

Çalıştırma:

  • AutoCAD komut satırında NY yazıp Entere basın.
  • Komut parametrelerini girin ve numara yazılacak konumları belirleyin.

Artış değeri olarak negatif değer verirseniz numaralar azalarak değişir.

7 Ağustos 2022 Pazar

AutoCAD İzometrik Çizim ve Ölçülendirme Programı: ISOTOOLS v1

ISOTOOLS v1.0.220807
Mesut Akcan
07/08/2022

AÇIKLAMA

AutoCAD Visual Lisp ile yazılıp derlenmiştir. AutoCAD 2012 ve üzerinde çalışır. AutoCAD 2022'de denenmiştir.


Bu yardımcı program AutoCAD programında izometrik perspektif çizimi ve ölçülendirmesinde kullanılır.

23 Temmuz 2022 Cumartesi

AutoCAD İzometrik Ölçülendirme Programı: ISODIM v2

ISODIM v2.0.220723
Mesut Akcan
23/07/2022

 

AÇIKLAMA

AutoCAD 2012 ve üzerinde çalışır. AutoCAD 2022'de denenmiştir.

Bu yardımcı program AutoCAD programında izometrik perspektif çizimi ölçülendirmede kullanılır.
Ok uçlarının ve yazıtipinin eğimi ölçülendirme yüzeyi ile uyumlandırılır.
Yapılan ölçülendirmeler "isoDim-Ölçü " adlı katmana aktarılır.

11 Mayıs 2022 Çarşamba

AutoCAD İzometrik Ölçülendirme Programı: ISODIM v1

ISODIM v1.0.220511
Mesut Akcan
11/05/2022

 

AutoCAD 2012 ve üzerinde çalışır. AutoCAD 2022'de denenmiştir.

Bu yardımcı program AutoCAD programında izometrik perspektif çizimi ölçülendirmede kullanılır.
Ok uçlarının ve yazıtipinin eğimi ölçülendirme yüzeyi ile uyumlandırılır.
Yapılan ölçülendirmeler "isoDim-Ölçü " adlı katmana aktarılır.

Katman özelliklerini değiştirmek isterseniz(zorunlu değil);
LAYER komutu / isoDim-Ölçü katmanı seçilir / özellikler değiştirilebilir.

Ölçü boyutlarını değiştirmek isterseniz(zorunlu değil);
DIMSTYLE komutu / "isoDim-St1" veya "isoDim-St2" ölçü stili seçilir / Modify / Fit / Use overall scale of: değeri değiştirilebilir.

Yazıtipini değiştirmek isterseniz(zorunlu değil);
STYLE komutu / "isoDim-St1" veya "isoDim-St2" yazı stili seçilir / özellikleri değiştirilebilir.

İNDİR:

ISODIM.rar 4.23 Mb

YÜKLEME:

İndirilen ISODIM.rar dosyasını bir klasöre açın.

Yükleme yöntemleri:
1) Basit yükleme:
ISODIM.VLX dosyasını sürükleyip AutoCAD çizim alanına bırakınız.
Bu yöntemle sadece sürüklenen dosyada ISODIM komutu kullanılabilir.
Yeni veya farklı dosyalarda ISODIM'i kullanmak için tekrar yüklenmesi gerekir.

2) APPLOAD komutu ile:
Komut satırından APPLOAD komutu verilir ya da
Ribbon araç çubuğundan Manage / Load Application 
ISODIM.VLX dosyası seçilir / Load / Close
Bu yöntemle sadece Appload komutunun çalıştırıldığı dosyada ISODIM komutu kullanılabilir.
AutoCAD veya dosya kapatıldığında ISODIM'in tekrar yüklenmesi gerekir.

3) Kalıcı yükleme:
APPLOAD / Contents / Add... / ISODIM.VLX dosyası seçilir / Close / Close
Artık yeni bir dosya açtığınızda veya AutoCAD kapatılıp açıldığında ISODIM komutu otomatik yüklenir ve kullanılabilir.

KULLANIMI:

Üstteki yükleme yöntemlerinden biri ile ISODIM.VLX uygulamasını yükleyin.
Komut satırından ISODIM komutunu girin.
İzometrik perspektif çizim üzerinde ölçülendirme yapın.

GARANTİ:

Programın hiçbir garantisi yoktur.
Olabilecek istenmeyen durumlarda kullanıcı sorumludur.

ÜCRET:

Bu uygulama ücretsizdir. Parayla satılmaz.
Yazılımcıyı desteklemek isterseniz iletişime geçiniz.

İLETİŞİM:

Mesut Akcan

İlgili videolar:

6 Ocak 2022 Perşembe

AutoLisp ile programlama: Orijine zumla

Yayınlama: 20/11/2010
Güncelleme: 6/1/2022

Belli bir düzende sıralı tekrar ettiğimiz Autocad komutlarını bir komutla tekrar yürütmek için Autocad içinde bulunan Lisp dilini kullanabiliriz. Lisp'e alternatif olarak Microsoft Office programlarında bulunan VBA'da (Visual basic makro dili) kullanılabilir ama Lisp daha yaygın olarak kullanılmaktadır.

Lisp ile AutoCAD programına yeni kullanışlı komutlar ekleme imkanına sahip oluruz. Bazı firmalar AutoCAD altında çalışan Lisp ile kodlanmış büyük kullanışlı programlar üretip satmaktadır.

Ayrıca internette bedava Lisp kodlarını da bulabilirsiniz.

Lisp Nedir?

LISP, List Processing (Liste işleme) kelimelerinin kısaltılmış halidir. John McCarthy'in icat ettiği eski ve güçlü programlama dillerinden biridir. Yapay zeka çalışmalarında kullanılır.

AutoLisp Nedir?

Lisp programlama dilinden türetilmiş bir makro dili olup, AutoCAD yazılımında kullanılmak üzere uyarlanmış ve geliştirilmiştir. AutoLisp ile kullanıcının AutoCAD'e yeni komutlar eklemesi ile daha verimli ve etkin kullanması sağlanmıştır.

AutoLisp ile AutoCAD'in hemen hemen tüm özelliklerine müdahale edilebilir, AutoCAD'in tüm komutları kullanılabilir. Hesaba dayalı otomatik çizimler oluşturulabilir, mevcut çizimler değiştirilebilir, dosyalar ile çalışılabilir, AutoCAD'in tüm sistem değişkenlerinde değişiklik yapabilir.

Visual LISP Nedir?

Visual LISP, AutoLISP programlama dilinin bir uzantısıdır. Visual LISP, AutoCAD'de yerleşik olarak kendi geliştirme ortamına sahiptir. İlk olarak 1997'de AutoCAD Sürüm 14 için ücretli bir eklenti olarak tanıtıldı, ancak Mart 1999'da AutoCAD 2000'e dahil edildi.

AutoLISP programlama dili tek başına da çok güçlüdür, ancak Visual LISP kullanarak AutoLISP ile çok daha fazlası yapılabilir. Visual LISP, Windows işletim sisteminin bölümlerine ve AutoLISP'in normalde erişemediği AutoCAD uygulamasına erişmenizi sağlar.

AutoLisp dosyaları salt metin editörleriyle (örneğin notepad) düzenlenebilse de AutoCAD içinde bulunan Visual LISP for AutoCAD ile düzenlenmesi daha kolay ve kullanışlı olacaktır. AutoLisp dosya uzantısı .lsp olmalıdır.

AutoLisp ile Programlama Nasıl Yapılır?

AutoCAD açık iken menüden Tools/AutoLisp/Visual Lisp Editor tıklayın.

12 Mart 2020 Perşembe

AutoCAD ile VBA makro kullanımı #5-4

Autocad VBA Makro Kodlarını Çalıştırma Yöntemleri:


6) Lisp ile AutoCAD komutu oluşturarak makro çalıştırma

AutoCAD'de programlama için kullanılan dillerden biri de LISP'dir. Lisp hakkında başlangıç seviyesinde bir yazımı okumak için: AutoLisp ile programlama: Orijine zumla

Autocad'de LISP kodlamak için AutoCAD ile birlikte kurulan Visual Lisp for AutoCAD kullanılabilir ancak "Lisp ile AutoCAD komutu oluşturarak makro çalıştırma" için bunu kullanmayacağım. LISP kodları yazmak için Visual LISP şart değildir. Herhangi bir metin editörü kullanılabilir.

VBA makro kodlarının çalıştırılması için VBA içinde AutoCAD komut tanımlaması yoktur. LISP'de ise LISP komutlarını çalıştıracak AutoCAD komut tanımlaması yapılabiliyor.
LISP'in bu özelliğinden faydalanarak oluşturduğumuz VBA makrolara AutoCAD komutu tanımlayacağız.
İşlem çok basittir. Bu iş için LISP dillinde kodlamayı bilmek şart değildir.
Eksen Çiz VBA makromuz için LISP ile bir AutoCAD komutu oluşturacağız.

Bunun için;
Bir metin editörü(Örneğin Windows Not Defteri = notepad.exe, ya da Notepad++) açıp aşağıdaki kodları ekleyin.
(defun c:EC()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!EksenCiz")
(princ)
)
Dosyayı EksenCiz.lsp olarak kaydedin. Windows'da dosya uzantılarınız gizli ise ayarlardan görünür yapın.


LISP kodlarındaki c:EC() Autocad komut satırından girilecek komut adıdır(EC), alt satır ise bu komut girildiğinde buna karşılık gelen komutu ve parametresini belirtir.

EC yerine başka bir ad verilebilir. EKSENCIZ gibi.
Lisp dosyayı AutoCAD'e yüklemek için bir kaç yol var ancak burada en basit olanı göstereceğim.
Masaüstüne kaydettiğimiz EksenCiz.lsp dosyasını sürükleyip AutoCAD çizim alanına bırakın.
VBA makroları yüklerken olduğu gibi bir güvenlik uyarısı gelecek. Burda Load Once tıklayın.
Bir dahakinde sormasını istemiyorsanız Always Load tıklayın.

Artık komut satırından EC girilerek Eksen Çiz VBA makrosu çalıştırılabilir.
İlk çalıştırmada VBA makro yüklü değilse dosyayı belleğe yükleyeceği için üstteki gibi güvenlik uyarısı çıkabilir. Load Once tıklayın.
Eğer birden fazla VBA makro kodu varsa bunlara ayrı ayrı lsp dosya oluşturmak şart değildir.
Bir lsp dosyada tüm VBA makro kodları için ayrı ayrı AutoCAD komutu tanımlanabilir.

Aşağıdaki gibi:
(defun c:EC()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!EksenCiz")
(princ)
)

(defun c:DIKDORTGEN()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!Dikdortgen")
(princ)
)

(defun c:SLOT()
(command "_.-VBARUN" "C:/Users/Mesut/Desktop/Makrolarim.dvb!Slot")
(princ)
)

16 Ocak 2015 Cuma

Türk Bayrağı çizen AutoLisp

AutoCAD'de verilen bayrak en'ine uygun Türk Bayrağı çizen AutoLisp kodları.
Kodları AutoCAD'e yüklemek için APPLOAD koutunu kullanın.
Açılan pencerede lisp dosyasını seçin LOAD tıklayın.
Komut satırından TC komutu ile Türk Bayrağı çizilir.
AutoLisp hakkında detaylı bilgi için AutoLisp ile programlama: Orijine zumla sayfama bakınız.

Lisp dosyası: turk_bayragi.lsp 3.45 KB


Kaynak kodları:

25 Kasım 2013 Pazartesi

AutoLisp ile izometrik çokgen çizimi

AutoCAD'de ISOPOLY komutu ile izometrik çokgeni kolaylıkla çizebilirsiniz. Normalde bu komut AutoCAD'de yok.
Komutun çalışması için Lee Mac adlı programcının hazırladığı lisp programından faydalanabiliriz.

IsoPoly Lisp kodlarını indirmek için Bağlantı
IsoPoly Lisp kodları web sayfasında görmek için Bağlantı