21.11.2019 08:35    

elaura
Arkadaşlar merhaba.

Kapalı polyline'lara ait alan bilgisi yazdırırken Talan isimli bir lisp kullanıyorum. Talan lisp'inde;
• Alan Birimi/Çizim Birimi
• Ondalık Basamak Sayısı
• Yazı Yüksekliği
• Alan Yazısı Ön Eki
• Alan Yazısı Son Eki
gibi kullanışlı seçenekler bulunuyor.

Obje uzunluklarıın yazdırmak için ise Lee-Mac'in MidLen lisp'ini kullanıyorum. Fakat MidLen'de buna benzer hiçbir seçenek yok, direkt olarak obje uzunluğunu yazıyor.

Talan lisp'ini mevcut seçenekleri ile beraber, alan yazdırmak yerine uzunluk yazdırmak için değiştirebilir miyiz?



Linkleri görebilmek için ÜYE olmalısınız.

12.10.2020 12:18    

gazicabalar
Merhaba,

Yüklediğiniz lisp dosyasına ulaşım sağlanamamaktadır. Lisp'i paylaşabilir misiniz?

Saygılarımla

12.10.2020 12:44    

ProhibiT
Sözü edilen Lisp'in ilk haline

Linkleri görebilmek için ÜYE olmalısınız.

linkinden,
gelen istekler üzerinde düzenlenip geliştirilmiş ve download bölümüne eklenmiş haline


Linkleri görebilmek için ÜYE olmalısınız.

linkinden ulaşabilirsiniz.

13.10.2020 16:14    

ProhibiT
Kod:

