Example 9
- Last UpdatedJan 20, 2023
- 2 minute read
This macro is supposed to be started from the General Diagrams application.
All cables without interference class and component defined will be drawn red.
All cables with both interference class and component defined will be drawn green.
All cables with either interference class or component defined will be drawn blue.
The same function for Equipments with the data room and component.
MACRO, OUTF_DIAG_COLOUR;
! Declarations
DECLARE, A1, STRING;
DECLARE, COMPNAME, STRING;
DECLARE, DELIM, STRING;
DECLARE, DWG, STRING;
DECLARE, E1, EXTRACT;
DECLARE, INDEX,INTEGER;
DECLARE, INT_C, STRING;
DECLARE, LOOPMAX, INTEGER;
DECLARE, MODNAME, STRING;
DECLARE, PROJ, STRING;
DECLARE, ROOM,STRING;
DECLARE, STAT, INTEGER;
DECLARE, SUB1, STRING;
DECLARE, SUB2, STRING;
DECLARE, SUB3, STRING;
! Initiate
ASSIGN, DELIM,'-';
! Get the drawing name
DRAWING_NAME,DWG;
! Use data extraction to see which cables that are drawn in the diagram
ASSIGN,A1,'DRA(DWG).VIE(*).NCABLE';
EXTRACT,E1,A1;
GET/EXTRACT=(LOOPMAX,STAT,E1,DWG,,);
IF,STAT == 1;
LOOP,INDEX,1:LOOPMAX;
ASSIGN,A1,'DRA(DWG).VIE(*).CABLE(INDEX).NAME';
EXTRACT,E1,A1;
GET/EXTRACT=(MODNAME,STAT,E1,DWG,,INDEX,);
IF,STAT == 1;
! Get the cable data by using data extraction
SPLIT,MODNAME,DELIM,PROJ,CAB_SYS,CAB_NAM,SUB2,SUB3;
ASSIGN,CABLE_NAME,CAB_SYS&DELIM&CAB_NAM;
ASSIGN,A1,'CABLE(PROJ).CAB_M(CABLE_NAME). COMP_N';EXTRACT,E1,A1;
GET/EXTRACT=(COMPNAME,STAT,E1,PROJ,
CABLE_NAME,);
IF,STAT == 0;
ASSIGN,COMPNAME,'‘;
ENDIF;
ASSIGN,A1,
'CABLE(PROJ).CAB_M(CABLE_NAME).EL_PROP.INT_C';
EXTRACT,E1,A1;
GET/EXTRACT=(INT_C,STAT,E1,PROJ,CABLE_NAME,,);
IF,STAT == 0;
ASSIGN,INT_C,'‘;
ENDIF;
! Draw cables without any data red
IF,COMPNAME == ‘' AND INT_C == ‘';
CHANGEDRAW,'CABLE',MODNAME
/MARKINGCOLOUR='RED';
ELSE;
! Draw cables with all data green
IF,COMPNAME /= ‘' AND INT_C /= ‘';
CHANGEDRAW,'CABLE',MODNAME
/MARKINGCOLOUR='GREEN';
! Draw ca bles with some date blue
ELSE;
CHANGEDRAW,'CABLE',MODNAME
/MARKINGCOLOUR='BLUE';
ENDIF;
ENDIF;
ENDIF;
ENDLOOP;
ENDIF,
! Use data extraction to see which equipments that are drawn in the diagram
ASSIGN,A1,'DRA(DWG).VIE(*).NEQUIP';
EXTRACT,E1,A1;
GET/EXTRACT=(LOOPMAX,STAT,E1,DWG,,);
IF,STAT == 1;
LOOP,INDEX,1:LOOPMAX;
ASSIGN,A1,'DRA(DWG).VIE(*).EQUIP(INDEX).NAME';
EXTRACT,E1,A1;
GET/EXTRACT=(MODNAME,STAT,E1,DWG,,INDEX,);
IF,STAT == 1;
! Get the equipment data by using data extraction
SPLIT,MODNAME,DELIM,PROJ,EQ_NAME,SUB1,SUB2,SUB3;
ASSIGN,A1,'EQUIP(PROJ).ITEM(EQ_NAME).COMP_N';
EXTRACT,E1,A1;
GET/EXTRACT=(COMPNAME,STAT,E1,PROJ,EQ_NAME,);
IF,STAT == 0;
ASSIGN,COMPNAME,'‘;
ENDIF;
ASSIGN,A1,'EQUIP(PROJ).ITEM(EQ_NAME).ROOM';
EXTRACT,E1,A1;
GET/EXTRACT=(ROOM,STAT,E1,PROJ,EQ_NAME,);
IF,STAT == 0;
ASSIGN,ROOM,'‘;
ENDIF;
! Draw equipment items without any data red
IF,COMPNAME == ‘' AND ROOM == ‘';
CHANGEDRAW,'EQUIP',MODNAME/
MARKINGCOLOUR='RED';
ELSE;
! Draw equipment items with all data green
IF,COMPNAME /= ‘' AND ROOM /= ‘';
CHANGEDRAW,'EQUIP',MODNAME
/MARKINGCOLOUR='GREEN';
! Draw equipment items with some date blue
ELSE;
CHANGEDRAW,'EQUIP',MODNAME
/MARKINGCOLOUR='BLUE';
ENDIF;
ENDIF;
ENDIF;
ENDLOOP;
ENDIF,
ENDMACRO;
The following macro would change the colours of the equipments and cables back to be the one defined by the default file.
MACRO, OUTF_DIAG_DEFAULT;
! Declarations
DECLARE, A1, STRING;
DECLARE, DWG,STRING;
DECLARE, E1, EXTRACT;
DECLARE, INDEX, INTEGER;
DECLARE, LOOPMAX, INTEGER;
DECLARE, MODNAME, STRING;
DECLARE, STAT, INTEGER;
! Get the drawing name
DRAWING_NAME,DWG;
! Use data extraction to see which cables that are drawn in the diagram
ASSIGN,A1,'DRA(DWG).VIE(*).NCABLE';
EXTRACT,E1,A1;
GET/EXTRACT=(LOOPMAX,STAT,E1,DWG,,);
IF,STAT == 1;
LOOP,INDEX,1:LOOPMAX;
ASSIGN,A1,'DRA(DWG).VIE(*).CABLE(INDEX).NAME';
EXTRACT,E1,A1;
GET/EXTRACT=(MODNAME,STAT,E1,DWG,,INDEX,);
IF,STAT == 1;
CHANGEDRAW,'CABLE',MODNAME
/MARKINGCOLOUR='DEFAULT';
ENDIF;
ENDLOOP;
ENDIF;
! Use data extraction to see which equipments that are drawn in the diagram
ASSIGN,A1,'DRA(DWG).VIE(*).NEQUIP';
EXTRACT,E1,A1;
GET/EXTRACT=(LOOPMAX,STAT,E1,DWG,,);
IF,STAT == 1;
LOOP,INDEX,1:LOOPMAX;
ASSIGN,A1,'DRA(DWG).VIE(*).EQUIP(INDEX).NAME';
EXTRACT,E1,A1;
GET/EXTRACT=(MODNAME,STAT,E1,DWG,,INDEX,);
IF,STAT == 1;
CHANGEDRAW,'EQUIP',MODNAME
/MARKINGCOLOUR='DEFAULT';
ENDIF;
ENDLOOP;
ENDIF;
ENDMACRO;