17.01.2012 10:06    

Travaci
Alıntı
ProhibiT :
Örneğinizdeki n1, getpoint ile oluşturulan, noktanın X, Y ve Z koordinatlarından oluşan 3 elemanlı bir List'tir.

Örnek olarak 3D nokta koordinatı ele alalım.

(setq Point (list 12.50 20.00 125.60))
Bu listeden

X koordinatını almak için (car Point) -> 12.50

Y koordinatını almak için
önce ilk eleman dışında diğer iki elemanı alalım (setq Gecici (cdr Point))-> (20.00 125.60)
daha sonra elde ettiğimiz listenin ilk elemanını alalım (car Gecici)-> 20.00
Bu iki adımı birleştirirsek, (car (cdr Point)-> 20.00
ve sonuç olarak (cadr Point)-> 20.00

Z koordinatını almak için
(setq Gecici (cdr Point))-> (20.00 125.60)
(setq Gecici (cdr Gecici))-> (125.60)
(tek elemanı kalan listeden (car Gecici)-> 125.60
Bu üç adımı birleştirirsek, (car (cdr (cdr Point)))-> 125.60
ve sonuç olarak (caddr Point)-> 125.60



Prohobit öncelikle teşekkür ederim.

Buraya kadar anladım anlattığın örnektede sorun yok fakat benim yukarıda verdiğim lispte (car n1) derken orda car demeye ne gerek var ? n1 zaten tek

17.01.2012 12:44    

ProhibiT
Mesajımın ilk bölümünü dikkatli okuyun.
__________________
Örneğinizdeki n1, getpoint ile oluşturulan, noktanın X, Y ve Z koordinatlarından oluşan 3 elemanlı bir List'tir.
__________________

Daha iyi kavrayabilmek için;

(setq n1 (getpoint "\n Başlangıç noktasını seçiniz: "))
buradan alıp AutoCAD komut satırına paste edin.

Command: (setq n1 (getpoint "\n Başlangıç noktasını seçiniz: "))
Başlangıç noktasını giriniz(941.691 386.373 0.0)

gene komut satırından (list n1) girdiğinizde,
Command: (list n1)
((941.691 386.373 0.0))

demek ki, n1 değişkeninin değeri bir Liste ve bu listede, seçilen noktanın x, y ve z değeri olmak üzere üç değer var.

(car n1) ile seçilen noktanın x koordinatını,
(cadr n1) ile seçilen noktanın y koordinatını,
(caddr n1) ile de seçilen noktanın z koordinatını diğerlerinden ayırıp alabiliyoruz.

ProhibiT (17.01.2012 12:58 GMT)

17.01.2012 13:08    

mayyaq61
Kod:

(defun c:a()
  (setq b0 (getpoint "\nNEREYE ÇİZİLSİN?:"))
  (setq m  (getreal "MODÜL GİRİN : " ))
  (setq z  (getreal "DİŞ SAYISINI GİRİN: "))
  (setq i  (getreal "İLETME ORANI: "))
  (setq ph (getreal "PAH DEĞERİ:"))
  (setq dlk_cp(getreal "DELİK ÇAPINI GİRİN:"))
  (setq t1(getreal "KAMA YÜKSEKLİĞİNİ GİRİN:"))
  (setq km_b(getreal "KAMA GENİŞLİĞİNİ GİRİN:")) 
  (setq d (* m z))
  (setq da (+ d (* 2 m )))
  (setq df (- d (* 2.332 m)))
  (setq p (* 3.14 m))
  (setq h (* 2.166 m))
  (setq hf (* 1.166 m))
  (setq s (/ p 2.0 ))
  (setq d2 (* m (* i z)))
  (setq da2 (+ d2 (* 2.0 m)))
  (setq df2 (- d2 (* 2.332 m)))
  (setq b (* m 10))

  (princ "Da_Bölüm dairesi: ")(princ d)(princ)
  (princ  "\nDiş üstü çapı: ")(princ da)(princ)
  (princ  "\nDiş dibi çapı: ")(princ df)(princ)
  (princ  "\nAdım: ")(princ p)(princ)
  (princ  "\nDiş yüksekliği: ")(princ h)(princ)
  (princ  "\nDiş başı yüksekliği: ")(princ m)(princ)
  (princ  "\nDiş dibi yüksekliği: ")(princ hf)(princ)
  (princ  "\nDiş dolusu: ")(princ s)(princ)
  (princ  "\nDiş boşluğu: ")(princ s)(princ)
  (princ  "\n2_Bölüm dairesi: ")(princ d2)(princ)
  (princ  "\n2_Diş üstü yüksekliği: ")(princ da2)(princ)
  (princ  "\n2_Diş dibi yüksekliği: ")(princ df2)(princ)
  (princ  "\nKalınlık: ")(princ b)(princ)
 
  (setq b1 (polar b0 (angtof "0.0") b))
  (command "._line" b0 b1"")
  (vl-load-com)
  (setq da_oF(entlast))
  (setq da_oF_ayar (vlax-ename->vla-object da_oF))
  (vlax-method-applicable-p da_oF_ayar 'offset)
  (vla-offset da_oF_ayar (/ da 2.00))
  (setq ykr0 (entlast))
  (setq ykr0_bas (cdr (assoc 10 (entget ykr0))))
  (setq ykr0_son (cdr (assoc 11 (entget ykr0))))
  (vla-offset da_oF_ayar (- 0 (/ da 2.00)))
  (setq ykr1 (entlast))
  (setq ykr1_bas (cdr (assoc 10 (entget ykr1))))
  (setq ykr1_son (cdr (assoc 11 (entget ykr1))))
  (vla-offset da_oF_ayar (/ d 2.00))
  (setq d_leng (entlast))
  (setq d_leng_bas (cdr (assoc 10 (entget d_leng))))
  (setq d_leng_son (cdr (assoc 11 (entget d_leng))))
  (command "._lengthen" "_de" 3 d_leng_bas d_leng_son "")
  (vla-offset da_oF_ayar (- 0 (/ d 2.00)))
  (setq d_leng1 (entlast))
  (setq d_leng1_bas (cdr (assoc 10 (entget d_leng1))))
  (setq d_leng1_son (cdr (assoc 11 (entget d_leng1))))
  (command "._lengthen" "_de" 3 d_leng1_bas d_leng1_son "")
  (vla-offset da_oF_ayar (/ df 2.00))
  (vla-offset da_oF_ayar (- 0 (/ df 2.00)))
  (command "._lengthen" "_de" 3 b0 b1 "")
  (command "._line" ykr0_bas ykr1_bas"")
  (setq ph_kr0 (entlast))
  (command "._line" ykr0_son ykr1_son"")
  (setq ph_kr1 (entlast))
  (setq dlk_merkez (polar b1 (angtof "0.0") (+ 3 dlk_cp)))
  (command "._circle" dlk_merkez "_d" dlk_cp)
  (setq dlk_daire(entlast ))
  (setvar "osmode" 16)
  (setq dlk_yatay (polar dlk_merkez (angtof "0.0") (/ dlk_cp 2.0 )))
  (setq dlk_yatay1 (polar dlk_yatay (angtof "180.0") dlk_cp))
  (setq dlk_dikey (polar dlk_merkez (angtof "90.0") (/ dlk_cp 2.0 )))
  (setq dlk_dikey1 (polar dlk_merkez (angtof "270.0")  dlk_cp ))
  (command "._line" dlk_yatay dlk_yatay1"")
  (setq kama_y (polar dlk_dikey (angtof "90.0") t1 ))
  (setq kama_bas (polar kama_y (angtof "0.0") (/ km_b 2.0)))
  (setq kama_son (polar kama_bas (angtof "180.0")  km_b ))   
  (command "._line" kama_bas kama_son"")
  (command "._chamfer" "_angle" 3 45 ph_kr0 ph_kr1"") 
)
Ehya hocam sağolun.Buraya kadar geldim sayenizde.Sıkıntı bitmiyor malesef :S

1 -)Kama genişliğini çizerken (UCS World Zoom_all ve Kordinat 0.0 girmeden çizmiyor)
yakınlaştırdın mı leng komutuyla uzatmaları yapmıyor neden acabA? yanlıs bir
yöntem mi kullanıyorum?
2 -)Dikey çizgiyi ph_kr0 değişkeniyle seçtim yatay çizgiyi ph_kr1 değişkeniyle seçtim
PAh kırmaya verdiğim değerleri veriyor ama kırmıyor.
3 -)Bir nesnenin kenetlenme noktalarını yakalayabilir miyim.?
kitapda (setq pt1 (getpoint))
(setq pt2 (osnap pt1 "_end"))
Acaba kordinat verilen nesne değilde seçilen nesnenin kenetlenme noktaları değişkene aktırabilir mi.
4 -)Mesela Kama geniş çizgisini başlangıcından daireye kadar inmesini istiyorum.Olabilirmi acaba?

