29.06.2009 14:45    

eem_ccelik
Bir elektrik projesinde hat cinslerine göre (tamamı çizgi) birçok katman var. Bu katmanların isimlerini katmanların üzerine yazdırmak istiyorum. Bu konuda bana yardımcı olabilecek arkadaş var mı?

29.06.2009 15:56    

ehya
katrmanların isimlerini katmanların üzerine yazdırmak nasıl oluyor??
sanırım çizgilerin katman isimlerini çizgilerin üzerine yazdırmak istiyorsunuz doğrumudur?

29.06.2009 16:15    

eem_ccelik
Alıntı
ehya :
katrmanların isimlerini katmanların üzerine yazdırmak nasıl oluyor??
sanırım çizgilerin katman isimlerini çizgilerin üzerine yazdırmak istiyorsunuz doğrumudur?

evet aynen öyle bu konuda yardımcı olursanız sevinirim

29.06.2009 19:49    

Harbi65
Seçilen çizgi üzerine katman ismini yazar...
Komut: LYY
Kod:

(defun LYY_Hata (s)
  (if (/= s "Function cancelled")
    (princ (strcat "\nError: " s))
  ) 
  (setvar "CMDECHO" Lyz_Cmd)
  (setvar "OSMODE" Lyz_Osm)
  (setvar "CLAYER" Lyz_Lyr)
  (setq *error* olderr)
  (princ)
)
(defun c:LYY  (/ Czg Czg:0 Czg:EPt Czg:MPt Czg:8 Yz:Aci )
  (setq olderr *error*
*error* LYY_Hata
  )
  (setq Lyz_Cmd (getvar "CMDECHO")
Lyz_Osm (getvar "OSMODE")
Lyz_Lyr (getvar "CLAYER"))
  (setvar "modemacro" "< Harbi65 Design by © >")
  (setvar "CMDECHO" 0)
  (setvar "OSMODE" 0) 
  (if (= Yz:Yk nil)
    (setq Yz:Yk 12)
    )   
  (setq Yz: (getint (strcat "\n Yazı yüksekliğini girin <" (rtos Yz:Yk 2 0) "> :")))
  (if (= Yz: nil)
    (setq Yz: Yz:Yk)
    )
  (setq Yz:Yk Yz:)
  (setq Cz nil)
  (while (= Cz nil)
    (setq Czg (entsel "\n Çizgiyi seçin:"))
    (if (= Czg nil)
      (progn
(if (= (getvar "errno") 0)
  (progn
    (setvar "errno" 0)
    (print "Çizgi seçilmedi...!")
    (setq Cz nil)
    )
  )
(if (= (getvar "errno") 52)
  (progn
    (setq Cz t)
    (setvar "errno" 0)
    )
  )
)
      (progn
(setq Czg:Dt (entget (car Czg))
      Czg:0  (cdr (assoc 0 Czg:Dt))
      )
(if (or (= Czg:0 "LINE")
(= Czg:0 "LWPOLYLINE")
(= Czg:0 "PLINE"))
  (progn
    (setq Czg:EPt (osnap (cadr Czg) "endp")
  Czg:MPt (osnap (cadr Czg) "midp"))
    (setq Czg:8 (cdr (assoc 8 Czg:Dt))
  Yz:Aci (angle Czg:EPt Czg:MPt))
    (cond
      ((and (< (/ pi 2) Yz:Aci) (>= pi Yz:Aci))
       (setq Yz:Aci (+ Yz:Aci pi))
       )
      ((and (>= (* pi 1.5) Yz:Aci) (< pi Yz:Aci))
       (setq Yz:Aci (+ Yz:Aci pi))
       )
      )
    (setvar "CLAYER" Czg:8)
    (command "_.text"
     "j"
     "bc"
     Czg:MPt
     Yz:Yk
     (angtos Yz:Aci)
     Czg:8)
    )
  (progn
    (alert "Seçilen nesne Çizgi değil...!")
    )
  )
)
      )
    )
  (setvar "CLAYER" Lyz_Lyr)
  (setvar "OSMODE" Lyz_Osm)
  (setvar "CMDECHO" Lyz_Cmd)
  (princ)
  )
(PRINC "\nÇizgi üzerine Katman ismini yazar... \t Komut [ LYY ]"
)

30.06.2009 05:45    

eem_ccelik
öncelikle teşekkür ederim bu lisp oldukça işime yarayacak. bu lispte önce lispi çalıştırıp daha sonra çizgilerin tek tek seçilmesi gerekiyor anladığım kadarıyla. bir katmandaki çizgilerin tamamının seçilip tek bir seferde katman isimlerini çizgi üzerine yazdırmak mümkün mü? çünkü projede bazen binlerce çizgi oluyor bir katmanda ,bunları tek tek seçmek yerine tamamının seçilip lispi daha sonra çalıştırmak mümkün mü? yardımlarınız için çok teşekkür ederim...

ehya (30.06.2009 07:22 GMT)

30.06.2009 07:53    

Harbi65
Kod:

