Son makalemizde, AutoLISP’te nesne seçimleri ile nasıl çalışacağımızı öğrenmiştik.
Bu öğreticimizde, AutoLISP’te seçim filtrelerini “filters” kullanarak konumuzu derinleştireceğiz. AutoLISP’te filtreleri “filters” kullanmak AutoCAD’de filtreleri “filters” kullanmak kadar kolaydır.
Seçmek istediğimiz nesne tiplerini tanımlayabiliriz. Seçmek istediğimiz nesnelerin sahip olmasını istediğimiz özellikleri tanımlayabiliriz.
Örneğin, çizimimizdeki tüm ölçüleri seçen ve bunları açıklama isimli tabakaya “layer” taşıyan bir program yazabiliriz. Bu öğreticide, bu programı yaratacağız.
Bu program muhtemelen çok basit bir program olacaktır; fakat çizim standartlarınızı sağlamada sizlere faydalı olacağını düşünüyorum.
Daha önceki öğreticilerimizde öğrendiğimiz gibi aşağıdaki kodu kullanarak çizimimizdeki tüm nesneleri seçebiliriz:
(setq sel1 (ssget “x”))
Nesne Filtresi Filter”
Çizimimizdeki ölçüleri “dimensions” seçmek istediğimiz için, aşağıdaki kodu kullanarak seçimimizi filtreleyebiliriz:
(setq sel1 (ssget “x” ‘((0 . “DIMENSION”))))
Kodumuzun tam hali aşağıdaki gibi olacaktır:
(defun c:dimla (/ sel1 CLAYER )
(setq sel1 (ssget “X” ‘((0 . “DIMENSION”)))) ; tüm ölçüleri “dimension” seçer.
(setq OLDLAYER (getvar “CLAYER”)) ;o anki geçerli (aktif) tabakayı “layer” elde eder.
(command “_layer” “m” “ÖLÇÜ” “”) ;ÖLÇÜ isimli yeni bir tabaka “layer” yaratır.
(setvar “CLAYER” OLDLAYER) ;o anki geçerli (aktif) tabakayı ilk haline getirir.
(command “CHPROP” sel1 “” ; çizimdeki ölçülerin “dimensions” tabakasını ÖLÇÜ isimli tabaka olarak değiştirir.
“”)
);END PROGRAM
Bu basit kod ile çiziminiz içerisindeki tüm ölçüleri “dimensions” bulup istediğiniz tabakaya “layer” taşıyabilirsiniz. Faydalı değil mi?
DXF Kodları
Bu konu ile ilgili bilmeniz gereken bir şey de DXF kodlarıdır.
Kodumuz içerisinde geçen (0 . “DIMENSION”) ifadesi bize seçimimizi nesne tipine göre tanımlama olanağı vermektedir. Buradaki 0 DXF kodu olup; sadece ölçü “dimension” nesnelerini seçmemize izin vermektedir.
(8 . “DIMENSION”) ifadesi bize seçimimizi nesne tabakasına “layer” göre tanımlama olanağı vermektedir. Buradaki 8 DXF kodu olup; sadece dimension isimli tabaka “layer” üzerindeki nesneleri seçmemize izin vermektedir.
DXF kodlarını AutoLISP’te seçim filtreleriyle birlikte kullanırız.
DXF kodlarının tam listesi aşağıda olup; bu kodların anlamlarını açıklamayı başka bir makaleme bırakıyorum.
Grup Kodu | Tanımı |
-5 | UYGLM “APP”: kalıcı reaktör zinciri |
-4 | UYGLM “APP”: (sadece ssget fonksiyonuyla kullanılan) şart işlemcisi ”operatör” |
-3 | UYGLM “APP”: genişletilmiş veri (XDATA) sentinel sabiti |
-2 | UYGLM “APP”: varlık adı referans sabiti |
-1 | UYGLM “APP”: varlık adı. Bu değer her çizim açıldığında değişir. Hiçbir zaman kaydedilmez. |
0 | Varlık tipini gösteren metin dizgesi (sabit) |
1 | Bir varlık için birincil metin değeri |
2 | İsim (öznitelik “attribute” etiketi, blok ismi v. b. g.) |
3-4 | Diğer yazı veya isim değerleri |
5 | Varlık tutamacı. 16 hegzadesimal basamağa kadar olabilen metin dizgesi (sabit) |
6 | Çizgi tipi “Linetype” ismi (sabit) |
7 | Yazı stili “Text style” ismi (sabit) |
8 | Tabaka “Layer” ismi (sabit) |
9 | DXF: değişken adı tanımlayıcısı (sadece DXF dosyasının Başlık “Header” kısmında kullanılır). |
10 | Birincil nokta. Bu bir çizginin veya yazının başlangıç noktası, çemberin merkezidir. DXF: Birincil noktanın X değeri UYGLM “APP”: 3B “3D” nokta |
11-18 | Diğer noktalar. DXF: Diğer noktaların X değeri UYGLM “APP”: 3B “3D” nokta |
20, 30 | DXF: Birincil noktanın Y ve Z değerleri |
21-28, 31-37 | DXF: Diğer noktaların Y ve Z değerleri |
38 | DXF: Şayet sıfır değilse, varlığın yüksekliği. Sadece AutoCAD 11 sürümünden önceki AutoCAD çıktılarında mevcuttur. |
39 | Şayet sıfır değilse, varlığın kalınlığı (sabit) |
40-48 | Kayan “Floating” nokta değerleri (yazı yüksekliği, ölçek faktörü v. b. g.) |
48 | Çizgi tipi ölçeği. Kayan-nokta “floating-point” skaler değeri. Ön tanımlı değer tüm varlık tipleri için tanımlanır. |
49 | Tekrarlayan kayan-nokta “floating-point” değeri. |
50-58 | Açılar (çıktı DXF dosyalarına derece, AutoLISP ve ARX uygulamalarında radyan cinsindendir). |
60 | Varlık görünürlüğü “visibility”. Tam sayıdır. Bir değer olmaması veya 0 görünürlüğü; 1 görünmezliği gösterir. |
62 | Renk “Color” numarası (sabit) |
66 | “Varlık izi” işareti (sabit) |
67 | (Model veya kağıt) olabilen Alan (sabit) |
68 | UYGLM “APP”: görüntü bakışının “viewport” açık veya kapalı oluşunu gösterir. |
69 | UYGLM “APP”: görüntü bakışı “viewport” belirleme numarası. |
70-78 | Tekrar eden sayım, işaret bitleri veya modlar gibi tam sayılar |
90-99 | 32-bit tam sayı değerleri |
100 | (türetilmiş sınıf ismi dizge olarak) alt sınıf veri işaretçileri |
102 | Control dizgesi |
105 | DIMVAR sembol tablo varlığı nesne tutamacı |
210 | Dışa çekme yönü (sabit). DXF: Dışa çekme yönünün X değeri UYGLM “APP”: 3B “3D” dışa çekme yönü vektörü |
220, 230 | DXF: Dışa çekme yönünün Y ve Z değerleri |
280-289 | 8-bit tam sayı değerleri |
300-309 | Gelişi güzel metin dizgeleri |
310-319 | Gelişi güzel ikili yığınlar. Gösterimleri 1004 grup kodu ile sınırlıdır. |
320-329 | Gelişi güzel nesne tutamaçları INSERT ve XREF işlemlerinde transfer edilmezler. |
330-339 | Soft-işaretçi tutamacı. Aynı çizim veya DXF dosyası içindeki gelişi güzel soft işaretçiler INSERT ve XREF işlemlerinde transfer edilirler. |
340-349 | Hard-işaretçi tutamacı. Aynı çizim veya DXF dosyası içindeki gelişi güzel hard işaretçiler INSERT ve XREF işlemlerinde transfer edilirler. |
350-359 | Soft-sahip tutamacı. Aynı çizim veya DXF dosyası içindeki başka nesnelere gelişi güzel soft sahiplik bağlantıları INSERT ve XREF işlemlerinde transfer edilirler. |
360-369 | Hard-sahip tutamacı. Aynı çizim veya DXF dosyası içindeki başka nesnelere gelişi güzel hard sahiplik bağlantıları INSERT ve XREF işlemlerinde transfer edilirler. |
999 | DXF: 999 grup kodu aşağıdaki satırın bir açıklama dizgesi olduğunu gösterir. DXFOUT komutu bir DXF çıktı dosyasında bu grupları desteklemez; fakat DXFIN komutu bu açıklamaları ihmal eder. Düzenlediğiniz bir DXF dosyası içerisine açıklamaları dahil etmek için, 999 nolu grup kodunu kullanabilirsiniz. |
1000 | Genişletilmiş veride (255 byte uzunluğa kadar) ASCII dizgesi |
1001 | Kayıtlı uygulama ismi genişletilmiş veri için (31 byte uzunluğa kadar) ASCII dizgesi |
1002 | Genişletilmiş veri kontrol dizgesi (“{” veya “}”). |
1003 | Genişletilmiş veri tabaka “layer” ismi |
1004 | Genişletilmiş veride (127 byte uzunluğa kadar) byte yığını |
1005 | Genişletilmiş veride varlık tutamacı. 16 hegzadesimal basamağa kadar metin dizgesi |
1010 | Genişletilmiş veride bir nokta DXF: X değeri UYGLM “APP”: 3B “3D” nokta |
1011 | Genişletilmiş veride bir 3B “3D” dünya alanı pozisyonu DXF: X değeri UYGLM “APP”: 3B “3D” nokta |
1012 | Genişletilmiş veride bir 3B ”3D” dünya alanı yer değiştirmesi DXF: X değeri UYGLM “APP”: 3B “3D” vektör |
1013 | Genişletilmiş veride bir 3B ”3D” dünya alanı yönü DXF: X değeri UYGLM “APP”: 3B “3D” vektör |
1020, 1030 | DXF: Bir noktanın Y ve Z değerleri |
1021, 1031 | DXF: Bir dünya alanı pozisyonunun Y ve Z değerleri |
1022, 1032 | DXF: Bir dünya alanı yer değiştirmesinin Y ve Z değerleri |
1023, 1033 | DXF: Bir dünya alanı yönünün Y ve Z değerleri |
1040 | Genişletilmiş veri kayan nokta “floating-point” değeri. |
1041 | Genişletilmiş veri mesafe değeri. |
1042 | Genişletilmiş veri ölçek faktörü. |
1070 | Genişletilmiş veri 16-bit uzunluğunda tam sayı. |
1071 | Genişletilmiş veri 32-bit uzunluğunda reel sayı. |