18.09.2007 05:44    

blasted
Arkadaşlar bana trim komutu uygulayan bi autolisp prog. lasım kullanımı şöle olucak...

ben bir kare çizdigimde (yatay veya dikey farketmes) çizginin tam ortasına tıkladıgımda orayı istedigim mesafe kadar budayan bir lisp lazım..mesela karenin üst çizgisinin ortasını tıkladıgımda orayı 2 mm budayacak birşey...

Ben çok ugraştım ama yapamadım acaba mümkün degilmi...




Konu Autolisp bölümüne taşınmıştır...

ehya (18.09.2007 05:52 GMT)

18.09.2007 05:52    

ehya
Konuyu tam anlayamadım. Resimli bir örnek gösterebilirmisin???

18.09.2007 06:06    

blasted
Alıntı
ehya :
Konuyu tam anlayamadım. Resimli bir örnek gösterebilirmisin???



Öncelikle ilgin için teşekkurler benim anlatmak istedigim şöle bişey ben tek tıklamayla 2 mm boşluk vermek istiyorum bunu oraya bir çizgi çizip offset yoluyla yapabiliyorum ama düşün elinde 500 tane farklı bu tür çizim var hepsine tek tek offset yapmak çok vaktimi alıyor bunu tek tıklamayla yapabilmek mümkünmü...



18.09.2007 06:11    

ehya
Yapılır sorun değil. Sadece uğraştırmamak için söylim, koparma işlemi çizginin ortasından yapacak. yani 2 birim ise, verilen noktadan 1 birim sağa 1 birim sola gidip öyle kırpacak.
Şuan müsait değilim, müsait olduğumda kodu buradan yayınlarım...

18.09.2007 06:16    

blasted
Alıntı
ehya :
Yapılır sorun değil. Sadece uğraştırmamak için söylim, koparma işlemi çizginin ortasından yapacak. yani 2 birim ise, verilen noktadan 1 birim sağa 1 birim sola gidip öyle kırpacak.
Şuan müsait değilim, müsait olduğumda kodu buradan yayınlarım...



Çok teşekkur ederim eger olursa benim günlerimi verdigim çizimlere daha az vakit harcıyacagım...

İlgin için çok teşekkurler...

19.09.2007 08:50    

ehya
Lispi hazırladım.Komut ismi TK.
Çizgiyi seçtiğinizde sizden değer isteyecek. Çizgiyi seçtiğiniz yerden itibaren verdiğiniz değeri ortalayarak trim yapar.



Kod:

(defun c:tk ()
(setvar "modemacro" "Archme Design")
  (setq tk_os (getvar "osmode"))
  (setq tk_ent (entsel "\nÇizgiyi seçin:"))
  (if (= tk_ent nil)
    (progn
      (princ "\nNesne seçimi yok...")
    )
    (progn
      (setq tk_ent_tan (cdr (assoc 0 (entget (car tk_ent)))))
      (if (/= tk_ent_tan "LINE")
(progn
  (princ "\nSeçilen nesne çizgi değil..")
)
(progn
  (redraw (car tk_ent) 3)
  (if (= tk_mes nil)
    (setq tk_mes 10)
  )
  (setq tk_m
(getreal
   (strcat "\nKoparma mesafesi: < " (rtos tk_mes) " >:")
)
  )
  (if (= tk_m nil)
    (setq tk_m tk_mes)
  )
  (setq tk_mes tk_m)
  (setq tk_ent_10  (cdr (assoc 10 (entget (car tk_ent))))
tk_ent_11  (cdr (assoc 11 (entget (car tk_ent))))
tk_aci_1   (angle tk_ent_10 tk_ent_11)
tk_aci_2   (angle tk_ent_11 tk_ent_10)
tk_uzun    (distance tk_ent_10 tk_ent_11)
tk_ent_kor (cadr tk_ent)
tk_kop_1   (polar tk_ent_kor tk_aci_1 tk_mes)
tk_kop_2   (polar tk_ent_kor tk_aci_2 tk_mes)
  )
  (if (> tk_mes tk_uzun)
    (alert "\nKoparma mesafesi çizgi boyundan büyük...")
  )
  (setvar "osmode" 0)
  (command "break" tk_ent "f" tk_kop_1 tk_kop_2)
)
      )
    )
  )
  (setvar "osmode" tk_os)
  (princ)
)

19.09.2007 10:03    

Harbi65
Eline sağlık. maşallah yine döktürmüşsün :)
çok çizgi seçilebilse iyi olmaz mıydı?

19.09.2007 10:07    

ehya
Çoklu çizgide neresine göre trim yapacak... :)

19.09.2007 10:14    

Harbi65
ilk seçilen çizgiyi ilk tıklanan noktayı referans alamaz mı mesela?

