CAD programy 4M
Sčítání vzdáleností ve 2D
Tento skript pro měření a sčítání délek usnadní práci v případě, že je třeba změřit celkovou délku několika segmentů. Tato verze nebere v potaz souřadnici Z, takže se vždy jedná o vzdálenost v základní rovině. To je výhodné pro 2D výkresy, protože není nutné kontrolovat, zda měřené entity neleží v prostoru. Měřené segmenty nemusí být spojité (navazovat na sebe). Celková změřená délka je při každém kroku vypisována v příkazovém řádku.Měření lze u každého segmentu omezit na vzdálenost ve směru osy X nebo Y.
Příkaz je volán zadáním "2dd" do příkazového řádku programu.
(DEFUN C:2DD(/ p1 p2 dalsi p1x p2x p1y p2y dx dy td td0) (setq td 0.0) (while (setq p1 (getpoint "\nZadejte prvni bod segmentu: ")) (initget 128) (setq p2 (getpoint p1 "\nZadejte dalsi bod nebo omezte smer mereni klavesou X ci Y: ")) (if (listp p2) (progn (setq td0 (distancexy p1 p2)) (princ (strcat "\nDelka segmentu v rovine XY: " (rtos td0))) ) (progn (setq osa p2) (if (or (= osa "x") (= osa "X")) (progn (setq p2 (getpoint p1 "\nZadejte dalsi bod: ")) (setq td0 (distancex p1 p2)) (princ (strcat "\nDelka segmentu v rovine XY: " (rtos td0))) ) ) (if (or (= osa "y") (= osa "Y")) (progn (setq p2 (getpoint p1 "\nZadejte dalsi bod: ")) (setq td0 (distancey p1 p2)) (princ (strcat "\nDelka segmentu v rovine XY: " (rtos td0))) ) ) ) ) (setq p1 p2) (initget 128) (while (setq p2 (getpoint p1 "\nZadejte dalsi bod nebo omezte smer mereni na X ci Y: ")) (if (listp p2) (progn (setq td0 (+ td0 (distancexy p1 p2))) ) (progn (setq osa p2) (if (or (= osa "x") (= osa "X")) (progn (setq p2 (getpoint p1 "\nZadejte dalsi bod: ")) (setq td0 (+ td0 (distancex p1 p2))) ) ) (if (or (= osa "y") (= osa "Y")) (progn (setq p2 (getpoint p1 "\nZadejte dalsi bod: ")) (setq td0 (+ td0 (distancey p1 p2))) ) ) ) ) (setq p1 p2) (princ (strcat "\nCelkova delka segmentu v rovine XY: " (rtos td0))) (initget 128) ) (setq td (+ td0 td)) (princ "\n") (princ (strcat "Celkova delka v rovine XY dosud: " (rtos td))) ) (princ (strcat "Celkova delka v rovine XY: " (rtos td))) (princ) ) (defun distancexy (point1 point2 / p1x p2x p1y p2y dx dy dxy) (setq p1x (car point1)) (setq p2x (car point2)) (setq p1y (cadr point1)) (setq p2y (cadr point2)) (setq dx (- p1x p2x)) (setq dy (- p1y p2y)) (setq dxy (sqrt (+ (expt dx 2) (expt dy 2)))) ) (defun distancex(point1 point2 / p1x p2x dx) (setq p1x (car point1)) (setq p2x (car point2)) (setq dx (abs (- p1x p2x))) ) (defun distancey(point1 point2 / p1y p2y dy) (setq p1y (cadr point1)) (setq p2y (cadr point2)) (setq dy (abs (- p1y p2y))) ) (princ)
Soubor ke stažení