25.05.2007 06:27    

nergizdakman
Object snap modlarından "end" "mid" "cen" "qua" "int" "ins" "per"
seçili olarak çalışıyorum. Bu modların hepsini bir komutla seçili hale getirebileceğim bir lisp yapılabilir mi? Ya da buna benzer bir örnek var mı? Teşekkür ederim. İyi çalışmalar.

25.05.2007 06:46    

seastar
en altta SNAP yazıyor. onun üzerinde sağ tıkla açılan pencerede object snap menüsünü seç ve istediğin modların kutularını işaretle ok

25.05.2007 06:48    

ehya
aşağıdaki kodu
support klasöründe bulunan 2006 için acad2006.lsp dosyasının en altında kopyalayın.
Komut ismi ND

Kod:

(defun c:nd ()
(setvar "osmode" 247)
(princ))

25.05.2007 09:19    

ahmetonder0203
öncelikle o dediğin snap modlarını bir defaya mahsus olmak üzere seç daha sonra çizim yaparken bunları kullan ama kullanmak istemediğin anda F3 tuşuna basarsan snap menüsü kapanır snap menüsü olmadan çizime devam edersin tekrrar kullanmak istediğinde yine F3 tuşuna basarsan tekrar snap aktif hale gelir yani bunun için lisplerle uğramana gerek yok bence

25.05.2007 09:22    

ehya
Lispe gerek yok diyorsun. Velhasıl snap ayarların kapandı. Tekrar açmak için her defasında bu seçenekleri yeniden seçmen gerekecek.
Basit lisplerle bu işlemler daha da kolaylaşır.

25.05.2007 10:49    

ahmetonder0203
ehyacım ben 3 senedir autocad kullanıyorum yoğun bi biçimde ( çok iyi bildiğimi idda etmiyorum kesinlikle yanlış anlaşılmak istemem ) bu snap ayarlarının değişmesi veya yok olması gibi bi durum başıma 3 kere gelmemiştir. Tabii bu basit lisplerle halledilebilir ama ne biliyim bence çok da gerekli olmuyor bu benim fikrim tabi ki ....

25.05.2007 10:55    

ehya
Bende 11 yıldır autocad kullanıyorum. Birçok lisp kullanıyorum. Lisplerin yazım hatalarından kaynaklanan osnap kapatmaları oluyor. Bunun haricinde bu lisp haricinde başka kenetlemeler kullanmak zorunda kalabileceğin kenetlemelerde olacak. Tekrar başa dönmek istediğinde işine yarayacaktır. Bu sadece bi osnap seçeneği için. Autocad'in bir çok yerinde lisplerden faydalanabilirsin.

25.05.2007 11:49    

ahmetonder0203
bende hiç lisp kullanmıyorum belkide o yüzden başıma gelmemiştir böyle bir sorun.

08.04.2008 10:49    

ec
Object snap modlarından "end" "mid" "cen" "qua" "int" "per" "nea"seçili olarak çalışıyorum.
Lisp'i bu şekilde çalıştırmak için osmode'ın değeri kaç olmalıdır.
Farklı bir şekilde düzenleyebilmek için bunun bir çizelgesi ya da yararlanacağımız kodları var mıdır.
Paylaşır mısınız. Teşekkürler.

08.04.2008 11:03    

oguzkilic
lisp diyince tabiki ehya hepsini savunur :):) Ama haklıda çünkü bi klavyeden çalışmak var birde mause u oynatmak var. Herzaman klavyeyi tercih etmişimdir. Bu nedenle bu tür lisplerin her zaman pratik yönü vardır.

01.06.2010 13:23    

id
Ehya üstadım

Sizden bir ricam olacak. Bir line üzerinde bulunan bir yazıyı kendimizin belirleyeceği paralel bir mesafeye taşıyabileceğimiz bir lisp mümkün mü acaba? Yazıları bir seferde seçip çigiden paralel mesafeyi gireceğiz. Teşekkürler.

01.06.2010 14:49    

ehya
ec

sorunu yeni gördüğüm için şimdi cevaplayabiliyorum.
eğer seçili kenetlemelerin osmode değerini öğrenmek istiyorsanız, bu seçenekleri işaretleyin. ardından komut satırına OSMODE komutunu çalıştırın. yeni bir değer isteyecek yanında da bir sayı olacak. o sayı seçili modların değeridir.




id

dediğin lispi anladım ancak vakit konusunda biraz sıkıntım var. müsait olduğumda inşallah unutmazsam yazarım.

01.06.2010 17:15    

ProhibiT
ehya hocamı fazla meşgul etmemek için bazı kavramları açıklamak istiyorum...

