14.05.2020 16:31    

kiorgi
herkese merhaba,
yaptığım bir dcl menüde edit_box'a kullanıcı veri girmediğinde ve OK tıkladığında program nil hatası veriyor. sorun şu ki programın başında osnap kapatıp sonunda da açıyorum. nil hatası verdiği için program sonundaki osnap açma kodları çalışmıyor haliyle de osnap kapalı kalıyor. böyle bir hataya mahal vermemek için nasıl bir kod eklemek ya da nasıl bir error handling yapmak gerekir? (profesyonel arkadaşlar sorunumu hemen anlayacaklardır)
yardımlarınız için teşekkürler.

14.05.2020 16:32    

Travaci
Kodunu paylaşırsan yardımcı oluruz.

14.05.2020 16:43    

kiorgi
Kodlar aşağıdadır.


(defun c:miterelbowflatten (/ dcl_id elbow_od elbow_wall_thick)

(setq oldosmode (getvar "osmode"))
(setvar "osmode" 0)

(setq dcl_id (load_dialog "miter.dcl"))
(if (not (new_dialog "miter" dcl_id))
(exit)
)

(action_tile "pdia" "(setq elbow_od $value)")
(action_tile "thick" "(setq elbow_wall_thick $value)")
(action_tile "bendradius" "(setq bendradius $value)")
(action_tile "accept" "(done_dialog)")

(setq ww (dimx_tile "miterimage")
hh (dimy_tile "miterimage")
)

(start_image "miterimage")

(slide_image 0 0 ww hh "miter")
(end_image)

(start_dialog)
(unload_dialog dcl_id)



(setq elbow_nd (- (atof elbow_od) (atof elbow_wall_thick)))

(setq x (/ (* elbow_nd pi) 36))
(setq mm (/ elbow_nd 2));
(setq aa (* (- (atof bendradius) mm) (/ (sin (/ pi 12)) (cos (/ pi 12))) 2))

(setq a (- mm (* mm (sin (/ pi 2.25)))))
(setq b (- (* mm (sin (/ pi 2.25))) (* mm (sin (/ pi 2.571428)))))
(setq c (- (* mm (sin (/ pi 2.571428))) (* mm (sin (/ pi 3)))))
(setq d (- (* mm (sin (/ pi 3))) (* mm (sin (/ pi 3.6)))))
(setq e (- (* mm (sin (/ pi 3.6))) (* mm (sin (/ pi 4.5)))))
(setq f (- (* mm (sin (/ pi 4.5))) (* mm (sin (/ pi 6)))))
(setq g (- (* mm (sin (/ pi 6))) (* mm (sin (/ pi 9)))))
(setq h (- (* mm (sin (/ pi 9))) (* mm (sin (/ pi 18)))))
(setq k (* mm (sin (/ pi 18))))

(setq a1 (* a (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq b1 (* b (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq c1 (* c (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq d1 (* d (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq e1 (* e (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq f1 (* f (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq g1 (* g (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq h1 (* h (/ (sin (/ pi 12)) (cos (/ pi 12)))))
(setq k1 (* k (/ (sin (/ pi 12)) (cos (/ pi 12)))))





(setq p1 (getpoint "\n Bir Nokta Secin: "))
(setq p2 (list (+ x (car p1)) (+ (cadr p1) a1)))
(setq p3 (list (+ x (car p2)) (+ (cadr p2) b1)))
(setq p4 (list (+ x (car p3)) (+ (cadr p3) c1)))
(setq p5 (list (+ x (car p4)) (+ (cadr p4) d1)))
(setq p6 (list (+ x (car p5)) (+ (cadr p5) e1)))
(setq p7 (list (+ x (car p6)) (+ (cadr p6) f1)))
(setq p8 (list (+ x (car p7)) (+ (cadr p7) g1)))
(setq p9 (list (+ x (car p8)) (+ (cadr p8) h1)))
(setq p10 (list (+ x (car p9)) (+ (cadr p9) k1)))
(setq p11 (list (+ x (car p10)) (+ (cadr p10) k1)))
(setq p12 (list (+ x (car p11)) (+ (cadr p11) h1)))
(setq p13 (list (+ x (car p12)) (+ (cadr p12) g1)))
(setq p14 (list (+ x (car p13)) (+ (cadr p13) f1)))
(setq p15 (list (+ x (car p14)) (+ (cadr p14) e1)))
(setq p16 (list (+ x (car p15)) (+ (cadr p15) d1)))
(setq p17 (list (+ x (car p16)) (+ (cadr p16) c1)))
(setq p18 (list (+ x (car p17)) (+ (cadr p17) b1)))
(setq p19 (list (+ x (car p18)) (+ (cadr p18) a1)))
(setq p20 (list (+ x (car p19)) (cadr p18)))
(setq p21 (list (+ x (car p20)) (cadr p17)))
(setq p22 (list (+ x (car p21)) (cadr p16)))
(setq p23 (list (+ x (car p22)) (cadr p15)))
(setq p24 (list (+ x (car p23)) (cadr p14)))
(setq p25 (list (+ x (car p24)) (cadr p13)))
(setq p26 (list (+ x (car p25)) (cadr p12)))
(setq p27 (list (+ x (car p26)) (cadr p11)))
(setq p28 (list (+ x (car p27)) (cadr p10)))
(setq p29 (list (+ x (car p28)) (cadr p9)))
(setq p30 (list (+ x (car p29)) (cadr p8)))
(setq p31 (list (+ x (car p30)) (cadr p7)))
(setq p32 (list (+ x (car p31)) (cadr p6)))
(setq p33 (list (+ x (car p32)) (cadr p5)))
(setq p34 (list (+ x (car p33)) (cadr p4)))
(setq p35 (list (+ x (car p34)) (cadr p3)))
(setq p36 (list (+ x (car p35)) (cadr p2)))
(setq p37 (list (+ x (car p36)) (cadr p1)))
(setq p38 (list (car p37) (- (cadr p37) aa)))
(setq p39 (list (car p36) (- (cadr p38) a1)))
(setq p40 (list (car p35) (- (cadr p39) b1)))
(setq p41 (list (car p34) (- (cadr p40) c1)))
(setq p42 (list (car p33) (- (cadr p41) d1)))
(setq p43 (list (car p32) (- (cadr p42) e1)))
(setq p44 (list (car p31) (- (cadr p43) f1)))
(setq p45 (list (car p30) (- (cadr p44) g1)))
(setq p46 (list (car p29) (- (cadr p45) h1)))
(setq p47 (list (car p28) (- (cadr p46) k1)))
(setq p48 (list (car p27) (- (cadr p47) k1)))
(setq p49 (list (car p26) (- (cadr p48) h1)))
(setq p50 (list (car p25) (- (cadr p49) g1)))
(setq p51 (list (car p24) (- (cadr p50) f1)))
(setq p52 (list (car p23) (- (cadr p51) e1)))
(setq p53 (list (car p22) (- (cadr p52) d1)))
(setq p54 (list (car p21) (- (cadr p53) c1)))
(setq p55 (list (car p20) (- (cadr p54) b1)))
(setq p56 (list (car p19) (- (cadr p55) a1)))
(setq p57 (list (car p18) (cadr p55)))
(setq p58 (list (car p17) (cadr p54)))
(setq p59 (list (car p16) (cadr p53)))
(setq p60 (list (car p15) (cadr p52)))
(setq p61 (list (car p14) (cadr p51)))
(setq p62 (list (car p13) (cadr p50)))
(setq p63 (list (car p12) (cadr p49)))
(setq p64 (list (car p11) (cadr p48)))
(setq p65 (list (car p10) (cadr p47)))
(setq p66 (list (car p9) (cadr p46)))
(setq p67 (list (car p8) (cadr p45)))
(setq p68 (list (car p7) (cadr p44)))
(setq p69 (list (car p6) (cadr p43)))
(setq p70 (list (car p5) (cadr p42)))
(setq p71 (list (car p4) (cadr p41)))
(setq p72 (list (car p3) (cadr p40)))
(setq p73 (list (car p2) (cadr p39)))
(setq p74 (list (car p1) (cadr p38)))



(command "pline" p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32 p33 p34 p35 p36 p37 p38 p39 p40 p41 p42 p43 p44 p45 p46 p47 p48 p49 p50 p51 p52 p53 p54 p55 p56 p57 p58 p59 p60 p61 p62 p63 p64 p65 p66 p67 p68 p69 p70 p71 p72 p73 p74 "c" )


(setvar "osmode" oldosmode)

)

14.05.2020 17:08    

Travaci
Kod:

(if (setq p1 (getpoint "\n Bir Nokta Secin: "))
  (progn
    (setq p2 (list (+ x (car p1)) (+ (cadr p1) a1)))
    (setq p3 (list (+ x (car p2)) (+ (cadr p2) b1)))
    ...
    ...
    (setq oldosmode (getvar "osmode"))
    (setvar "osmode" 0)
    (command ...)
    (setvar "osmode" oldosmode)
  )
)


Eğer nokta gösterirsen işlemleri yaptıracağız.

14.05.2020 17:57    

kiorgi
teşekkürler travaci. sorun çözüldü.
kolay gelsin.

15.05.2020 01:51    

ehya
Osnap ile sıkıntı yaşamak istemiyorsanız Polyline nesnesini çizdirirken command kullanmayın.
İlk aşamada Entmake ile nesneyi oluşturmanız daha sağlıklı olacaktır. Hem de osnap derdiniz olmayacak.
Nokta sayınız 74 olduğu için bunları sırası ile eklemek biraz zahmetli olacağından küçük bir uygulama yazarak anlatayım.
Umarım bu konuda faydam olur.

Kod:

(setq ds 74)     ;; Nokta sayısı 74 olduğundan ds değişkenine bu sayıyı atadım.
(setq s 0 pls '())    ;;  döngü içi s değerine 0, liste için pls oluşturdum.


Kod:

(repeat ds (setq pls (append pls (list (read (strcat "p" (itoa (setq s (1+ s)))))))))

;; sırası ise 74 defa döngüye girerek 1 den başlayarak başına P koyup bu listeyi hafızaya aldım
;; sonuç ; (P1 P2 P3 P4 ........ şeklinde olacaktır.

;; Polyline oluşturmak için ilk etapda nesne bilgilerini içeren bir liste yapmak gerek.


Kod:

   (setq plk (list (cons 0 "LWPOLYLINE")            ;; Nesne adı LWPOLYLINE
       (cons 8 "YENI-LAYER")                    ;; Layer adı
       (cons 100 "AcDbEntity")                 ;; Eklemek şart.
       (cons 100 "AcDbPolyline")             ;; Eklemek şart
       (cons 90 ds)                           ;; Vertex sayısı
       (cons 70 1)                             ;; 1 olursa kapalı.  0 olursa açık olur.
       (cons 43 0.0)))                       ;; width değeri 0


;; Şimdi ise polyline koordinatlarıını bu listeye ekleyelim.
Kod:

(foreach kk pls (setq plk (append plk (list (cons 10 (eval kk))))))


Bu işlem de bittiğne göre nesneyi oluşturabiliriz.
Kod:

(entmake plk)


Bu kodları aynı şekilde lispinize eklediğinizde hem osnap kullanmayacak, hem command derdinden uzakalaşacaksınız.

15.05.2020 08:36    

kiorgi
amatör olduğum için oldukça basit bir yöntemle yapmıştım. siz profesyonellerin bakış açısı farklı tabi.
eline sağlık ehya.

> 1 <
Copyright © 2004-2022 SQL: 1.212 saniye - Sorgu: 62 - Ortalama: 0.01954 saniye