brm
10-04-2005, 03:58 AM
I have created a macro to extend an horizontal line but not run correctly.
why?
DEFINE st_line
LOCAL P1
LOCAL element
LOCAL P2
LOCAL P3
LOCAL ang_line
LOCAL D1_2
LOCAL D1_3
LOCAL P4
LOCAL P5
LOOP
LOOP
READ PNT 'Indicate line, near end to extend.' P1
INQ_ELEM P1
LET element (INQ 403)
EXIT_IF (element=LINE)
END_LOOP
IF (element=LINE)
LET P2 (INQ 101)
LET P3 (INQ 102)
LET ang_line (ANG(P2-P3))
MEASURE_DISTANCE P1 P2
LET D1_2 (INQ 3)
MEASURE_DISTANCE P1 P3
LET D1_3 (INQ 3)
END_IF
IF (D1_2<D1_3)
LOOP
READ PNT 'Indicate next point.' RUBBER_LINE_ANG P2 (ang_line) P4
EXIT_IF ((P4<>P1)AND(P4<>P2)AND(P4<>P3))
END_LOOP
ELSE_IF (D1_2>D1_3)
LOOP
READ PNT 'Indicate next point.' RUBBER_LINE_ANG P3 (ang_line) P4
EXIT_IF ((P4<>P1)AND(P4<>P3)AND(P4<>P2))
END_LOOP
END_IF
IF ((D1_2>D1_3)AND(((Y_OF P2)=(Y_OF P3))AND((X_OF P4)>(X_OF P3))))
LET P5 (PNT_XY (X_OF P4) (Y_OF P3))
MODIFY SCALE CENTER P2 P3 P5 P1 END
ELSE_IF ((D1_2>D1_3)AND(((Y_OF P2)=(Y_OF P3))AND((X_OF P4)<(X_OF P3))))
LET P5 (PNT_XY (X_OF P4) (Y_OF P3))
MODIFY SCALE CENTER P2 P3 P5 P1 END
END_IF
DELETE SELECT POINTS ALL CONFIRM END
WHITE
END_LOOP
END_DEFINE
why?
DEFINE st_line
LOCAL P1
LOCAL element
LOCAL P2
LOCAL P3
LOCAL ang_line
LOCAL D1_2
LOCAL D1_3
LOCAL P4
LOCAL P5
LOOP
LOOP
READ PNT 'Indicate line, near end to extend.' P1
INQ_ELEM P1
LET element (INQ 403)
EXIT_IF (element=LINE)
END_LOOP
IF (element=LINE)
LET P2 (INQ 101)
LET P3 (INQ 102)
LET ang_line (ANG(P2-P3))
MEASURE_DISTANCE P1 P2
LET D1_2 (INQ 3)
MEASURE_DISTANCE P1 P3
LET D1_3 (INQ 3)
END_IF
IF (D1_2<D1_3)
LOOP
READ PNT 'Indicate next point.' RUBBER_LINE_ANG P2 (ang_line) P4
EXIT_IF ((P4<>P1)AND(P4<>P2)AND(P4<>P3))
END_LOOP
ELSE_IF (D1_2>D1_3)
LOOP
READ PNT 'Indicate next point.' RUBBER_LINE_ANG P3 (ang_line) P4
EXIT_IF ((P4<>P1)AND(P4<>P3)AND(P4<>P2))
END_LOOP
END_IF
IF ((D1_2>D1_3)AND(((Y_OF P2)=(Y_OF P3))AND((X_OF P4)>(X_OF P3))))
LET P5 (PNT_XY (X_OF P4) (Y_OF P3))
MODIFY SCALE CENTER P2 P3 P5 P1 END
ELSE_IF ((D1_2>D1_3)AND(((Y_OF P2)=(Y_OF P3))AND((X_OF P4)<(X_OF P3))))
LET P5 (PNT_XY (X_OF P4) (Y_OF P3))
MODIFY SCALE CENTER P2 P3 P5 P1 END
END_IF
DELETE SELECT POINTS ALL CONFIRM END
WHITE
END_LOOP
END_DEFINE