Copyright © 2004-2022 SQL: 1.186 saniye - Sorgu: 49 - Ortalama: 0.0242 saniye
07.02.2021 19:35
akcan |
acemi olarak öğrendiğim bilgileri uygularken bir şeyler karaladım. karaladığım şeyleri silmedim. 6 farklı versiyon var.
benim gibi acemi olanlara faydası olur umarım. kodlardaki amaç: çizim alanında 2 nokta tıklanacak. tıklanan noktaların tam ortasına ama biraz üzerine (5 birim) 2 nokta arası uzunluğu yazdırmak. yazı noktaların oluşturduğu eğim açısına uyumlu olacak. ve üstte olacak. dik ise solda olacak (teknik resim ölçülendirme kuralı gibi) Kod: ; 2 nokta arası uzunluğu eğim açısında yaz
(defun c:UZ1() (setq n1 (getpoint "\n1.nokta:")) (setq n2 (getpoint n1 "\n2.nokta:")) (setq aci (angtos(angle n1 n2))) (setq uzunluk (distance n1 n2)) (command "text" n1 "40" aci uzunluk "") (princ) ) ; 2 nokta arası uzunluğu eğim açısında yaz (defun c:UZ2() (setq n1 (getpoint "\n1.nokta:")) (setq n2 (getpoint n1 "\n2.nokta:")) ;(setq aci (angtos(angle n1 n2))) (setq aci (/ (* (angle n1 n2) 180) pi)) (setq uzunluk (distance n1 n2)) ;(command "line" n1 n2 "") (command "text" n1 "40" aci uzunluk "") (princ) ) ; 2 nokta arası uzunluğu eğim açısında yaz (defun c:UZ3() (setq n1 (getpoint "\n1.nokta:") n2 (getpoint n1 "\n2.nokta:") aci (angle n1 n2) uzunluk (distance n1 n2) n1_x (car n1) n1_y (cadr n1) n2_x (car n2) n2_y (cadr n2) n3_x (+(/ (- n2_x n1_x) 2.0) n1_x 5) n3_y (+(/ (- n2_y n1_y) 2.0) n1_y 5) n3 (list n3_x n3_y) ) (entmake (list (cons 0 "TEXT") (cons 1 (rtos uzunluk)) ;yazı (cons 10 n3) ; ekleme noktası1 (cons 11 n3) ; ekleme noktası2 (cons 40 40) ; yazı yüksekliği (cons 50 aci) ; eğim açısı (cons 72 1) ; yaslama1 (cons 73 1) ; yaslama2 ) ) ) ; 2 nokta arası uzunluğu eğim açısında yaz (defun c:UZ4() (setq n1 (getpoint "\n1_nokta:") n2 (getpoint n1 "\n2_nokta:") uzunluk (distance n1 n2) n1_x (car n1) n1_y (cadr n1) n2_x (car n2) n2_y (cadr n2) n3_x (+(/(- n2_x n1_x) 2.0) n1_x 5) n3_y (+(/(- n2_y n1_y) 2.0) n1_y 5) n3 (list n3_x n3_y) ) ; yazının üste gelmesi için (if (<= n1_x n2_x) (setq aci (angle n1 n2)) (setq aci (angle n2 n1)) ) (entmake (list (cons 0 "TEXT") (cons 1 (rtos uzunluk)) ;yazı (cons 10 n3) ; ekleme noktası1 (cons 11 n3) ; ekleme noktası2 (cons 40 40) ; yazı yüksekliği (cons 50 aci) ; eğim açısı (cons 72 1) ; yaslama1 (cons 73 1) ; yaslama2 ) ) ) ; 2 nokta arası uzunluğu eğim açısında yaz (defun c:UZ5() (setq n1 (getpoint "\n1_nokta:") n2 (getpoint n1 "\n2_nokta:") uzunluk (distance n1 n2) n1_x (car n1) n1_y (cadr n1) n2_x (car n2) n2_y (cadr n2) n3_x (+(/(- n2_x n1_x) 2.0) n1_x 5) n3_y (+(/(- n2_y n1_y) 2.0) n1_y 5) n3 (list n3_x n3_y) ) ; yazının üste gelmesi için (if (< n1_x n2_x) (setq aci (angle n1 n2)) (progn (if (and(= n1_x n2_x)(< n1_y n2_y)) (setq aci (angle n1 n2)) (setq aci (angle n2 n1)) );if );progn );if (entmake (list (cons 0 "TEXT") (cons 1 (rtos uzunluk)) ;yazı (cons 10 n3) ; ekleme noktası1 (cons 11 n3) ; ekleme noktası2 (cons 40 40) ; yazı yüksekliği (cons 50 aci) ; eğim açısı (cons 72 1) ; yaslama1 (cons 73 1) ; yaslama2 ) ) ) ; 2 nokta arası uzunluğu nokta eğim açısında yaz (defun c:UZ6() (setq n1 (getpoint "\n1_nokta:") n2 (getpoint n1 "\n2_nokta:") uzunluk (distance n1 n2) n1_x (car n1) n1_y (cadr n1) n2_x (car n2) n2_y (cadr n2) n3_x (+(/(- n2_x n1_x) 2.0) n1_x 5) n3_y (+(/(- n2_y n1_y) 2.0) n1_y 5) n3 (list n3_x n3_y) ) ; yazının üste gelmesi için (if (or(< n1_x n2_x)(and(= n1_x n2_x)(< n1_y n2_y))) (setq aci (angle n1 n2)) (setq aci (angle n2 n1)) ) (entmake (list (cons 0 "TEXT") (cons 1 (rtos uzunluk)) ;yazı (cons 10 n3) ; ekleme noktası1 (cons 11 n3) ; ekleme noktası2 (cons 40 40) ; yazı yüksekliği (cons 50 aci) ; eğim açısı (cons 72 1) ; yaslama1 (cons 73 1) ; yaslama2 ) ) ) ; Mesut Akcan ; http://akcansoft.blogspot.com Travaci (08.02.2021 13:13 GMT) |
08.02.2021 13:18
Travaci |
Gideceğiniz noktaya polar ile daha zahmetsiz ulaşabilirsiniz.
Kod: (defun c:mdp (/ n1 n2)
(if (setq n1 (getpoint "\nSpecify first point: ")) (if (setq n2 (getpoint n1 "\nSpecify second point: ")) (entmake (list (cons 0 "POINT") (cons 10 (polar n1 (angle n1 n2) (/ (distance n1 n2) 2))))) ) ) (princ) )
|
akcan |
@Travaci 'nın verdiği kodlardan da faydalanarak 7. versiyonu yazdım.
yazıların çizgi üstüne gelmesi için kullandığım algoritmayı değiştirdim. daha az değişken kullanıldı daha kısa bir kod oldu. kodlar eleştiriye açıktır :) Kod: ; 2 nokta arası uzunluğu
; noktaların ortasına ; noktaların oluşturduğu eğim açısında yaz ; yazı üste gelecek ; Mesut Akcan (defun c:UZ7 (/ ACI N1 N2 N3 UZUNLUK) (if (setq n1 (getpoint "\n1.nokta: ")) (if (setq n2 (getpoint n1 "\n2.nokta: ")) (progn (setq uzunluk (distance n1 n2) aci (angle n1 n2) n3 (polar n1 aci (/ uzunluk 2)) ) ; yazının üste gelmesi için (if (and(> aci (/ pi 2))(<= aci (* pi 1.5))) (setq aci (angle n2 n1)) ) (entmake (list (cons 0 "TEXT") (cons 1 (rtos uzunluk)) ;yazı (cons 10 n3) ; ekleme noktası1 (cons 11 n3) ; ekleme noktası2 (cons 40 40) ; yazı yüksekliği=40 (cons 50 aci) ; eğim açısı (cons 72 1) ; yatay yaslama 1=center=orta (cons 73 1) ; dikey yaslama 1=bottom=alt ) ) ) ) ) (princ) )
|