18.08.2008 14:34    

ehya
Bir nesnenin handle adını biliyorsanız, bu handle adına göre seçim yapılmasını sağlar.

Örnek Kod :

(setq aa (car (entsel)))
<Entity name: 7ef2c5c0>

(entget aa)
((-1 . <Entity name: 7ef2c5c0>) (0 . "LINE") (330 . <Entity name: 7ef2ecf8>) (5 . "1A0") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(100 . "AcDbLine") (10 405.293 -87.5381 0.0) (11 562.55 -87.5381 0.0) (210 0.0 0.0 1.0))


Burada handle adı (5 . "1A0") dir.

Bu nesneyi bu ada göre seçtirmek istersek;
(handent (cdr (assoc 5 (entget aa))))

<Entity name: 7ef2c5c0>

Sonuçta seçim adının yukarıdaki ile aynı olduğunu görürsünüz..

18.08.2008 14:41    

Harbi65
peki handle adı dediği ne?

18.08.2008 14:49    

ehya
yahu napcan ne olduğunu :)
Adamlar nesneleri hazırlarken bi sap adı diye vermişler. onun seçimini sağlamışlar..
Lisp yazan kişi polemiğe girmemeli.. :)

18.08.2008 14:55    

Harbi65
ehya...
bu polemik değil. öğrenmeye çalışıyoruz...:)
(10 405.293 -87.5381 0.0) (11 562.55 -87.5381 0.0)
burda 10-11 çizgi ucu çizgi sonuysa bununda bi açıklaması olmalı dimi?:)

18.08.2008 14:59    

ehya
hayır bunun bi açıklaması olamaz. Adamlar dxf kodlarını sıralarken, bir çizginin başlangıç dxf kod numarasının 10 olması bize bu sorgu hakkını vermez ki..!!!
Adamlar yapmış bizde buna uyacağız..

18.08.2008 15:13    

Harbi65
tamam adamların yaptığına uyalım da... gerçekten merak ettim...
yani bu handle adıyla seçim yaptırmak için bunun ne ifade ettiğini ne işe yaradığını bilmek lazım di mi?
ihtiyaç olur olmaz orasınıda bilmiyorum tabi...

bi soru daha..;
bir nesnenin kodlarını entget ile alıyoruz...
bu kodları daha detaylı alacak olsak nasıl alabiliriz...?
mesele dinamik blokta kullanılan parametrelerin kodlarını almak istiyorum... bu kodları nasıl öğreniriz?

18.08.2008 15:18    

ehya
dxf kodlarında dinamik blokların özelliklerinin olacağını sanmıyorum. ama emin de değilim..
visuallisp yardımı gerekir..

18.08.2008 15:24    

Harbi65
bir dinamik bloğu dxf formatında kaydedip bunu insert ettiğimizde aynı özellikleri koruyorsa kodları var demek ki...
ama bunu nasıl alabiliriz?

18.08.2008 15:26    

ehya
sen çalışmanı yap. yazdığın kodları burada paylaş. sıkıntılı yerleri ortaklaşa çözeriz.

18.08.2008 15:40    

Harbi65
o kodları bilmeden nasıl yazıyım ki.... ortada bişey yok ...
mesela linear parametrenin bilgilerini almak istiyorum... bilmeden neye göre yazıyım ki paylaşayım?

22.08.2008 13:47    

Bülent_seçkin_akşehir
Alıntı
ehya :
Autolisp ile ilgili tüm sorularınızı bu konu altından sorabilirsiniz.



merhaba arkadaşlar ben pline'nın tüm kırıklık noktalarının koordinatlarını liste halinde veren bir lisp arıyorum yardımcı olabilirsenız sevinirim teşekkürler

22.08.2008 14:55    

ehya
Kod:

(vl-load-com)
(setq ent (car (entsel "\nPline seç")))
(setq liste (mapcar 'cdr
    (vl-remove-if
      '(lambda (x) (/= 10 (car x)))
      (entget ent)
    )
    )
)



Seçilen pline'nın tüm koordinatları LISTE adı altında saklandı...

06.09.2008 17:49    

fatih107
Merhaba arkadaşlar beni çok sinir eden bir soru sormak istiyorum. Lisp yazmaya yeni başladım ,Autocad 2008 kullanıyorum. Aşşağıdaki vida çizen bir lisp yazmaya çalıştım.


Kod:

