01.10.2012 10:10    

ProhibiT
Notpad ile boş bir dosya açıp,
Kod:

*1,25,OK
002,9,(0,1),(0,0),001,9,(0,-2),(2,1),(-2,1),(0,-2),(0,0),002,9,(2,1),(0,0),0
bu 2 satırı buradan kopyalayıp paste ettikten sonra, Ok.shp dosya adıyla c:\Program Files\AutoCAD XXXX\Support klasörüne kaydedin.
Dikkat!
- Windows 7 kullanıcısı iseniz AutoCAD klasörlerine yeterli erişim yetkiniz olduğundan emin olun.
- Dosyanızı kaydederken "Ok.shx.txt" değil, "ok.shx" adıyla kaydettiğinizden emin olun.

AutoCAD komut satırından,
Compile<┘ girip, ...\Support klasöründe oluşturduğunuz Ok.shp dosyasını bulup üzerine çift tıklayın. ...\Support klasöründe "Ok.shx" isimli dosya oluşturulacaktır.

Aşağıdaki 2 satırı kullandığınız Linetype Definition (-.Lin uzantılı) dosyanıza ekleyip kaydedin.
Kod:

*Oklu,Oklu Çizgi --->--->--->
A,15,[OK,Ok.shx,s=1.0],-2
"Oklu Çizgi" isimli çizgi tipiniz kullanıma hazır.

Ya da yeni bir Linetype Definition dosyası (-.Lin uzantılı) oluşturup gene bu 2 satırı oraya kopyalayıp kaydedin. Bu ikinci durumda Linetype ilgili dosyadan load edildikten sonra kullanılabilecektir.

Ok boyutları ve aralıklarını, LTSCALE veya Object LTSCALE özelliklerinden ayarlayabilirsiniz.
Boyut ve aralıklarda köklü değişiklikler yapmak için yukarıda verilen Shape Definition ve Linetype Definition değerlerini değiştirebilirsiniz.

ProhibiT (01.10.2012 13:40 GMT)

01.10.2012 11:48    

ehya
Şahin hocam,
dosyayı compile edemiyor. 2nci satırı hatalı buldu. Sorun ne olabilir?

01.10.2012 13:49    

ProhibiT
Mehmet hocam, bende buradaki şekliyle alınca problemsiz compile ediyor. Ancak, son satırdaki terminator olan 0'dan sonra bir enter bekliyor olabilir. Paste işleminden sonra bir enter girerek dosyayı sonlandırırsak, hatayı aşabiliriz sanıyorum. Dosyaları hazır vermek yerine tüm detayları adım adım verdim ki, örnek oluştursun, arkadaşlarımız kendi ihtiyaçlarına göre başka shape kullanan linetype'lar yapabilsinler diye düşünmüştüm. shape dosyasının compile edilmiş hali; 174410-ok.rar

01.10.2012 14:14    

ehya
Tamamdır hocam. 2nci satırdan sonra yeni bir satır daha oluşturulduğunda hata ortadan kalktı.
Elinize sağlık. Çok güzel bir uygulama olmuş. :yes

02.10.2012 17:06    

ProhibiT
Teşekkür ederim Mehmet hocam :) Aslında, ilgi duyan birileri çıkarsa diye, çok basit bir örnek koydum başlangıçta. Shape tanımlama ve kullanma kavramlarını açıklayarak devam etmek niyetindeydim. Görüldüğü gibi, kimsenin işine yaramıyormuş ki, ilgilenen olmamış. N'apalım, ilk günden sitede imzamı doğru atmışım diye düşünüyorum yalnızca :)

Bu arada bir detayı da hatırlatmadan geçmek olmaz. Ozel bir Shape (Ok.shx) dosyası kullandığı için burada oluşturulan LineType kullanılan çizimin yanında bu -.shx dosyası da gönderilmezse, başka bir bilgisayarda açılınca çizgi tipi doğru görünmeyecektir.

03.10.2012 07:50    

ehya
Hocam, bir önceki mesajımı yazarken shape dosyalarının nasıl hazırlandığı konusunda sizden bilgi isteyecektim. Hatta mesajı yazdım, daha sonra vaktinizi almamak için silip yeniden yazmıştım.. Böyle bir düşünceniz olduğunu bilseydim kesinlikle silmezdim :)

