18.03.2021 13:46    

rpeseng
Merhaba arkadaşlar,
Autolisp de farenin bulunduğu konumu tıklamadan nasıl alabilirim. Sketch komutunun yaptığı özelliği yapmak istiyorum bir kaç değişikilik yaparak bu konuda yardımcı olabilecek var mı ?

Baya araştırdım alttaki kodu yaptım ama her tıklamada çizgiyi çiziyor ben tıklamadan örneğin 10 milisaniyede bir farenin bulunduğu konumu alarak 10 milisaniye önceki konumundan yeni konuma çizgi çizmesini istiyorum.

Kod:

(defun c:loop ()
  (setq count 0)
(setq p1 (getpoint "\n1."))
  (setq p p1)
  (while (< count 10)
(princ count)
(setq count (1+ count))
  (setq p2 (getpoint "\n2."))
(command "_.pline" p1 p2 "")
  (setq p1 p2)
)
  (command "_.pline" p2 p "")
  (princ)
)

rpeseng (18.03.2021 14:04 GMT)

18.03.2021 14:33    

ehya
Bunun için bir döngüye gerek var.
Örnek bir kod paylaşıyorum. Bunu inceleyin.

Kod:

(setq tekrar t)
(while tekrar
  (setq value (grread T 2))
  (cond
  ;;;  tıklama yapmadığınız sürece bu işlem tekrar eder. 
  ((= (car value) 5)(setq mpt (cadr value))(print mpt))

  ;;; mouse sol tuş tıklaması ile tetiklenir.
  ((= (car value) 3)(command ".circle" (cadr value) 5))
   
;;; mouse sağ tuş  tıklaması ile tetiklenir.
  ((= (car value) 12)(setq tekrar nil))
  ))

18.03.2021 20:48    

rpeseng
Evet sketch komutunun benzerini ve sonunda birleşimi otomatik yapan lisp i yazdım teşekkürler. Kodun son hali aşağıda.

Kod:

(defun c:deneme ()

(while
(setq tekrar t)
(setq p (getpoint "\n1."))
(setq pr p)
(setq count 0)
(while tekrar

  (setq value (grread T 50))
    (cond
      ;;;  tıklama yapmadığınız sürece bu işlem tekrar eder.
      ((= (car value) 5)(setq mpt (cadr value)))
     
      ;;; mouse sol tuş tıklaması ile tetiklenir.
      ((= (car value) 3)(setq p2 mpt)(setq tekrar False))
   
      ;;; mouse sağ tuş  tıklaması ile tetiklenir.
      ((setq p2 mpt)(setq tekrar False))
    )
    (command ".pline" pr mpt "")
    (setq pr mpt)
   
  )
  (command ".pline" p2 p "")
 
  (print "----")

 
 
)

)

19.03.2021 07:51    

ehya
Lisp öğrenmek için güzel bir örnek olmuş. Elinize sağlık.

Bu lispinizi biraz geliştirdim.
Sol tıklama ile pline nesnesi kapatılır.
Sağ tıklama ile pline nesnesi kapatılmaz ve nesneler tek nesne olur.

Ekteki resimde de her satırın anlamı yazıyor.

Kod:

(defun c:123 ()
  (setq tk1 t)
  (while tk1
    (if (setq p (getpoint "\nBaşlangıç noktası:"))
      (progn
(setq tk2 t cmd t)
(command ".pline")
(while tk2
  (setq value (grread t 50))
  (cond
    ((= (car value) 5)
     (setq mpt (cadr value))
     (command (setq p (list (car p) (cadr p))))
     (command (list (car mpt) (cadr mpt)))
     (setq p mpt)
    )
    ((= (car value) 3)
     (if cmd (progn (command "c") (setq tk2 nil)))
     (setq cmd nil)
    )
    ((= (car value) 11)
     (command "")
     (setq tk1 nil tk2 nil)
    )
  )
)
      )
      (setq tk1 nil)
    )
  )
  (princ)
)


ehya (19.03.2021 08:00 GMT)

23.03.2021 07:15    

ProhibiT
Merhaba,

Mehmet Hocamın yazdığı gibi güzel bir örnek olmuş. Böylesi incelikli konulara ilgi duyulması ve bu kadar net açıklanması hem takdire değer, hem de sevindirici.

AutoCAD ve özellikle de Lisp kullanırken "Ekran Etkileşimi" konusu, her zaman çok ilgimi çeken ve önemsediğim bir konu olduğu için bu başlıkta paylaşılanların bana hatırlattıklarını sizlerle paylaşmak istiyorum.

174410-dadvetmt.mpg

Videoda, bu başlık altında gayet net açıklanan grread işlevi (fonksiyonu) kullanılarak imlecin konumu etkileşimli (dinamik) olarak alınarak, (gene çok sevdiğim bir özellik olan) transformation-matrix kullanılarak, son oluşturulan Text nesnesi sürüklenerek, tıklanan yere bırakıldığı... bırakılan yerde mevcut bir Text nesnesi (Text veya Mtext) varsa bunun algılanarak sürüklenen Text'in içeriği (değeri), Mevcut Text içeriğine atandığı görülmektedir.

Bu işlemi gerçekleştiren Lisp kodlarının ilgili bölümü:

şeklindedir.
Buraya yalnız ilgili bölümünün görüntüsünü aldığım kodların tamamını, daha önce sitemizde paylaşılan ALn Lispinde açık kaynak kod olarak bulabilirsiniz.
https://cizimokulu.com/page.php?id=957 Bu linkten veya güncellenmiş son halini de
174410-aln.rar bağlantısından indirebilirsiniz.

Bu paylaşımları 2011 yılında yapmışız, 2014 yılında yayınlanan kitabımızda da ALn fonksiyonunu adım adım açıklamışız.



Bunları hatırladıktan sonra, bir konudan daha söz etmek isterim. Transformation Matrix konusunu hiç bir kaynakta bulamayacağınız kadar açık ve detaylı anlatmıştık kitabımızda. Özel sohbetlerimiz sırasında Mehmet Hocama bahsetmiştim; Programcılar Matematik bilmiyor; Matematikçiler de program yazamıyor... kazara ikisini de bilenler ise AutoCAD (kavramlarını) bilmediklerinden, kullanıcının derdini anlayamıyor. Sözün özü o ki, anlatmaya çalıştığım boyutlarıyla cizimokulu.com sitesinin ve yazdığımız kitabın yeterince anlaşılmadığını (imza cümleme bakınız) görmek üzücü.

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

29.03.2021 15:38    

rpeseng
Teşekkür ederim bende bunları anlamaya çalışıp geliştirmeye çalışacağım güzel cümleleriniz için ayrıca teşkkür ederim.

> 1 <
Copyright © 2004-2022 SQL: 1.211 saniye - Sorgu: 59 - Ortalama: 0.02053 saniye