(defun c:cvt ()
  (setq       d   (getreal "\n Genişliği girin:")
L   (getreal "\n Uzunluğunu girin:")
                n1  (getpoint "\n Başlangıç noktasını seçin:")
n2  (list (+ (car n1) (* 0.7 d)) (cadr n1))
n3  (list (car n2) (+ (/ d 2) (cadr n2)))
n4  (list (+ (car n3) (* 0.2 L)) (cadr n3))
n5  (list (+ (car n3) L) (cadr n3))
n6  (list (car n5) (+ (cadr n5) d))
n7  (list (- (car n6) (* 0.8 L)) (cadr n6))
n8  (list (- (car n6) L) (cadr n6))
n9  (list (car n8) (+ (cadr n8) (/ d 2)))
n10 (list (- (car n9) (* 0.7 d)) (cadr n9))
n11 (list (- (car n10) (* 0.1 d)) (- (cadr n10) (/ d 4)))
n12 (list (car n10) (- (cadr n10) (/ d 2)))
n13 (list (- (car n12) (* 0.1 d)) (- (cadr n12) (/ d 2)))
n14 (list (car n12) (- (cadr n12) d))
n15 (list (- (car n14) (* 0.1 d)) (- (cadr n14) (/ d 4)))

n16 (list (car n4) (+ (cadr n4) (* 0.1 d )))
n17 (list (car n5) (+ (cadr n5) (* 0.1 d )))
n18 (list (car n7) (- (cadr n7) (* 0.1 d )))
n19 (list (car n6) (- (cadr n6) (* 0.1 d )))

n20 (list (+ (car n5) (* 0.1 d)) (+ (cadr n5) (* 0.1 d)))
n21 (list (+ (car n6) (* 0.1 d)) (- (cadr n6) (* 0.1 d)))

)
  (command "line" n1 n2 n3 n4 n5 n20 n21 n6 n7 n8 n9 n10 "")
  (command "line" n5 n17 n19 n6 "")
  (command "line" n4 n16 n18 n7 "")
  (command "line" n16 n17 "")
  (command "line" n18 n19 "")
  (command "line" n8 n12 "")
  (command "line" n3 n14 "")
  (command "line" n3 n8 "")
  (command "arc" n10 n11 n12 )
  (command "arc" n12 n13 n14)
  (command "arc" n14 n15 n1)
  (command "line" n11 n13 n15 "")
   
        )


Bunu editörde yazdıktan sonra "load active window" ile autocad dönüyorum. Lisp 2-3 kere düzgün civatayı yaptıktan sonra sapıtmaya başlıyor. Eğer yeni bir autocad sayfası açıp yine "load active window" ile çalışırdığımda yine aynı şekilde 2-3 kere çalışıp ondan sonra acaip bir şekil ciziyor.Tekrar yeni sayfa çamam gerekiyor çalışması için

autocad in command satırından takip ettiim kadarıyla, sapıttığı zamanlarda "line" cizerken zero length line created..... gibi bir hata veriyor.

Noktaları (nx) tek tek kontrol ettim kesinlikle noktalarda hata yok.

Son olarak da cizimi bitirdiği zaman (düzgün çizmiş olsa bile ) command satırının sonunda nil yazıyor. Bu neden oluyor olabilir.Şimdiden çok teşekkür ederim .

ehya (06.09.2008 19:54 GMT)

06.09.2008 19:45    

fatih107
Çok sağol Wolf, şu sinir bozucu durumdan beni kurtardığın için.

08.09.2008 15:47    

miyatu
ya ben ssget ile şeçtiğim seçim setinin içinden herhangi bir sıradaki nesneyi iptal edip yeni bir liste oluşturmak istiyorum bunu naıl yapabilirim

not: sıra sürekli değişebilir

08.09.2008 17:43    

ehya
Kod:

(setq secim (ssget))  ;; seçim seti oluşturuldu.
(setq no 5)           ;; silinecek eleman numarası
(setq eleman(ssname secim no))  ;; seçim setindeki belirtilen numaranın elemanı öğrenildi.
(setq secim (ssdel eleman secim)) ;; seçim setinden 5 no'lu eleman silindi

08.09.2008 19:36    

ehya
herhangi bir nesne diyor... bende numaraya göre örnekleme yaptım..
her mesajının sonunda bir söz var. balık tutmasını öğretirim ama balık dağıtmam diye...
yolu gösterdim... artık gerisini kendi çıkarır dimi :)

08.09.2008 22:17    

miyatu
ehya çok teşekkür ederim...

seçim setinde sıra numarasını bulabiliyorum...

bu benim çok işime yarayacak...

ssdel i bilmiyordum yeni birşey daha öğrendim

sana yardımların için çok teşekkür ediyorum senden çok şey öğrendim...

yapmaya çalıştığım şey
bir agaç düşünün
her dalın ucunda sayıları belirsiz meyveler var
herdal bir kalın dala bağlanıyor
kalındallarda gövdeye bağlanıyor
dalların, kalın dalların ve gövdenin kaç meyve taşıdığını bulmaya çalışıyorum...

11.09.2008 08:15    

miyatu
ya ağacı çok salladım ama bitürlü düşmediler banada illa sayacan diyorla ne yapayım böle bir yol buldum...

ssdel sıra numarasına göre değil nesne adına göre çalışıyormuş... :)

yinede teşekkürler...

11.09.2008 08:44    

ehya
miyatu yukarıda verdiğim kod seçim setine göreydi. Az düşünseydin secilen nesnenin çıkarılmasını da yapabilirdin.

Neyse, örnek kod aşağıdadır.
Verdiğim kod seçim setinden tek nesne çıkarmak içindir. Çoklusu lazım ise yapabilirsin sanırım...

Kod:

(setq ss (ssget))
(setq ent (entsel))
(setq ss (ssdel (car ent) ss))

Ö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.385 saniye - Sorgu: 100 - Ortalama: 0.01385 saniye