Calc Geo Extents
From Macros Wiki
! calculate the extents in X and Y of the selected geometry |
a1$ = "This macro will calculate the extents" |
a2$ = "(min/max X and Y) of the selected geometry" |
message "%a1$\n%a2$" |
check part_open, "You must have a part open to run this macro" |
check part_mill, "This macro is not designed for turned parts" |
global xmin, ymin, xmax,ymax ! these variables are used by all macros |
global ics |
xmin=99999 |
ymin=99999 |
xmax=-99999 |
ymax=-99999 |
! when we get the data for each feature, we can |
! get the xyz values in either the world cs or |
! the cs local to each feature. |
trace on |
ics = 1 ! world cs (local cs would be zero) |
! get the number of selected features |
! ----------------------------------- |
get_num_feat_selected inum |
if inum<1 then stop "No geometry selected" |
! loop through all selected features and |
! update the min/max xy data according |
! to each features xy data |
! -------------------------------------- |
for i=1 to inum |
- ! get the feature reference number for
- ! the 'i'th selected feature
- ! ------------------------------------
- get_selected_geo_ref i, iref
- ! get the feature type for this feature
- ! -------------------------------------
- get_feat_type iref, itype
debug i, iref, itype
- if itype=1 then call "Check_Point_Data.mac"
- if itype=2 then call "Check_Line_Data.mac"
- if itype=3 then call "Check_Circle_Data.mac"
- if itype=4 then call "Check_Arc_Data.mac"
next i |
! display the results |
! ------------------- |
xmin$=format$(xmin,"####0.0###") |
ymin$=format$(ymin,"####0.0###") |
xmax$=format$(xmax,"####0.0###") |
ymax$=format$(ymax,"####0.0###") |
msg$="X Min = %xmin$\n" |
msg$=msg$+"Y Min = %ymin$\n" |
msg$=msg$+"X Max = %xmax$\n" |
msg$=msg$+"X Max = %ymax$" |
message msg$, "Geometry Extents" |
yesno "Draw a rectangle around the geometry ?", iyesno |
if iyesno=0 then stop "Finished" |
contour[ |
start xmin, ymin |
line xmax, ymin |
line xmax, ymax |
line xmin, ymax |
line xmin, ymin |
] |
redraw |
stop "Finished" |