ProhibiT (17.01.2012 18:15 GMT)

19.01.2012 12:09    

Travaci
Kendi kendime çizdiğim bir vida programını çalıştıramadım,yanlış yaptığım kısım nedir ? Yardımcı olurmusunuz ?
[URL=http://imageshack.us/photo/my-images/577/cado.png/][IMG]http://img577.imageshack.us/img577/518/cado.png[/IMG][/URL]

Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]
Ölçüler uydurmadır.

(defun c:Cvt ()
(setq L (getreal "\n Vida boyunu giriniz. "))
(setq H (getreal "\n Vida çapını giriniz. "))
(setq n (getpoint "\n Başlangıç noktasını giriniz. "))
(setq n1 (list (+(car n) L) (cdr n)))
(setq n2 (list (car n1) (+(cdr n1) H)))
(setq n3 (list (+(car n2) H) (cdr n2)))
(setq n4 (List (car n3) (-(cdr n3) (* 3 h))))
(setq n5 (list (-(car n4) H) (cdr n4)))
(setq n6 (list (car n5) (+(cdr n5) H)))
(setq n7 (list (-(car n6) L) (cdr n6)))
(setq n8 (list (car n7) (+(cdr n7) H)))
(command "line" n n1 n2 n3 n4 n5 n6 n7 n8 " "))

