Inch Metric
From Macros Wiki
Jump to navigationJump to 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 | |
! --------------------------- | |
:inch | |
scale = 25.4 | |
iunits= 0 | |
:scale | |
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 | |
iCurWG = CURRENT_WG_NUMBER | |
GET_WG_LIST | |
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 | |
NEXT i | |
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" |