22.06.2009 09:43    

ehya
seçilen blok ya da attribute farkı ile ilgili kodlama aşağıda.. bu kodlamayı inceleyebilirsin.
Diğer sorduğuna gelince 4 nolu dxf kodu ne anlama geliyor bilmiyorum. Anladığım kadarıyla bu seçilen bu attribute. Verilen bir değeri boş geçmişsin. Attribute olarak boş geçtiğin değer var ise onları kontrol et.

Kod:

(defun c:blokne ()
  (setq aa (car (entsel)))
  (setq tani (cdr (assoc 0 (entget aa))))
  (if (/= tani "INSERT")
    (progn
      (princ "\nHatalı seçim:")
    )
    (progn
      (if (= (cdr (assoc 66 (entget aa))) 1)
(alert "\n Seçilen nesne ATTRIBUTE")
(alert "\n Seçilen nesne BLOK")
      )
    )
  )
  (princ)
)

22.06.2009 09:51    

Harbi65
Ehya; teşekkür ederim de...
Bu çizimde seçtiğimiz bloğu kontrol ediyor..
Ben lisp içinde insert ettirmeden önce insert edeceği blok atribute mi değil mi kontrol ettirmek istiyorum...

22.06.2009 13:24    

ehya
herhangi bir çizimi insert etmeden nesne hakkında bilgi nasıl alacaksın..
önce insert edersin. daha sonra bilgisini alırsın.

22.06.2009 13:39    

Harbi65
Burda şunu düşünelim mesela...
Çizim dosyasında bulunan blokların listesini alabiliyoruz (kullanılan ya kullanılmayan)... bunları insert etmeden de attribute olup olmadığını öğrenebiliriz diye düşünüyorum...

22.06.2009 14:21    

ehya
tblsearch ile kontrol ettiğinde 70 kodunun değeri 2 ise bu attribute' dür. Eğer sıfır ise normal bloktur.
Bu arada sormuş olduğun 4 kodunun anlamı, Insert tablosunda blok için yazılan "Description"u ifade ediyor.

24.06.2009 09:13    

Harbi65
Lisp içinde Insert yaptırırken bloğu yerleştireceğimiz yeri göstermemizi istediği anda başka bir fonksiyona yönlendirilebilir mi?
Bu esnada Getkword kullanır gibi "D" girdiğimde değiştir fonksiyonuna gitsin mesela...

İnsert noktası önceden tariflemek istemiyorum...

24.06.2009 09:52    

ehya
Kod:

(initget "C")
  (setq dd (getpoint "\nReferans Nokta / Cıkış :"))
  (if (= dd "C")
    (alert "\nÇıkış yapıldı")
    (alert "\nNokta gösterildi")
  )

24.06.2009 10:00    

Harbi65
Bu şekilde yaparsak olmuyor. Dinamik bloğun Aligment Parametresinden yararlanamıyorum...
"İnsert noktası önceden tariflemek istemiyorum... " derken bunu kastettim...

(command "insert" blok (burda bi değer girersem başka fonksiyona gitsin istiyorum. girmezsem devam etsin..)

24.06.2009 10:35    

ehya
command fonksiyonu içine sadece komut işleyişini yazabilirsin. Farklı bir durum olacak ise, yukarıda verdiğim örneklemelerden yola çıkarak fonksiyon oluşturmalısın.

15.10.2009 15:19    

Harbi65
Mevcut dimstyle nasıl aktif yaparız?
(setvar "DIMSTYLE" "OLCU")
Bu şekilde sistem değişkeninde görünüyo ama aktif olmuyo...

15.10.2009 15:48    

ehya
değişken olarak bulamadım ancak aşağıdaki yöntemle yapabilirsin.

Kod:

(command "._dimstyle" "R" stil_adi)

15.10.2009 15:58    

Harbi65
Sağolasın Ehya...
Sistem değişkeni olarak nasıl yapabiliriz acaba bunu nasıl bulcaz...?

17.10.2009 21:08    

ProhibiT
Geçerli Dimension Style'ı belirleyen System değişkeni "dimstyle" read only system değişkenidir.
Doğrudan doğruya setvar komutu ile değerini değiştiremiyoruz :) Read Only sistem değişkenlerini ancak başka komutlarla kontrol edebiliyoruz... (setvar "DIMSTYLE" "OLCU") şeklindeki bir Lisp cümlesi nil verir...