19.01.2012 12:18    

ProhibiT
Noktaların y koordinatını alırken (cdr n) şeklinde girmişsiniz. devamında da bu hata var. bütün cdr'leri cadr yaparsanız problem kalmaz.

19.01.2012 12:23    

Travaci
Teşekkürler
Sitede teşekkür butonumu yok ? göremiyormuyum ?

19.01.2012 13:38    

ehya
mayyaq61




1- koordinat 0,0 olmasına gerek yok. getpoint ile belirttiğiniz noktadan başlatın ve (setvar "osmode" 0) diyerek kenetleme modlarını kapatın. Tabi kapatmadan önce mevcut osnap seçeneklerini (setq os (getvar "osmode")) diyerek hafızaya alın.

2- lispi şuan deneyemediğim için chamfer sorusuna cevap veremiyorum.

3- Bahsettiğin kod zaten referans noktadaki nesnenin kenetleme modlarıdır. Bunun haricinde dxf kodlarında bulunan referans noktalarını otomatik olarak bulabilirsiniz.

örnek :

line için başlangıç ve bitiş koordinatlarını bulmak

(setq ent (entsel)) ;; nesneyi seç
(setq baslangic (cdr (assoc 10 (entget (car ent))))) ;; çizginin başlangıç koordinatı
(setq bitis (cdr (assoc 11 (entget (car ent))))) ;; çizginin bitiş koordinatı


