Print Geo Data To File

From Macros Wiki
Revision as of 22:42, 28 July 2010 by ConnerO (talk | contribs) (New page: ! print data from selected geometry to a file<br> <br> a1$ = "This macro look at the selected geometry and"<br> a2$ = "print the data for that geometry to a text file,"<br> a3$ = "with the...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

! print data from selected geometry to a file

a1$ = "This macro look at the selected geometry and"
a2$ = "print the data for that geometry to a text file,"
a3$ = "with the filename selected by the user."

message "%a1$\n%a2$\n%a3$"

check part_open, "You must have a part open to run this macro"
check part_mill, "This macro is not designed for turned parts"

get_num_feat_selected inum
if inum<1 then stop "No geometry selected"

! create a file open dialog
! -------------------------

file_dialog_new "Select output filename"
file_dialog_extension "Text files (*.txt)", "txt"
file_dialog_extension "All files (*.*)", "*"
file_dialog_show save, f$

! open the file on unit 1 for writing
! -----------------------------------

file1_open=0

file_open 1, f$, write
if FileError<>0 then goto file_error

file1_open=1

! loop through all selected features and
! update the min/max xy data according
! to each features xy data
! --------------------------------------

! try setting fmt$ to any of the next 3
! to get different formatted numbers

fmt$ = "+ConnerO0.0~~"  ! output spaces in place of leading/trailing zeros
!fmt$ = "+###0.0##"  ! do not output leading/trailing zeros
!fmt$ = "+0000.000"  ! output leading/trailing zeros


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


if itype=1 then goto label_point
if itype=2 then goto label_line
if itype=3 then goto label_circle
if itype=4 then goto label_arc


continue


:label_point

get_feat_start iref, 1, xs, ys, zs


xs$ = format$(xs, fmt$)
ys$ = format$(ys, fmt$)
zs$ = format$(zs, fmt$)


a$ = "Point X =%xs$ Y =%ys$ Z =%zs$"


goto label_print


:label_line

get_feat_start iref, 1, xs, ys, zs
get_feat_end iref, 1, xe, ye, ze


xs$ = format$(xs, fmt$)
ys$ = format$(ys, fmt$)
zs$ = format$(zs, fmt$)


xe$ = format$(xe, fmt$)
ye$ = format$(ye, fmt$)
ze$ = format$(ze, fmt$)


a$ = "Line Xs=%xs$ Ys=%ys$ Zs=%zs$"
a$ = a$ + " Xe=%xe$ Ye=%ye$ Ze=%ze$"


goto label_print


:label_circle

get_circle_data iref, 1, rad, xc, yc, zc


xc$ = format$(xs, fmt$)
yc$ = format$(ys, fmt$)
zc$ = format$(zs, fmt$)


rr$ = format$(rad, fmt$)


a$ = "Circle Xc=%xs$ Yc=%ys$ Zc=%zs$ R =%rr$"


goto label_print


:label_arc

get_feat_start iref, 1, xs, ys, zs
get_feat_end iref, 1, xe, ye, ze
get_arc_data iref, 1, rad, dir, xc, yc, zc


xc$ = format$(xc, fmt$)
yc$ = format$(yc, fmt$)
zc$ = format$(zc, fmt$)


xs$ = format$(xs, fmt$)
ys$ = format$(ys, fmt$)
zs$ = format$(zs, fmt$)


xe$ = format$(xe, fmt$)
ye$ = format$(ye, fmt$)
ze$ = format$(ze, fmt$)


rr$ = format$(rad, fmt$)


a$="Arc CCW"
if dir=1 then a$ = "Arc CW "


a$ = a$ + " Xc=%xc$ Yc=%yc$ Zc=%zc$ R =%rr$"
a$ = a$ + "\n Xs=%xs$ Ys=%ys$ Zs=%zs$"
a$ = a$ + " Xe=%xe$ Ye=%ye$ Ze=%ze$"


Goto label_print


:label_print

file_write_text 1, a$
if FileError<>0 then goto file_error


next i

file_close 1
if FileError<>0 then goto file_error

yesno "View the output ?", iyesno
if iyesno = 0 then stop "Finished"

run_exe "\Windows\System32\Notepad.exe", f$

stop "Finished"

:file_error

ierr=FileError

if file_open=1 then file_close 1

stop "File error, code = %FileError"