(defun c:LYC  (/ Czg:El Czg:Orn Cz:Sec Czg:Tek Czg:10 Czg:11 Czg:Dt Czg:8 Yz:Aci Yz:Nok)
  (setq Lyz_Cmd (getvar "CMDECHO")
Lyz_Osm (getvar "OSMODE")
Lyz_Lyr (getvar "CLAYER"))
  (setvar "modemacro" "< Harbi65 Design by © >")
  (setvar "CMDECHO" 0)
  (setvar "OSMODE" 0) 
  (if (= Yz:Yk nil)
    (setq Yz:Yk 12)
    ) 
  (setq Yz: (getint (strcat "\n Yazı yüksekliğini girin <" (rtos Yz:Yk 2 0) "> :")))
  (if (= Yz: nil)
    (setq Yz: Yz:Yk)
    )
  (setq Yz:Yk Yz:)
  (if
    (setq Czg:Orn (entsel "\n Örnek katman için çizgi göster:"))
    (progn
   (setq Czg:El (entget (car Czg:Orn)))
  (setq Czg:8 (cdr (assoc 8 Czg:El)))
  (prompt "\n Katmanı yazılacak çizgi grubunu seçin:")
  (setq Cz:Sec (ssget (list (cons 0 "LINE")(cons 8 Czg:8))))
  (setq Cz 0)
  (repeat (sslength Cz:Sec)
    (setq  Czg:Tek (ssname Cz:Sec Cz))
    (setq Czg:Dt (entget Czg:Tek)
  Czg:10 (cdr (assoc 10 Czg:Dt))
  Czg:11 (cdr (assoc 11 Czg:Dt))
  )
    (setq Yz:Aci (angle Czg:10 Czg:11)
  Cz:Boy (distance Czg:10 Czg:11))
    (setq Yz:Nok (polar Czg:10 Yz:Aci (/ Cz:Boy 2)))
   
    (cond
      ((and (< (/ pi 2) Yz:Aci) (>= pi Yz:Aci))
       (setq Yz:Aci (+ Yz:Aci pi))
       )
      ((and (>= (* pi 1.5) Yz:Aci) (< pi Yz:Aci))
       (setq Yz:Aci (+ Yz:Aci pi))
       )     
      )
    (setvar "CLAYER" Czg:8)
    (command "_.text" "j" "bc" Yz:Nok Yz:Yk (angtos Yz:Aci) Czg:8)   
    (setq Cz (1+ Cz))
    )
  )
    (alert "Örnek katman gösterilmedi..!")
    )
  (setvar "CLAYER" Lyz_Lyr)
  (setvar "OSMODE" Lyz_Osm)
  (setvar "CMDECHO" Lyz_Cmd)
  (princ)
  )
(PRINC "\nÇizgilerin üzerine Katman ismini yazar... \t Komut [ LYC ]"
)

Harbi65 (30.06.2009 08:02 GMT)

30.06.2009 08:15    

ehya
harbi65, madem lispi yazdın bende eleştireyim bari :)

1- seçim işlemi çok uzun ve zahmetli, bu işlemi referans nesne ile yapacağına, nesnelerin tamamını seçip her nesnenin katmanını öğren ve o nesnenin katmanı ne ise onu yazsın. Böylelikle her katmanı bir defada yazar, zaman olarak bayağı bi vakit kazanırsın.

2- yazı ile akalalı olarak, eğer style tablosundaki yazı stilinin yazı yüksekliği sıfırdan farklı ise hata veriyor. Command ile bunu çözecek isen, ona göre vi fonksiyon yazabilirsin.

3- Girilecek yazı yüksekliği sıfırı ve eksi değeri kabul ediyor.

4- Sadece line nesnesine göre yazmışsın. Bunu diğer nesneler içinde çoğaltabilirsin. Örneğin, pline için başlangıç noktasına, circle için dairenin bi kenarına.. v.s. Böylelikle daha iyi bir sonuç çıkar.

5- Örnek bir katman seçin dediğinde, eğer seçim olmaz ise hata vermekte.

neyse fazla derine inmeyeyim. Artık yeni düzenlenmiş halini bekliyoruz :)

30.06.2009 08:31    

Harbi65
İlla eleştirecen, hata bulacan dimi...:)
Tabi ki bu hatalarımı görerek bu kadar becerebilir duruma geldim...

1- Her çizginin katmanına göre yazmasına cevap verirsek... Arkadaş öyle istiyor benim anladığım... örnek katman grubunda ki çizgilere yazdırmak istemiş.. Ddikkat edersen öncekinde seçtiği çizginin katmanına göre yazıyordu... bunda da onu uygulayabilirdim ama mantık olarak yanlış olur diye düşündüm.. zira yazılmıyacak çizgi de olabilir....

2- 3- eleştirinde haklısın... Ama bunlarında farkındayım..

4- Ne amaçla kullanacak bilmiyorum ama böyle bişeyde hertür nesne düşünülmeli mi bilemiyorum....

5- Hatamı farkettim ve yorumundan önce düzeltmiştim....

30.06.2009 09:54    

eem_ccelik
Arkadaşlar yardımlarınız için çok teşekkür ederim. Bu lisp çok işime yarayacak.

ehya (30.06.2009 10:13 GMT)

> 1 <
Copyright © 2004-2022 SQL: 0.994 saniye - Sorgu: 66 - Ortalama: 0.01506 saniye