4- bu soruya cevap vermem için çizimin ne olduğunu bilmem gerekir. Siz en iyisi yapmak istediğiniz çizimi resimli olarak anlatın. Lispte verdiğiniz birim isimlerini de kenar çizgilerine yazın. Bununla ilgili daha mantıklı ve sorunsuz bir lisp örneği oluşturalım.

ehya (19.01.2012 15:33 GMT)

19.01.2012 15:45    

ProhibiT
Travaci arkadaşımız için inceleme konusu :) Civata Video
Kod:

(defun c:Cvt (/ L H n o nn)
  (setvar "cmdecho" 0) (command "_.undo" "group") (vl-load-com)
  (setq L (getreal "\nVida boyu: ") H (getreal "\nVida çapı: "))
  (entmake (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 67 0)
    (cons 100 "AcDbPolyline") (cons 90 8) (cons 70 1) (cons 43 0.0)
    (cons 38 0.0) (cons 39 0.0) (cons 10 (setq n '(0.0 0.0 0.0)))
    (cons 10 (setq n (polar n (* 1.5 pi) H))) (cons 10 (setq n (polar n 0 L)))
    (cons 10 (setq n (polar n (* 1.5 pi) H))) (cons 10 (setq n (polar n 0 H)))
    (cons 10 (setq n (polar n (/ pi 2.0) (* 3 H))))
    (cons 10 (setq n (polar n pi H))) (cons 10 (setq n (polar n (* 1.5 pi) H)))
    (cons 10 (setq n (polar n pi L)))))
  (setq o (vlax-ename->vla-object (entlast)))
  (while (/= 3 (car (setq nn (grread T 4 1)))) (setq nn (cadr nn))
    (vla-transformby o (vlax-tmatrix (list
      (list 1 0 0 (- (car nn) (car n))) (list 0 1 0 (- (cadr nn) (cadr n)))
      (list 0 0 1 (- (caddr nn) (caddr n))) (list 0 0 0 1)))) (setq n nn))
  (command "_.undo" "end") (prin1)
)
Bir de uyarı

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

:)

ProhibiT (19.01.2012 20:19 GMT)

19.01.2012 16:50    

ehya
Hocam inceleme konusu dediğin profesyonel bir çözüm önerisi.. :)
Kafa yapmasın sonra :)

19.01.2012 17:25    

mayyaq61
[URL=http://imageshack.us/photo/my-images/39/74791189.png/][IMG]http://img39.imageshack.us/img39/3017/74791189.png[/IMG][/URL]

Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]


Kod:

(defun c:a()
  (setvar "osmode" 0)
(setq b0 (getpoint "\nNEREYE ÇİZİLSİN?:"))
(setq m  (getreal "MODÜL GİRİN : " ))
(setq z  (getreal "DİŞ SAYISINI GİRİN: "))
(setq i  (getreal "İLETME ORANI: "))
(setq ph (getreal "PAH DEĞERİ:"))
(setq dlk_cp(getreal "DELİK ÇAPINI GİRİN:"))
(setq t1(getreal "KAMA YÜKSEKLİĞİNİ GİRİN:"))
(setq km_b(getreal "KAMA GENİŞLİĞİNİ GİRİN:")) 
(setq d (* m z))
(setq da (+ d (* 2 m )))
(setq df (- d (* 2.332 m)))
(setq p (* 3.14 m))
(setq h (* 2.166 m))
(setq hf (* 1.166 m))
(setq s (/ p 2.0 ))
(setq d2 (* m (* i z)))
(setq da2 (+ d2 (* 2.0 m)))
(setq df2 (- d2 (* 2.332 m)))
(setq b (* m 10))

 

(princ "Da_Bölüm dairesi: ")(princ d)(princ)
(princ  "\nDiş üstü çapı: ")(princ da)(princ)
(princ  "\nDiş dibi çapı: ")(princ df)(princ)
(princ  "\nAdım: ")(princ p)(princ)
(princ  "\nDiş yüksekliği: ")(princ h)(princ)
(princ  "\nDiş başı yüksekliği: ")(princ m)(princ)
(princ  "\nDiş dibi yüksekliği: ")(princ hf)(princ)
(princ  "\nDiş dolusu: ")(princ s)(princ)
(princ  "\nDiş boşluğu: ")(princ s)(princ)
(princ  "\n2_Bölüm dairesi: ")(princ d2)(princ)
(princ  "\n2_Diş üstü yüksekliği: ")(princ da2)(princ)
(princ  "\n2_Diş dibi yüksekliği: ")(princ df2)(princ)
(princ  "\nKalınlık: ")(princ b)(princ)
 
(setq b1 (polar b0 (angtof "0.0") b))
  (command "._line" b0 b1"")
(vl-load-com)
(setq da_oF(entlast))
(setq da_oF_ayar (vlax-ename->vla-object da_oF))
(vlax-method-applicable-p da_oF_ayar 'offset)
(vla-offset da_oF_ayar (/ da 2.00))
(setq ykr0 (entlast))
(setq ykr0_bas (cdr (assoc 10 (entget ykr0))))
(setq ykr0_son (cdr (assoc 11 (entget ykr0))))
(vla-offset da_oF_ayar (- 0 (/ da 2.00)))
(setq ykr1 (entlast))
(setq ykr1_bas (cdr (assoc 10 (entget ykr1))))
(setq ykr1_son (cdr (assoc 11 (entget ykr1))))
(vla-offset da_oF_ayar (/ d 2.00))
(setq d_leng (entlast))
(setq d_leng_bas (cdr (assoc 10 (entget d_leng))))
(setq d_leng_son (cdr (assoc 11 (entget d_leng))))
   (command "._lengthen" "_de" 3 d_leng_bas d_leng_son "")
  (vla-offset da_oF_ayar (- 0 (/ d 2.00)))
(setq d_leng1 (entlast))
(setq d_leng1_bas (cdr (assoc 10 (entget d_leng1))))
(setq d_leng1_son (cdr (assoc 11 (entget d_leng1))))
   (command "._lengthen" "_de" 3 d_leng1_bas d_leng1_son "")
(vla-offset da_oF_ayar (/ df 2.00))
(vla-offset da_oF_ayar (- 0 (/ df 2.00)))
   (command "._lengthen" "_de" 3 b0 b1 "")
   (command "._line" ykr0_bas ykr1_bas"")
(setq ph_kr0 (entlast))
   (command "._line" ykr0_son ykr1_son"")
(setq ph_kr1 (entlast))
(setq dlk_merkez (polar b1 (angtof "0.0") (+ 3 dlk_cp)))
   (command "._circle" dlk_merkez "_d" dlk_cp)
(setq dlk_daire(entlast ))
        (setvar "osmode" 16)
(setq dlk_yatay (polar dlk_merkez (angtof "0.0") (/ dlk_cp 2.0 )))
        (setvar "osmode" 0)
(setq dlk_yatay1 (polar dlk_yatay (angtof "180.0")(+  dlk_cp 3)))
(setq dlk_dikey (polar dlk_merkez (angtof "90.0") (/ dlk_cp 2.0 )))
(setq dlk_dikey1 (polar dlk_dikey (angtof "270.0")  dlk_cp ))
(command "._line" dlk_yatay dlk_yatay1"")
(setq kama_y (polar dlk_dikey (angtof "90.0") t1 ))
(setq kama_bas (polar kama_y (angtof "0.0") (/ km_b 2.0)))
(setq kama_son (polar kama_bas (angtof "180.0")  km_b ))   
   (command "._line" kama_bas kama_son"")
   (command "._lengthen" "_de" 3 dlk_yatay "")
   (command "._line" kama_y dlk_dikey1"")
   (command "._lengthen" "_de" 3 kama_y dlk_dikey1 "")
   (command "._chamfer" "_angle" 3"" 45"" ph_kr0 ykr0 )
    )


1. Sorumun cevabını aldım ty.Eyha hocam.
2.Kama son aşagı daireye kadr çizgi cizdiremedim.o arayi da tirimlerse iyi olr :)
3.Ve bu noktaları düz dişlinin yan taraftaki görünüşünün üstüne taşımak istiyorum.
4.ProhibiT hocamın paylaştığı list komutuyla yapılabilir mi? bu kadr uzatmaya gerek var mı yoksa? Yapılırsa List foksiyon hakkinda
döküman bulamadım :S

