03.12.2021 05:56    

recep_xyz
1)
Bu konu ile ilgili bir komut bulamadım. Lisp ile seçilen objelerin EntityName bilgilerini bir geğişken içine kaydedip. (Tabiki EntityName bilgisi dosya kapatılana kadar bu seçili obje bilgisi olduğunu biliyorum.) Bu lisp bilgisini kullanarak objeleri tekrar seçmek (Burada amaç mause ile seçim gibi olması Yani vartext leri (endpoint ve midpointleri görünür (Mavi) şekilde gelmesi) Group ve previus işimi görmüyor.(farklı işlemlerden sonra secilen objeleri getirmek). Lisp ile açık kaynak kodunu öğrenmek için araştırıyorum. (eğer lisp yapılabilecek ise farklı 4 değişkene 4 farklı secim objeleri yüklemek)
Yada bu konu ile ilgili bir örnek varsa onun linkini verebilir misiniz.

2)
Birde bu secimi bozulmadan (dosya kapatılsa bile ) tekrar açılınca seçebileçegimiz bir yöntem mevcut mudur? Varsa lisp ile objenin hangi bilgisini tutmalıyız. ve dosyaya kaydetme ve dosyadan tekrar çağırma işlemleri hakkında bilgi.
Şimdiden Emekleriniz ve Zaman ayırdığınız için teşekkürler.

recep_xyz (03.12.2021 06:16 GMT)

03.12.2021 08:13    

ProhibiT
Entity Name oturum kapatıldığında kaybolur (daha doğrusu tekrar oturum açıldığında değişir) doğru. Association List'te yer alan Handling Number (assoc 5 ...) hem dosya ile kaydedilir, hemde her bir nesne için tektir (uniq). Object Properties'de yer alan ObjectID de (benim tercih etmediğim yol. Neden tercih etmediğimi uzun uzun açıklamıştım) bu şekilde dosya ile kaydedildiğinden kaybolmaz.

Soruyu daha da sadeleştirip, dosya tekrar açıldığında belli nesnelerin Handling Number'larının hatırlanması için birkaç yöntem var. Amaca ve işlemin kapsamına göre bunlardan biri tercih edilebilir.

Kullanıcıya tahsis edilmiş Sistem Değişkenleri (System Variables) kullanılabilir. Bunlar useri1-5, userr1-5, users1-5 olmak üzere toplam 15 tane sistem değişkenidir. Saklamayı düşündüğümüz veri (Handling Number) String türündedir. Bu yöntemle users1'den users5'e kadar sistem değişkenlerinde 5 tane nesnenin Handling Number'ı (ben bunlara nesnenin kulp'u diyorum) saklanabilir. Basit bir fonksiyonla da bunlar seçilebilir. Sorunuzdan yola çıkarak Handling Number'a takılmış olabilirim. Madem böyle kullanıcı sistem değişkenleri var, belki de userr1-5 kullanarak bir seçim çokgeninin (polygon) köşe koordinatlarını saklayabilir, dosya tekrar açıldığında da o bölge (o alan) elbette belli kriter ve filtrelerle tekrar seçilebilir.

