{ The following macros are not supported } { The program "ASSEMBLY_DETAIL" may not be resold or included in other } { packages. } { Copying and subsequent distribution to a third party is forbidden. } { All use of this software is the responsiblity of the recipient. } { CATEGORY: ME10 parts_2d } { AUTHOR: Darren Litherland } { CONTACT OPTION: me10@nethut.net } { VIDEO MODE: (Native ME10) } { MONITOR RESOLUTION: n/a } { MACRO TITLE: Assembly_detail } { DESC: CREATE_DETAIL for assemblies/parts } { MACRO VERSION: 1.5 } { VERSION CHANGES: 1.1 De-iconize parts table if iconized } { 1.2 De-iconize parts table if iconized, ignore if not } { 1.3 Re-iconize parts table if iconized } { 1.4 PART_DRW_SCALE used to resize detail } { 1.5 Part duplication "bug" fixed and detail area } { selection improved. } { DATE: 1999.07.04 } { APPLICATION: ME10 v.6-9.0 } { OPSYS: HP-UX 9.x/10.x Windows95/NT } { KEYWORDS: assembly_detail create_detail ad } DEFINE ASSEMBLY_DETAIL LOCAL P1 LOCAL P2 LOCAL P3 LOCAL ASSY_DETAIL_NAME LOCAL ASSY_DETAIL_PNUM LOCAL SC LOCAL X LOCAL SHORT_PNUM LOCAL P5 LOCAL P6 LOCAL TEST LOCAL LL LOCAL P4 LOCAL UR LOCAL URX LOCAL URY LOCAL LLX LOCAL LLY LOCAL P1X LOCAL P1Y LOCAL P2X LOCAL P2Y LOCAL INSIDETEST LOCAL DUMMY LOCAL NROWS2 LOCAL N LOCAL C LOCAL NDET LOCAL PNUM LOCAL PNAME LOCAL PB1 LOCAL ICONC LOCAL NN READ NUMBER "Enter detail scale" SC READ PNT "First corner of detail area" P1 LOOP INQ_ELEM P1 EXIT_IF ((INQ 403)=END) BEEP READ PNT "(These points must not touch anything.) First corner of detail area" P1 END_LOOP LOOP READ PNT "Second corner of detail area" RUBBER_BOX P1 P2 LOOP INQ_ELEM P2 EXIT_IF ((INQ 403)=END) BEEP READ PNT "(These points must not touch anything.) Second corner of detail area" RUBBER_BOX P1 P2 END_LOOP EXIT_IF (P1<>P2) BEEP END_LOOP LET P1X (X_OF P1) LET P1Y (Y_OF P1) LET P2X (X_OF P2) LET P2Y (Y_OF P2) LET P4 (P1+((P2-P1)/2)) READ PNT "Where would you like the detail to be placed" RUBBER_LINE P4 P3 IF (P1Y>P2Y) LET DUMMY P2Y LET P2Y P1Y LET P1Y DUMMY END_IF IF (P1X>P2X) LET DUMMY P2X LET P2X P1X LET P1X DUMMY END_IF LET P1 (PNT_XY P1X P1Y) LET P2 (PNT_XY P2X P2Y) TABLE_STATUS 'PBT_GENTAB' MAP LET TEST (READ_LTAB 'PBT_LTAB' 2 1) LET ICONC 0 IF (TEST="") TRAP_ERROR PART_ICON 0 LET ICONC (CHECK_ERROR) END_IF PARTS_LIST TREE LTAB "plist_ltab" LET NROWS (LTAB_ROWS "plist_ltab") LET NDET 0 LET N 1 LOOP LET X (INT (100*(N/NROWS))) DISPLAY_NO_WAIT ((RPT "*" X)+">"+(RPT "*" (100-X))) LET PNUM (READ_LTAB "plist_ltab" N 1) LET PB1 (POS PNUM "~") LET PNUM (SUBSTR (PNUM+" ") PB1 20) LET PB1 (POS PNUM " ") LET PNUM (SUBSTR PNUM 1 (PB1-2)) EDIT_PART PNUM LET OLD_PNUM PNUM INQ_ENV 7 LET LL (INQ 101) LET UR (INQ 102) LET LLX (X_OF LL) LET LLY (Y_OF LL) LET URX (X_OF UR) LET URY (Y_OF UR) LET INSIDETEST 0 IF (LLX>P1X) IF (LLY>P1Y) IF (URX0) EDIT_PART ASSY_DETAIL_PNUM LET P5 (P3+P1-P4) LET P6 (P3+P2-P4) LINE GREEN SOLID RECTANGLE P6 P5 WHITE CHANGE_PART_REF_PT P3 EDIT_PART TOP LET P3 (PNT_XY (X_OF P1) (Y_OF P2)) LET P4 (PNT_XY (X_OF P2) (Y_OF P1)) LEADER_ARROW NONE LEADER_LINE GREEN P1 P3 P2 P4 P1 END LEADER_ARROW ARROW_TYPE PART_DRW_SCALE_REF REF_PNT PART_DRW_SCALE ASSY_DETAIL_PNUM SC END_IF UNSHARE_PART ASSY_DETAIL_PNUM PARTS_LIST TREE LTAB "plist_ltab" LET NROWS2 (LTAB_ROWS "plist_ltab") IF ((NROWS2-NROWS)>2) CREATE_LTAB "Gather_detail_ltab" LET N ((NROWS2-NROWS)+1) LET NN 3 LOOP LET PNUM (READ_LTAB "plist_ltab" NN 1) LET PB1 (POS PNUM "~") LET PNUM (SUBSTR (PNUM+" ") PB1 20) LET PB1 (POS PNUM " ") LET PNUM (SUBSTR PNUM 1 (PB1-2)) EDIT_PART PNUM EDIT_PART ".." TRAP_ERROR UNSHARE_PART PNUM EDIT_PART ASSY_DETAIL_PNUM LET C (CHECK_ERROR) TRAP_ERROR GATHER PART PNUM LET C (CHECK_ERROR) EXIT_IF (NN=N) LET NN (NN+1) END_LOOP END_IF EDIT_PART TOP PART_ICON 1 IF ((TEST="") AND (ICONC=0)) PART_ICON 0 END_IF END_DEFINE DEFINE AD ASSEMBLY_DETAIL END_DEFINE DEFINE ASSY_DETAIL ASSEMBLY_DETAIL END_DEFINE