11.02.2021 12:16    

ProhibiT
Chatintash arkadaşımızın,
---------------------------------------
* Kendi belirleyeceğimiz bir eğim ve mesafede +X ekseni yönünde çizgi çizdirmek ve çizilen çizginin tam orta kısmına eğim değerinin yüzde cinsinden yazılmasını istiyorum.
* Tercihen öncelikle başlangıç noktasını ekrandan seçtirecek, sonrasında eğim ve mesafe bilgilerini gireceğim bir lisp olsun istiyorum.
* Ekli fotoğrafta göreceğiniz üzere x ekseni1/1000 y ekseni ise 1/100 şeklinde çalışıyor. Dolayısı ile hesaplama kısmında önemli.
Bu konuda yardımcı olabilir misiniz?
---------------------------------------
sorusuna cevaben hazırladığım açıklamalı Lisp Fonksiyonu paylaşıyorum

Kod:

; M. Şahin Güvercin (ProhibiT) 11.02.2021 - www.cizimokulu.com                 ;
;______________________________________________________________________________;
(defun c:PrfL (/ aCi BsL BtS EgM MsF TiP TxH) (vl-load-com)
;______________________________________________________________________________;
  (defun *error* (ocmd edz / er)
    (if (and (member er '("Function cancelled" "quit / exit abort"))
             (= (logand (getvar "undoctl") 8) 8))
      (progn (command-s "_.undo" "e")
             (setvar "dimzin" odz) (setvar "cmdecho" ocmd)))
    (princ (strcat "\n" er)) (prin1))
;______________________________________________________________________________;
  (setq ocmd (getvar "cmdecho") edz (getvar "dimzin"))
  (setvar "cmdecho" 0) (setvar "dimzin" 0) (command "_.undo" "group")
; dimzin ve cmdecho mevcut değeri saklanarak değiştirildi                       
  (if (not eTx) (setq eTx (getvar "TextSize")))
; Eski Yazı Yüksekliği yoksa (fonksiyon ilk defa kullanılıyorsa),               
; çizime son eklenen (geçerli) yazı yüksekliği olan TextSize alındı.           
  (initget 6) ; negatif veya sıfır yazı yüksekliği girişi engellendi (2+4=6)   
; initget ayarı yalnızca kendinden sonra uygulanacak ilk işlemde geçerlidir.   
  (if (not (setq TxH (getreal
                       (strcat "\nYazı Yüksekliği <" (rtos eTx 2 2) ">: "))))
    (setq TxH eTx) (setq eTx TxH))
; Enter girilirse teklif edilen yazı yüksekliği alınır.                         
  (setq BsL (getpoint "\nBaşlangıç noktası: ")
        EgM (getreal "\n          Eğim (%): "); Eğim değeri negatif (-) olabilir
        MsF (getreal "\n            Mesafe: "); Geçerli uzunuluk birimi (unit) 
        BtS (list (+ (car BsL) MsF)    ; Eğim ve Mesafeye göre Bitiş Noktası   
                  (+ (cadr BsL) (* MsF (/ EgM 100.0) 10.0))
                  (caddr BsL)) ; Y eksenindeki mesafe ölçek oranında çarpıldı   
        aCi (angle BsL BtS)    ; BsL ve BtS arasındaki doğrunun açısı           
        OnK (mapcar '(lambda (p1 p2) (/ (+ p1 p2) 2.0)) BsL BtS) ; Orta nokta   
        TiP (polar Onk (/ TxH 2.0) (+ aCi (/ pi 2.0)))) ; Eğim yazısı yeri     
  (entmake (list (cons 0 "Line") (cons 10 BsL) (cons 11 BtS)))
; Başlangıç (BsL) ve Bitiş (BtS) noktaları belli olan Line nesnesi oluşturuldu 
  (entmake (list (cons 0 "TEXT") (cons 10 TiP) (cons 40 TxH)
                 (cons 1 (strcat "%" (rtos EgM 2 2)))
                 (cons 50 aCi) (cons 72 1) (cons 11 TiP)))
; Yeri (Konumu: TiP), İçeriği (Eğim=EgM) ve Açısı (aCi) belli olan             
; Text Nesnesi oluşturuldu. Association List'te 72 anahtarlı değer 1 verilerek 
; Ortalanmış (Centered) olması sağlandı.                                       
; Centered Text nesnesinde 11 anahtarlı Hizalama Noktası (Alignment Point),     
; 10 anahtarlı Text Insertion Point (TiP) ile aynı verildi.                     
; Oluşturulan Nesnenin entget ile listesi alıp incelendiğinde görülür ki,       
; Hizalama Noktası bizim verdiğimiz değer ile aynı değildir.                   
; AutoCAD bizim adımıza oldukça karışık bu işlemi yapmış                       
; ve Varlık Listesine bu değeri koymuştur.                                     
  (command "_.undo" "e") (setvar "cmdecho" ocmd) (setvar "dimzin" edz) (prin1))


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

ProhibiT (22.03.2021 06:40 GMT)

12.02.2021 11:12    

Chatintash
Kıymetli Hocam,
Elinize, emeğinize sağlık. Çok teşekkür ederim.

13.02.2021 10:39    

Chatintash
Hocam, geliştirilmesi ile ilgili bir öneri sunsam yapılabilir mi bilemiyorum. Bu oluşturduğunuz lisp son derece güzel çalışıyor. Mesela lisp yardımı ile bir line oluşturduk diyelim. sonrasında line ın ucundan tutup çeksek çektiğimiz yere göre eğim ve line a bağlı text de güncellenip line'ın orta noktası ile birlikte gelse olabilir mi? Bu şekilde birşey yapılabilir mi?

Saygılar dilerim Hocam.

20.11.2021 17:50    

ProhibiT
Son mesajdan yaklaşık 9 ay sonra tekrar merhaba,
Arkadaşımızın isteği üzerine bir şeyler yazmıştım aslında. Ama paylaşma konusunda, yazımın ilerleyen bölümlerinde açıklamaya çalışacağım tereddütlerim oldu.

Her ne kadar konuyu Forumlar>Acemi AutoLisp başlığı altında açmış olsak ta, Chatintash arkadaşımızın samimi isteği karşısında okur ve yazar arkadaşlarımızın ilk aklına gelen field olmuştur sanıyorum. (Lisp fonksiyonları alıp yükleyip kullanabilenlere okur, kendi Lisp fonksiyonlarını yazabilenlere de yazar diyoruz.) Daha kurnaz arkadaşlarımızın aklına da field ile constraints gelmiştir. Neden olmasın! Madem ilk paylaşımımızda ayrıntılı açıklamalarla başladık, aynı biçimde devam edelim istedim.

Daha önce paylaştığımız fonksiyondaki
Kod:

  (setq BsL (getpoint "\nBaşlangıç noktası: ")
        EgM (getreal "\n          Eğim (%): ")
        MsF (getreal "\n            Mesafe: ")
        BtS (list (+ (car BsL) MsF)
                  (+ (cadr BsL) (* MsF (/ EgM 100.0) 10.0))
                  (caddr BsL))
        aCi (angle BsL BtS)
        OnK (mapcar '(lambda (p1 p2) (/ (+ p1 p2) 2.0)) BsL BtS)
        TiP (polar Onk (/ TxH 2.0) (+ aCi (/ pi 2.0))))

bölümündeki polar ifadesinden kurtulmakla başlayalım.

Başlangıçta herkesin kolayına geliyor... AutoCAD'de çizim yaparken uyguladığımız gibi, şununla bunun kesişiştiği noktadan şu kadar yukarı, gibi ifadeler. Önünde sonunda hataya neden olacaklarından, elinize ayağınıza dolanacaklarından hiç kuşkunuz olmasın.

Eğim Yazısı'nı, Eğim Çizgisi'nin ortasından, yazı yüksekliğinin yarısı kadar yukarıya (çizgi açısına 90 derece ekleyerek) yerleştirmeyi hedefliyoruz. Aradığımız noktanın koordinat listesini basit trigonometri bağıntıları kullanarak elde edebiliriz. TiP X koordinatı OnKX-sinAci*(TxH/2), TiP Y koordinatı OnKY+cosAci*(TxH/2) formülleriyle bulunabilir. Düzlemde (2B) çalıştığımıza göre Z koordinatı olduğu gibi kalacaktır.
Lisp kodlarının ilgili bölümü,
Kod:

  (setq BsL (getpoint "\nBaşlangıç noktası: ")
        MsF (getdist "\n           Mesafe: " BsL)
        EgM (getreal "\n          Eğim(%): ")
        BtS (list (+ (car BsL) MsF) (+ (cadr BsL) (* MsF (/ EgM 100.0) 10.0))
                            (caddr BsL))
        aCi (angle BsL BtS)
        TiP (list (- (/ (+ (car BsL) (car BtS)) 2.0) (* (sin Aci) (/ Txh 2.0)))
                (+ (/ (+ (cadr BsL) (cadr BtS)) 2.0) (* (cos Aci) (/ Txh 2.0)))
              (/ (+ (caddr BsL) (caddr BtS)) 2.0)))
şekline gelecektir.

Burada, bir daha ileride kullanmayacağımız OnK (Eğim Çizgisi Orta Noktası) koordinat listesini de doğrudan formül içine koydum. Kod için de bir kereden fazla kullanılmayacak ve hatırlanmasına gerek olmayan hiç bir değeri değişken'e atayarak tutmayınız. Prensibine de uymuş olduk. Gereksiz değişkenler tutmama kuralının bir devamı olarak, AutoCAD ortamından veya başka bir fonksiyondan çağırılmasına gerek olmayan hiç bir değişkeni Global Variable olarak bırakmamak, Local Variable olarak tanımlamak gerektiğini de hatırlatmak isterim.

Öncelikle Eğim Değeri'ni hesaplayalım. Neden Eğim Yazısının Yeri ve Açısından değil de Değeri'inden başladığımızı ileride açıklayacağım. Aradığımız Eğim Değeri, Eğim Çizgisi'nin Başlangıç ve Bitişi arasındaki Farkın Y eksenindeki izdüşümünün X ekseni üzerindeki izdüşümüne bölümü (oranı) olacaktır. Burada X doğrultusundaki ölçeğimizin 1/1000 ve Y doğrultusundaki ölçeğimizin de 1/100 (10'da biri, sayısal değer olarak düşününce 10 katı) olduğunu düşünürsek...
Eğim=(10*DeltaY)/DeltaX olacaktır.

Bundan önce bu değeri hesaplayıp yerine koymuştuk, şimdi field olarak yerine koymayı hedefliyoruz. Field denince o karmaşık formülleri öğrenmek (aslında ezberlemek) gibi bir eziyete hiç gerek yok. Yeter ki, AutoCAD'in bize cömertçe sunduğu bilgilerin farkında olalım ve kullanmasını bilelim. AutoCAD komut satırından field komutunu çalıştırıp örnek bir çizgi (Line) seçtiğimizde.



Şanslıyız! Property bölümünde Delta diye bir özellik var ve sağ taraftaki X, Y ve Z kutucuklarını işaretleyerek; yalnızca X'i, Yalnızca Y'yi, Yalnızca Z'yi, XY'yi, XZ'yi, YZ'yi veya XYZ şeklinde tüm Delta değerlerini (yani Deltalar listesini) elde edebiliyoruz.

Delta-Y kutucuğunu işaretlediğimizde diyalog penceresinin altındaki formülü alıp bir yere koyalım
%<AcObjProp Object(%<\_ObjId 2342671672848>%).Delta \f "%lu2%pt2">%
Burada 2342671672848 yerine fonksiyonumuzda bulunacak (Eğim Çizgisi, Line nesnesi) Object ID gelecek. \f ile başlayan format (biçim) bölümündeki %lu2 Lineer Unit'in Decimal (ondalık sayı) olduğunun, %pt2 de Delta Y'nin alınacağının ifadesidir. O zaman, %pt2 yerine %pt1 koyarak,
%<AcObjProp Object(%<\_ObjId 2342671672848>%).Delta \f "%lu2%pt1">% şeklinde Delta X'i alabiliriz.



Gene Field diyalog penceresinde görüyoruz ki, Object seçmek yerine Formula seçersek,
Genel formülümüz olan (10*DeltaY)/DeltaX formülümüzü buraya girebiliriz.



Formula bölümüne yazdığımız bu formülün DeltaY bölümünü seçip sağ tıkladığımızda açılan menüden "Insert Field" seçerek, yukarıda yaptığımız şekilde DeltaY değerimizi, ama bu sefer Field Formülü altında Field olarak oluşturabiliriz.



Benzer şekilde DeltaX'imizi de field altında field olarak elde edebiliriz.



Evaluate butonuna tıkladığımızda da diyalog penceremizde görüntülenen formül formülünü alıp...
%<\\AcExpr ((10*%<\_FldPtr 2341178126896>%)/%<\_FldPtr 2341178127376>%) \f "%lu2%pr2">%
\f bölümünde %lu2 yukarıda açıklandığı gibi Ondalık Sayı (string'e çevrilmiş) ve %pr2 (precission) de ondalık noktasından sonra 2 basamak yürütüleceğini gösterir. Burada görülen %<\_FldPtr 2341178126896>% yerine yukarıda elde ettiğimiz DeltaY formülünü, %<\_FldPtr 2341178127376>% yerine de DeltaX formülümüzü koyduğumuzda,
%<\\AcExpr ((10*%<AcObjProp Object(%<\_ObjId 2342671672848>%).Delta \f "%lu2%pt2">%)/%<AcObjProp Object(%<\_ObjId 2342671672848>%).Delta \f "%lu2%pt1">%) \f "%lu2%pr2">% şeklinde genel field formülümüzü elde ederiz.

Bu field formülümüzü ilgili Nesnenin (Eğim Yazısı) ilgili ilişki listesi anahtarına (assoc 1 ...) atadığımızda işlem tamamdır.
Association List'in beklediği String türünde bir değer, bizim formülümüzün hem kendi hemde (update field den sonra) ürettiği değer String türünde... bir sıkıntı yok, uygulanabilir ve çalışır.

Elde ettiğimiz formülü (tırnak içine alarak) String'e (karakter dizisine) çevireceğiz. Bilindiği gibi Stringler içinde yer alan \ işareti (control character) kendinden sonra gelen karakter(ler)e değişik anlamlar yükler. Bu nedenle, tırnak içine alırken, \ gördüğümüz yere \\, " gördüğümüz yere de " koymamız gerekecek. Bu biçimde düzenlenmiş karakter dizileri, burada code bracket'i içinde farklı göründükleri için kodlarımızın ilgili bölümünü braketsiz veriyorum.
(entmake (list (cons 0 "TEXT") (cons 10 TiP) (cons 40 TxH)
(cons 1 (strcat "% " "%<\\AcExpr "
"((10.0*%<\\AcObjProp Object(%<\\_ObjId " ObId ">%).Delta "
"\\f "%lu2%pt2">%)/%<\\AcObjProp Object(%<\\_ObjId " ObId
">%).Delta \\f "%lu2%pt1">%) \\f "%lu2%pr2">%"))
(cons 50 aCi) (cons 72 1) (cons 11 TiP)))

Şimdi de göz alışkanlığı olması bakımından Lisp kodumuzun tamamını verelim.
Kod:

; M. Şahin Güvercin (ProhibiT) 11.02.2021 - www.cizimokulu.com                 ;
;______________________________________________________________________________;
(defun c:PrfL (/ *error* aCi BsL BtS EgM MsF TiP TxH)
  (vl-load-com) (setq ocmd (getvar "cmdecho") odz (getvar "dimzin"))
;______________________________________________________________________________;
  (defun *error* (er)
    (if (member er '("Function cancelled" "quit / exit abort"))
      (princ (strcat "\n*Error* " er)))
    (if (= (logand (getvar "undoctl") 8) 8) (command-s "_.undo" "e"))
    (if odz (setvar "dimzin" odz)) (if ocmd (setvar "cmdecho" ocmd)) (prin1))
;______________________________________________________________________________;
  (setvar "cmdecho" 0) (setvar "dimzin" 0) (command "_.undo" "group")
  (if (not eTx) (setq eTx (getvar "TextSize")))
  (initget 6) (if (not (setq TxH (getreal
                         (strcat "\nYazı Yüksekliği <" (rtos eTx 2 2) ">: "))))
                (setq TxH eTx) (setq eTx TxH))
  (setq BsL (getpoint "\nBaşlangıç noktası: ")
        MsF (getdist "\n           Mesafe: " BsL)
        EgM (getreal "\n          Eğim(%): ")
        BtS (list (+ (car BsL) MsF) (+ (cadr BsL) (* MsF (/ EgM 100.0) 10.0))
                            (caddr BsL))
        aCi (angle BsL BtS)
        TiP (list (- (/ (+ (car BsL) (car BtS)) 2.0) (* (sin Aci) (/ Txh 2.0)))
                (+ (/ (+ (cadr BsL) (cadr BtS)) 2.0) (* (cos Aci) (/ Txh 2.0)))
              (/ (+ (caddr BsL) (caddr BtS)) 2.0)))
  (entmake (list (cons 0 "Line") (cons 10 BsL) (cons 11 BtS)))
  (setq ObId (itoa (vlax-get-property
                     (vlax-ename->vla-object (entlast)) 'ObjectId)))
  (entmake (list (cons 0 "TEXT") (cons 10 TiP) (cons 40 TxH)
                 (cons 1 (strcat "% " "%<\\AcExpr "
                   "((10.0*%<\\AcObjProp Object(%<\\_ObjId " ObId ">%).Delta "
                   "\\f "%lu2%pt2">%)/%<\\AcObjProp Object(%<\\_ObjId " ObId
                   ">%).Delta \\f "%lu2%pt1">%) \\f "%lu2%pr2">%"))
                 (cons 50 aCi) (cons 72 1) (cons 11 TiP)))
  (command "_.UpdateFieLd" (entlast) "")
  (if (= (logand (getvar "undoctl") 8) 8) (command-s "_.undo" "e"))
  (if odz (setvar "dimzin" odz)) (if ocmd (setvar "cmdecho" ocmd)) (prin1))

Yukarıda da açıklandığı gibi Lisp'i buradan alıp kullanmak mümkün olmayacak, daha doğrusu hatalı olacaktır.
Buraya Tıklayarak PrPr-01.lsp dosyasını indirip kullanabilirsiniz.

Video için tıklayınız...

Yazımın başında, ileride açıklayacağım, dediğim bölüme geldik.
Eğim Yazımızı bu şekilde field ile bağladık... Gözü kör mü! Açı değerini ve Konumunu da benzer biçimde bağlayalım iş tamam olsun! İşte bu noktada kazın ayağı öyle değil. (assoc 10 ve 11 ) ile ifade edilen koordinat listesi, adı üstünde, 3 tane gerçek sayıdan oluşan bir liste, (assoc 50 ile anahtarlı Açı değeri ise gerçek sayı...
Olsun! field'dan gelen String'i (atof ... 2 2) ile gerçek sayıya çeviririm, olur biter! Diyecek bazı kurnazlar çıkacaktır. Yukarıda özellikle "kendi de string, ürettiği değer de string" diye açıklamıştım. Update Field (mekanizması her neye bağlandıysa) uygulanana kadar field formülümüz string'dir ve entmake işlemi sırasında türü uymadığı için Association List kabul edilmez, hata verir.

"Eeee Hocam! Buraya bağlayacaktın da bizi neden bu kadar yordun..." diyenler çıkacaktır.
Maksadım kimseye eziyet etmek olamaz elbette. Önünü bilip sonunu bilmedikleri için, sıkça karşılaştığımız bir sitem var. "Hocam senin için kolay bir şey... iki satır yazıversen incilerin mi dökülür. Biz yazamıyoruz işte!" Ben de (hatta Biz de) yazamıyoruz... durum bundan ibaret. İyi tarafından bakarsak, bu fonksiyonda olmasa bile başka bir yerde nasıl field bağlanacağı iyice anlaşılmıştır herhalde.

Üzülmeyin! bu işin çözümü var elbette.
Ama sanıldığı gibi Field ile değil Reactor ile. Bunu da o zamanlar yazmıştım, şimdi belli boyutlarıyla paylaşıyorum.

Kod:

;|===========================================================================|
|     • Belirlenen bir noktadan başlayarak, girilen Eğim ve Mesafede,       |
|  Düşey Eksen (y) ölçeği Yatay Eksen (x) ölçeğinin 10 katı (örneğin:       |
|  y=> 1/100 ve x=> 1/1000) olacak şekilde bir "Line" oluşturularak,        |
|  Eğim Değeri, Konumu ve Açısı, Line Nesnesi ile ilişikilendirilerek       |
|  Eğim Yazısı (Text) oluşturulur.                                          |
|     • Bu şekilde Eğim Yazılarıyla ilişkilendirilen Line Nesneleri         |
|  herhangi bir yöntemle değiştirildiğinde (düzenlendiğinde)                |
|  Eğim Yazılarının da, ilişkilendirildikleri Line nesneleriyle             |
|  uyum içinde Konum ve Değeri kendiliğinden güncellenir.                   |
|     • Söz konusu Line Nesneleri Kopyalandıklarında, yeni Line Nesnesi ile |
|  ilişkili yeni bir Object Reaktör oluşturularak, yeni Line Nesnesi        |
|  üstünde Eğim Yazısı oluşturularak, Reaktör Verisine eklenir.             |
|  Eğim Yazısı ilişkili olduğu Line Nesnesi ile birlikte veya tek başına    |
|  kopyalanırsa yeni Text nesnesi öksüz (orphan) duruma düşer.              |
|     • Söz konusu Line Nesneleri Silindiklerinde,                          |
|  ilişkili Eğim yazıları da silinerek, aralarındaki ilişkiyi               |
|  sağlayan Reactor de veri tabanından kaldırılarak temizlenir.             |
|     • Oluşturulan Line ve Text esnelerinin Layer, Color, Style, Font,     |
|  Linetype, Lineweight, vb. öz nitelikleri serbestçe değiştirilebilir.     |
|     • Program Line nesnelerinin Başlangıç ve Bitiş Noktaları arasındaki   |
|  koordinat farkları ve Eğim Yazılarının Konumu (yeri ve açısı) ile        |
|  İçeriğinden başka özellikleriyle ilgilenmez.                             |
|     • Line Nesneleri grup halinde (bir den fazla sayıda) düzenlendiğinde  |
|  (edit edildiğinde) Reaktör çalışma mantığı (akış sırası) bakımından      |
|  en son düzenlenen Nesne'nin Reaktörü işletilecek, ondan önce düzenlenen  |
|  Nesnelerin Reaktörleri işletilmeyecektir.                                |
|     • Eğim Değeri eksi (-) girilebilir, bu durumda Line doğru biçimde     |
|  (aşağıya doğru) çizilirken Eğim Değeri'nin Mutlak Değeri yazılır.        |
|     • Mesafe değerinin hiç bir zaman eksi (geriye doğru) olmayacağı,      |
|  soldan sağa doğru (+x yönünde) olduğu var sayılmıştır.                   |
|                                   Hazırlayan: M. Şahin Güvercin           |
|                                   09/03/2021 www.cizimokulu.com           |
|___________________________________________________________________________|;


Video için tıklayınız...

İçinde PrPr.vLx dosyasının bulunduğu PrPr.rar dosyasını Buraya Tıklayarak indirebilirsiniz.

Gene duyar gibi oluyorum "Hocam ama bu -.vlx!" diye. Bunun iki nedeni var.

- Reactor'ler konusu biraz hassas bir konu. Kitabımızın yayınından önce burada üstelik açık kod olarak paylaşmıştım.
Buraya tıklayarak görebilirsiniz. Bu paylaşımla ilgili, bir kaç üstadımızın beğenip (imzamda olduğu gibi anlayıp) iltifat ettikleri yorumlardan başka anlamlı tek soru sorulmadı. Zaman zaman Lisp yazarken veya AutoCAD'de bir konuyu araştırırken dönüp dolaşıp kendi kitabımda buluyorum. Reactor'ler, Transformation Marix'ler, Derivation (Türev) gibi konularda o kadar ayrıntıya girmiş, o kadar net yazmışım ki... her seferinde de neredeyse "Aferin bana" diyerek, "Ya ne kadar detaylı, ne kadar açık anlatmışım." diyorum, kendi kendime. Evet kendi kendime... benden başka okuyan yok galiba. :)
- Diğer yandan da Reactor'ler biraz riskli bir alan. Kavramları iyice özümsemeden deneme yanılma yoluyla bulanık suda balık avlamaya çalışanlar için bu risk kat kat fazla elbette. Yapılacak hatalara ve yaşanacak kayıplara katkıda bulunmak ta istemiyorum doğrusu.

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

ProhibiT (20.11.2021 18:49 GMT)

22.11.2021 05:51    

Travaci
:yes

22.11.2021 06:37    

ehya
Değerli Şahin hocam,
Uzun zaman sonra yine sizi forumda böyle makale değerinde bir yazı ile görmek çok güzel.
Autolisp ile ilgilenen herkesin mutlaka okuması gerekir.
Bu değerli bilgiler için çok teşekkürler..

22.11.2021 07:52    

ProhibiT
Değerli kardeşim Erkan Travacı, kısacık mesajın için teşekkür ederim. Özel mesajlarımızda sözünü ettiğimiz bazı konular var burada.

Mehmet Hocam, asıl ben teşekkür ederim. Senin varlığın ve bakış açın her zaman beni teşvik eden, yol gösteren olmuştur. Konuşmalarımızda bahsettiğimiz konulardan, ActiveX konusunu anlatmıştık (anlayana!), Reactor konusunu da, daha önce paylaşmış olmamıza rağmen, gene anlayana bir kere daha açıklamış olduk. Sırada XData (Extended Data) var. O konuyla ilgili hazırladıklarımı yakında paylaşacağım.

Adem Ertaş kardeşim, özel mesajında yazdıklarını keşke buradan yazsaydın. :) İlgin için teşekkür ederim.

22.11.2021 10:23    

alumina
Alıntı
ProhibiT :


Adem ERCAN
Hocam ozelden yazdigimi buradan soyleyeyim. Reactor konusunda orneklere ihtiyacimiz var. Evet biraz riskli bir konu ama herhangi bir patlamaya karsilik sorumluluk kendimde olmak uzere kodun acik halini paylasmanizi rica ediyorum. Ozel bir durum yoksa tabi.

22.11.2021 10:38    

Travaci
Mehmet Abi, hangi reactor ne için kullanılır onu dahi bilmiyoruz :| Aklımda yapmak istediğim bi proje oluyor mesela, kendi kendime reactorle bu güzel olur diyorum ama hangi reactoru kullanmam gerektiğini bilmediğimden start veremiyorum. Bu reaktor konusu için desteğini bekliyoruz :)
Teşekkürler.

22.11.2021 16:44    

ProhibiT
Merhaba arkadaşlar. Bir yanlış anlaşma olmaması bakımından, açıklama gereği duydum.

Eskiden, müesseselerin duvarlarında bir tabela asılı olurdu. "Memnuniyetinizi dostlarınıza, şikayetlerinizi müdüriyetimize bildiriniz." Yazılıydı. O zamanlardan beri bu sözü çok severim doğrusu. Bu anlamda Adem arkadaşımızın mesajını iltifat olarak algıladığım için dostlarımızla da paylaşmasını istemiştim. :)

Erkan arkadaşımızın, (kusuruma bakılmasın, kendime yakın gördüğüm için isimlerinizle hitap ediyorum,) aynı minvalde mesajını okuyunca, bu konuya bir açıklama getirmek şart oldu.

Alınan kırılanlar olacaktır... elden bir şey gelmez. "Beğenmek için anlamak lazım" şeklindeki imzamı bir kere daha düşünün. Marifet iltifata tabidir, talebi olmayan marifet zayidir, misali... bunca zamandır apaçık paylaştıklarımın hangisi yerini buldu? Yukarıdaki bir yazımda belirttiğim gibi, yakında Extended Data (XData) konusunda da bir paylaşım hazırlıyorum. Bütün detaylarını açıklayıp, gene açık kod paylaşmayacağımı şimdiden söylemek isterim. Böyle olmasının herkesin iyiliğine olduğunu inanıyorum.

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

ProhibiT (22.11.2021 17:41 GMT)

17.12.2021 13:44    

k005
ProhibiT

Hocam siz ve ehya bana da çok yardımcı oldunuz., Çok teşekkür ediyorum tekrardan... Açık kaynaklıydı göndermiş olduğunuz kodlar.

Nasıl yapıldığını ne anlama geldiğini anlayabiliyordum. ( şahsen Lisp-Vlisp üzerinde çok uğraşmadım... ) ama yinede genel bir bilgi sahibi olduk.. Lisp yapısı hakkında..

vlx olarak paylaşma fikrinizi saygı ile karşılıyorum hocam.

17.12.2021 16:58    

ProhibiT
k005

Teşekkür ederim. Samimi ilgin bizim için her zaman değerli olmuştur (Mehmet hocamın da aynı hissiyatta olduğunu düşündüğümden, ... bizim için ... diyorum). Bu başlık altında Linkinde, giriş bölümünde her zaman olduğu gibi açık kaynak kodları ile ve her türlü ayrıntısıyla anlattım, paylaştım. Reactor konusuna gelince, gerek yukarıdaki yazımda verdiğim linkteki örnekte, gerekse kitabımızda bütün detayları var aslında. Bu örnek paylaşımda da, ayrıntısıyla anlattıklarımızdan fazlasını da kullanmadım, ne bir eksik ne fazla. Ben bütün samimiyetimle anlatmaya çalıştıkça, "Ama Hocam!.." diye başlayan, kerameti kendinden menkul (bence doğruluğu ve değeri şüpheli!) kaynaklardan bahsedilerek, farkında olmadan (belki de gayet farkında olarak), kendi ufuklarının sınırı ve tembellikten (hazırcılıktan) kaynaklı, "paylaşımlarımızı değersizleştirme!" yaklaşımları (anlayanları tenzih ederim) benim için hayal kırıklığı oldu hep.

Saygıya bilmukabil saygılarımla...

> 1 <
Copyright © 2004-2022 SQL: 1.453 saniye - Sorgu: 76 - Ortalama: 0.01912 saniye