ehya (19.01.2012 19:39 GMT)

19.01.2012 19:20    

ProhibiT
ehya hocam, bence kafa yapmaz. :) Burada son derece ilgili arkadaşlar var. İstiyorum ki basit syntax detaylarına takılıp kalmasınlar. Daha başlangıçtan geniş ufuklara açık olsunlar. Okur yazar insanlar benim için değerli, sizin içinde öyle olduğunu biliyorum. Verdiğim örneğin bihakkın çözümlenmesi şart değil. Yolun başındaki arkadaşların kavramlara aşinalık kazanmaları yeterli :)

Sitemizin müdavimi olan çok sayıda arkadaşımız var. Hem iyi yoldalar, hemde kendilerinin bile farkında olmadığı kadar iyi noktadalar. Bu konularda, işin başındaki "aferin" lerin nasıl tökezletici olduğunu bildiğimizden açıkça söylemek istemiyoruz. Belki de hayat boyu hiç karşılaşmayacağımız bu insanlar, ben inanıyorum gelecekte güzel şeyler üretecekler.

Kaynak bulmak, bilgiye ulaşmak konusundaki ızdırabı benim kadar iyi biliyorsunuz. Hasbelkader birşeyler öğrenebilmiş insanların, "Allah bana verdi kimseye vermesin" duygusuyla kendilerini kapattıkları bu ortamlarda, bazen benim de düşündüğüm oluyor, "Ne adına, neden debelenip duruyoruz ki?" diye. Burada öyle konular paylaşıyoruz ki, ne yazılı, ne görsel hiç bir kaynakta bulmak mümkün değil. Buna rağmen burada verilenleri anlayamamaktan kaynaklanan öylesine basit polemikler de oluyor ne yazıkki. Drawing Units, Milimetre midir? misali... Şevikimizi kıracak olaylar yeterince varken, bunları anlayabilen bir kaç kişi bile çıkması güzel bir şey.

İlk günden beri imzamı değiştirmedim :) "Beğenmek için anlamak lazım..." sorulan sorulardan çıkardığım sonuç; Anlayanlar var :) bir kaç kuşak sonra kimse cad/cam konusunda Türkiye'yi görmezden gelemeyecek...

Sitemizi takip eden arkadaşlara da diyorum ki; elin memleketinde evangelist diye yücelttiklerinin, kendimi tenzih ederek söylüyorum, ağa babaları burada... Sormaktan çekinmeyin, her sorunuzun cevabı var burada. Yeterki ilk adımda soru sorarak başlanmasın, kafa yorup emek verip, bundan sonra sorulan sorular her iki taraf içinde daha değerli daha verimli oluyor.

Herkese kolay gelsin.

19.01.2012 19:43    

ehya
Şahin hocam haklısınız. Kaynak en çok ihtiyaç duyulan şey. Ne yazık ki ülkemizde bu konuya yeteri kadar önem verilmiyor. Bu yazılanlar eminim birçok kişinin ihtiyacını karşılayacak ve yeni şeyler öğrenmesine vesile olacaktır.
Sayenizde benim de öğrenmeme vesile oldu. Bu matrix olayı hoşuma gitti :) :yes

19.01.2012 19:46    

ehya
mayyaq61




Resim güzel de, çizgi kenarlarına yaz derken lisp içinde sakladığın değerleri değil, değer istediğin iletileri demek istmeiştim.
Diş sayısı, iletme oranı v.s. Bana bunlar lazım...

