Reklam

* E Posta Adresiniz:
* Kodu Girin:

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] > 9 < [10] [15] [20] [25] [30] [35] [39] Sonraki Sayfa
İleti Yazar
22.06.2009 13:43
49985    
ehya

[90] Yönetici

Online Durumu

3179 ileti
Teknik Ressam
Ankara

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 13:51
49986    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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 17:24
49998    
ehya

[90] Yönetici

Online Durumu

3179 ileti
Teknik Ressam
Ankara

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 17:39
49999    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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 18:21
50001    
ehya

[90] Yönetici

Online Durumu

3179 ileti
Teknik Ressam
Ankara

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 13:13
50066    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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 13:52
50070    
ehya

[90] Yönetici

Online Durumu

3179 ileti
Teknik Ressam
Ankara

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 14:00
50071    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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 14:35
50074    
ehya

[90] Yönetici

Online Durumu

3179 ileti
Teknik Ressam
Ankara

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 19:19
52549    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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 19:48
52550    
ehya

[90] Yönetici

Online Durumu

3179 ileti
Teknik Ressam
Ankara

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

Kod:

(command "._dimstyle" "R" stil_adi)

15.10.2009 19:58
52551    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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

18.10.2009 01:08
52594    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

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 16:29 GMT)

Where there is a will, there is a way... Beğenmek için anlamak lazım...

18.10.2009 01:56
52595    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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 (18.10.2009 02:14 GMT)

18.10.2009 02:46
52596    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

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 ))

Where there is a will, there is a way... Beğenmek için anlamak lazım...

18.10.2009 03:21
52598    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

(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 04:09
52599    
ehya

[90] Yönetici

Online Durumu

3179 ileti
Teknik Ressam
Ankara

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 04:14
52600    
Harbi65

[10] Üstad

Online Durumu

413 ileti
İnş.Tekn. Teknik Ressam
KASTAMONU

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 15:33
52604    
oden

[3] Kıdemli Girişimci

Online Durumu

26 ileti
Mimar
Ankara

Saçma değil


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 19:25
52607    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

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 20:43 GMT)

Where there is a will, there is a way... Beğenmek için anlamak lazım...

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] > 9 < [10] [15] [20] [25] [30] [35] [39] Sonraki Sayfa
Copyright © 2004-2018 | Tüm Hakları Saklıdır | 2871 | Site haritası | İstatistikler | Hakkımızda | Kadromuz | Gizlilik | Reklam