Daha önceden bazı kaynaklar bulmuştum ama sanırım anlatım tarzından olsa gerek pek birşey anlamamıştım. Diğer üyelerin istememesi konusunda birşey diyemem. Herkes araba kullanır ama arızalandığında tamirci çağırmak daha çok işlerine gelir.
Elinizde bununla ilgili döküman varsa isterim hocam :)

03.10.2012 10:03    

ProhibiT
Mehmet hocam, elimde herhangi bir doküman yok. Aslında bu ve benzeri konularda AutoCAD Help dışında bir dokümana da ihtiyacım olmadı hiç. Duvarlara çarparak edindiğim tecrübelerin ışığında, Help dosyalarında zaten bulunan kavramları daha kolay anlaşılabilir şekilde paylaşmaktı düşüncem. Sizce de uygunsa, yukarıda verdiğim örneği adım adım açıklayarak başlayıp, bu özelden genele detayları bu başlık altında paylaşmaya devam edelim derim. :)

03.10.2012 11:08    

ehya
Uygun olmaz mı hocam :)
Küçük bir örnek daha da açıklayıcı olur elbet.
Çok teşekkür ederim :yes

04.10.2012 21:44    

ProhibiT
Shape/Font Tanım Dosyaları (Shape/Font Description Files)

Kendi sembollerinizi ve fontlarınızı oluşturup derledikten (Compile ettikten) sonra çizimlerinizde kullanabilirsiniz. Shape'ler kullanımı block'lara çok benzeyen objelerdir. Derlenmiş Shape tanımları dosyasıdan LOAD komutuyla yükleyeceğiniz objeleri SHAPE komutuyla çiziminizin istenen yerlerinde belirleyeceğiniz ölçek ve açılarda yerleştirebilir, mevcut Shape objelerinizin konum, ölçek ve dönüş açılarını değiştirebilirsiniz.

AutoCAD SHP Fontları özel tipte Shape dosyalarıdır. Karakterler (harfler), Shape'lerle aynı yöntemle tanımlanırlar.

BLOCK'lar Shape'lere göre kullanımı ve uygulaması çok daha kolay olan, esnek objelerdir. Bununla birlikte Shape'ler AutoCAD tarafından çizim içinde kullanılması ve saklanması çok daha verimli objelerdir. Basit (sade) çizim parçaları çok sayıda kullanılacak ve hız daha önemliylse kullanıcı tanımlı Shape'ler çok daha verimlidir. Block tanımları drawing dosyası içinde yer alırken, shape tanımları, bağımsız bir SHX dosyasında yer aldıklarından, drawing dosyaları herhangi bir yolla transfer edilirken Shape tanım dosyaları da (SHX) drawing dosyası ile birlikte transfer edilmek zorundadır.

AutoCAD Shape ve Font dosyaları (SHX), Shape tanım dosyalarının (SHP) AutoCAD içinden derlenmesi (compile edilmesi) ile elde edilirler. Shape Tanım (Shape Description) dosyaları herhangi bir Text Editor (Notpad gibi) ile ASCII formatında oluşturulup değiştirilebilir.

Tanım dosyalarında her Shape veya (Font içindeki herhangi bir) Karakter tamamen aynı şakilde tanımlanır ve yazılırlar. Bu bakımdan Font ve Shape dosyalarının biribirinden hiç bir farkı yoktur. Dosya (SHP) font olarak kullanılmak üzere yazılıyorsa, en başta Font ile ilgili (font adı, türü, karakter boyutu, karakter kod tablosu,... gibi) tanımlarla başlar. Başlangıçta girilen bilgi doğrudan doğruya Shape tanımı ise bu dosyamız artık Font dosyası değil Shape dosyası olur.

Öncelikle bir konuyu netleştirmek zorundayız. Shape ve Font dosyaları, gerek (İlk tanımın farklı olması dışında) oluşturulmaları ve tanımlamaların şekli bakımından, gerekse Compile işleminden sonra elde edilen dosya türü (SHX) olmaları bakımından biri birinin aynıdır. İlk bakışta aynı görünen bu dosyaların AutoCAD ortamında kullanımları (Çağırılmaları) tamamen farklıdır. Font dosyaları bir Text Style ile ilişkilendirip, Text, DText, MText,... veya Attrib komutları ile doğrudan kullanılabilir. Shape tanım dosyaları ise önce yüklenip (Load edip) sonra da SHAPE komutu ile kullanılabilir. Hem Font dosyası hemde Shape dosyası, bir Line Type tanımı içinden doğrudan referans verilerek kullanılabilir. Bu konu başlığı altında Font dosyalarının ayrıntılarına girmeden Shape Tanım dosyaları ele alınacaktır.

