11.05.2017 07:42    

ehya
ayuksel




hocanızın sizden dcl ile ayarlanabilir istediği çizim bir öğrenci için biraz ağır ödev olmuş.
Geçmiş yıllarda öğrencilere benzer çizimleri kodlamıştım ama bu biraz zor.

Tavsiyem,
çizdirmek istediğiniz tüm koordinatları hesaplatın. radius olacak kısımda dahil.
daha sonra pline komutu ile tek defada oluşturun.

11.05.2017 07:47    

Travaci
Bu ödevden herkez kalır : )

11.05.2017 10:26    

ayuksel
Alıntı
ehya :



Hocam maalesef haklısınız. Hele Autocadden az anlayıp, kodlama bilgisi 0 olan bir kişi için çok zor bir ödev. O kadar anlamıyorum ki tavsiyenizi bile anlamadım :)

Kod:

(defun c:abd ()
(setq wid1 60 len 115 wid1 60 wid2 22.5 hole1 20 hole2 15 rad1 22.5 rad2 20 rad3 50 rad4 10 rad5 7.5 he1 15 thi1 15 thi2 15 dist1 47.5 dist2 25 dist3 22.5 dist4 37.5)

;base
(setq pnt1 (getpoint "\nPlease select the starting point"))
(setq pnt2 (list (+ (car pnt1) (- len rad2))  (cadr pnt1)  (caddr pnt1)))
(setq pnt3 (list (car pnt2) (- (cadr pnt2) (- wid1 (* rad1 2)))  (caddr pnt1)))
  (setq pnt4 (list (+ (car pnt3) (* rad2 2)) (cadr pnt3)  (caddr pnt1)))
(setq pnt5 (list (car pnt4) (+ (cadr pnt4) wid1)  (caddr pnt1)))
(setq pnt6 (list (- (car pnt4) (+ len rad2)) (cadr pnt5)  (caddr pnt1)))
(setq pnt7 (list (car pnt1) (cadr pnt1) (caddr pnt1)))

(command "line" pnt1 pnt2 "")
  (setq l1 (entlast))
  (command "line" pnt2 pnt3 "")
  (setq l2 (entlast))
(command "line" pnt3 pnt4 "")
  (setq l3 (entlast))
(command "line" pnt4 pnt5 "")
  (setq l4 (entlast))
(command "line" pnt5 pnt6 "")
  (setq l5 (entlast))
(command "line" pnt6 pnt7 "")
  (setq l6 (entlast))

  (setvar "filletrad" 10)
  (command "._fillet" l1 l2)
(setq f1 (entlast))
  (setvar "filletrad" 50)
  (command "._fillet" l4 l5)
(setq f2 (entlast))


  (setq pa (getvar "peditaccept"))
  (setvar "peditaccept" 1)
    (setq ssj (ssget "_A"))
    (command "pedit" "m" ssj ""  "j" "0.01" "")
  (setvar "peditaccept" pa)


  (setq base (entlast))
(command "extrude" base "" he1 "")

(setq extbase1 (entlast))


    (setq pnt8 (list (+ (car pnt1) dist1) (+ (cadr pnt1) (- rad1 rad5))  (caddr pnt1)))
  (setq pnt9 (list (+ (car pnt1) (+ dist1 dist3) (+ (cadr pnt1) (- rad1 rad5))  (caddr pnt1))))
[b](command "line" pnt8 pnt9 "")[/b]
  (setq l7 (entlast))

(setq pnt10 (list (+ (car pnt1) dist1) (+ (cadr pnt1) (+ rad1 rad5))  (caddr pnt1)))
  (setq pnt11 (list (+ (car pnt1) (+ dist1 dist3) (+ (cadr pnt1) (+ rad1 rad5))  (caddr pnt1))))
[b](command "line" pnt10 pnt11 "")[/b]
  (setq l8 (entlast))

  (setq pnt12 (list (car pnt8) (+ (cadr pnt8) rad5) (caddr pnt1)))

(command "arc" pnt8 pnt12 pnt10)
  )


