26.02.2009 22:41    

miyatu
Alıntı
ehya :
ekstra özellik derken, olmayan bir özellik mi eklemek istiyorsun??

bir nesnenin autolisp'de değiştirilebilen özelliklerini öğrenmek için, aşağıdaki kodlamayı kullanabilirsin.
Bu kodlama, seçilen nesnenin veri tabanını gösterir.


Kod:

(defun c:bilgi ()
(setq sec (car (entsel "\nNesneyi seçiniz:")))
(textscr)
(entget sec)
)




ya omayan bir özelliği eklemek istiyorum yada bun yerine var olan bir özelliği editleyerek kendi amacıma uygun değerler atamak istiyorum benim atamak istediğim değerler 0,001 gibi değerler böyle bir değeri projemin görünümünü değiştirmeyecek bir şekilde atamak istiyorum bunu nasıl yapabilirim

aslında benim yapmaya calıştığım şey şu

bir tesisat borusunun kotunu çapını ve taşıdıgı yuku bir etikete otamatık olarak yazdırmak istiyorum...
çap için cizgi tipi hazırladım borunun taşıdıgı yüke göre çizgi tipi değişecek ...
kotu içinde çizerken z değerinide kullanarak çizeceğim için z değerinden çekeceğim...
taşıdıgı yuku saklayabileceğim bir parametre arıyorum bunu line nesnesinin hangi parametresinde saklayabilirim

27.02.2009 07:27    

ehya
:) mevcut nesnelere böyle autolisp ile özellikl ekleyemezsin. Keşke eklebilse ama autolisp bu konuda çok ilkel kalır. Normalde eklenir mi sorusuna gelince, ileri düzey programlama dilleri ile eklenebilir hatta kendine özgü nesne bile oluşturabilirsin.
Ancak autolisp ile bu mümkün değil...

27.02.2009 15:13    

miyatu
yardımların için teşekkürler yuk için lts yi kullanmaya karar verdim istediğim değeri oraya yazabiliyorum kullandığım çizgi tipleride sürekli çizgi oldugu için sorun olmayacak sanırım...

tekrar teşekkürler...

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

line cizerken bir alt menuye gecis yapan bir ornek verebilirmisiniz

mesela

command:nokta sec [Kot / Fittings]:

gibi bir mesaj sirasinda bir nokta secersem line cizneye devam edecek k yada f girersem lispin ilgili kismi calismaya baslayacak getwork ile yapmam gerektigini biliyorum ama line icin nokta isterken getpointide kullanmam gerekiyor bu iliskiyi kuramadim...

yardimlariniz icin simdiden tesekkurler...


arkadaslar bu konuyla ilgili denemelerim devam ediyor...

soyle bir yaklasima ulastim ama nasil yapabilicegimi bilmiyorum...

getpoint fonksiyonu ile girdi yapilmasi istendiginde alfa numerik bir karakter girdigimizde ***invalid point*** hatasi veriyor ve tekrar nokta secmeni istiyor...

eger bu hatanin ***errno*** kodunun ne oldugunu bulabilirsek ve bunu bir if dongusu ile kontrol edebilirsek nokta secerken bir alt menuye gecebilme olasiligimiz var...

burda bir sorunla karsilasiliyor...

sorun sozkonusu hatayi aldigimizda lisp bir alt satira gecmiyor ayni satirdan devam ediyor bunu engelleyecek sekilde degerlendirme yapmak lazim...

yardimlariniz icin simdiden tesekkurler...

miyatu (29.03.2009 09:40 GMT)

01.04.2009 11:04    

Harbi65
Bir liste içinde ki dize şeklinde rakamları küçükten büyüğe göre nasıl sıralatırız?

01.04.2009 12:44    

ehya
Kod:

(setq aa (list "2" "5" "4" "8" "7" "1" "3" "6"))
(acad_strlsort aa)

01.04.2009 21:17    

Harbi65
Teşekkür ederim Ehya.

("1" "133" "137" "2" "3" "5" "55" "6" "7" "81")
Bu listede ilk basamağa göre bu rakamları sıralıyor... Bu listeyi aşağıda ki gibi nasıl sıralatırız??

("1" "2" "3" "5" "6" "7" "55" "81" "133" "137")

02.04.2009 06:53    

ehya
bunu sıralı hale getirmen için sayısal değerler tırnak içinde olmamalı. Eğer olursa, bu bir rakam değil metin olarak geçer.
Bunu düzenlemelisin.
Ona göre min komutunu kullanıp döngüye sokarak sıralayabilirsin.

02.04.2009 07:57    

Harbi65
Sayısal değerler tırnak içinde olmalı derken...? Liste oluşturabilmek için mi diyorsun??
Eğer bunu kastettinse ben sıralama şeklini göstermek için sadece bu kısmını yazdım...
Ama sıralatma mantığını kuramadım...

Peki numerik bi listeyi sıralamak için yukarda verdiğin gibi bir komut var mı??

02.04.2009 08:15    

ehya
komut yok.
önceki mesajımda belirttiğim gibi, min komutunu kullanarak liste elemanı sayısı kadar döngüye sokarak yeni liste oluşturabilirsin.