;|---------------------------------------------------------------------------|
| Seçilen Line, Polyline, Lwpolyline, Circle ve Arc türü çizim nesnelerinin |
| (uzunluğunun) orta noktasına, orta noktadaki teğet eğimine uygun açıda,   |
| verilen ondalık basamak sayısında, çizilen ve yazdırılacak ölçü birimi    |
| oranlarında, ilgili nesneye Field ile bağlayarak uzunluklarını yazar.     |
| Önek ve Son ek kullanılabilir.                                            |
|                                        Mehmet Şahin Güvercin (ProhibiT)   |
|                                           13.10.2020 www.cizimokulu.com   |
|---------------------------------------------------------------------------|;
(defun c:uzy (/ Luf dp tx Lea Tra sTy scm Fob n PvT Pv1 nsn ins par aci uyz)
  (setvar "cmdecho" 0) (command "_.undo" "group") (vl-load-com)
  (if (= Lufo nil) (setq Lufo 1.0)) (if (= dpo nil) (setq dpo 0))
  (setq Luf (getreal (strcat "\nÇizilen/Yazılan oranı <" (rtos Lufo) ">:"))
        dp  (getint (strcat "\rOndalık basamak sayısı <" (itoa dpo) ">: ")))
  (if (= nil Luf) (setq Luf Lufo) (setq Lufo Luf))
  (if (= nil dp) (setq dp dpo) (setq dpo dp))
  (if (= txo nil) (setq txo (* (getvar "dimscale") (getvar "dimtxt"))))
  (if (not (setq tx (getreal (strcat "\n      Yazı Yüksekliği <" (rtos txo)
                                     "> :")))) (setq tx txo) (setq txo tx))
  (setq sTy (getvar "TextStyle"))
 
  (if (not Leo) (setq Leo "L=")) (if (not Tro) (setq Tro " cm"))
  (setq Lea (getstring T (strcat "\nUzunluk yazısı öneki (" Leo "): ")))
  (cond ((= Lea "") (setq Lea Leo)) ((= (strcase Lea) "X") (setq Lea "")))
  (setq Tra (getstring T (strcat "\nUzunluk yazısı soneki (" Tro "): ")))
  (cond ((= Tra "") (setq Tra Tro)) ((= (strcase Tra) "X") (setq Tra "")))
  (setq Leo Lea Tro Tra)
 
  (setq scm (ssget (list '(0 . "ARC,CIRCLE,LINE,*POLYLINE")))
Fob (ssadd) n (sslength scm))
  (while (>= (setq n (1- n)) 0)
    (setq PvT (ssname scm n) Pv1 (entget PvT) nsn (vlax-ename->vla-object PvT)
  ins (vlax-curve-getpointatparam nsn
(setq par (vlax-curve-getparamatdist nsn
    (/ (vlax-curve-getdistatparam nsn
(vlax-curve-getendparam nsn)) 2.0))))
  aci (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv nsn par))
  uyz (strcat "%<\\AcObjProp Object(%<\\_ObjId "
      (itoa (vlax-get-property nsn 'ObjectID)) ">%)."
      (cond ((= "CIRCLE" (cdr (assoc 0 Pv1))) "Circumference")
    ((= "ARC" (cdr (assoc 0 Pv1))) "ArcLength")
    ("Length"))
      " \\f "%lu2%pr" (itoa dp) "%ps[" Lea "," Tra
      "]%ct8[" (rtos Luf) "]">%"))
    (while (>= aci pi) (setq aci (- aci pi)))
    (if (> aci (/ pi 2.0)) (setq aci (- aci pi)) (setq aci (+ aci pi)))
    (while (>= aci pi) (setq aci (- aci pi)))
    (entmake (list (cons 0 "TEXT") (cons 7 sTy) (cons 10 ins) (cons 40 tx)
                   (cons 1 uyz) (cons 50 aci) (cons 72 4) (cons 11 ins)))
    (ssadd (entlast) Fob)) (command "_.UpdateFieLd" Fob "")
  (command "undo" "e") (prin1))

Komut Adı: UZY

Seçilen çizim nesnelerinin uzunluğu, orta noktalarındaki (birinci türev alınarak bulunan) teğetinin eğimine uygun açıda yazılır. SPLINE nesneleri işleme alınmaz (nedenini bilenler bilmeyenlere anlatsın lütfen).

Bu işlem Metrik sistemde düşünülmüştür, başka birim sistemlerinde sıkıntı çıkabilir.

Polyline ve Lwpolyline türü nesnelerin kapalı veya açık olmalarına bakılmaksızın uzunlukları yazdırılır. Uzunluğun ortasına yazıldıkları için örneğin RECTANGULAR komutuyla oluşturduğunuz bir polyline'ın uzunluğu (oluşturma şeklinize göre) köşelerinden birinde yazılacaktır.

Uzunluk Yazıları ilgili nesnelere field ile bağlıdır. Seçilen Line, Polyline, Lwpolyline, Arc ve Circle türü nesneler düzenlenerek değiştirildiğinde Boy yazıları da bunlara uygun olarak değişir. Söz konusu değişikliğin uygulanabilmesi FIELDEVAL sistem değişkenine, Field nesnelerinin dolgulu yada dolgusuz olması durumu da FIELDDISPLAY değişkenine bağlıdır. Oluşturulan Uzunluk yazılarının yalnızca değeri (içeriği) ilgili nesneye bağlıdır, konumları bağımsızdır.

Uzunluk yazıları geçerli yazı stili (font), Layer ve renk gibi özellikler kullanılarak oluşturulur.

Örneğin cm (santimetre) birimini kullandığınız bir çizimde uzunlukları m (metre) biriminde yazdırmak isterseniz, Çizilen/Yazılan oranı olarak 0.01 girmelisiniz... yani 1(m)/100(cm)

Önek ve Sonek kullanmak istemediğinizde, ilgili soruya "x" veya "X" girerek önek ve soneki boşaltabilirsiniz.

Selam ve saygılarımla herkese kolaylıklar dilerim.

Düzenleme: Travacı arkadaşımızın uyardığı yükleme hatası giderilerek kodlar yeniden yüklendi.

Hatanın devam etmesi üzerine Dosya Deposuna yüklenen Uzy.Lsp dosyasının bulunduğu arşiv dosyasını Buradan indirebilirsiniz

admin (16.12.2020 06:52 GMT)

15.12.2020 09:19    

byppo
Mehmet hocam saygılar
Gerçekten sabrınıza özverinize ve öğrenip öğretme açlığınıza hayranım 2013 ten beri her başım sıkıştığında siteye girip derdimi çözecek bişeyler illaki buluyorum .
Size ve diğer arkadaşlara ne kadar teşşekkür etsem az

16.12.2020 11:07    

ProhibiT
Alıntı
byppo :
Mehmet hocam saygılar
Gerçekten sabrınıza özverinize ve öğrenip öğretme açlığınıza hayranım 2013 ten beri her başım sıkıştığında siteye girip derdimi çözecek bişeyler illaki buluyorum .
Size ve diğer arkadaşlara ne kadar teşşekkür etsem az



Rica ederim, bilenler biliyor; cizimokulu.com sitesi, hiç bir karşılık beklemeksizin çözüm üretilen ve paylaşılan, bence dünyanın en önemli, en verimli ve faydalı sitesidir. Her şeyden önce böyle bir ortamda bulunmaktan, (kimsenin vermediği) görev(i) almaktan hem çok mutluyum, hem de gururluyum. Bu duyguların üstüne bir de sizin gibi kıymet bilir, değerli arkadaşlarımızın güven ifadeleri bizleri mutlu ediyor, bunca iyi niyetli çaba yerini buluyor, boşa gitmiyor duygusunu uyandırıyor.

Bu duygularla önce admin (Aydın Bey), ehya (Mehmet Şamil Demiryürek) ve diğer yönetici arkadaşlarımızla birlikte siz değerli katılımcılarımıza yürekten teşekkür ediyoruz.

Burada, cizimokulu.com'da her şeye çözüm var, malum ezeli ve ebedi derde devadan gayrı.

Selam ve saygılarımla herkese kolaylıklar dilerim.

26.12.2020 14:47    

sahin460
Vakit buldukça ziyaret ediyorum. Site çok iyi işler çıkardı. Emeği geçen herkese gönülden teşekkür ediyorum.

21.01.2021 08:35    

ProhibiT
Alıntı
ProhibiT :
Uzunluk Yazıları ilgili nesnelere field ile bağlıdır. Seçilen Line, Polyline, Lwpolyline, Arc ve Circle türü nesneler düzenlenerek değiştirildiğinde Boy yazıları da bunlara uygun olarak değişir. Söz konusu değişikliğin uygulanabilmesi FIELDEVAL sistem değişkenine, Field nesnelerinin dolgulu yada dolgusuz olması durumu da FIELDDISPLAY değişkenine bağlıdır. Oluşturulan Uzunluk yazılarının yalnızca değeri (içeriği) ilgili nesneye bağlıdır, konumları bağımsızdır.
Uzunluk yazıları geçerli yazı stili (font), Layer ve renk gibi özellikler kullanılarak oluşturulur.


Merhaba,
Yalnızca Field'ın beyaz dolgusundan söz ediyorsanız, onun kontrolü zaten sizin elinizde, yukarıda açıklanmış.
Gene söz açılmışken bir kavrama açıklık getirmekte fayda var. Field değil de Text diye bir karşılaştırma (veya karşılama) olmaz. İkisi birbirinin dışında kavramlar değil. Field, Text'in veya Text'in bir bölümünün özel biçimlendirilmiş halidir. Daha basite indirgersek, Field Text'in (veya bir bölümünün) başka nesnelerin öz nitelikleriyle canlı olarak ilişkilendirilmiş halidir. Benzer bir biçimde Attribute ve Text ilişkisi de böyledir. Zaman zaman sitemizde de benzer diyaloglar yaşandı, Field'ı Text'e çevirmek şeklinde ifade edilen bu durum aslında, field dediğimiz Text'in bir kısmının (yada tamamının) canlı ilişkisinin koparılıp, o andaki değerinin Text içine karakter dizi olarak yazılmasıdır.

Diğer konulara gelince; burada sözünü ettiğiniz totl ve uzy lisp fonksiyonlarını da sitemizdeki arkadaşların isteği üzerine yazmıştık. Yazarken de amacımız kişiye özel her durumu çözen, her derde deva bir şeyler olmadı. Buna rağmen benzer konularda arkadaşlarımızın hevesini kırmamak adına aLn, aLd,... gibi pek çok çeşitlemesini de yazmış bulunduk. Böyle bir yola girince de çok uğraşıyoruz ve hedefimize de ulaşamıyoruz. Zaman zaman şaka yollu sözünü ettiğim gibi, çay kaşığında transatlantik yüzdürüyoruz.

Hal bu iken, ne güzel bir kaç fonksiyonu detaylarıyla inceleyip (mantığını olmasa bile) ürettiği sonuçları analiz emiş iken... biraz daha çaba gösterip, daha doğrusu çabalarınızı doğru yönlendirip, isteklerinizi açık kaynak koduyla paylaştığımız lisp fonksiyonları düzenleyerek yapsanız! Emin olun o kadar zor bir şey değil. Siz öğrenmiş olursunuz, biz de gurur duyarız.

Bu anlattıklarımla ilgili yaşanmış bir olay anlatıvereyim size.
Benim oğlum, (ki o da sitemizin müdavimlerindendir) mesleğinde kendini ispatlamış kabul ettirmiş (benim görüşüm değil, sektörde ve uluslararası camiada öyle deniyor) bir İç Mimar. Bir gün bana bir mesaj yazmış; "Senin bir Lisp vardı ya, hani alanları field ile attribute'e bağlayan bir fonksiyon. Ben onu sık kullanıyordum, bilgisayar değişikliği sırasında kaybettim" demiş. Ben de yeniden gönderdim. Kısa bir süre sonra bir mesaj daha aldım. "Bu Lisp alan ile birlikte çevre de yazsa!.." Olur elbette, ama şimdi yoğunum, akşam eve gidince yazar gönderirim sana, diye cevap verdim. Çok zaman geçmedi, akşam olmadan bir mesaj daha geldi. "Hallettim" diye. Nasıl yani diye sorunca; "Açtım senin Lisp'i, döngünün içindeki field tanımını aynen kopyaladım, Area yerine de Perimeter yazdım, şimdi hem alanı hem de çevreyi yazıyor" diye açıklamış.

Kıssadan hisse, o günden beri; senin bir Lisp vardı ya... veya şöyle bir lisp yazılır mı? diye bir soru sormuyor bana. Algoritma konuşuyoruz, akış ve mantık konuşuyoruz. Bahsettiğim düşünce yapısında arkadaşlar ne yazık ki bir elin parmaklarını geçemedi. O parmaklardan her biri de zaten bu çizgiye girmiş, kendilerini belli noktalara taşımış arkadaşlarımızdı.

Herkese kolay gelsin.

ProhibiT (21.01.2021 16:40 GMT)

21.01.2021 11:19    

semiyildiz
Teşekkürler.

> 1 <
Copyright © 2004-2022 SQL: 1.36 saniye - Sorgu: 69 - Ortalama: 0.01971 saniye