Inch Metric

From Macros Wiki
Jump to: navigation, search
!    change current part units from inch to metric
!    or metric to inch, ie swap the current units
a1$ = "This macro will change the units of the current part"
a2$ = "from inch to metric, or metric to inch, scaling the"
a3$ = "geometry and solids accordingly"
message "%a1$\n%a2$\n%a3$"
check part_open, "You must have a part open to run this macro"
get_part_data units, iunits
if iunits=1 then goto inch
yesno "This part is Metric, Do you want to convert it to Inch ?", iyesno, "Inch Metric Macro"
if iyesno=0 then stop "Finished - no action taken"
!    convert from metric to inch
!    ---------------------------
scale = 1/25.4
iunits= 1
goto scale
!    convert from inch to metric
!    ---------------------------
scale = 25.4
iunits= 0
set_part_data units, iunits  !    change the part units
!    any solids will have been scaled by changing the
!    part units, now scale the geometry
!    get the current WorkGroup number and
!    then scale the geometry in each WorkGroup
iNumWG = NUMBER_OF_WGS  ! save the current WG number
LOCAL ListWG(iNumWG+1)  ! in case there is only 1 WG, arrays size must be more than 1
GET_WG_LIST ListWG  ! get a list of all WGs
FOR i=1 TO iNumWG
    iWG = ListWG(i)
    SET_WG iWG  ! select this WG
    select_all_geo  ! select all geomtry in this WG
    scale_geo scale  ! scale all geometry in this WG
SET_WG iCurWG  ! reselect the current WG
yesno "Scale the stock ?", iyesno, "Inch Metric Macro"
if iyesno=0 then redraw
if iyesno=0 then stop "Finished - stock size not changed"
!    get the current stock
!    ---------------------
get_part_data stock_x1, x1
get_part_data stock_y1, y1
get_part_data stock_z1, z1
get_part_data stock_x2, x2
get_part_data stock_y2, y2
get_part_data stock_z2, z2
!   get_part_data stock_z1, z1  !    you would use these variables
!   get_part_data stock_z2, z2  !    for a turned part
!   get_part_data stock_rad, rr
!    change the current stock
!    ------------------------
set_part_data stock_x1, x1*scale
set_part_data stock_y1, y1*scale
set_part_data stock_z1, z1*scale
set_part_data stock_x2, x2*scale
set_part_data stock_y2, y2*scale
set_part_data stock_z2, z2*scale
!   get_part_data stock_z1, z1  !    you would use these variables
!   get_part_data stock_z2, z2  !    for a turned part
!   get_part_data stock_rad, rr
zoom_view 0
message "Finished"