Blok içinde attirute olup olmadığının kontrolüne gelince;
Attribute Sub Entity dir, doğrudan seçerek association list'ine ulaşılmaz. Ki; zaten insert edilmeden blok içinde attribute olup olmadığı kontrol edilmek isteniyor, anladığım kadar.

Basit bir örnek vermek gerekirse;
Kod:

(defun c:blokatr ()
  (setq slblk (car (entsel "\nKontrol etmek istediğiniz block objesini seçiniz...")))
  (if (= "INSERT" (cdr (assoc 0 (entget slblk))))
    (if (= "ATTRIBUTE" (assoc 0 (entget (entnext slblk))))
      (princ "\nSeçilen Block Attribute içeriyor.")
      (princ "\nSeçine Block içinde Attribute tanımı yok.")
    )
    (princ "\nSeçilen obje Block değil...")
  )
)

Burada çizim içinde insert edilmiş bir block'un attribute tanımı olup olmadığını kontrol ediyoruz.
Henüz insert edilmemiş block tanımı içinde attribute olup olmadığını kontrol etmek için de;
tblsearch, ile block lar bulunur, tblnext gibi komutlarla block tanımını bulduktan sonra, her block tanımı için entnext ile attribute olup olmadığı kontrol edilebilir...

Selamlar, Sevgiler, Herkese Kolay Gelsin...

ProhibiT (21.01.2010 13:29 GMT)

17.10.2009 21:56    

Harbi65
Alıntı
ProhibiT :
Geçerli Dimension Style'ı belirleyen System değişkeni "dimstyle" read only system değişkenidir.
Doğrudan doğruya setvar komutu ile değerini değiştiremiyoruz :) Read Only sistem değişkenlerini ancak başka komutlarla kontrol edebiliyoruz... (setvar "DIMSTYLE" "OLCU") şeklindeki bir Lisp cümlesi nil verir...



Hocam konularla ilgilendiğin için teşekkürler...
Read Only sistem değişkenlerini hangi komutlarla değiştirebileceğimize bi örnek verseniz makbule geçerdi... Sayenizde bişey daha öğrenirdik belki...:)

Blok attribute konusunu geçmiştik ama verdiğiniz bilgiler için yinede teşekkürler...
Ancak yukarıda Ehya'nın da bahsettiği gibi; çizim dosyası içinde bulun bir bloğu insert etmeden önce (70 . 2) grup koduyla kontrol edebiliyoruz... Bu sonuç yanlış mı diyorsunuz onu anlamadım?

(setq Blk (tblsearch "BLOCK" "blokadı"))
((0 . "BLOCK") (2 . "blokadı") (70 . 2) (4 . "") (10 0.0 0.0 0.0) (-2 . <Entity name: 7ed28460>))


-------------------------------------------------------------------------------------------------------------

Bu arada bugün dikkatimi çeken bişey daha sormak istiyorum...
normalde bir çizginin datasında (48. 2) gibi grup kodu yok... ama bunu eklersek Linetype scalesini kontrol edebiliyoruz... burda kafam karıştı... Bu Global Scale Factor ile orantılı mı çalışıyo...?

Bu sorunun cevabını keşfettim:)
Current Object Scale yi kontrol ediyormuş:)

Harbi65 (17.10.2009 22:14 GMT)

17.10.2009 22:46    