Buraya kadar sorunun soruluş şekliyle ilgili açıklamalar yaptık.
Ama belli ki, amaç biraz daha karmaşık... daha doğrusu basit te, zihinler karışmış.
Bir kaç gün önce paylaştığım KoTk-1 (https://cizimokulu.com/forums.php?m=posts&p=89242#89242) programında bu konuyu (açık kaynak kodlu değil ama,) detaylı bir şekilde açıklamıştım.
O paylaşımda, düşünün ki, sınırsız sayıda kot grubu (ailesi) ve her ailenin üyesi sınırsız sayıda Kot bloku (insert nesnesi) olabilir. Bütün bu aile üyeleri, hangi guruba bağlı olduklarını, o grubun referans nesnesinin kim olduğunu, Blok Tipi'ni, Ölçü Birimini ve hatta grubun ondalık basamak sayısını nasıl hatırlıyorlar. Dosya kaydedilip tekrar açıldığında bile bu bilgiler unutulmuyor!

Sorunun cevabı XData (Extended Data). Bu konunun ayrıntıları kitabımızda verildiği gibi burada da pek çok defa açıklanmıştır. Hiç o kadar uğraşamam diyorsanız, Express menüsü altında, Tools bölümünde Attach XData ve List Object XData bölümlerini incelemenizi tavsiye ederim.

Sorunuzun bundan sonraki detaylı kısmına gelince, gene bir süre önce Reactor örneği verdiğim (https://cizimokulu.com/forums.php?m=posts&p=88760#88760 paylaşımına bakmanızı tavsiye ederim.

Kolay gelsin.

ProhibiT (03.12.2021 08:30 GMT)

03.12.2021 08:25    

ehya
Yine makale gibi bir cevap hocam :)
user* konusunu bilmeyenler için mükemmel bir bilgi.. :yes

03.12.2021 11:07    

ProhibiT
Teşekkür ederim Mehmet Hocam, Elimin ucuna kadar gelip te yazamadığım pek çok şey var. Bu kadar uzun yazıları bu devirde kimse okumaz, demişti oğlum. Haklı galiba. Yukarıdaki cevabı yazarken aklıma geldi, sonra vazgeçtim.

Daha önce yazılarımda, Reactor'ler de XData olarak saklanırlar diye kısaca bahsetmiştim. İşin aslı Reactor'ler persistent (kalıcı) yapılınca, Extended Dictionary olarak saklanırlar. Bir de soru sahibi arkadaşımızın, "Group ve previous işimi görmüyor" dediği için vazgeçtim.

AutoCAD'de bir Graphical Objects dediğimiz (line, text, circle,... gibi ekranda görünen) nesneler var, bir de Nongraphical Objects dediğimiz nesneler var. Nongraphical nesneler ekranda görünmemekle birlikte, görünenlerin niteliklerini belirlerler. Örneğin Layers Table (Layer Tablosu) Nongraphical Object'tir ve ekranda görünen bir nesne olmamakla birlikte, görünenlerin niteliklerini etkiler (belirler). Bu Nongraphical Objects dediğimiz tanımlar, AutoCAD Named Object Dictionary dediğimiz bölümde saklanırlar. Gene verdiğimiz örnekten yola çıkarsak Layer'larla ilgili bilgiler çizim ile birlikte saklanır ve dosya tekrar açıldığında unutulmaz, geri gelirler. Asıl önemli nokta, Kullanıcı (burada yazar'ı kasedediyoruz) tarafından da Named Object Dictionary oluşturulabilir. AutoCAD kütüphanesindeki diğer Dictionary nesnelerinden en önemli farkı entmod ile değiştirilemezler, bilgilere ulaşmak için bazı özel komutlar gerekir. Anlaşılacağı gibi, Named Object Dictionary'nin sahibi çizim dosyasıdır. Nesnelere benzer şekilde eklenebilen Dictionary'lere de Extended Dictionary denir. Bunları eklemenin ve düzenlemenin de kendine has yolu yöntemi var elbette. Buradaki şeytani detaya gelince, Dictionary nesneleri sahiplik bilgisi ve sözlük girdisinden oluşur, sahiplik bilgisi Kaydedilmemiş (register edilmemiş) ise, sahipsiz kalırlar, bunlar -.dwg ve -.dxf dosyalarına kaydedilmezler.

Gelelim konunun aslına, AutoCAD veri tabanında "Group" tanımları da Named Object Dictionary bölümünde yer alırlar. Sonuç olarak Group olarak tanımlanmış nesneler de, dosya tekrar açıldığında dictsearch, dictnext gibi işlemlerle nesne ismine ulaşılarak, bilgilerine ulaşılabilir. Yani demem o ki, bazı bilgileri saklamak ve taşımak için fazladan işlem yapmaya gerek bile yok. Yeterki ona ulaşmanın yol ve yöntemleri bilinsin...

ProhibiT (03.12.2021 11:17 GMT)

03.12.2021 11:18    

recep_xyz
Teşekkürler Hocam çözdüm sağolun. Lispimi yapabildim.
KoTk.vlx lispinizi inceledim.Çok güzel Ya Tirigonemetriye(Açıya dayalı) dayalı yada vektörel bir çarpıma dayalı matris çözüm gibi çok değerli veriler algoritma ve de dcl konularını içeren bir çalışma olmuş DCL daha çok eksiğim mevcut lisp kapalı olduğundan sadece kullanarak araştırabildim.
Hocam seçim crosing koordinatlarını yakalamak ve tekrar seçtirmek doğru gelmiyor çünkü dosyada sadece bu veriler yok güzergah boyunca bunların dışında bir sürü veri bulunmakta bu istenmeyen elemanların seçimine sebeb oluyor. Ben lispi entityName üzerinde gerçekleştirebildim. Teşekkürler değerli bilgileriniz için . Diğer Anlattığınız konular üzerinde araştıracağım.
Autocad ortamında sabit veri girişi LİSP için (PI , True , Pause) lisp ile tanımlı olup dışarıdan sabit girişi yokmuş.Yani değişken kullanmaya devam edecegiz........

recep_xyz (03.12.2021 13:42 GMT)

> 1 <
Copyright © 2004-2022 SQL: 1.146 saniye - Sorgu: 54 - Ortalama: 0.02121 saniye