26.07.2012 12:34    

k005
Merhaba arkadaşlar;
aşağıda ki verdiğim kodda; belirli bir noktaya sonuç (text) yazdırıyorum . yazı renginide "clr" değişkeninden almasını istiyorum. bu şekilde yaptığım da bazı projelerde lisp düzgün çalışmıyor. Aktif olan layer rengini alıyor..? nerede yanlış yapmaktayım.?

yardımcı arkadaşlara şimdiden teşekkürler. herkese kolay gelsin.

Kod:

(command "text" "c" p1 "" 0 sonuc)
(command "chprop" p1 "" "C" clr""))

26.07.2012 13:42    

Travaci
Kod:

(setq ccLrr (getvar "CECOLOR"))
(command "text" "c" p1 "" 0 sonuc)
(command "chprop" p1 "" "C" ccLrr""))

Denemedim ama sanırım olur : )

26.07.2012 14:14    

k005
Alıntı
Travaci :
Kod:

(setq ccLrr (getvar "CECOLOR"))
(command "text" "c" p1 "" 0 sonuc)
(command "chprop" p1 "" "C" ccLrr""))

Denemedim ama sanırım olur : )



Travaci cevap için teşekkürler. ama cclrr = getvar "cecolor" olduğu için bu durumu çözmüyor.. benim örneğimde renk sürekli değişken...

26.07.2012 14:32    

ehya
yazılan kod'a göre yazı ilk oluşturulduğunda aktif katmana göre oluşur. Clr renk numarasına göre istediğin renk olur. Ya clr renk numarası boş ise? O zaman aktif katman renginde kalır. Hata veren dosyadanaki clr değikenini kontrol etmelisin.

26.07.2012 16:25    

k005
Alıntı
ehya :
yazılan kod'a göre yazı ilk oluşturulduğunda aktif katmana göre oluşur. Clr renk numarasına göre istediğin renk olur. Ya clr renk numarası boş ise? O zaman aktif katman renginde kalır. Hata veren dosyadanaki clr değikenini kontrol etmelisin.




Hocam merhaba;

Clr her zaman bir sayıya eşit hocam; örnek vermek gerekirse 6, 8, 12 , 14 ,16, 18 , 20 ,22 gibi.. bunlar aslında demir çaplarım.. aynı zamanda da renk vererek onları sınıflandırıyorum.. bir metraj lispi üzerinde çalışıyorum da,, yukarıda sorduğum noktada takıldım..

26.07.2012 17:42    

ProhibiT
İki tane command fonksiyonu kullanarak Text oluşturup rengini değiştirmek yerine, entmake kullanılırsa tek hamlede işlem halledilir.
Command kullandığınızda,
- p1 noktasının object snap'e yakalanıp hedeflediğinizden başka bir noktada text oluşturma riskiniz var.
- CoLor, Layer, Text Style... gibi öznitelikleri ayrıca değiştirmeniz gerekeceğinden, işlem uzayacaktır.
entmake kullanarak text oluşturmak için genel format;
Kod:

(entmake
  (list (cons 0 "TEXT") ;Obje tipi: Text.
        (cons 1 Yazi) ;Text içeriği Yazi (string).
        (cons 7 TextSty) ;Yazılmazsa, geçerli Text Style kullanılır.
        (cons 8 Layer) ;Yazılmazsa, Geçerli Layer kullanılır.
        (cons 10 insPnt) ;Text insertion Point (list).
        (cons 11 insPnt) ;Text Alignment Point (list).
        (cons 40 TxtHei) ;Yazılmazsa, geçerli Text Height kullanılır (real).
        (cons 50 Aci) ;Yazı açısı (real).
        (cons 62 TxtCLr) ;Yazı rengi (integer). Yazılmazsa, CeCoLor kullanılır.
        (cons 72 Alignm)));Center için Alignm=1 kullanılır.
şeklinde olup, sizin örneğinizdeki işlemi yapmak için;
Kod:

(entmake (list (cons 0 "Text) (cons 1 sonuc) (cons 10 p1) (cons 11 p1) (cons 50 0.0) (cons 62 cLr) (cons 72 1)))
kullanmak yeterli olacaktır.

27.07.2012 07:16    

k005
ProhibiT :
Kod:

(entmake (list (cons 0 "Text") (cons 1 sonuc) (cons 10 p1) (cons 11 p1) (cons 50 0.0) (cons 62 cLr) (cons 72 1))))



Hocam olmadı. yapamadım.. :( bu verdiğiniz kodda; işlemi yaptığımda, iki tane sonuc değeri yazıyor.. ve rengide 0 layerından alıyor... text in konumu hemen hemen üst üste diyebiliriz ...

bu örneğimde layer a bağlı kalma gibi bir zorunluluk yok hocam.. sadece istediğm rengi text e uygulaması yeterli..

k005 (27.07.2012 07:32 GMT)

27.07.2012 11:14    

Travaci
(cons 62 cLr) cLr kısmına istediğiniz renk kodunu yazdığınız halde olmuyormu ?

27.07.2012 12:55    

k005
Alıntı
Travaci :
(cons 62 cLr) cLr kısmına istediğiniz renk kodunu yazdığınız halde olmuyormu ?




clr bir değişken.. renk kodunu lispin bir bölümünden alıyor.. mesela clr=16 yani clr yerine 16 yazılıyor.. ama renk 0 layerının rengi olan default beyaz rengi alıyor.. Prohibit hocamın göndermiş olduğu kodda...

27.07.2012 18:23    

ProhibiT
2 tane obje oluşmasının sebebi, (tahmin ederek yazıyorum) entmake kullandığınızda command kullandığınız bölümleri kaldırmalısınız.

Verdiğim örnekte (assoc 40 (yani Text Height) yazmayı unutmuşum. Bu durumda entmake fonksiyonunun bir obje oluşturabilmesinin tek şartı, her zaman şiddetle eleştirdiğim şekilde, Text Style'da sabit Text Height tanımlanmış olmasıdır.

Gene yukarıda verdiğim açıklamalara dönersek. (cons 62 ile kullanılan cLr değişkeninin değeri mutlaka integer olmak zorunda. AutoCAD'de Color Index sisteminde renk kodları daima tamsayı (integer) ile ifade edilirler. Bulanık sularda av sonucunda, cLr değişkeninizin değerinin integer olmadığı şeklinde bir balık rastgeldi. (setq cLr 16) şeklinde değer ataması yapılınca doğru, (setq cLr "16") şeklinde string türü değer ataması yapıldığında yanlış olacaktır.
Kod:

(setq cLr 16 sonuc "Deneme" p1 (getpoint))
(entmake (list (cons 0 "Text") (cons 1 sonuc) (cons 10 p1) (cons 11 p1)
    (cons 40 (getvar "TextSize")) (cons 50 0.0) (cons 62 cLr) (cons 72 1)))

örneğini denerseniz, problemsiz olarak 16 renginde "Deneme" yazısının seçilen noktada, geçerli yazı yüksekliğinde oluşturulduğunu göreceksiniz.

ProhibiT (27.07.2012 21:58 GMT)

30.07.2012 06:15    

k005
Alıntı
ProhibiT :

Evet hocam.. command satırındaki kodları unutmuşum. o yüzden iki tane oluşmuş.. CLR değişkenimde integer değilmiş, orda bir hata yapmışım.. bulanık sular da av.. güzel bir benzetme .. tam sayı için... :) ve sonuç olarak verdiğiniz son kodda biraz değişiklik yaparak,, bir de textsize ı ilk seçilen objeden alarak... gibi bir ekleme yaptığımda problem çözülmüştür... elinize yüreğinize sağlık hocam. çok teşekkürler... :)

k005 (30.07.2012 06:25 GMT)

> 1 <
Copyright © 2004-2022 SQL: 1.49 saniye - Sorgu: 75 - Ortalama: 0.01986 saniye