Öncelikle OSMODE Sistem Değişkeni'nin değerleri;
0 : NONe
1 : ENDpoint
2 : MIDpoint
4 : CENter
8 : NODe
16 : QUAdrant
32 : INTersection
64 : INSertion
128 : PERpendicular
256 : TANgent
512 : NEArest
1024 : Clears all object snaps
2048 : APParent Intersection
4096 : EXTension
8192 : PARallel
Şeklindedir. Bunları AutoCAD Help dosyasından alıyorum, arayan kolaylıkla bulabilir.
Ama nedense burada iddialı bir şekilde sormak insanların daha kolayına geliyor...

To specify more than one object snap, enter the sum of their values.
For example, entering 3 specifies the Endpoint (bitcode 1) and Midpoint (bitcode 2) object snaps.
Entering 16383 specifies all object snaps.


Birden fazla object snap tanımlayabilirsiniz, bunların değerlerinin toplamını girin.
Örneğin, osmode değerini 3 girerseniz, Endpoint (bitcode 1) ve Midpoint (bitcode 2) girmiş olursunuz.
16838 girerseniz object snap'lerin hepsini açarsınız.

When object snaps are switched off using the Osnap button on the status bar,
a bitcode of 16384 (0x4000) is returned, in addition to the normal value of OSMODE.
With this additional value, developers can distinguish this mode from Object Snap modes
that have been turned off from within the Drafting Settings dialog box.
Setting this bit toggles running object snaps off.
Setting OSMODE to a value with this bit off toggles running object snaps on.


Status barda yer alan Osnap butonunu kullanırsanız, OSMODE'un normal değerine ek olarak 16384 (ox4000) değeri döner.
Bu ek değeri programcılar, mevcut object snap'lerden korunmak için,
Drafting Settings diyalog kutusundan kapatmış gibi kullanabilirler.
Bu ayarlama, geçerli object snap'leri açıksa kapatacak, kapalıysa açacaktır.

Genelde programcılar AutoLisp içinde object sanap'lere yakanlanma riski olan durumlarda;
(setq curosm (getvar "osmode")) komutuyla mevcut object snap değerlerini curosm değişkeninde sakladıktan sonra
(setvar "osmode" 0) komutuyla bütün object sanap değerlerini kapatıp NoNe durumuna getiridikten sonra.
object snap'lerden kutulup işlemlerini yapıp bitirdikten sonra...
(setvar "osmode" curosm) komutuyla kullanıcının object snap değelerine geri dönerler...

Açıkçası ben bunu yöntemi de kullanmakla birlikte, gerek duyduğumda başka bir yol da kullanıyorum.
Bu yöntemi açıklayabilmek için bazı kavramları biribirine karıştırmamak, kavramları net olarak yerli yerine koymak gerekiyor.

1- OSMODE sistem değişeknine değerler vererek object snap'lerden hangisi ya da hangilerinin seçili olacağını belirliyoruz. Buna Running Object Snaps te deniyor.
2- F3 tuşuna basarak ya da Status Bar'daki butona tıklayarak Snap Mode'u değiştiriyoruz.
3- Snap Mode'u değiştirmek (açmak ya da kapatmak) object snap ayarlarını değiştirmez.
    Seçili object snap ayarlarını etkinleştirir ya da etkisiz hale getirir.
4- OSMODE değerini değiştirdiğinizde Snap Mode'u değiştirebiliriz.
    Ama Snap Mode'u değiştirilince OSMODE değeri değişmez.

object sanap'leri kapatıp açmak yerinde snap mode'u on/of yapma şeklindeki yöntemin detaylarını AutoLisp ve VisuaLLisp ile ilgilenen arkadaşlarımıza biraz beyin cimnastiği yapmaları için bırakıyorum :)

Herkese Kolay Gelsin...

02.06.2010 06:07    

ehya
hocam çok açıklayıcı ve güzel bir bilgi vermişsiniz.
erindiğimden bu sayısal değerleri veremedim.
elinize sağlık. çok güzel bir yazı olmuş... :yes

04.06.2010 06:45    

yazgunesi
Object snap modlarından bahsederken bende sizlere keşfettiğim bir püf noktadan bahsedeyim.. :yes

Öncelikle bildiğiniz gibi Autolisp ile program yazarken çizdirdiğiniz çizgi yay daire gibi objeler ''tekli obje'' olarak çizdirmek kolaydır. Fakat bu çizim objelerin sayısı fazla ise ( ben buna kompleks çizim diyorum) oluşturduğunuz program çizim yapma işlemi anında aklı karışıyor ve istenilen sonucu vermiyor. Bu durumu engellemek için osnap modunu oluşturduğumuz programın ilk satırlarında kapatıyoruz ve en son da açıyoruz.

Farzedin ki autolisp ile bir program yazıyorsunuz.. Osmode sayısal değerleri de aklınıza ama sizin isteğiniz hem endpoint hemde mindpoind birde center modu açık olacak.

