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ı
mesuttasar :


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ı
alumina :
Alıntı
mesuttasar :


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) "" "")




Ç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ı
mesuttasar :

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ı
alumina :
Alıntı
mesuttasar :

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)




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ı
mesuttasar :

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ı
alumina :
Alıntı
mesuttasar :

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)
)




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?

20.01.2023 12:55    

baha07
Alıntı
mesuttasar :
Alıntı
alumina :
Alıntı
mesuttasar :

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)
)



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?





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

> 1 <
Copyright © 2004-2022 SQL: 1.395 saniye - Sorgu: 72 - Ortalama: 0.01937 saniye