Polylinea Dibuja Mal
Publicado por gust (3 intervenciones) el 22/05/2020 19:26:49
Hola buenos dias, soy nuevo en autolisp y estoy practicando, la cosa es que tengo una rituna muy sencilla, y a veces dija lo que quiero y aveces hace cualquier cosa.
Creo que esta bien, hasta verifique los resultados con "Añadir Inpeccion" y los resultados estan bien, el problema cuando tiene que dibujar la polylinea.
la rutina calcula el ancho minimo de una viga segun el cirsoc 103 III Argentina, selecciono dos puntos y tendria que dibujar la viga paralela a los dos punto que elegi, puede ser que mi autocad este mal??
Agraderia la ayuda de alguien por favor y desde ya muchas gracias.
Creo que esta bien, hasta verifique los resultados con "Añadir Inpeccion" y los resultados estan bien, el problema cuando tiene que dibujar la polylinea.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun c:AnchoMinimoViga (/ p1 p2 ancho bw x1 y1 x2 y2 xp1 yp1 xp2 yp2 xp3 yp3 xp4 yp4)
(setq p1 (getpoint "\nPunto Inicial: "))
(setq p2 (getpoint "\nPunto Final: "))
(setq ancho (max (/ (distance p1 p2) 25) 0.20))
(setq bw (if ( > (rem ancho 0.05) 0) (+ ancho (- 0.05 (rem ancho 0.05))) ancho))
(setq x1 (car p1) y1 (cadr p1)
x2 (car p2) y2 (cadr p2)
)
(setq xp1 (/ (- (* (- x1 x2) (+ (* x1 (- x1 x2)) (* y1 (- y1 y2)))) (* (- y2 y1) (+ (- (* x2 y1) (* x1 y2)) (* (* 0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
(setq yp1 (/ (- (* (+ (- (* x2 y1) (* x1 y2)) (* (* 0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))) (- x2 x1)) (* (+ (* x1 (- x1 x2)) (* y1 (- y1 y2))) (- y2 y1))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
(setq xp2 (/ (- (* (- x1 x2) (+ (* x1 (- x1 x2)) (* y1 (- y1 y2)))) (* (- y2 y1) (+ (- (* x2 y1) (* x1 y2)) (* (* -0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
(setq yp2 (/ (- (* (+ (- (* x2 y1) (* x1 y2)) (* (* -0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))) (- x2 x1)) (* (+ (* x1 (- x1 x2)) (* y1 (- y1 y2))) (- y2 y1))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
(setq xp3 (/ (- (* (- x1 x2) (+ (* x2 (- x1 x2)) (* y2 (- y1 y2)))) (* (- y2 y1) (+ (- (* x2 y1) (* x1 y2)) (* (* -0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
(setq yp3 (/ (- (* (+ (- (* x2 y1) (* x1 y2)) (* (* -0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))) (- x2 x1)) (* (+ (* x2 (- x1 x2)) (* y2 (- y1 y2))) (- y2 y1))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
(setq xp4 (/ (- (* (- x1 x2) (+ (* x2 (- x1 x2)) (* y2 (- y1 y2)))) (* (- y2 y1) (+ (- (* x2 y1) (* x1 y2)) (* (* 0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
(setq yp4 (/ (- (* (+ (- (* x2 y1) (* x1 y2)) (* (* 0.5 bw) (expt (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2)) 0.5))) (- x2 x1)) (* (+ (* x2 (- x1 x2)) (* y2 (- y1 y2))) (- y2 y1))) (+ (expt (- x2 x1) 2) (expt (- y2 y1) 2))))
;;;Hasta arriba esta todo OK, aqui dibuja aveces bien y otras no
(command "_pline" (list xp1 yp1) (list xp2 yp2) (list xp3 yp3) (list xp4 yp4) "c" "")
)
la rutina calcula el ancho minimo de una viga segun el cirsoc 103 III Argentina, selecciono dos puntos y tendria que dibujar la viga paralela a los dos punto que elegi, puede ser que mi autocad este mal??
Agraderia la ayuda de alguien por favor y desde ya muchas gracias.
Valora esta pregunta
0