Kullanmak istediğiniz osmode değeri için Autocad'te osnap mode'leri ayarladığınız dialog kutusunu ekranda görüntüleyip istediğiniz seçeneği aktif ediyoruz.Ardından Autocad'te klavyeden osmode yazınız, command satırında göreceğiniz değer sizin seçiminize göre oluşan osmode sayısal değeridir..

yazgunesi (04.06.2010 06:58 GMT)

04.06.2010 07:14    

cihat
arkadaşlar hepinize verdiğiniz bilgiler için çok teşekkür ederim lispleri kullandıktan sonra her defasında snap ayarlarını tekrar yapmaktan kurtardınız.

04.06.2010 10:47    

ProhibiT
merhaba yazgunesi :)
Elbette bahsettiğin yöntem kullanılabilir. Çoğu zaman ben de kullanıyorum.
OSMODE değerini 0 yaptıktan sonra AutoLisp fonksiyon içinde bir hata oluştu ve, normal olmayan şekilde fonksiyon sonuçlandı. Bu durumda kullancının Object Snap seçimi tamamen kayboluyor. Ya da fonksiyonu kullanırken kullanıcı ctrl+RightClick yaptı ve Object Snap leri isteği ve ihtiyacı doğrultusunda düzenledi. Biz fonksiyona ilk girişteki değeri sakladığımız ve ona döndüğümüzde kullanıcıyı üzmüş oluruz :) Bu şekilde Object Snap setting'lerini kaybeden kullancıların üzülüp sinirlendiklerini biliyoruz. Eninde sonuda hepimiz kullanıcıyız :)

Benim yukarıda ipuçlarını verip, ilgili arkadaşlarımızın anlayışına bıraktığım yöntem biraz daha farklı.

Örnekleyerek açıklamak gerekirse; Object Snap'lerden End Point ve Quadrant'ın açık olduğunu kabul edelim. Bu durumda OSMODE=17 dir.
Burada bahsettiğim 16384 rakamı önemli. 17+16384=16401 olduğuna göre (setvar "osmode" 16401) uyguladığımızda, sanki F3 tuşuna basılmış ya da ekranın altındaki Object Snap butonuna tıklanmış gibi <Snap off> uygulamış olacağız.
Eğer fonksiyonumuz içinde bir yerlerde Object Snap hataya sebep olabiliyorsa o noktada (getvar "osmode") ile elde ettiğimiz değeri kontrol ediyoruz. Eğer osmode<16384 ise <Snap On> durumunda ve eğer osmode>16384 ise <Snap off> durumdadır. Programdan çıkarken benzer kontrolü yaparak kullanıcının tercihlerini değiştirmeden çıkmak mümkün. Bunu yapmadan ya normal olmayan bir şekilde (Abnormal Program Termination) program sonladığında, kullanıcı en fazla F3 tuşuna basarak hiç bir Object Snap seçimini kaybetmeyecektir...

Burada belki karmaşık gelebilecek anlatımımı AutoCAD Komut satırından test edip, deneysel ve görsel olarak test edebilirsiniz.
- Yukarıdaki örnekte olduğu gibi End Point ve Quadrant Object snap'lerimizin seçili durumda olsun.
- Komut satırından OSMODE<┘ girdiğimizde Enter new value for OSMODE <17>: mesajını göreceğiz.
- Enter ya da Escape ile çıktıktan sonra, F3 tuşuna basalım ya da ekranın altındaki Object Snap butonuna tıklayalım.
- Komut satırından tekrar OSMODE<┘ girdiğimizde bu sefer Enter new value for OSMODE <16401>: mesajını göreceğiz.


Bunun tersi bir denemeyi de yapıp görmenizi tavsiye ederim.
Somode değerimiz 17 ve ekranın altındaki Object Snap butonumuz basılı (parlak) durumda iken, Komut satırından (Setvar "Osmode" 16401) girdiğinizde Object Snap butonumuzun basılmamış (gri renkli) duruma geçtiğini gözleyeceksiniz.

Herkese Kolay Gelsin...

01.07.2010 18:34    

id
Alıntı
ehya :
ec

sorunu yeni gördüğüm için şimdi cevaplayabiliyorum.
eğer seçili kenetlemelerin osmode değerini öğrenmek istiyorsanız, bu seçenekleri işaretleyin. ardından komut satırına OSMODE komutunu çalıştırın. yeni bir değer isteyecek yanında da bir sayı olacak. o sayı seçili modların değeridir.




id

dediğin lispi anladım ancak vakit konusunda biraz sıkıntım var. müsait olduğumda inşallah unutmazsam yazarım.




EHYA hocam benim sizden rica ettiğim konuya ilgilenme imkanınız oldu mu acaba? Hatırlatmak istedim.

> 1 <
Copyright © 2004-2022 SQL: 1.381 saniye - Sorgu: 95 - Ortalama: 0.01454 saniye