10.05.2011 13:24    

odrcmn
Daha önce forumda paylaşılmış olan "kotyaz" lispi noktaları tek tek seçmekte.Bunu
secim seti şekli yapacak herkesden yardımlarını bekliyorum.

saygılarımla

Kod:

(defun c:ny ()
  (setq ny_yazi_yuk 0.25)
  (setq ny_os (getvar "osmode"))
  (setq ny_nok (getpoint "\nnoktayı gösterin :"))
  (if (= ny_nok nil)
    (progn
    )
    (progn
      (setq ny_z (caddr ny_nok))
      (setq ny_yn (polar ny_nok (angtof "0") (/ ny_yazi_yuk 1)))
      (setvar "osmode" 0)
      (command "text" ny_yn ny_yazi_yuk "0" (rtos ny_z 2 2))
      (setvar "osmode" ny_os)
    )
  )
  (princ)
)

ProhibiT (10.05.2011 13:42 GMT)

10.05.2011 13:55    

ProhibiT
Bu fonksiyonun kodlaması ehya hocamın tarzına benziyor. Fonksiyonu kullandınız mı? Fonksiyonun ne yaptığını, ne amaçla yazıldığını anladınız mı? Siz ne yapmak istediğinizi biliyor musunuz? "getpoint" ile nokta okuyan bir fonksiyon nasıl seçim setine uyarlanabilir? Obje seçilmeyen bir fonksiyon için seçim setinden söz edilemez! probleminizi iyi analiz eder, doğru soruyu sorarsanız, çözüm için en sağlıklı adımı atmış olursunuz...
Kolay gelsin.

10.05.2011 15:10    

odrcmn
Alıntı
ProhibiT :
Bu fonksiyonun kodlaması ehya hocamın tarzına benziyor. fonksiyonu kullandınız mı? fonksiyonun ne yaptığını, ne amaçla yazıldığını anladınız mı? siz ne yapmak istediğinizi biliyor musunuz? "getpoint" ile nokta okuyan bir fonksiyon nasıl seçim setine uyarlanabilir? obje seçilmeyen bir fonksiyon için seçim setinden söz edilemez! probleminizi iyi analiz eder, doğru soruyu sorarsanız, çözüm için en sağlıklı adımı atmış olursunuz...
kolay gelsin.




* Fonksiyonu kullandınız mı? = Ever kullandım.
* fonksiyonun ne yaptığını, ne amaçla yazıldığını anladınız mı? = evet anladım.
* siz ne yapmak istediğinizi biliyor musunuz? = evet biliyorum.Grafik ortama aldığım noktaların yanına sadece z değerini yazmasını istiyorum.Ki yazıyor.
* "getpoint" ile nokta okuyan bir fonksiyon nasıl seçim setine uyarlanabilir? =bilmiyorum.Bilmediğim içinde sizlerden yardım istedim.

soruma gelince çizimde bulunan "noktaların" sadece z değerini yazdırmak istiyorum.Ama derseniz ki hayal gücünü kullan, bende seçim setinden önce sorsun isterdim x'mi y'mi z'mi ve/veya bunlardan birkaçı gibi hayal işte ( benim için)
lisp bilgim yok.Bu lisp dediğiniz gibi tek nokta okuyor.Ama sözlerinizden alıntı yaparak " çay kaşığında gemi yüzdürme beklentim yok" olursa ben dahil bir çok arkdaşın işine yarayacağı düşüncesindeyim.

saygılarımla ..
önder çimen

11.05.2011 06:27    

ehya
Herşeyi çok güzel cevaplamışsınız. ancak hakim olamadığınız bir nokta var. nokta gösterimi yapılan bir lispi seçim setine dönüştürülmesini istiyorsunuz. iyi de neyi seçecek? bilmediğinizden dolayı yardım istediniz. ancak inanın bizde neyi seçeceğinizi bilmiyoruz. sizin söylemeniz lazım.
seçecek birşey olduğunda söyleyin. onu seçtirelim.

11.05.2011 09:04    

odrcmn
Prohibit ve ehya cevaplarınız için teşekkürler.Bu sorunu cadtool ile çözdüm.

ben kendimi ifade edemesemde bu işi siz ustaların çok rahat yapabilecek bilgi ve tecrübeye, forum takip eden her insan gibi inanıyorum.

bir daha deneyim bakayım.

annotate point elevation..Her nokta da kot etiketi yazan lisp bu veya yeni lisp kodu ..