ihtiyaçtan değil de.. öyle aklıma geldi işte...

19.09.2007 10:39    

ehya
İlk çizginin ilk noktasını referans aldın tamam.
ikinci çizgi ekranın bilmem neresinde. 3ncü de bunların tam zıttında.. ve her çizginin boyu farklı..
peki şimdi ne olacak :)

19.09.2007 11:10    

Harbi65
ya iyi ki kuyuya bi taş attık yani ..:)

ya mesela duvar çizgisi gibi iki paralel çizgiyi düşünmüştüm o an.... neyse unut gitsin....:)

19.09.2007 11:14    

ehya
Eeee lisp yazarken herşeyi düşünmelisin. Tek kişi için değil, yazdığımn lispin herkes tarafından kullanılabileceğini aklından çıkarma. O zaman daha iyi şeyler yazarsın :)

19.09.2007 11:22    

Harbi65
tek kişi için yazmadım diyosun ama tek çizgi seçtiriyorsun....:)
her lispi yazıyosun da bi benim dediğimi yazmadım. o da herkesin işine yarardı..:)
tek çizgi ama bu çizgiyi böyle trimlettirdinse sen blok olarak yerleştirilerin kapıyı gösterince tek tıkla duvar boşluklarınıda trimlettirirsin.... :)
(biraz gaz veriyim dedim ama...) :):)

19.09.2007 11:29    

ehya
tek çizgi seçtirmemin sebebi malum yukarıda belirttim. Bu lisp kişinini istediği doğrultusundaydı.
senin istediğin çok farklı bişi.. zaten kapı lipsiydi sanırım.
zaten foruma ekledim kapı lispini..

19.09.2007 11:39    

Harbi65
Alıntı
ehya :
tek çizgi seçtirmemin sebebi malum yukarıda belirttim. Bu lisp kişinini istediği doğrultusundaydı.
senin istediğin çok farklı bişi.. zaten kapı lipsiydi sanırım.
zaten foruma ekledim kapı lispini..



konu biraz şakaya kaydı da...
evet haklısın bu lisp blasted arkadaşın isteği üzerine gelişti... beimde aklıma o an çoklu seçim gelmişti... neyse..

benim dediğim senin kapı lispi değil.. hatırlayamadın sanırım.
benim yerleştirdiğim kapı bloğu gösterince duvar çizgilerini otomatik kırpacak...

22.09.2007 11:04    

blasted
Emeklerin için çok teşekkur arkadaşım hemen bunun denemesine geçiyorum ımarım çok işime yarıycak wakit ayırdıgın için çok teşekkur ederim herhangi sorunla karşılaşırsam yine burda bildiririm...Tekrar teşekkur ederim...


Arkadaşlar bi sorun var sanırım....(error: malformed list on input)....

Şöle bir hatayla karşılaştım?
:dozingoff

blasted (22.09.2007 11:24 GMT)

22.09.2007 11:57    

ehya
yukarıdaki kodun tamamını almamışsın.

"(defun c:tk ()" bölümünden en altta bulunan ")" bölüme kadarki kodların hepsini al.. ne eksik olsun ne fazla...

22.09.2007 12:13    

blasted
Tamam şimdi çalıştı en sondaki ) almayı unutmuşum gerçekten süper çalışıyor tam istedigim gibi bide sunu sorcam tartışmasını yaptıgınız gibi çoklu seçim olarak düzeltmesi zormu?

22.09.2007 14:32    

ehya
blasted
çoklu seçim yapytırmakla tekli seçim arasında hiçbir fark yok ama yukarıda da dediğm gibi çizgileri nereye göre kopartıcam. Bu lispte çizgiyi seçtiğin yerinden itibaren koparma yapıyor. Peki bu çoklu seçimde nasıl olacak? Mantıklı bi fikir üretin ben yazayım...

23.09.2007 09:29    

blasted
Yan yana 5 tane dikdörtgen düşün bunların dikey yani uzun çizgilerini sil şekilde sadece alt ve üst çizgisi kaldı üst çizgilerin hepsini seçtigimizde herçizginin orta noktasını referans aldırmak mümkün olursa sanırım olur ama gerek yok benim işime bu daha çok yarıyor tartışmasını yaptıgınız için ben sadece mümkünmü die sormuştum....

Birşey daha sorucam bu lispte tıkladıgımız yere trim uyguluyor ben mesela merkezine tıklamak istiyorum snap mid kullanabilmem için komutu girdigimde çizgiyi seçerken herseferinde yazmam gerekiyor bunu yazmadan seçmenin kolay bir yolu varmı...Acaba çok şeymi istedim..

Copyright © 2004-2022 SQL: 1.411 saniye - Sorgu: 99 - Ortalama: 0.01425 saniye