Hocam kodun içerisinde "pnt8 pnt9" ve "pnt10 pnt11" noktalarından oluşan line'ları çizmiyor Autocad. Biraz yukarıdaki "peditaccept" kısmında mı hata yapıyorum sizce? Bu kısmı çizdirdiğim ayrı parçaları birleştirsin diye yazmıştım extrude etmeden önce.

ayuksel (11.05.2017 11:21 GMT)

11.05.2017 11:59    

ehya
ayuksel




Kodlama yaparken osnap değerlerini kapatmalısın. Bunun için uygulaman gereken kod;

lispin üst kısmına

Kod:

(setq os (getvar "osmode"))


kodunu ekle. bu kod mevcut osnap seçeneklerini hafızaya alır.

Nesneler oluşturmadan önce de;

Kod:

(setvar "osmode" 0)


kodu ile osnap ları kapat.

lispin sonuna da
Kod:

(setvar "osmode" os)

kodunu ekleyerek osnapları eski haline getir.
Bu bölümler yazılmazsa, çizim oluşturulurken hata verir. Yada bu çizgileri command ile değil de, etnmake ile yada vla-add ile eklemelisin.

Lispin sonunda arc komutu hatalı çalışıyır. tek düzlem üzerine arc çizdirmeye çalışıyorsun.
pnt12 koordinatını yarı değer kadar sola kaydırmalısın.

11.05.2017 14:11    

ayuksel
Hocam değerli yardımlarınız için teşekkür ederim. Bu arc'ın yönünü değiştirmenin bir yolu var mıdır LISP ile? Hep CCW mi olacak?



Teşekkürler,

Arc için yazdığım kod:
Kod:

 
(command "_.arc" "_non" pnt8 "_e" "_non" pnt10 "_radius" rad5)

  (setq arc1 (entlast))

  (command "_.arc" "_non" pnt9 "_e" "_non" pnt11 "_radius" rad5)
 
  (setq arc2 (entlast))

11.05.2017 14:27    

ehya
hesaplamalar ccv dir. ona göre koordinatları bulmalısın.

11.05.2017 15:43    

ayuksel
Alıntı
ehya :



Hocam (entlast) ile isim verdiğim line, arc gibi şekilleri nasıl birleştireceğim? Bu konuda da yardımcı olursanız sevinirim.

İyi çalışmalar,

11.05.2017 20:48    

alumina
Alıntı
ayuksel :

Kod:

(defun c:pd (/ p1 p2 p3 p4)
  (setq p1 (getpoint) p2 (getpoint) p3 (getpoint) p4 (getpoint))
  (command "._line" p1 p2 "") (setq ln (entlast))
  (command "._arc" p2 p3 p4) (setq ac (entlast))
  (command "._pedit" ln "" "j" ac "" "")
  (prin1)
)

11.05.2017 21:36    

ayuksel
Alıntı
alumina :




Teşekkür ediyorum.

Resimdeki arc'ın yönünü nasıl değiştirebilirim? Tavsiyeniz var mı? Alttaki çizgilerle paralel/yukarıya doğru olması gerekiyor.

Lispte UCS komutlarını denedim biraz ama işler iyice karışıyor o zaman, bir türlü yerini tutturamadım.

ayuksel (12.05.2017 13:40 GMT)

14.05.2017 20:19    

alumina
Alıntı
ayuksel :

Kod:

(defun c:rc (/ p1 p2 p3)
  (setq p1 (getpoint) p2 (getpoint) p3 (getpoint))
  (command "._ucs" "3" p1 p3 p2
           "._arc" (trans p1 0 1) (trans p2 0 1) (trans p3 0 1)
           "._ucs" "w")
  (prin1)
)

16.05.2017 08:29    

waytooraider
Merhaba,
Seçilen blokckların sağına ,soluna yeri önemli değil etrafında herhangi bir yerine ismini text olarak yazdırmak mümkün mü?

16.05.2017 09:03    

alumina
Alıntı
waytooraider :

Kod:

(defun c:bn (/ dc sl m) (vl-load-com)
  (if (and (ssget '((0 . "insert"))) (setq dc (vlax-get (vlax-get-acad-object)
        'activedocument) sl (vla-get-activeselectionset dc)))
    (progn (vla-startundomark dc)
      (vlax-for m sl (vla-getboundingbox m 'mn 'mx)
        (vlax-invoke (vlax-get dc 'modelspace) 'addtext (vla-get-EffectiveName m)
          (polar (vlax-safearray->list mn) (+ pi (/ pi 2)) 50) 25)) (vla-endundomark dc)
      (vla-delete sl)
    )
  ) (prin1)
)

16.05.2017 10:04    

waytooraider
Harikasın!

12.06.2017 08:14    

ec
Merhaba;

Kullandığım bir lisp var. Eski Autocad versiyonlarında sorunsuz çalışıyordu.
Ancak yeni versiyonlarda (örneğin 2015) çok yavaş çalışıyor.
Hızlandırmak mümkün müdür. İlgilenen arkadaşlara şimdiden teşekkürler.

(defun c:k ()
(command "layer" "lock" "*" "")
(command "layer" "unlock" "00-*" "" ))

(defun c:j ()
(command "layer" "freeze" "*" "")
(command "layer" "thaw" "00-*" "" ))

(defun c:vv()
(command "layer" "t" "*" "")
(command "layer" "u" "*" "")
(command "layer" "on" "*" ""))

15.06.2017 07:03    

k_akkus
Merhaba;

Mevcut yazıların (rakamların) başına harf eklemek istiyorum. YDEG lispini denedim ama tek tek seçmek gerekiyor. Her proje de 500'den fazla yazı var, tek tek seçmek zor oluyor.

Yardımlarınızı rica ediyorum.

15.06.2017 08:05    

alumina
Alıntı
k_akkus :

Kod:

(defun c:tp (/ dc sl k m) (vl-load-com)
  (if (and (ssget '((0 . "*text"))) (setq dc (vlax-get (vlax-get-acad-object)
        'activedocument) sl (vla-get-activeselectionset dc)
          k (getstring T "\nHead letter:")))
    (progn (vla-startundomark dc)
      (vlax-for m sl (vla-put-TextString m
        (strcat k (vla-get-TextString m)))) (vla-endundomark dc) (vla-delete sl)
    )
  ) (prin1)
)

15.06.2017 11:32    

k_akkus
Alıntı
alumina :
Alıntı
k_akkus :




Teşekkürler... Çözdüm...

alumina (16.06.2017 22:05 GMT)

16.06.2017 14:51    

mikemoon
merhaba arkadaşlar forumda bir lisp vardı bulamadım bulabilirmisiniz.

önce bir obje seçiliyor sonra tüm çizim pencere içerisine alınıyor ilk seçilen objelerden kaçtane varsa seçiyor.

bu lisp daha önce çalışıyordu şimdi çalışmıyor.

(defun c:smr (/ e)
(sssetfirst nil
(ssget (list (assoc 0 (setq e (entget (car (entsel)))))
(assoc 8 e)
(if (assoc 62 e) (assoc 62 e) (cons 62 256))
(if (assoc 40 e) (assoc 40 e)))))(princ))

16.06.2017 22:20    

alumina
Alıntı
mikemoon :

Secilen nesnelerin isimlerini referans alarak nesneleri secer..
Kod:

(defun c:sl (/ k i)
  (if (and (ssget) (setq k "" i (sslength (ssget "_p"))))
    (sssetfirst nil (ssget (list (cons 0 (repeat i (setq k (strcat k (cdr (assoc 0
      (entget (ssname (ssget "_p") (setq i (1- i)))))) ","))))))))
  (princ)
)

17.06.2017 13:23    

mikemoon
Merhaba alumina
Bu lisp in çalışma mantığını tam anlayamadım fakat
Benim demek istediğim ayni objeden kaç tane varsa onu seçmek
Ornegin önce bir cap20 daire seçiyorum sonrada tüm cizimi seçiyorum
İçerisinde kaç tane daha cap20 daire varsa seciyor olmalı tabiki diğer obje seçimleri de yapabilmeli

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] > 82 < [85] [90] [95] [100] Sonraki Sayfa
Copyright © 2004-2022 SQL: 3.738 saniye - Sorgu: 100 - Ortalama: 0.03738 saniye