;;; CADDPAK 2003 General Macro Package for General CADD Pro ;;; ALIGN.MCR aligns a selection to Selected Line Angle ;;; Copyright 2003 by Bjorn R Holmgren; all rights reserved. ;;; ;;; THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ;;; ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF ;;; MERCHANTABILITY ARE HEREBY DISCLAIMED. ;;; /MSP,++,/XMD,++,MO; /VLC,; ; .INITIALISE; OR,??,/VIN,0,$VAL,OR,--; RB,--; LC,!,/VIN,1,$VAL; ; .PICK; /PMT,1,'Pick A Line to Align From...',%45,' to Enter 2 Points ...',#; /PMT,2,%45,' to Zoom ...',#; /VPT,0,@; /IF,$DERR[EQ]-2,/GTO,POINTS; /IF,$DERR[EQ]-1,/VST,8,PICK,/GTO,ZOOM; /CEL,F,L,!,A,!,O,$X(0),$Y(0),!; /IF,$VAL[EQ]0,/GTO,PICK; /EEX,1,P,1,A,/VPT,1,$PNTX,$PNTY; /EEX,1,P,2,A,/VPT,2,$PNTX,$PNTY,/DEL; ME,2,$X(1),$Y(1),$X(2),$Y(2),/VRL,1,$VAL; /IF,$R(1)[GE]180,/VRL,1,$R(1)-180; /GTO,PICK1; ; .POINTS; /PMT,1,'Pick First Point for Align From ...',%45,' to abort ...',#; /PMT,2,%45,' to Zoom ...',#; /VPT,1,@; /IF,$DERR[EQ]-2,/GTO,EXIT; /IF,$DERR[EQ]-1,/VST,8,POINTS,/GTO,ZOOM; /VPT,2,$X(1),$Y(1); .POINTS1; /PMT,1,'Pick Second Point for Align From ...',%45,' to abort ...',#; /PMT,2,#; RB,++,LC,8,L1,$X(1),$Y(1),@,LC,$I(1),RB,--,OO; /VPT,2,TK,L,PU; /IF,$X(2)[EQ]$X(1),/IF,$Y(2)[EQ]$Y(1),/GTO,EXIT; ME,2,$X(1),$Y(1),$X(2),$Y(2),/VRL,1,$VAL; /IF,$R(1)[GE]180,/VRL,1,$R(1)-180; ; .PICK1; /PMT,1,'Pick Line to Align With ...',%45,' to Enter Angle ...',#; /PMT,2,%45,' to Zoom ...',#; /VPT,0,@; /IF,$DERR[EQ]-2,/GTO,ANGLE; /IF,$DERR[EQ]-1,/VST,8,PICK1,/GTO,ZOOM; /CEL,F,L,!,A,!,O,$X(0),$Y(0),!; /IF,$VAL[EQ]0,/GTO,PICK1; /EEX,1,P,1,A,/VPT,1,$PNTX,$PNTY; /EEX,1,P,2,A,/VPT,2,$PNTX,$PNTY,/DEL; ME,2,$X(1),$Y(1),$X(2),$Y(2),/VRL,2,$VAL; /IF,$R(2)[GE]180,/VRL,2,$R(2)-180; /GTO,ALIGN; ; .ANGLE; RB,++; /PMT,1,'Enter Angle to Align With ...',%45,' to abort ...',#; /PMT,2,'Use "A" to Show Angle With 2 Points ...',%45,' to Zoom ...',#; /VRL,2,~; /IF,$DERR[EQ]-2,/GTO,EXIT; /IF,$DERR[EQ]-1,/VST,8,ANGLE,/GTO,ZOOM; RB,--; ; .ALIGN; SE,F,M,!,A,N,NOEXIST,!,D,!; ;*** SET LAST TO VAL = 0 /XMD,--; /SEL,Select Objects for Alignement ...; /XMD,++; SE,L,!,/IF,$VAL[EQ]0,/GTO,EXIT; ; .ROTATE; /PMT,1,'Pick Rotation Point ...',%45,' to abort ...',#; /PMT,2,%45,' to Zoom ...',#; /VPT,0,@; /IF,$DERR[EQ]-2,/GTO,EXIT; /IF,$DERR[EQ]-1,/VST,8,ROTATE,/GTO,ZOOM; /VPT,0,TK,L,PU; RO,L,!,$X(0),$Y(0),$R(2)-$R(1); /GTO,EXIT; ; .ZOOM; /PMT,3,#,/PMT,1,'Select Zoom Mode ...',%45,' to abort ...',#; /PMT,2,'^^^MW^^indow ^MP^^revious ^MI^^n ^MO^^ut ^MA^^ll PA^MN^^ A^MB^^ort',#,/CIN; /IF,$STR[EQ]W,/PMT,2,#,/PMT,1,'Enter Window ... ',#,ZW,@,@,/GTO,LEAVEZOOM; /IF,$STR[EQ]P,ZP,/GTO,LEAVEZOOM; /IF,$STR[EQ]I,/PMT,2,#,/PMT,1,'Enter Centre of View ... ',#,ZI,@,/GTO,LEAVEZOOM; /IF,$STR[EQ]O,/PMT,2,#,/PMT,1,'Enter Centre of View ... ',#,ZO,@,/GTO,LEAVEZOOM; /IF,$STR[EQ]A,ZA,/GTO,LEAVEZOOM; /IF,$STR[EQ]N,/PMT,2,#,/PMT,1,'Enter Centre of View ... ',#,PA,@,/GTO,LEAVEZOOM; /IF,$STR[EQ]B,/GTO,LEAVEZOOM; /IF,$VAL[EQ]-2,/GTO,LEAVEZOOM; /IF,$VAL[LE]0,/GTO,ZOOM; .LEAVEZOOM; /GTO,$S(8); ; .EXIT; RB,++,MR; LC,$I(1); /IF,$I(0)[EQ]1,OR,++; .END; /XMD,--,/MSP,--,PU;