19.01.2012 21:41    

mayyaq61
[URL=http://imageshack.us/photo/my-images/7/ff1yz.png/][IMG]http://img7.imageshack.us/img7/4130/ff1yz.png[/IMG][/URL]

Düz Dişi çark elemanlarının hesaplarıda var.Ama çizimi için hepsi gerekli değil.Ben gerekli olanları yukarda belirttim.

20.01.2012 07:21    

ehya
çizimden pek birşey anlamadığım için sadece soldaki çizimi hazırlayan basit bir kod yazdım. Yardımcı olacaktır.

Kod:

(defun c:ciz ()
(setq ref (getpoint "\nÇizim yeri:")
      mod (getreal "\nModül girin:")
       ds (getreal "\nDiş sayısı:")
       io (getreal "\nİletme oranı:")
       pd (getreal "\nPah değeri:")
       dc (getreal "\nDelik çapı:")
       ky (getreal "\nKama yüksekliği:")
       kg (getreal "\nKama genişliği:"))

  (setq d (* mod ds)
da (+ d (* mod 2))
df (- d (* mod 2.332))
b (* mod 10))
  (setq n1 ref
n2 (polar n1 0.0 b)
n3 (polar n2 (/ pi 2.0) da)
n4 (polar n3 pi b)

n5 (polar n1 (/ pi 2)(/ (- da df) 2.0))
n6 (polar n2 (/ pi 2)(/ (- da df) 2.0))
n7 (polar n3 (* pi 1.5)(/ (- da df) 2.0))
n8 (polar n4 (* pi 1.5)(/ (- da df) 2.0))

n9 (polar n1 (/ pi 2)(/ (- da d) 2.0))
n9 (polar n9 pi (/ (- da d) 2.0))
n10 (polar n9 0 (+ b (- da d)))

n11 (polar n4 (* pi 1.5)(/ (- da d) 2.0))
n11 (polar n11 pi (/ (- da d) 2.0))
n12 (polar n11 0 (+ b (- da d)))

n13 (polar n9 (/ pi 2.0) (/ d 2.0))
n14 (polar n13 0 (+ b (- da d))))


  (command "_.line" n1 n2 n3 n4 "c" )
  (command "_.line" n5 n6 "")
  (command "_.line" n7 n8 "")
  (command "_.line" n9 n10 "")
  (command "_.line" n11 n12 "")
  (command "_.line" n13 n14 "")
(princ)
)

20.01.2012 12:56    

mayyaq61
Eyha hocam sağolun bütün sorunlar halloldu.Teşekür ederim.

mayyaq61 (22.01.2012 11:27 GMT)

22.01.2012 19:40    

ProhibiT
Arkadaşlarımızın sıkça sordukları bir konunun, basit bir örnekle detaylı açıklaması, Transformation Matrix kullanımı;
Kod:

(defun c:Deneme (/ BizimCircLe EskiNokta YeniNokta)
  (command "_.undo" "group") (vl-load-com)
;;; 0,0,0 koordinatlarında 5 birim yarıçaplı Circle objesi oluşturalım.
  (entmake (list (cons 0 "Circle") (cons 10 (list 0.0 0.0 0.0)) (cons 40 5)))
;;; Oluşturduğumuz objenin adını BizimCircle değişkenine,
  (setq BizimCircLe (vlax-ename->vla-object (entlast))
;;; ilk konumu olan 0,0,0 koordinatlarını EskiNokta değişkenine atayalım.
        EskiNokta '(0.0 0.0 0.0))
;;; Mouse sol tuşuna basılıncaya kadar tekrarlanacak while loop kuralım.
  (while (/= 3 (car (setq YeniNokta (grread T 4 0))))
;;; Mouse sol tuşuna tıklanmadığı için Loop içindeyiz.
;;; Mouse'un bulunduğu konumun koordinatlarını alalım.
    (setq YeniNokta (cadr YeniNokta))
;;; Objemizi EskiNokta'dan YeniNokta'ya transform edelim.
    (vla-transformby
      BizimCircLe
      (vlax-tmatrix
        (list
          (list 1 0 0 (- (car YeniNokta) (car EskiNokta)))       ;;; 1 0 0 X
          (list 0 1 0 (- (cadr YeniNokta) (cadr EskiNokta)))     ;;; 0 1 0 Y
          (list 0 0 1 (- (caddr YeniNokta) (caddr EskiNokta)))   ;;; 0 0 1 Z
          (list 0 0 0 1))                                        ;;; 0 0 0 1
        ) ;;; vla-transformby sonu.
    ) ;;; while Loop sonu.
;;; Objemizi getirdiğimiz mouse koordinatını EskiNokta değişkenine alalım.
    (setq EskiNokta YeniNokta))
  (command "_.undo" "e") (prin1)
)

26.01.2012 16:24    

mayyaq61
(defun c:a()
(setq n (getpoint "\n Nereye Çizilsin:")
saa (getreal "\n sAA GİRİN:")
e (getreal "\n E GİRİN:")
saa_düz (/ saa 2.0000)

n1 (polar n (angtof "-60.0")saa_düz)
zm1 (polar n (angtof "180.0")(+ 5 saa_düz))
zm1_2 (polar zm1 (angtof "90.0")(+ 5 saa_düz))
zm2 (polar n (angtof "0.0")(+ 5 saa_düz))
zm2_2 (polar zm2 (angtof "270.0")(+ 5 saa_düz))
c1 (polar n (angtof "270.0")(/ e 2.000 ))
n3 (polar n (angtof "-30.0")(+ 0.25 saa_düz))
n4 (polar n (angtof "-60.0")saa_düz)
)

(command "_polygon" 6 n "c" saa_düz)
(setvar "osmode" 0)
(command "._line" n n1"")
(command "._zoom" "_window" zm1_2 zm2_2)
(command "_extend" "" n1 "")
(setq hs (entlast))
(setq hs2 (cdr (assoc 11 (entget hs))))
(command "._erase" hs"")
(command "._circle" n "d" e"")
(setq cc (entlast))
(command "_trim" cc"" hs2"")
(command "_trim" "" c1"")
(command "._line" n n3"")
(command "_extend" "" n3 "")
(setq hs2_1 (entlast))
(setq hs2_2 (cdr (assoc 11 (entget hs2_1))))
(command "._erase" hs2_1"")
(command "_trim" "" hs2_2"")
(command "._line" n n4"")
(command "_extend" "" n4 "")
(setq hs5_1 (entlast))
(setq hs5_2 (cdr (assoc 11 (entget hs5_1))))
(command "._erase" hs5_1"")
(setq sec (ssget hs5_2))
(entget sec)
)

; error: bad argument type: lentityp <Selection set: 240>

Eyha ve ProhibiT hocamin sayesinde düz dişli çark çizimini bitirdim..Cıvata çizerken (üst görünüş taşıma yapacam için ordan başladım.devam edicem takıldığım nokta çizilen çizgiyi extend yaptım.Şeçip ucundaki kordinantı aldım . o kordinatta arc var onu sectirip işleme tabi tutucam ama yukardaki hatayi verdi.

27.01.2012 06:54    

ehya
(setq sec (ssget hs5_2))

satırında hata var. Böyle bir kod olmaz. Sssget seçimine tek nesneyi bu şekilde atayamazsın. Ne yapmak istediğini söylersen yardımcı oluruz.

27.01.2012 09:30    

mayyaq61
hs5_2 değerinde kordinat saklı .Bu kordinattada bir arc nesnesi var.Bunu seçmek istiyorum (entlast) gibi

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] > 15 < [20] [25] [30] [35] [40] [42] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.34 saniye - Sorgu: 98 - Ortalama: 0.01368 saniye