2000.06.14 更新
1.測定・2点と中心
2.測定・要素の鋏角の再表示 2000.06.14
3.測定・要素の鋏角のデータ表示 2000.06.14
4.測定・要素の鋏角 2000.06.14
5.測定・要素の傾斜角 2000.06.14
6.測定・半径と中心
7.測定・端位置の再表示
8.測定・端位置のデータ表示
9.測定・要素端位置
10.測定・位置
11.測定・要素長累計
12.測定・要素長
13.測定・距離
{測定・2点と中心
1999.04.25
}
DEFINE Ma_measure_angle_point
LOCAL Point01
LOCAL Point02
LOCAL Point03
LOCAL Angle01
LOCAL Angle02
LOCAL Data01
LOCAL Data02
LOCAL Data03
Ma_screen_erase_data {前データの消去}
READ PNT '** 最初の点を指定してください。
**' Point01
READ PNT '** 次の点を指定してください。
**' RUBBER_LINE Point01 Point02
LOOP
READ PNT '** 原点を指定してください。
終わる場合は、[ESC]キー を押して下さい。**' Point03
LET Angle01 (ANG (Point03
- Point01))
LET Angle02 (ANG (Point03
- Point02))
LET Data01 (ABS (Angle01
- Angle02))
IF (Data01 > 180)
LET Data01 (360- Data01)
END_IF
LET Data02 (ABS (Point03
- Point01))
LET Data03 (ABS (Point03
- Point02))
MENU Colo1 Bcol3 '角度'
'' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
MENU Colo1 Bcol3 '距 A'
'' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data02 '' 4 2
MENU Colo1 Bcol3 '距 B'
'' 5 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data03 '' 5 2
END_LOOP
END_DEFINE
INQ_ENV 6
LET Angle_unit (INQ
3)
{ラディアンへの変換値}
Ma_screen_erase_data
{前データの消去}
Ma_measure_angle_element_value
Angle_unit
END_DEFINE
LOCAL Angle01
LOCAL Angle02
IF (Gl_measure_pos =
0)
{小侠角なら}
LET Angle01 (GL_measure_angle /
Angle_unit)
LET Angle02 ((PI -
GL_measure_angle) / Angle_unit)
LET Gl_measure_pos 1
ELSE_IF (Gl_measure_pos =
1)
{大侠角なら}
LET Angle01 ((2 * PI -
GL_measure_angle) / Angle_unit)
LET Angle02 ((PI +
GL_measure_angle) / Angle_unit)
LET Gl_measure_pos 0
END_IF
MENU Colo1 Bcol3 '角1' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Angle01 '' 3 2
MENU Colo1 Bcol3 '角2' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Angle02 '' 4 2
MENU Colo1 Bcol5 '小/大侠角切替' 'Ma_measure_tip_angle_element_again'
5 2
END_DEFINE
LOCAL Angle_unit {ラディアンへの変換値}
INQ_ENV 6
LET Angle_unit (INQ
3)
{ラディアンへの変換値}
LOOP
READ PNT '**
基準となる、線、下書き線又は文字を指示して下さい。(反時計回りのデータです。)
**' Point_temp
INQ_ELEM
Point_temp
{要素情報の取得}
EXIT_IF (((INQ 403) = LINE) OR ((INQ 403) =
C_LINE) OR ((INQ
403) = TEXT))
END_LOOP
IF ((INQ 403) =
TEXT)
{文字なら}
LET Point01 (INQ 101)
LET Angle01 (INQ 8)
ELSE
LET Point01 Point_temp
IF ((INQ 403) =
LINE)
{線なら}
LET Angle01 (ANG
((INQ 102) - (INQ
101)))
IF (Angle01 >=
180)
LET
Angle01 (Angle01
- 180)
END_IF
ELSE
{下書き線なら}
LET Angle01 (INQ 3)
END_IF
END_IF
LET Angle01 (Angle01 *
Angle_unit)
{ラディアン表示}
IF (Angle01 <
0)
{−なら}
LET Angle01 (2 * PI + Angle01)
END_IF
IF (Angle01 >=
PI)
{180°以上なら}
LET Angle01 (Angle01 - PI)
END_IF
LOOP
READ PNT '**
測定する、線、下書き線又は文字を指示して下さい。
**' RUBBER_LINE Point01 Point_temp
INQ_ELEM
Point_temp
{要素情報の取得}
EXIT_IF (((INQ 403) = LINE) OR ((INQ 403) =
C_LINE) OR ((INQ
403) = TEXT))
END_LOOP
IF ((INQ 403) =
TEXT)
{文字なら}
LET Angle02 (INQ 8)
ELSE
IF ((INQ 403) =
LINE)
{線なら}
LET Angle02 (ANG
((INQ 102) - (INQ
101)))
IF (Angle02 >=
180)
LET
Angle02 (Angle01
- 180)
END_IF
ELSE
{下書き線なら}
LET Angle02 (INQ 3)
END_IF
END_IF
LET Angle02 (Angle02 *
Angle_unit)
{ラディアン表示}
IF (Angle02 <
0)
{−なら}
LET Angle02 (2 * PI + Angle02)
END_IF
IF (Angle02 >=
PI)
{180°以上なら}
LET Angle02 (Angle02 - PI)
END_IF
Ma_screen_erase_data
{前データの消去}
LET Gl_measure_pos 0
IF (Angle02 >= Angle01)
LET GL_measure_angle (Angle02 -
Angle01)
ELSE
LET GL_measure_angle (Angle01 -
Angle02)
END_IF
Ma_measure_angle_element_value Angle_unit
END_DEFINE
INQ_ENV 6
LET Angle_unit (INQ
3)
{ラディアンへの変換値}
LOOP
READ PNT '**
線、円弧、フィレット、下書き線又は文字を指示して下さい。
**' Point_temp
INQ_ELEM
Point_temp
{要素情報の取得}
EXIT_IF (((INQ 403) = LINE) OR ((INQ 403) =
ARC) OR ((INQ
403) = FILLET) OR ((INQ 403) = C_LINE) OR ((INQ 403)
= TEXT))
END_LOOP
Ma_screen_erase_data {前データの消去}
IF (((INQ 403) = LINE) OR ((INQ 403) =
ARC) OR ((INQ 403)
= FILLET))
IF ((INQ 403) = LINE)
LET Point01 (INQ
101)
{始点の取得}
LET Point02 (INQ
102)
{終点の取得}
ELSE_IF (((INQ 403) = ARC) OR
((INQ 403) = FILLET))
LET Point01 (INQ
102)
{始点の取得}
LET Point02 (INQ
103)
{終点の取得}
END_IF
LET Angle01 (ANG (Point02 -
Point01))
ELSE_IF ((INQ 403) = C_LINE)
LET Angle01 (INQ
3)
{X
軸との角度の取得}
ELSE_IF ((INQ 403) = TEXT)
LET Angle01 (INQ
8)
{角度の取得}
END_IF
{ X軸基準}
LET Angle01 (Angle01 *
Angle_unit)
{ラディアンへ変換}
IF (Angle01 <= (- (PI / 2)))
LET Angle01 (Angle01 + PI)
ELSE_IF (Angle01 > (PI / 2))
LET Angle01 (Angle01 - PI)
END_IF
{ 全周角度基準}
IF (Angle01 >= 0)
LET Angle02 (Angle01 + PI)
ELSE
LET Angle02 (Angle01 + PI)
END_IF
LET Angle01 (Angle01 /
Angle_unit)
{単位を戻す}
LET Angle02 (Angle02 / Angle_unit)
MENU Colo1 Bcol3 '角1' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Angle01 '' 3 2
MENU Colo1 Bcol3 '角2' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Angle02 '' 4 2
END_DEFINE
DEFINE Ma_measure_radius
LOCAL Point_temp
LOCAL Point01
LOCAL Data01
LOCAL Data02
LOCAL Data03
LOOP
READ PNT '**
円、円弧又はフィレットを指示して下さい。
**' Point_temp
INQ_ELEM
Point_temp
{要素情報の取得}
EXIT_IF (((INQ 403) = CIRCLE) OR ((INQ 403)
= ARC) OR ((INQ
403) = FILLET) OR ((INQ 403) = C_CIRCLE))
END_LOOP
Ma_screen_erase_data {前データの消去}
LET Point01 (INQ 101) {中心点位置の取得}
LET Data01 (INQ
3)
{半径}
LET Data02 (ABS (X_OF Point01))
LET Data03 (ABS (Y_OF Point01))
MENU Colo1 Bcol3 '半径' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
MENU Colo1 Bcol3 '芯 X' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data02 '' 4 2
MENU Colo1 Bcol3 '芯 Y' '' 5 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data03 '' 5 2
END_DEFINE
DEFINE Ma_measure_tip_value_again
Ma_screen_erase_data
{前データの消去}
Ma_measure_tip_value
END_DEFINE
DEFINE Ma_measure_tip_value
LOCAL Point01
LOCAL Data01
LOCAL Data02
IF (Gl_measure_pos =
0)
{先端なら}
LET Point01 Gl_measure_tip01
LET Gl_measure_pos 1
ELSE_IF (Gl_measure_pos =
1)
{後端なら}
LET Point01 Gl_measure_tip02
LET Gl_measure_pos 0
END_IF
LET Data01 (X_OF Point01)
LET Data02 (Y_OF Point01)
MENU Colo1 Bcol3 ' X' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
MENU Colo1 Bcol3 ' Y' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data02 '' 4 2
MENU Colo1 Bcol5 '他端' 'Ma_measure_tip_value_again'
5 1
END_DEFINE
DEFINE Ma_measure_tip
LOCAL Point_temp
LOCAL Point01
LOCAL Point02
LOCAL Data01
LOCAL Data02
LOOP
READ PNT '**
線、円、円弧、フィレット又はBスプライン線を指示して下さい。
**' Point_temp
INQ_ELEM
Point_temp
{要素情報の取得}
EXIT_IF (((INQ 403) = LINE) OR ((INQ 403) =
CIRCLE) OR ((INQ
403) = ARC) OR ((INQ 403) = FILLET) OR ((INQ 403) =
BSPLINE))
END_LOOP
Ma_screen_erase_data {前データの消去}
LET Gl_measure_pos 0
IF (((INQ 403) = LINE) OR ((INQ 403) =
BSPLINE) OR ((INQ
403) = ARC) OR ((INQ 403) = FILLET))
IF (((INQ 403) = LINE) OR
((INQ 403) = BSPLINE))
LET Point01 (INQ
101)
{始点の取得}
LET Point02 (INQ
102)
{終点の取得}
ELSE_IF (((INQ 403) = ARC) OR
((INQ 403) = FILLET))
LET Point01 (INQ
102)
{始点の取得}
LET Point02 (INQ
103)
{終点の取得}
END_IF
LET GL_measure_tip01 Point01
LET GL_measure_tip02 Point02
ELSE_IF ((INQ 403) = CIRCLE)
LET Point01 (INQ
102)
{円周上の点の取得}
LET Data01 (X_OF Point01)
LET Data02 (Y_OF Point01)
MENU Colo1 Bcol3 ' X' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
MENU Colo1 Bcol3 ' Y' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data02 '' 4 2
END_IF
END_DEFINE
DEFINE Ma_measure_point
LOCAL Point01
LOCAL Data01
LOCAL Data02
READ PNT '** 位置を指示して下さい。 **' Point01
Ma_screen_erase_data {前データの消去}
LET Data01 (X_OF Point01)
LET Data02 (Y_OF Point01)
MENU Colo1 Bcol3 ' X' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
MENU Colo1 Bcol3 ' Y' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data02 '' 4 2
END_DEFINE
LET Data00
0
{データの初期化}
LOOP
LOOP
READ PNT '**
累計を行う、線、円、円弧又はフィレットを指示して下さい。
終了は[ESC]キーを入力 **' Point_temp
INQ_ELEM
Point_temp
{要素情報の取得}
EXIT_IF (((INQ 403) = LINE) OR
((INQ 403) =
CIRCLE) OR ((INQ 403) = ARC) OR ((INQ 403) =
FILLET))
END_LOOP
Ma_screen_erase_data {前データの消去}
IF ((INQ 403) = LINE)
LET Point01 (INQ
101)
{始点の取得}
LET Point02 (INQ
102)
{終点の取得}
LET Data01 (ABS
(Point02 -
Point01))
{長さ}
MENU Colo1 Bcol3
'線長' '' 3 1
MENU Colo1 Bcol4
Ma_slotdata_distance
Data01 '' 3 2
ELSE_IF (((INQ 403) = ARC) OR
((INQ 403) = FILLET))
LET Radius (INQ
3)
{半径}
LET Angle01 (INQ
4)
{始点角度}
LET Angle02 (INQ
5)
{終点角度}
LET Point02 (INQ
102)
{始点の取得}
LET Point03 (INQ
103)
{終点の取得}
INQ_ENV 6
LET Data01
((Angle02 - Angle01)
* (INQ 3) * Radius)
LET Data02 (ABS
(Point03 -
Point02))
{長さ}
MENU Colo1 Bcol3
'弧長' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
ELSE_IF ((INQ 403) = CIRCLE)
LET Radius (INQ
3)
{半径}
LET Data01 (PI *
Radius * 2)
MENU Colo1 Bcol3
'周長' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
END_IF
LET Data00 (Data00 + Data01)
MENU Colo1 Bcol3 '累計' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data00 '' 4 2
END_LOOP
END_DEFINE
DEFINE Ma_measure_distance_element
LOCAL Point_temp
LOCAL Point01
LOCAL Point02
LOCAL Point03
LOCAL Radius
LOCAL Angle01
LOCAL Angle02
LOCAL Data01
LOCAL Data02
LOOP
READ PNT '**
線、円、円弧又はフィレットを指示して下さい。
**' Point_temp
INQ_ELEM
Point_temp
{要素情報の取得}
EXIT_IF (((INQ 403) = LINE) OR ((INQ 403) =
CIRCLE) OR ((INQ
403) = ARC) OR ((INQ 403) = FILLET))
END_LOOP
Ma_screen_erase_data {前データの消去}
IF ((INQ 403) = LINE)
LET Point01 (INQ
101)
{始点の取得}
LET Point02 (INQ
102)
{終点の取得}
LET Data01 (ABS (Point02 -
Point01))
{長さ}
MENU Colo1 Bcol3 '線長' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
ELSE_IF (((INQ 403) = ARC) OR ((INQ 403) =
FILLET))
LET Radius (INQ
3)
{半径}
LET Angle01 (INQ
4)
{始点角度}
LET Angle02 (INQ
5)
{終点角度}
LET Point02 (INQ
102)
{始点の取得}
LET Point03 (INQ
103)
{終点の取得}
INQ_ENV 6
LET Data01 ((Angle02 - Angle01)
* (INQ 3) *
Radius)
LET Data02 (ABS (Point03 -
Point02))
{長さ}
MENU Colo1 Bcol3 '弧長' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
MENU Colo1 Bcol3 '弦長' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data02 '' 4 2
ELSE_IF ((INQ 403) = CIRCLE)
LET Radius (INQ
3)
{半径}
LET Data01 (PI * Radius * 2)
MENU Colo1 Bcol3 '周長' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
END_IF
END_DEFINE
DEFINE Ma_measure_distance
LOCAL Point01
LOCAL Point02
LOCAL Data01
LOCAL Data02
LOCAL Data03
Ma_screen_erase_data {前データの消去}
READ PNT '** 始点を指定してください。 **' Point01
READ PNT '** 終点を指定してください。 **' RUBBER_LINE
Point01
Point02
LET Data01 (ABS (Point02 -
Point01))
{長さ}
LET Data02 (ABS (X_OF (Point02 - Point01)))
LET Data03 (ABS (Y_OF (Point02 - Point01)))
MENU Colo1 Bcol3 '距離' '' 3 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data01 '' 3 2
MENU Colo1 Bcol3 '水平' '' 4 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data02 '' 4 2
MENU Colo1 Bcol3 '鉛直' '' 5 1
MENU Colo1 Bcol4 Ma_slotdata_distance
Data03 '' 5 2
END_DEFINE
気をつけて作りました、使用してのトラブルに責任は持てませんが、
自由にお使い下さい。(伏 見 表)