saygılarımla.

11.05.2011 21:45    

ProhibiT
Nokta diye bahsettiğimiz, getpoint ile ekrandan okunan bir koordinattır. Getpoint uygulandığında noktayı seçerken (object snap'iniz de açıksa) Mouse ile ekranda mevcut bir Point objesinin üzerine gelip tıkladığınızda, Point objesini seçmiş olmazsınız. Obje seçimi söz konusu olmadığına göre de, seçim setinden söz edilemez. Uzun zamandır özellikle haritacı arkadaşlarla bir türlü anlaşamadığımız konu bu. Nokta x, y ve z koordinatlarıyla tanımlanan bir kavramdır. Bu tanım bir Line objesinin başlangıç ve bitiş uçlarını veya orta noktasını (mid point) gösterebileceği gibi, mesela bir çemberin merkezini de ifade edebilir, bir bLock'un insertion point'ini de... Burada bahsettiğimiz nokta kavramı bir obje (AutoCAD Entity) değildir. Seçilemez! farklı metotlarla okunabilir. Point objesine gelince, adı üstünde bir objedir seçilebilir, dolayısıyla seçim seti oluşturulabilir. Point objesinin konumunu da (x, y ve z den oluşan korrdinatlarla tanımlı) belirleyen kavrama da nokta diyoruz.

Bir tek bu başlık altında değil,

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

linkinde de görüleceği gibi bu kavram kargaşası ile o kadar sık karşılaşıyoruz ki, yazma ve paylaşım konusunda ketum davranışımızdan değil, "şeyin şeyini şey yapan bir lisp var mı?" tarzı sorulardan bunaldığımız için bu gereksiz diyaloglar oluyor.

Yürüttüğünüz tahmin doğru, bu ortama ve kavramlara aşinalığı olanlar ne demek istediğinizi tahmin edebiliyorlar. Edebiliyorlar da, bu tahmin doğrultusunda yazılan fonksiyonlar paylaşıldığında genelde karşılaşılan, "yok ben onu demek istememiştim, bu benim işime yaramıyor" cevabı çok kırıcı oluyor.

Sonuç olarak, "Tanımlamadığınız işi yapamazsınız, yaptıramazsınız" Yaklaşımlarımızın, burada aynı ortamı paylaştığımız arkadaşlarımıza belli kavramları ve disiplini kazandırma çabasından öte bir amacı olamaz...

Sizin konunuza gelince;
Kod:

;;;================================================;;;
;;;   Prepared by: M. şahin güvercin 12/05/2011    ;;;
;;;              www.autocadokulu.com              ;;;
;;;================================================;;;
(defun c:ckgy ()
  (setvar "cmdecho" 0) (command "_.Undo" "group")
  (setvar "modemacro" "m.Sahin guvercin")
  (setq cr (strcase (getstring (strcat "\n yazılacak koordinat "
"(x y z xy xz yx yz zx zy xyz xzy yxz yzx zxy zyx): "))))
  (if (not (or (= cr "x") (= cr "y") (= cr "z")
       (= cr "xy") (= cr "xz") (= cr "yx") (= cr "yz")
       (= cr "zx") (= cr "zy") (= cr "xyz") (= cr "xzy")
       (= cr "yxz") (= cr "yzx") (= cr "zxy") (= cr "zyx")))
    (progn
      (princ "\n *** geçerli koordinat gurubu girilmedi! ***")
      (exit)))
  (setq txh (* (getvar "dimtxt") (getvar "dimscale"))
yp (list (/ txh 2.0) (/ txh 2.0) 0.00)
pnts (ssget (list (cons 0 "poınt")))
l (sslength pnts) n -1)
  (while (< (setq n (1+ n)) l)
    (setq p0 (cdr (assoc 10 (entget (ssname pnts n))))
  p1 (mapcar '(lambda (n1 n2) (+ n1 n2)) p0 yp)
  m (strlen cr) o 0 crd "")
    (while (<= (setq o (1+ o)) m)
      (if (= o 1)
(cond ((= (substr cr o 1) "x")
       (setq crd (strcat crd (rtos (car p0) 2 2))))
      ((= (substr cr o 1) "y")
       (setq crd (strcat crd (rtos (cadr p0) 2 2))))
      ((= (substr cr o 1) "z")
       (setq crd (strcat crd (rtos (caddr p0) 2 2)))))
(cond ((= (substr cr o 1) "x")
       (setq crd (strcat crd "," (rtos (car p0) 2 2))))
      ((= (substr cr o 1) "y")
       (setq crd (strcat crd "," (rtos (cadr p0) 2 2))))
      ((= (substr cr o 1) "z")
       (setq crd (strcat crd "," (rtos (caddr p0) 2 2)))))))
    (entmake (list (cons 0 "text") (cons 10 p1) (cons 1 crd)
   (cons 40 txh) (cons 50 0.00))))
  (setvar "modemacro" "") (command "_.Undo" "e") (princ)
)
(write-line "\nprepared by, m.S. guvercin\nwww.autocadokulu.com")

fonskiyonu kullanırken obje seçmeniz istendiğinde, elinizi korkak alıştırmayın, tüm çizimi bile seçebilirsiniz. sizin seçtiğiniz gurup içinden point objelerini alacak, diğerlerini gözardı edecektir. koordinat olarak x, y ve z değerlerinin her türlü mümkün kombinasyonunu yazabilecek şekilde genel düşünülmüştür.

fonksiyonun komut adına da bir şifreli mesaj gizledim kendimce. çözümünü size bırakıyorum :) ckgy

kolay gelsin.

ProhibiT (12.05.2011 09:58 GMT)

12.05.2011 06:51    

odrcmn
Hocam cevabınız için teşekkürler.
"c"ay "k"aşığında "g"emiyi "y"üzdürmüşünüz.

ama alttaki hatayı alıyorum.Sıkıntı bendemidir ?

saygılarımla...

-----------------------------------------------------------------------------------------------
command: ckgy
yazılacak koordinat (x y z xy xz yx yz zx zy xyz xzy yxz yzx zxy zyx): z
*** geçerli koordinat gurubu girilmedi! ***; error: quit / exit abort

--------------------------------------------------------------------------------------------------

12.05.2011 09:55    

ProhibiT
Burada paylaşırken, benim büyük harfle yazdığım bazı karakterler küçük harfe dönmüş.
Kod:

;;;================================================;;;
;;;   Prepared by: M. Şahin Güvercin 12/05/2011    ;;;
;;;              www.autocadokulu.com              ;;;
;;;================================================;;;
(defun c:CkGy ()
  (setvar "cmdecho" 0) (command "_.undo" "group")
  (setvar "modemacro" "M.Sahin Guvercin")
  (setq Cr (strcase (getstring (strcat "\n Yazılacak Koordinat "
"(X Y Z XY XZ YX YZ ZX ZY XYZ XZY YXZ YZX ZXY ZYX): "))))
  (if (not (or (= Cr "X") (= Cr "Y") (= Cr "Z")
       (= Cr "XY") (= Cr "XZ") (= Cr "YX") (= Cr "YZ")
       (= Cr "ZX") (= Cr "ZY") (= Cr "XYZ") (= Cr "XZY")
       (= Cr "YXZ") (= Cr "YZX") (= Cr "ZXY") (= Cr "ZYX")))
    (progn
      (princ "\n *** Geçerli Koordinat gurubu girilmedi! ***")
      (exit)))
  (setq Txh (* (getvar "dimtxt") (getvar "dimscale"))
yp (list (/ Txh 2.0) (/ Txh 2.0) 0.00)
Pnts (ssget (list (cons 0 "POINT")))
L (sslength Pnts) n -1)
  (while (< (setq n (1+ n)) L)
    (setq P0 (cdr (assoc 10 (entget (ssname Pnts n))))
  p1 (mapcar '(lambda (n1 n2) (+ n1 n2)) p0 yp)
  M (strlen Cr) o 0 Crd "")
    (while (<= (setq o (1+ o)) M)
      (if (= o 1)
(cond ((= (substr Cr o 1) "X")
       (setq Crd (strcat Crd (rtos (car P0) 2 2))))
      ((= (substr Cr o 1) "Y")
       (setq Crd (strcat Crd (rtos (cadr P0) 2 2))))
      ((= (substr Cr o 1) "Z")
       (setq Crd (strcat Crd (rtos (caddr P0) 2 2)))))
(cond ((= (substr Cr o 1) "X")
       (setq Crd (strcat Crd "," (rtos (car P0) 2 2))))
      ((= (substr Cr o 1) "Y")
       (setq Crd (strcat Crd "," (rtos (cadr P0) 2 2))))
      ((= (substr Cr o 1) "Z")
       (setq Crd (strcat Crd "," (rtos (caddr P0) 2 2)))))))
    (entmake (list (cons 0 "text") (cons 10 p1) (cons 1 Crd)
   (cons 40 TxH) (cons 50 0.00))))
  (setvar "modemacro" "") (command "_.undo" "e") (princ)
)
(write-line "\nPrepared by, M.S. guvercin\nwww.autocadokulu.com")

tırnak içindeki Bütün X, Y ve Z harflerini büyük harf olarak değiştirirseniz problem kalmayacaktır.
kullanıcının girdiği karakterler, (strcase ile her durumda büyük harfe çevriliyor. küçük harflerle kontrol edildiğinde hiç bir zaman eşleşmediği için hata oluşuyor.

ProhibiT (12.05.2011 10:01 GMT)

12.05.2011 11:26    

odrcmn
Sayın hocam

çok teşşekürler..

sonsuz saygılarımla...

14.01.2013 13:37    

esk
hocam merhaba iyi çalışmalar siteye yeni üye oldum ve çok faydasını gördüm. İşimizi kolaylaştıracak o kadar güzel lispler hazırlayıp paylaşmışsınız ki ne kadar teşekkür etsek azdır. İyi çalışmalar diliyorum takipteyim
saygılar...

14.01.2013 19:17    

ProhibiT
Likewise best compliments. Come on guys, follow us. :)

27.05.2013 08:54    

2032223351
hocam bu xyz kodlarini alt alta yazdiramazmiyiz ?
X=
y=
z=
gibi ?

28.05.2013 15:43    

Travaci
Alıntı
2032223351 :
hocam bu xyz kodlarini alt alta yazdiramazmiyiz ?
X=
y=
z=
gibi ?



Kod:

(defun c:xYz (/)
   (seTvar "CmdEcho" 0) (command "_.Undo" "_Group")
   (setq  tHt (geTvar "TextSize")
          dDe (geTvar "DimDec")
          pNt (ssGet '((0 . "Point")))
          cNt (ssLengTh pNt)
          zRo 0)
   (while (< zRo cNt)
      (setq dTa (enTget (ssName pNt zRo))
            pPt (cdr (assoc 10 dTa))
            xPt (rTos (cadr (assoc 10 dTa)) 2 dDe)
            yPt (rTos (caddr (assoc 10 dTa)) 2 dDe)
            zPt (rTos (cadddr (assoc 10 dTa)) 2 dDe)
            oNe (poLar pPt (/ Pi 2) tHt)
            tWo (poLar oNe (/ pi 2) (* tHt 1.5))
            tRe (poLar tWo (/ pi 2) (* 1.5 tHt)))
      (entmake (list
         (cons 0 "Text") (cons 10 oNe) (cons 11 oNe)
         (cons 1 (strcat "z=" zPt)) (cons 40 tHt)(cons 72 1) (cons 73 2)))
      (entmake (list
         (cons 0 "Text") (cons 10 tWo) (cons 11 tWo)
         (cons 1 (strcat "y=" yPt)) (cons 40 tHt)(cons 72 1) (cons 73 2)))
      (entmake (list
         (cons 0 "Text") (cons 10 tRe) (cons 11 tRe)
         (cons 1 (strcat "x=" xPt)) (cons 40 tHt)(cons 72 1) (cons 73 2)))
      (setq zRo (+ 1 zRo))
   ) (princ) (command "_Undo" "_End")
)

29.05.2013 04:58    

2032223351
saolasin :)

29.05.2013 05:00    

2032223351
travaci aslinda bir sorum daha olmustu ama kimse ilgilenmesi. karsilikli iki line (z kotlari farkli) secip bunlara istedigim aralikta ofset yapabilirmiyim ? ofset olan linenin iki ucuda secilen linelere bagli olacak.bir nevi "sev" lispindeki gibi sadece kissa cizgi olmayacak .

29.05.2013 06:34    

Travaci
Bişi anlamadım, z kotları farklı iki çizgi var , offset olan linelar z kotları farklı çizgilere bağlı olucak ? :dozingoff Hangisine nasıl ? Anlasamda herelde yapıcak düzeyde deilim : )

29.05.2013 10:18    

2032223351
tamam o zaman tesekkur ederim +)

> 1 <
Copyright © 2004-2022 SQL: 1.815 saniye - Sorgu: 90 - Ortalama: 0.02016 saniye