Unutmayınız ki, kendi Shape tanımlarını oluşturabilmek çok güçlü ve değerli bir beceridir. Böyle bir beceriyi edinmek son derece karmaşık, dikkat ve sabır gerektiren bir iştir. (Bunu ben söylemiyorum, AutoDESK'in ifadesi aynen böyle)

AutoCAD Express Tools menüsünden MKSHAPE fonksiyonu kullanılarak, ekrandan seçilen objelerden Shape dosyaları (SHX) oluşturulabilir. Bu yöntemle oluşturulan dosyalar doğrudan SHX formatında olduklarından, kullanıcı için fonksiyonun sınırları içinde pek çok detayın karanlık kalacağı açıktır. Burada amaç, ilgi duyan ve ihtiyacı olan arkadaşlarımız için, kod yazarak Shape tanımlamanın tüm detaylarını açıklamaktır.

....devam edecek...

ProhibiT (04.12.2013 14:39 GMT)

04.10.2012 21:51    

ProhibiT
...

Shape tanım dosyasında her satır istenilen uzunlukta yazılabilir. Uzun satırlarda 128 karakterden sonrakiler Compile edilmezler. Compile işlemi sırasında boş satırlar ve noktalı virgülün sağındaki karakterler işleme alınmaz. Demek oluyor ki, noktalı virgül kullanarak Shape Tanım dosyasına açıklamalar yazılabilir.

Her bir Shape Tanımı bir başlık satırı ile bunu takip eden (en az) bir veya fazla satırdan oluşan tanımlamalardan oluşur. Tanımlamalar (Specification Bytes) biribirinden virgül ile ayrılmış nümerik (tamsayı) değerlerden oluşur ve 0 (sıfır) ile sonlandırılır.

*shapenumber,defbytes,shapename
specbyte1,specbyte2,specbyte3,...,0


shapenumber: 1 ile 258 arasında değişen (Unicode Font'larda 32768'e kadar olabilen), başında yıldız (asteriks) işareti olan Tamsayı. Unicode olmayan font dosyalarında 256, 257 ve 258 Derece işareti, artı/eksi işareti ve Çap işareti gibi sembolik tanımlamalar için kullanılır. Unicode fontlarda ise bu bölüm U+00B0, U+00B1 şeklinde Onaltı tabanlı (Hexadecimal) sayılar şeklinde kullanılır. Font dosyalarında shapenumber igili karakterin ASCII kod numarasıdır. Shape dosyalarında ilgili Shape e herhangi bir numara verilebilir.

defbytes: Shape'in tanımı için kullanılan Tanım bytle'larının (specbytes) sayısı. Tanımı sonlandırmak için kullanılacak 0 (sıfır) da sayılacaktır. Her bir Shape Tanımı için en çok 2000 byte kullanılabilir.

shapename: Tanımlanan Shape'e verilen ad. Shape Adı büyük harflerle yazılmalıdır. Küçük harf içeren Shape Adları gözardı edilirler ve genelde Font dosyalarında karakterin etiketi anlamında kullanılırlar.

specbyte: Shape Tanım byte'ı. Herbir tanım byte'ı, vektör uzunluğu, yönü ve doğrultusunu veya özel anlamı ifade eden bir sayısal (tamsayı) kod olarak yazılır. Tanım byte'ları Ondalık sayı veya Onaltı Tabanlı sayı olarak yazılabilir. Söz konusu kod sayısının ilk karakteri 0 (sıfır) ise, bundan sonra gelen 2 basamak Onaltı Tabanlı (Hexadecimal) sayı olarak okunacaktır.

...devam edecek...

05.10.2012 17:31    

ProhibiT
Vektör uzunlukları ve Yön kodları.

Shape Tanım Byte'larının en basiti olan vektör tanımı, Vektör Uzunluğunu birim cinsinden tanımlayan kod ve, vektörün Yön kodundan oluşur. Her bir Vektör Uzunluğu ve Yön kodu gurubu 3 karakterli bir diziden oluşur.

İlk karakter: 0 (sıfır) olmalıdır ki, AutoCAD takip eden 2 karakteri 16 Tabanlı (Hexadecimal) değer olarak algılasın.
İkinci karakter: Birim cinsinden Vektör uzunluğunun ifade eder. Vektör uzunluğu 1 ile F (15) aralığında geçerli 16 tabanlı sayı olmalıdır. Demek ki temel olarak en fazla 15 birim uzunluğunda vektör oluşturabiliyoruz. Bu sınırlama kafanızı çok meşgul etmesin, ileride özel kodlar bölümünde farklı uzunluklarda vektörlerin nasıl oluşturulacağını açıklayacağız.
Üçüncü karakter: vektörün yönünü belirler.

Aşağıdaki şekil Vektör Yön kodlarını göstermektedir.

Şekilde görülen tüm yönlerdeki vektörler aynı uzunluk tanımıyla çizilmişlerdir. Diyagonal vektörler (X ve Y eksenindeki izdüşümleri bakımından) en yakındaki Ortogonal vektörün ilgili X ve Y değerlerine çakışacak şekilde uzatılırlar. Bu uzatma olayı, AutoCAD'deki "snap to grid" olgusuna benzer bir mantıkla işler. Buradaki 16 yönde vektör oluşturulabilmesi kafanıza takılmasın, ileride özel kodlar bölümünde istenen her doğrultuda vektörler oluşturmayı hatta Yay ve Eğriler çizmeyi açıklayacağız.

Aşağıda örnek olarak (rastgele seçilmiş) 230 numaralı, DBOX isimli örnek shape tanımı verilmiştir.
Kod:

*230,6,DBOX
014,010,01C,018,012,0

Örnekteki tanım baytları verilen sıra ile uygulandığında 1 birim eninde, 1 birim yüksekliğinde, bir kutu ve bunun diyagonalinden oluşan şekil ortaya çıkar. Kodun işlemesini adım adım açıklarsak;
*230,6,DBOX-> Shape numarası 230, tanımda 6 byte kullıyoruz, shape adı DBOX
014-> 4 yönünde 1 birim.
010-> 0 yönünde 1 birim
018-> 8 yönünde 1 birim
012-> 2 yönünde 1 birim
0-> shape tanımı sonu.

Burada özellikle uyarmak istiyorum, tabanı ve yüksekliği 1 birim olan üçgenin hipotenüsü neden kök 2 değil de 1 oluyor diye zihninizde bir direnç varsa konunun devamına geçmeyin, yukarıda açıklananları tekrar okuyun. Programlama dillerine yeni bulaştığım yıllarda, A=A+B ifadesini bir türlü kabul edememiş, Nasıl olur? böyle eşitlik olmaz ki! diye zihnimdeki direnci kıramamıştım. Sonunda bu ifadede yazılan eşit işaretinin (=), eşitlik anlamında değil, atama (assignment) anlamında kullanıldığını keşfedene kadar huzur bulamamıştım. Burada da, kareyi çizdikten sonra, diyagonalinin nasıl 1 birim olduğuna kafa yormayın. Bunun yerine karenin bir köşesinden 1 birim uzunluğunda diyagonal bir vektör tanımladığımda bu vektör çaprazdaki köşeye kadar gidiyor şeklinde düşünmekte fayda var.

... devam edecek...

ProhibiT (04.12.2013 14:33 GMT)

18.10.2012 18:18    

ProhibiT
Tanım byte'larında yer alan özel kodlar ve anlamları.

000: Sahape tanımının sonunu ifade eder.

001: Çizim durumunu etkinleştirme (Kalemi indirme) Her Shape tanımının başında kod 1 girilerek çizim durumu etkinleştirilip belirlenen vektör(ler) çizilmiş olur.

002: Etkin çizim durumundan çıkma (Kalemi kaldırma) Kod 2 girilerek çizim durumu etkin durumdan çıkarılınca, belirlenen vektör çizilmeden yeni konuma gidilmiş olur.

003: Vektör uzunluklarını bir sonraki byte'a bölme.
004: Vektör uzunluklarını bir sonraki byte ile çarpma.

Kod 003 ve Kod 004'ü 1 byte uzunluğunda tamsayı ölçek faktörü (1'den 255'e kadar) takip eder. Ölçek faktörü (çarpım ya da bölüm) işlemi kümülatif (birikimli) dir. Yani 003,2 ve peşinden 003,6 girilirse, takip eden vektörler 2x6=12'de 1'i uzunlukta olacaklardır. Shape tanımlarında ve Text Fontlarında, özellikle alt shape kullanıldığında ölçek faktörü shape tanımının sonunda eski değerine döndürülmelidir. AutoCAD sizin adınıza ölçek faktörünü geri döndürmez.

005: O anda geçerli pozisyonu saklama.
006: Saklanan pozisyona geri dönme.

Kod 005 ile yalnızca 4 pozisyon saklanabilir. Yeni bir pozisyon saklanmadan önce saklanmış pozisyonlardan ihtiyaç duyulanlar Kod 006 ile alınmış olmalıdır. Aksi halde pozisyon yığını doluyken kod 005 kullanılarak yeni pozisyon kaydedildiğinde, compile işlemi sırasında bir hata ile karşılaşılmayacak fakat, tanımlanan Shape kullanılmaya çalışıldığında, nnn numaralı Shape tanımında Pozisyon yığın aşımı (Position stack overflow in shape nnn) hata mesajı alınacaktır. Kod 005 ile yığına alınan pozisyon(lar) kod 006 kullanılarak alındıklarında, pozisyon yığını boşaltılmış olacaktır. Benzer şekilde, Pozisyon yığınındaki geçerli kayıt sayısından fazla sayıda kod 006 uygulandığında, compile işlemi sırasında herhangi bir hata mesajı alınmayacak, tanımlanan Shape kullanılmaya çalışıldığında, aynı hata mesajı alınacaktır.

007: Bir sonraki byte ile verilen numaralı Shape'i çizer.

Unicode olmayan font dosyalarında kod 007'yi takip eden byte 1 ile 255 arasında (karakterin ASCII kodunu ifade eden) tamsayı bir Shape numarasıdır. Unicode font dosyalarında bu karakter numarası 1 ile 65535 arasında 2 byte ile ifade edilen bir tamsayıdır. Shape Tanım dosyalarında ise, aynı dosya içinde tanımlanan ve numarası verilen shape, alt-shape olarak çizilecektir. Kod 001 ve kod 002 ile tanımlanan çizim durumları, alt-shape sonunda eski hallerine döndürülmezler. Alt-Shape tamamlanınca geçerli shape tanımına dönülür. Alt-Shape kullanırken, çağırılan Alt-Shape içinde çizim durumu (kod 001 ve kod 002) Ölçek faktörü (kod 003 ve kod 004) değişikliklerinin Alt-Shape tamamlandığında eski durumuna dönmediğine dikkat etmelidir. Gerekiyorsa eski durumlarına döndürmek için gerekli byte'lar yazılmalıdır.

Normalde vektör tanımları önceden belirlenmiş (yukarıdaki şekilde verilen) 16 yönde ve en çok 15 birim uzunluğunda olabilirler. Bu durum shape tanımını çok sade ve verimli bir hale getirmekle birlikte, bazı durumlar için sınırlamalar getirilmiş olur. Kod 003 ve kod 004 kullanılarak 15 birim uzunluğundaki vektör uzunluğu sınırı aşılmış olur. Kod 008 ve kod 009 kullanılarak bahsedilen normal vektörler dışında, daha özgür ve sınırsız yön ve doğrultularda vektörler tanımlanabilir.

008: takip eden 2 byte ile X-Y yer değiştirmeleri belirlenir.

8,X-Yerdeğiştirmesi,Y-Yerdeğiştirmesi şeklinde yazılır. Buradaki X ve Y Yer değiştirmeleri -128 ile +127 arasında değişen tamsayılarla ifade edilirler. Negatif değerler için tamsayının başına - işareti konur, pozitif yer değiştirmelerde + işaretinin yazılması isteğe bağlıdır. Okunabilirliği ve takip edilebilirliği kolaylaştırmak için parantezler kullanılabilir.

8,(-10,3) örneğinde, 10 birim sola ve 3 birim yukarıya yerdeğiştirme tanımlanmış olur. Kod 008'i takip eden 2 byte tamamlandığında shape tanımı normal vektör moduna döner.

009: Bu kodu takip eden ve (0,0) ile sonlandırılan seri haldeki byte çiftleriyle belirlenen çoklu X-Y yer değiştirmeleri tanımlanır.

Kod 009 kullanarak standart olmayan vektörler serisi çizilebilir. Prensip olarak Kod 008'in çoklu uygulaması olarak düşünülebilir. Vektörler serisini tanımlayan X-Y yer değiştirme çiftleri herhangi bir sayıda olabilir. Kod 009 dan sonra gelen vektörler dizisi (0,0) yer değiştirme vektörüyle sonlandırılır.

9,(3,1),(3,2),(2,-3),(0,0) örnek kodu ile üç tane standart olmayan vektör çizilerek Normal Vektör durumuna dönülür. Kod 009 dan sonra gelen X-Y yer değiştirmeleri serisi (0,0) ile sonlandırılmalıdır. AutoCAD sonlandırma byte çiftini gördüğünde, takip eden byte'ların Normal Vektör veya Özel kod olduğunu anlayacaktır.

... devam edecek

18.10.2012 18:54    

ProhibiT
00A: Takip eden 2 byte ile berlirlen Octant Arc çizme. Octant Arc : Tam çemberin 8'de 1'i kadar Yay

Tanımdan da anlaşılacağı gibi, 45 derece ve katlarından birinden başlayıp, gene 45 derecelik ve katları kadar yay çizme işlemi. Aşağıdaki şekilde görüldüğü gibi, 1/8'lik adımlar, saat 3 yönünden başlayıp saatin tersi yönde ilerleyecek şekilde belirlenmiştir.


Arc tanımı; 10,radius, (-)OSC biçimindedir.
İlk tanım bayte'ı radius 1 ile 255 arasında bir tamsayıdır. İkinci tanım byte'ı çizilecek yayın yönünü (pozitif saatin tersi yönü, negatif değer saat yönünü belirler), başlangıç octant'ını (0'dan 7'ye kadar) ve yayın uzunluğunu (octant sayısı cinsinden) ifade eder. yay uzunluğu olrak 0 girilirse 8 octant alınır, bu da tam çember anlamına gelir. Okunabilirliği ve takip edilebilirliği artırmak için parantezler kullanılabilir.

...012,10,(1,-032),01E,... shape tanımı bölümünü örnek olarak ele alırsak;
Aşağıdaki şekilde görüldüğü gibi, sağa-yukarı bir birim uzunluğunda vektör, yarıçapı 1 birim, saat yönünde, 3 octant'ından başlayan, 2 octant devam eden yay, sağa-aşağı bir birim uzunluğunda vektör çizilmiş olur.


00B: Takip eden 5 byte ile belirlenen Yay Parçası çizme.

Kod 00B ile yay tanımlama özel kodlar arasında en karmaşık ve anlaşılması zor olanıdır.

11,start_offset,end_offset,high_radius,radius,(-)0SC şeklinde yazılır.
start_offset ve end_offset değerleri yayın başlangıç ve bitişinin octant sınırlarından ne kadar uzakta olduğunu belirler. high_radius, radius değerinin en anlamlı üst 8 bit'ini ifade eder, radius değeri 255 birimden büyük olmadıkça high_radius 0 dır. high_radius değeri 256 ile çarpılarak radius değerine eklenerek bulunan değere göre 255'ten büyük yarıçapa sahip yay çizilmiş olur. radius ve bitiş tanımlamaları (daha önce açıklanan) kod 00A ile octant Yay tanımlama ile aynıdır.

start_offset başlangıç octant'ından (45 derece ve katları) yay başlangıcının derece cinsinden farkı (mesafesi) dir. Bahsettiğimiz derece cinsinden fark 256 ile çarpılıp, 45'e bölünerek elde edilir. Eğer tanımlayacağımız yay tam olarak octant noktalarından birinden başlıyorsa, start_offset değeri 0 olacaktır. end_offset değeri de aynı mantıkla belirlenecektir. Yayın bitim noktasındaki octant sınırından aynı mantıkla hesaplanan derece cinsinden değer çıkarılarak elde edilir. Eğer yay bitimi tam olarak octant noktalarından biri ise end_offset 0 olacaktır.

Örneğin, 55 dereceden başlayan, 95 derecede biten, 3 birim yarıçapında bir yay tanımlamak için;
11,(56,28,0,3,012) şeklinde kodlanmalıdır. Kodlanan her değeri teker teker açıklarsak;
start_offset = 56-> ((55 - 45) * 256 / 45) = 56
end_offset = 28-> ((95 - 90) * 256 / 45) = 28
high_radius = 0 -> (radius < 255)
radius = 3
starting octant = 1-> Yay başlangıcı 45 derece ile sonraki octant (90 derece) arasındadır.
ending octant = 2-> Yay bitişi 90 derece octantı ile sonraki octant (135 derece) arasındadır.

... devam edecek

ProhibiT (04.12.2013 14:22 GMT)

18.10.2012 19:07    

ProhibiT
00C: X-Y yer değiştirmeleri ve Bombe değeri ile Yay tanımlama.

Daha önce açıklanan kod 008 ve kod 009 ile X-Y yer değiştirmelerinin tanımlanmasına çok benzer. Kod 00C ve kod 00D özel kodları kullanılarak X-Y yer değiştirmelerinin yanı sıra, yer değiştirme vektörünün bir fonksiyonu olarak bombe tanımlanır. 00C ile tek bir Yay parçası tanımlanırken, 00D ile (0,0) tanım byte'ı ile sonlandırılıncaya kadar çoklu yay tanımlanabilir.

Arc tanımlamak için 00C kodunu takip eden üç byte kullanılır: 00C,X yer değiştirmesi,Y yer değiştirmesi, bombe (bulg). Yay parçasını tanımlayan her üç parametre de -127 ile +127 aralığında birer tamsayıdır.

X-Y yer değiştirmeleri aşağıdaki şekilde görüldüğü gibi D ile ifade edilirse,
yayın orta noktasının D doğrusuna dik uzaklığıda H ise,
bombenin büyüklüğü ((2 * H / D) * 127) dir.

Yer değiştirmenin işareti negatif ise, geçerli konumdan saat yönünde dönülerek yeni konum belirlenir.

Yarım çember 127 (veya -127) bombe değerine sahip olduğuna göre, daha büyük yaylar bu kodlar kullanılarak biribirini takip eden yay tanımlarıyla oluşturulabilir.

Bombe değeri için 0 kullanımı geçerli bir yöntemdir ve bombesi 0 olan yay, düz çizgidir. (bu kavramı paylaştığım AutoLISP fonksiyonlarda kullanmış ve açıklamıştım.)

Kod 008 ile düz çizgi tanımlanabilirse de, çoklu yay tanımlarının arasında yer alan düz çizgi tanımı için 00D kodundan çıkmadan, fakat düz çizgi olacak bölümün bombesi 0 girilerek, biribirini takip eden çok sayıda yay ve düz çizgi kombinasyonu tanımlanabilir. 00D kodunu takip eden 3'lü guruplar halindeki yay tanımları (0,0) şeklinde 0 yerdeğiştirme tanımyla sonlandırılır. En son girilen 0 yer değiştirme değerinden sonra bombe (bulg) girilmez. Örneğin S harfi basitçe şu şekilde tanımlanabilir; 13,(0,5,127),(0,5,-127),(0,0)

Sıfır (0) bombeli yay tanımı çoklu yay tanımları arasındaki düz çizgilerin tanımlanmasında çok kullanışlıdır; Bu yöntem çoklu yay tanımından çıkıp, düz çizgi tanımladıktan sonra yeni bir çoklu yay tanımına girilmesine göre çok daha verimlidir. Yay parçası ve çoklu yay tanımları içinde -128 sayısı kullanılamaz.

00D: Yer değiştirmeler ve bombe değerleriyle tanımlı Çoklu Yay tanımı.

00E: Bu koddan sonra gelen kısım yalnızca Font dosyalarında ve Vertical Text için geçerlidir.

Karakter tanımlarında 00E özel kodu ile karşılaşıldığında takip eden kodlar Yazı doğrultusuna bağlı olarak işleme alınır veya işleme alınmadan geçilir. Yazı doğrultusu (Text orientation) dikey (vertical) ise bu kodlar işleme alınır, aksi halde işleme alınmaz, bir sonraki kod işleme alınarak devam edilir. Yatay yazılarda (Horizontal Text, yazı açısı ne olursa olsun) karakterin başlangıç noktası (okunabilme yönüne göre) sol alt köşe olarak alınır. Dikey yazılarda (Vertical Text) ise başlangıç noktası karakterin üst orta noktası kabul edilir. Her karakter tanımının sonunda, kalem kaldırılarak (kod 002) bir sonraki karakterin başlangıç noktasına gidilir. Bu harf aralığı gidişi Yatay Yazılarda Sağa doğru, Dikey Yazılarda Aşağı doğrudur.

00E (14) özel kodu, karakterin başlangıç ve bitiş noktalarını yazının Yatay yada Dikey olmasına bağlı olarak tanım içinde bir kerede tanımlamak için kullanılır. Böylelikle Yatay ve Dikey yazılar için ayrı ayrı karakter tanımlama gereği ortadan kaldırılmış olur.

Aşağıdaki örnek kod ve iki şekil ile büyük A harfi için hem Yatay hemde Dikey yazı için söz konusu başlangıç ve bitiş noktalarının tanımınlanması açıklanmıştır.
*041,27,uca
2,14,8,(-8,-21),1,8,(8,21),8,(8,-21),
2,8,(-13,7),1,0A0,2,8,(9,-7),14,
8,(-14,-10),0


... devam edecek.

ProhibiT (04.12.2013 14:24 GMT)

22.10.2012 19:20    

ProhibiT
Konunun hemen başında verdiğimiz üçgen şeklinde ok işareti Shape tanımını inceleyelim;
*1,19,OK
2,8,(0,1),1,9,(0,-2),(2,1),(-2,1),(0,0),2,8,(2,-1),0


*1,19,OK -> Shape numarası 1, 19 tane tanım baytı kullanılıyor, Shape adı, OK

Ok yönümüz soldan sağa doğru olacak, soldaki düşey kenarın ortası başlangıç noktamız, sağdaki köşe bitişimiz olsun.
1. vektör: 2,8,(0,1) -> Kod 2 ile kalemi kaldırıp, x yöünde 0, y yönünde 1 birim hareket edip, üst köşeye gidelim.
1,9, -> Kod 1 ile kalemi indirip (çizim modu aktif), kod 9 ile 3 doğru için vektör tanımılyoruz.
2. vektör: (0,-2), -> Yatayda 0 düşeyde -2 birim (aşağıya) ilerleyip üçgenin alt köşesine geliyoruz.
3. vektör: (2,1), -> Yatayda 2 birim sağa, düşeyde 1 birim yukarı ilerleyip üçgenin sağ köşesine geliyoruz.
4.vektör (-2,1), -> Yatayda -2 birim (sola), düşeyde 1 birim yukarı ilerleyip üçgenin üst köşesine geliyoruz.
(0,0), -> Kod 9 ile tanımladığımız vektörler serisini sonlandırdık.
5. vektör 2,8,(2,-1), -> Kalemi kaldırıp, kod 8 ile yatada 2 birim sağa, düşeyde -1 birim (aşağıya) gidip, bitiş noktasına geldik.
0 -> Tanımı sonlandırmak için 0 yazarak, Shape'imizi tamamladık.

Görüldüğü gibi, ilk örneğimizi yazarken 25 tanım byte'ı kullandığımız halde, burada aynı işlemi 19 tanım bayt'ı ile bitirdik.

ProhibiT (04.12.2013 14:25 GMT)

20.11.2014 20:49    

cronos10
autocad 2015'te acadiso.lin dosyasının kopyasını oluşturup, GAS çizgi stilini kendinize göre uyarlayabilirsiniz. aynı klasöre kaydetmek gerek. sonra autocad linetype -> load diyerek çizgi stilini çağırabiliyoruz. çok pratik bir yöntem değil ama ben böyle yaptım.

> 1 <
Copyright © 2004-2022 SQL: 2.367 saniye - Sorgu: 90 - Ortalama: 0.0263 saniye