02.04.2009 08:28    

Harbi65
Anladım sağol...

bir soru daha...
Kod:

(sssetfirst nil SecimSet)

Komutu ile seçim yaptırdığımızda nesneleri seçtiği halde ekranda seçildiği görülmüyor. Bunun nedeni ne olabilir?

02.04.2009 08:36    

ehya
Komut yazımında sorun yok.
SecimSet seçiminde nesne olup olmadığını kontrol et.

02.04.2009 09:24    

Harbi65
Seçim setinde nesne var.
ve nesneler seçiliyor... ama bazen ekranda seçilmiş oldukları görünmüyor...

02.04.2009 09:47    

ehya
bazen diye birşey yok. Nesne var ise mutlaka seçili olur.
Tabi bu işlemden sonrasında bu seçim durumunu etkileyen bir komut yazmadıysan....

06.04.2009 12:48    

Harbi65
entmod ile çizginin linetype'ını ya da Color'unu nasıl Bylayer yaparız?
Başka bir deyişle command kullanmadan nasıl Bylayer yaparız?

06.04.2009 13:51    

ehya
62 dxf kodu, nesnenin rengi değiştirildiyse görünür.
6 dxf kodu ise, çizgi tipi değiştirildiyse görünür.

Eğer nesnenin dxf kodlarında bu numaralar açılmamış ise, bu nesneler bylayer'dır.

Nesne rengini bylayer yapma

Kod:

(setq ent (car (entsel)))
(setq data (entget ent))
(setq data (subst (cons 62 acbylayer)(assoc 62 data) data))
(entmod data)



Nesne çizgi tipini bylayer yapma...

Kod:

(setq ent (car (entsel)))
(setq data (entget ent))
(setq data (subst (cons 6 "bylayer")(assoc 6 data) data))
(entmod data)

24.04.2009 19:39    

miyatu
slm arkadaşlar

reed-line fonksiyonu ile bir txt dosyasından okunan cümleyi read fonksiyonu ile kelimelere ayırmak istiyorum...
ilk kelimeyi read fonksiyonu ile okuyorum (okunan deger bir hassasiyetli ondalıklı sayı) bu degerin kaç karakterden oluştugunu nasıl öğrenebilirim...

not:strlen fonksiyonu hata veriyor. hatayı gidermek için okudugum degeri rtos ile dönüşütrdüm strlen sorunu düzeldi ama sayının virgülden sonraki değeri sıfır ise sayıyı tam sayı gibi veriyor ve bir sonraki kelimeyi sıfır gibi gösteriyor...

24.04.2009 21:12    

ehya
Kod:

(setq  abc 12.345678)
(rtos abc 2 2)


burada rtos fonksiyonunda 2 2 değeri var
birinci 2 değeri ondalıklı olacağını ifade eder.
ikinci 2 değeri ise virgülden sonraki 2 basamağı göstereğini ifade eder. Buna göre ikinci 2 sayısını istediğine göre artırabilirsin.

25.04.2009 09:32    

miyatu
Alıntı
ehya :
Kod:

(setq  abc 12.345678)
(rtos abc 2 2)


burada rtos fonksiyonunda 2 2 değeri var
birinci 2 değeri ondalıklı olacağını ifade eder.
ikinci 2 değeri ise virgülden sonraki 2 basamağı göstereğini ifade eder. Buna göre ikinci 2 sayısını istediğine göre artırabilirsin.



bende bu sekilde uyguladim ama sayinin ondalik kismi sifir ise sayiyi tam sayi gibi yapiyor yani benim okudugum karakter sayisi 5 ise sonuc bana 3 karakter gibi donuyor ...

bunun sonucu olarak kalan kisimdaki yeni cumlenin ilk kelimesi sifir oluyor...

benim sorunum read fonksiyonu ile okudugum kelimenin kac karakter oldugunu ogrenmek...

25.04.2009 10:13    

ehya
Burada bi yanlışın olmalı.
Read-line komutu ile bir dosyadaki değeri okuduğunda buradaki değer dizgi şeklinde gelecek ve kaç satır olduğunu bulabilirsin.

Örnek olarak bir dosya oluşturdum. Bu dosyanın içine 125142.2552 sayısını yazdım.
Kod olarak ise;

(setq a (open "c:\\1.txt" "r"))
#<file "c:\\1.txt">

(setq b (read-line a))
"125142.2552"

(setq c (strlen b))
11

Burada görüldüğü gibi değerin basamaklarını strlen ile rahatlıkla bulabiliyorum. Farklı bir yol izlediysen o yolu söylersen bi yol bulmaya çalışırız.

26.04.2009 20:41    

Harbi65
Küsüratlı bir değeri rtos ile dizeye çeviriyorum ve dcl ye aktarıyorum. değeri burdan alırkende atof ile sayıya çeviriyorum. işlemde sorun yok ama DCL de 5.50 şeklinde bir değeri giremiyorum. bu değeri 5.00 yapıyor.
bunun nedeni nedir?

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