Copyright © 2004-2022 SQL: 1.395 saniye - Sorgu: 72 - Ortalama: 0.01937 saniye
14.10.2018 17:40
mesuttasar |
Arkadaşlar merhaba, şu kodlarla z değerine sahip 3 noktayı tıklayarak 3dpolyline oluşturabiliyorum,
Kod: (SETVAR "OSMODE" 8) (setq a1 (getpoint "\n1.Nokta")) (setq a2 (getpoint "\n2.Nokta")) (setq a3 (getpoint "\n3.Nokta")) (setq pm (command "_.3dpoly" a1 a2 a3 "C" )) Ancak oluşturmuş olduğum bu kapalı alanı surface haline getirmek için; Kod: (SETVAR "OSMODE" 0) (command "_.surfpatch" "CU" pm "" "") yazmama rağmen surface oluşturamıyorum. Manuel olarak surface oluşturabiliyorum oysaki. Son satırda yazım hatası mı var? Şimdiden teşekkür ederim.
|
14.10.2018 23:46
alumina |
Alıntı Kod: (setq a1 (getpoint "\n1.Nokta"))
(setq a2 (getpoint "\n2.Nokta")) (setq a3 (getpoint "\n3.Nokta")) (command "_.3dpoly" a1 a2 a3 "C") (command "_.surfpatch" "CU" (entlast) "" "")
|
17.10.2018 09:55
mesuttasar |
Alıntı Çok teşekkür ederim arkadaşım, sağolun. Son oluşturulan üçgeni "pm" olarak belirlemiştim o yüzden işlem yapmıyordu. entlast fonksiyonunun önemini de görmüş oldum. Tekrardan teşekkür ederim.
|
17.10.2018 10:58
alumina |
Alıntı illa pm olarak belirlemek istersen bunu disarda yapmalisin. Avantaji nolur? surface yi create ettikten sonra 3dpoly ile isin kalmazsa kolayca silebilirsin. Kod: (command "_.3dpoly" a1 a2 a3 "C")
(setq pm (entlast)) (command "_.surfpatch" "CU" pm "" "") (entdel pm)
|
18.10.2018 10:14
mesuttasar |
Alıntı Evet bu daha mantıklı oldu, teşekkür ederim Alumina.
|
18.10.2018 11:14
mesuttasar |
Hocam, ekte bir dosya gönderiyorum, sayenizde z kotları farklı olan noktalardan istediğimiz yüzeyi oluşturabildik. Tekrar teşekkürler. Bir sorum daha olacak, ABC noktaları arasında oluşturulan yüzeyin içerisinde bulunan bir D noktasının (x ve y koordinatı belli olan) z koordinatını nasıl hesaplayabiliriz? 53264-ornek.dwg
|
18.10.2018 11:59
alumina |
Alıntı point nesnesi kendi basina bir nesnedir ve z koordinati nerde oldugu fark etmeksizin, Kod: (defun c:ww (/ pt)
(if (setq pt (car (entsel))) (print (cadddr (assoc 10 (entget pt))))) (princ) )
|
18.10.2018 16:50
mesuttasar |
Alıntı Hocam iyi akşamlar, sanırım tam olarak yapmak istediğimi anlatamadım, üç boyutlu bir yüzey alanı sınırları içerisine, rastgele seçtiğim bir noktanın , o yüzeydeki Z koordinatını hesaplamak istiyorum. Surface nesnesinin belirli bir x,y koordinatındaki z değerini nasıl hesaplayabiliriz? Öğrenmek istediğim tam olarak budur. Bunun bir yolu var mıdır?
|
baha07 |
Alıntı Kod: ;;; Syntax: ;;; (pointxface P1 fent) ;;; ;;; Arguments: ;;; P1 - point on Z=0 ;;; fent - entity 3dFace ;;; ;;; Retval: ;;; projection point on 3dface, if the projection of the point is outside the 3dface, the result will be nil (defun pointxface (P1 fent / vertice1 vertice2 vertice3 V1 V2 V3 D1 D2 D aa bb somma zeta puntoinalto) (setq vertice1 (cdr (assoc 10 (entget fent))) vertice2 (cdr (assoc 11 (entget fent))) vertice3 (cdr (assoc 12 (entget fent))) V1 (list (car vertice1)(cadr vertice1)) V2 (list (car vertice2)(cadr vertice2)) V3 (list (car vertice3)(cadr vertice3)) ) (setq D1 (- (* (- (car P1) (car V1)) (- (cadr V3) (cadr V1))) (* (- (cadr P1) (cadr V1)) (- (car V3) (car V1))) ) ) (setq D2 (- (* (- (car V1) (car P1)) (- (cadr V2) (cadr V1))) (* (- (cadr V1) (cadr P1)) (- (car V2) (car V1))) ) ) (setq D (- (* (- (car V2) (car V1)) (- (cadr V3) (cadr V1))) (* (- (cadr V2) (cadr V1)) (- (car V3) (car V1))) ) ) (setq aa (/ D1 D)) (setq bb (/ D2 D)) (setq somma (+ aa bb)) (if (equal aa 0.00 0.000001)(setq aa 0.0)) (if (equal bb 0.00 0.000001)(setq bb 0.0)) (if (equal somma 1.0 0.000001)(setq somma 1.0)) (if (and (>= aa 0.0) (>= bb 0.0)(<= somma 1.0)) ;;; Se aa>=0 and bb>=0 and aa+bb<=1 allora P è interno al triangolo o sul bordo. Altrimenti è esterno (progn (setq zeta (/ (+ (- (- (* (- (car P1) (car vertice1)) (- (* (- (cadr vertice2) (cadr vertice1)) (- (caddr vertice3) (caddr vertice1)) ) (* (- (cadr vertice3) (cadr vertice1)) (- (caddr vertice2) (caddr vertice1)) ) ) ) (* (- (cadr P1) (cadr vertice1)) (- (* (- (car vertice2) (car vertice1)) (- (caddr vertice3) (caddr vertice1)) ) (* (- (car vertice3) (car vertice1)) (- (caddr vertice2) (caddr vertice1)) ) ) ) ) ) (* (caddr vertice1) (- (* (- (car vertice2) (car vertice1)) (- (cadr vertice3) (cadr vertice1)) ) (* (- (car vertice3) (car vertice1)) (- (cadr vertice2) (cadr vertice1)) ) ) ) ) (- (* (- (car vertice2) (car vertice1)) (- (cadr vertice3) (cadr vertice1)) ) (* (- (car vertice3) (car vertice1)) (- (cadr vertice2) (cadr vertice1)) ) ) ) puntoinalto (list (car P1) (cadr P1) zeta) ) ) (setq puntoinalto nil) ) (princ "\n") puntoinalto ) belki yardimci olur
|