ProhibiT
Attribute konusuna sazanlama dalmışım anlaşılan, AutoLisp içinden Attribute'lere ulaşmak ve onları edit etmek, hatta dwg'den database'e ve database'den dwg'ye bilgi aktarımı konusunda epeyce uğraştığım için aşırı konsantrasyondan olmuştur affınıza mağruren :)

Read Only Sistem değişkenlerini değiştirme konusunda;
ehya'nın verdiği örnek (command "._dimstyle" "R" stil_adi) tipik bir örnek...
Doğrudan setvar ile set edemediğimiz dimstyle değişkenini dimstyle komutuyla set etmekti kasdettiğim...

48 Group Code: Linetype scale; double precision floating point scalar value; default value is defined for all entity types

Bilindiği gibi; Linetypescale komutu ile değişiklik yaptığımızda, dosya içindeki bütün objelerin çizgi tipi ölçekleri birden değişiyor. Yalnızca seçilmiş bir (ya da birden fazla) objenin çizgi tipi ölçeğini değiştirme işine yarıyor bu 48. Yalnız bir özellik var; eğer objenin kendi Çizgi Tipi Ölçeği 1 ise yani global scale e eşitse, entget ile objeyi aldığımızda 48 gurup kodu ve değeri görünmüyor...

Mesela change komutunu girip bir çizgiyi seçelim, daha sonra P (properties) ve S (scale) girerek objenin çizgi tipi ölçeğine bir değer verip ondan sonra entget ile aldığımızda 1 den farklı olan 48'in değeri görünecektir.

Şu anda aklıma gelmiyor ama, entget komutuyla elde ettiğimiz Association List'lerde default değere sahip pek çok grup kodu ve değeri görüntülenmiyor...

Selamlar, Sevgiler, Kolay Gelsin...

Bu sefer de, sorunun cevabını keşfettiğinizi geç görmüşüm :)) Bu aralar ben yazmasam daha iyi olacak herhalde :)))

17.10.2009 23:21    

Harbi65
(setq DA (strcat (substr D 7 2) "." (substr D 5 2) "." (substr D 1 4)))

Örneğin böyle bir satırı txt dosyasına nasıl yazdırırım?

18.10.2009 00:09    

ehya
Kod:

(setq DA (strcat (substr D 7 2) "." (substr D 5 2) "." (substr D 1 4)))
(setq a (open "c:\\deneme.txt" "w"))
(write-line da a)
(close a)

18.10.2009 00:14    

Harbi65
Ehya;
sanırım yanlış anlaşıldı... belki saçma ama ben örnek verdiğim o satırın kendisini (yani değişkende ki değeri değil) txt dosyasına yazdırmak istiyorum. onu örnek olarak verdim...

18.10.2009 11:33    

oden
Saçma değil :yes :D


Kodu resim olarak göndermek zorunda kaldım. Maalesef içeriğini "code" tagı içinde vermeye kalktığımda asıl can alıcı bölüm bir türlü görünmedi...

18.10.2009 15:25    

ProhibiT
Kod:

(defun yazdir ()
  (setq yazi  "(setq DA (strcat (substr D 7 2) \".\" (substr D 5 2) \".\" (substr D 1 4)))")
  (setq dosya (open "deneme.txt" "w"))
  (write-line yazi dosya)
  (close dosya)
)


Tırnak içinde tırnak yazmak için \" şeklinde backslash kullanmak gerekiyor. Doğrudan tırnak işareti kullanırsak tınağın kapandığını düşünür Lisp... write-line komutunu örnek olarak ayzdım, ihtiyaca göre başka dosyaya yazma komutları kullanılabilir elbette...

Düzenleme:
oden, mesajını yeni anladım... Aynı şeyi yazmış bulunduk :)
bu arada code içinde backslash yazmak için iki tane kullanman yeterli :) \\ gibi...

ProhibiT (18.10.2009 16:43 GMT)

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] > 9 < [10] [15] [20] [25] [30] [35] [40] [42] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.737 saniye - Sorgu: 101 - Ortalama: 0.0172 saniye