ࡱ >                     g  r  s   R o o t E n t r y    5T T h e V B A P r o j e c t  @?T5T ;5T _ V B A _ P r o j e c t   @?T5T ;5T V B A P r o j e c t D a t a "      q          3   (  ! " # $ % & ' ) r * + , - . / 0 1 2  4 5 6 7  9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p s t u v w x y z { } ~  R o o t E n t r y    `3! @& T h e V B A P r o j e c t  @?T5T`3! _ V B A _ P r o j e c t   @?T5T`3! V B A P r o j e c t D a t a "               ! " # $ % &       <                  ! " # $ % & ' ( ) * + , - . / 0 2 3 4 5 6 7 8 9 : ; q = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Z [ \ ] ^ _ ` a b c d e f g h i j k l m n r s t u v w x y z { | } ~  H o s t P r o j e c t I t e m s &   H o s t P r o j e c t I t e m N a m e s 0   U5Ty! V B A P r o j e c t S i g n a t u r e ,  P r o j e c t _ D a t a _ C u r V e r (  p        & L { C F 9 F 9 7 B F - 3 9 F 2 - 4 B 8 E - 8 3 5 C - 8 B E 9 E 9 9 D A F 5 B }   ID="{155D4875-5225-4614-908F-1A80FFAC1D45}" Module=SACS Module=Common Module=ATTBORImpl Module=BOXGRIDImpl Module=BUBLDRVRImpl Module=CSLTCImpl Module=DETAILImpl Module=E1LPCImpl ModuH o s t P r o j e c t I t e m L i s t D a t a 8  o  V B A  = U5Tz! P R O J E C T w m   Y i P R O J E C T    r f r m A C S E 1 L    " i* WJO 5T ;5T f r m F P P D I M    i* WJO 5T ;5T f r m S A C S v e r s i o n    i* WJO @5T ;5T f r m T x t    i* WJO 5T ;5T S A C S  C _ _ S R P _ 1 1   p  _ _ S R P _ 1 0  T K Q  f r m T B A    , i* WJO u5T ;5T le=EXISTINGImpl Module=EXTLINESImpl Module=FPPDIMImpl Module=FPPINITImpl Module=FPPSETImpl Module=GRADEImpl Module=LDIVIDEImpl Module=LINEBRKImpl Module=MIRCELImpl Module=MLTCPYImpl Module=PLCCELImpl Module=BAKALImpl Module=CLOUDImpl Module=METERImpl Module=ENGLIImpl Module=RWCSTNImpl Module=SETSHOWImpl Module=SETUPImpl Module=TAGCUTImpl Module=VESSHATCImpl ModurU   ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~[  a  0@# 50  A914 C730A-A3 97-4E26- ACAF-82F 28014FBC86D:\Use rs\ajmih k0c\AppD ata\Loca l\Temp\VBE\U.exd<@" .E .`(M  TB_ValidQn>  T_ VldŨ( J' *\C ,SaudiA ramcoV8i\.mvba 4)Q "B, BAG Ele=cadUtils Module=TBACfg Module=TBAHelpers Module=SACSMenu Module=Module1 Module=ErrorCodes BaseClass=frmTBA Module=GENImpl Class=ACSE1LImpl Class=ACSLINEImpl Class=cMendLine Class=clsOpenClose BaseClass=frmACSE1L BaseClass=frmFPPDIM BaseClass=frmSACSversion BaseClass=frmTxt Name="ARAMCO_SACS" HelpContextID="0" Description="ARAMCO SACS for MicroStation V8.1" VersionCompatible32="393222000" CMG="1210BDADCBB1CBB1CBB1CBB1" DPB="24268BC78FD890D890D8" GC="363499F1B911CA12CA1235" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] SACS=0, 0, 0, 0, C Common=0, 0, 0, 0, C ATTBORImpl=0, 0, 0, 0, C BOXGRIDImpl=0, 0, 0, 0, C BUBLDRVRImpl=0, 0, 0, 0, C CSLTCImpl=0, 0, 0, 0, C DETAILImpl=0, 0, 0, 0, C E1LPCImpl=0, 0, 0, 0, C EXISTINGImpl=0, 0, 0, 0, C EXTLINESImpl=0, 0, 0, 0, C FPPDIMImpl=0, 0, 0, 0, C FPPINITImpl=0, 0, 0, 0, C FPPSETImpl=0, 0, 0, 0, C GRADEImpl=0, 0, 0, 0, C LDIVIDEImpl=0, 0, 0, 0, C LINEBRKImpl=0, 0, 0, 0, C MIRCELImpl=0, 0, 0, 0, C MLTCPYImpl=0, 0, 0, 0, C PLCCELImpl=0, 0, 0, 0, C BAKALImpl=0, 0, 0, 0, C CLOUDImpl=0, 0, 0, 0, C METERImpl=0, 0, 0, 0, C ENGLIImpl=0, 0, 0, 0, C RWCSTNImpl=0, 0, 0, 0, C SETSHOWImpl=0, 0, 0, 0, C SETUPImpl=0, 0, 0, 0, C TAGCUTImpl=0, 0, 0, 0, C VESSHATCImpl=0, 0, 0, 0, C cadUtils=0, 0, 0, 0, C TBACfg=0, 0, 0, 0, C TBAHelpers=0, 0, 0, 0, C SACSMenu=0, 0, 0, 0, C Module1=0, 0, 0, 0, C ErrorCodes=0, 0, 0, 0, C frmTBA=0, 0, 0, 0, C, 25, 25, 985, 667, C GENImpl=0, 0, 0, 0, C ACSE1LImpl=0, 0, 0, 0, C ACSLINEImpl=0, 0, 0, 0, C cMendLine=0, 0, 0, 0, C clsOpenClose=0, 0, 0, 0, C frmACSE1L=0, 0, 0, 0, C, 50, 50, 1010, 692, C frmFPPDIM=0, 0, 0, 0, C, 75, 75, 1035, 717, C frmSACSversion=0, 0, 0, 0, C, 100, 100, 1060, 742, C frmTxt=0, 0, 0, 0, C, 125, 125, 1085, 767, C SACS S A C S Common C o m m o n ATTBORImpl A T T B O R I m p l BOXGRIDImpl B O X G R I D I m p l BUBLDRVRImpl B U B L D R V R I m p l CSLTCImpl C S L T C I m p l DETAILImpl D E T A I L I m p l E1LPCImpl E 1 L P C I m p l EXISTINGImpl E X I S T I N G I m p l EXTLINESImpl E X T L I N E S I m p l FPPDIMImpl F P P D I M I m p l FPPINITImpl F P P I N I T I m p l FPPSETImpl F P P S E T I m p l GRADEImpl G R A D E I m p l L     <                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 8 9 : ; q = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Z [ \ ] ^ _ ` a b c d e f g h i j k l m n r s t u v w x y z { | } ~  H o s t P r o j e c t I t e m s &   H o s t P r o j e c t I t e m N a m e s 0   U5T5T V B A P r o j e c t S i g n a t u r e ,  P r o j e c t _ D a t a _ C u r V e r (  p        & L { C F 9 F 9 7 B F - 3 9 F 2 - 4 B 8 E - 8 3 5 C - 8 B E 9 E 9 9 D A F 5 B }   E ID="{155D4875-5225-4614-908F-1A80FFAC1D45}" Module=SACS Module=Common Module=ATTBORImpl Module=BOXGRIDImpl Module=BUBLDRVRImpl Module=CSLTCImpl Module=DETAILImpl Module=E1LPCImpl ModuH o s t P r o j e c t I t e m L i s t D a t a 8  o  V B A  B U5TU5T P R O J E C T w m   Y i P R O J E C T    l S A C S  Z  ? _ V B A _ P R O J E C T  S b 8 r d i r    % f r m T B A    , i* WJO u5T ;5T f r m A C S E 1 L    " i* WJO 5T ;5T f r m F P P D I M     i* WJO 5T ;5T f r m S A C S v e r s i o n    i* WJO @5T ;5T f r m T x t    i* WJO 5T ;5T ss=frmSACSversion BaseClass=frmTxt Name="ARAMCO_SACS" HelpContextID="0" Description="ARAMCO SACS for MicroStation V8.1" VersionCompatible32="393222000" CMG="3A3895037D077D077D077D07" DPB="1E1CB12F71F754F854F854" GC="0200AD4B904C904C6F" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] SACS=0, 0, 0, 0, C Common=0, 0, 0, 0, C ATTBORImpl=0, 0, 0, 0, C BOXGRIDImpl=0, 0, 0, 0, C BUBLDRVRImpl=0, 0, 0, 0, C CSLTCImpl=0, 0, 0, 0, C DETAILImpl=0, 0, 0, 0, C E1LPCImpl=0, 0, 0, 0, C EXISTINGImpl=0, 0, 0, 0, C EXTLINESImpl=0, 0, 0, 0, C FPPDIMImpl=0, 0, 0, 0, C FPPINITImpl=0, 0, 0, 0, C FPPSETImpl=0, 0, 0, 0, C GRADEImpl=0, 0, 0, 0, C LDIVIDEImpl=0, 0, 0, 0, C LINEBRKImpl=0, 0, 0, 0, C MIRCELImpl=0, 0, 0, 0, C MLTCPYImpl=0, 0, 0, 0, C PLCCELImpl=0, 0, 0, 0, C BAKALImpl=0, 0, 0, 0, C CLOUDImpl=0, 0, 0, 0, C METERImpl=0, 0, 0, 0, C ENGLIImpl=0, 0, 0, 0, C RWCSTNImpl=0, 0, 0, 0, C SETSHOWImpl=0, 0, 0, 0, C SETUPImpl=0, 0, 0, 0, C TAGCUTImpl=0, 0, 0, 0, C VESSHATCImpl=0, 0, 0, 0, C cadUtils=0, 0, 0, 0, C TBACfg=0, 0, 0, 0, C TBAHelpers=0, 0, 0, 0, C SACSMenu=0, 0, 0, 0, C Module1=0, 0, 0, 0, C ErrorCodes=0, 0, 0, 0, C frmTBA=0, 0, 0, 0, C, 242, 242, 1102, 785, C GENImpl=0, 0, 0, 0, C ACSE1LImpl=0, 0, 0, 0, C ACSLINEImpl=0, 0, 0, 0, C cMendLine=0, 0, 0, 0, C clsOpenClose=0, 0, 0, 0, C frmACSE1L=0, 0, 0, 0, C, 264, 264, 1124, 807, C frmFPPDIM=0, 0, 0, 0, C, 0, 0, 860, 543, C frmSACSversion=0, 0, 0, 0, C, 22, 22, 882, 565, C frmTxt=0, 0, 0, 0, C, 44, 44, 904, 587, C SACS S A C S Common C o m m o n ATTBORImpl A T T B O R I m p l BOXGRIDImpl B O X G R I D I m p l BUBLDRVRImpl B U B L D R V R I m p l CSLTCImpl C S L T C I m p l DETAILImpl D E T A I L I m p l E1LPCImpl E 1 L P C I m p l EXISTINGImpl E X I S T I N G I m p l EXTLINESImpl E X T L I N E S I m p l FPPDIMImpl F P P D I M I m p l FPPINITImpl F P P I N I T I m p l FPPSETImpl F P P S E T I m p l GRADEImpl G R A D E I m p l Lle=EXISTINGImpl Module=EXTLINESImpl Module=FPPDIMImpl Module=FPPINITImpl Module=FPPSETImpl Module=GRADEImpl Module=LDIVIDEImpl Module=LINEBRKImpl Module=MIRCELImpl Module=MLTCPYImpl Module=PLCCELImpl Module=BAKALImpl Module=CLOUDImpl Module=METERImpl Module=ENGLIImpl Module=RWCSTNImpl Module=SETSHOWImpl Module=SETUPImpl Module=TAGCUTImpl Module=VESSHATCImpl Modu]   0* pH  d  ARAMCO_S@ACS !@  for Mi croStati on V8.1@ BL R A M C O S C f o r M i c o      x  ME  le=cadUtils Module=TBACfg Module=TBAHelpers Module=SACSMenu Module=Module1 Module=ErrorCodes BaseClass=frmTBA Module=GENImpl Class=ACSE1LImpl Class=ACSLINEImpl Class=cMendLine Class=clsOpenClose BaseClass=frmACSE1L BaseClass=frmFPPDIM BaseClaDIVIDEImpl L D I V I D E I m p l LINEBRKImpl L I N E B R K I m p l MIRCELImpl M I R C E L I m p l MLTCPYImpl M L T C P Y I m p l PLCCELImpl P L C C E L I m p l BAKALImpl B A K A L I m p l CLOUDImpl C L O U D I m p l METERImpl M E T E R I m p l ENGLIImpl E N G L I I m p l RWCSTNImpl R W C S T N I m p l SETSHOWImpl S E T S H O W I m p l SETUPImpl S E T U P I m p l TAGCUTImpl T A G C U T I m p l VESSHATCImpl V E S S H A T C I m p l cadUtils c a d U t i l s TBACfg T B A C f g TBAHelpers T B A H e l p e r s SACSMenu S A C S M e n u Module1 M o d u l e 1 ErrorCodes E r r o r C o d e s frmTBA f r m T B A GENImpl G E N I m p l ACSE1LImpl A C S E 1 L I m p l ACSLINEImpl A C S L I N E I m p l cMendLine c M e n d L i n e clsOpenClose c l s O p e n C l o s e frmACSE1L f r m A C S E 1 L frmFPPDIM f r m F P P D I M frmSACSversion f r m S A C S v e r s i o n frmTxt f r m T x t 6 @  f    o      C o m p O b j    n  V B F r a m e     f    o       C o m p O b j    n  V B F r a m e    : f    K o    i 0 3    n` ` 5T5T  C o m p O b j    n  V B F r a m e    / f    o  ! #   C o m p O b j  $  n  V B F r a m e    * f    G o  % '  l i 0 1   n` ` u5TWw5T i 4 4  & * n` ` u5TWw5T i 7 0   n` ` u5TWw5T i 8 0  ) + n` ` u5TWw5T i 8 4   n` ` u5TWw5T i 9 9  ( 0 n` ` u5TWw5T i 1 2 3  n` ` u5TWw5T i 1 3 1 - / } n` ` u5TWw5T i 1 3 5 z n` ` u5TWw5T i 1 3 9 . 4 w n` ` u5TWw5T i 1 6 1 t n` ` u5TWw5T i 1 8 0  1 3 q n` ` u5TWw5T i 1 9 0 n n` ` u5TWw5T i 2 0 8 2 6 k n` ` u5TWw5T i 2 1 7 h n` ` u5TWw5T i 2 2 6  5 7 e n` ` u5TWw5T  C o m p O b j  8  n  V B F r a m e    # C o m m o n   j Q8 A T T B O R I m p l   Q > X ! B O X G R I D I m p l  I C I  ,  (  S<  S<  S<  S<   0 { C C 8 2 D 6 7 9 - C 7 7 A - 4 A C 7 - 9 A 1 4 - D 8 9 E 3 3 6 4 E 6 9 9 } { C 6 1 D A 0 4 D - E C 5 D - 4 2 2 6 - 8 D 7 D - 8 A 0 4 0 9 4 B 3 0 C 7 }  0  (   % X 0  %    B U B L D R V R I m p l  ; @ , K8 C S L T C I m p l  X E   D E T A I L I m p l  Y  z8 E 1 L P C I m p l    / E X I S T I N G I m p l  _ A   E X T L I N E S I m p l    # F P P D I M I m p l  = <  " F P P I N I T I m p l   G  N F P P S E T I m p l  H   G R A D E I m p l  N M y m L D I V I D E I m p l   k  L I N E B R K I m p l  F P   M I R C E L I m p l   [ ? M L T C P Y I m p l   D O K ? P L C C E L I m p l   6 <) B A K A L I m p l   T ! =( C L O U D I m p l  K ^  * M E T E R I m p l  : a E N G L I I m p l   ? `   R W C S T N I m p l  J V  37 S E T S H O W I m p l    [% S E T U P I m p l  \  7 T A G C U T I m p l    f V E S S H A T C I m p l   w +3 c a d U t i l s  W m  T B A C f g   [ $ T B A H e l p e r s  R ]  S A C S M e n u   - M o d u l e 1  U L   E r r o r C o d e s    , f r m T B A  9 c /  G E N I m p l   $ 1 A C S E 1 L I m p l    9 A C S L I N E I m p l   c M e n d L i n e   RG c l s O p e n C l o s e   f r m A C S E 1 L  a f r m F P P D I M   M f r m S A C S v e r s i o n    f r m T x t   7 o t a "t o n V 8 . 1  Eh =   ᐏQ,T %<9s@tdole>s ]d wl e  h %^*\G {00020430- C  0046}#2. 0#0#C:\W INDOWS\s ystem32\22.tlb#O LE AutomG 0  M SForms>  xFm s$ 3 ED4 52EE1-E0 8F-101A-8 -02608C4D0BB4EwindowsE FM20.DLL#soft : ^ Objec t Library/ ; "1 @:@@00}#:0@# 50  A825 015AF-7C CE-478A- 9D2E-173 B89A4C7D6DOCUME~ 1\ADMINI LOCALS  Temp\VBE\T.exd C VESSHATZCG SjA@$CG 2 O&$O&Q&! cadUtilsG A a dHt i s62O 0MQ TBACfgG =T Bi`C f gG2NOTt=e QB}BAHelper@>C}AH e=p@r A?K ŇO O#O#^C#a+SACSMenu/SS M n u/e/moB/ (k / Module1G  o@?ue 1 2f )E rrorCodeQ$/E r o` C}Be&/'#/12"//!Kfrm@ONfmp!;< N y *kA*GENa.GNHoc. om.Xck!/@ME1L+a^AS@1 >L+#/18,9/!A1!נLINE׃ AN׈דoo,qc@qdLPineGcqd $i nr 'E8|NclsOpenClos_Zc9s`}Inpl}2s qSboep5e? P'=$ | P3`$1EpCLCfo řvFPPDIMEyFpP D,M_wcyi9 tFRQYvdionGuZvPdin` ?[2_ [_ V( =!_ Lxt1Nx tNxt'N_)_,+_   L  #  ʺ+   am        * \ G { 0 0 0 2 0 4 E F - 0 0 0 0 - 0 0 0 0 - C 0 0 0 - 0 0 0 0 0 0 0 0 0 0 4 6 } # 4 . 0 # 9 # C : \ P R O G R A ~ 1 \ C O M M O N ~ 1 \ M I C R O S ~ 1 \ V B A \ V B A 6 \ V B E 6 . D L L # V i s u a l B a s i c F o r A p p l i c a t i o n s \* \ G { C F 9 F 9 7 B F - 3 9 F 2 - 4 B 8 E - 8 3 5 C - 8 B E 9 E 9 9 D A F 5 B } # 8 . 0 # 0 # C : \ P r o g r a m F i l e s \ B e n t l e y \ M i c r o S t a t i o n V 8 i ( S E L E C T s e r i e s ) \ M i c r o S t a t i o n \ u s t a t i o n . e x e # B e n t l e y M i c r o S t a t i o n D G N 8 . 9 O b j e c t L i b r a r y * \ G { 0 0 0 2 0 4 3 0 - 0 0 0 0 - 0 0 0 0 - C 0 0 0 - 0 0 0 0 0 0 0 0 0 0 4 6 } # 2 . 0 # 0 # C : \ W I N D O W S \ s y s t e m 3 2 \ s t d o l e 2 . t l b # O L E A u t o m a t i o n * \ G { 0 D 4 5 2 E E 1 - E 0 8 F - 1 0 1 A - 8 5 2 E - 0 2 6 0 8 C 4 D 0 B B 4 } # 2 . 0 # 0 # C : \ w i n d o w s \ s y s t e m 3 2 \ F M 2 0 . D L L # M i c r o s o f t F o r m s 2 . 0 O b j e c t L i b r a r y  * \ G { 8 2 5 0 1 5 A F - 7 C C E - 4 7 8 A - 9 D 2 E - 1 7 3 B 8 9 A 4 C 7 D 4 } # 2 . 0 # 0 # C : \ D O C U M E ~ 1 \ A D M I N I ~ 1 \ L O C A L S ~ 1 \ T e m p \ V B E \ M S F o r m s . e x d # M i c r o s o f t F o r m s 2 . 0 O b j e c t L i b r a r y  .E .`M ,           B A R A M C O S A C S f o r M i c r o S t a t i o n V 8 . 1 ᐏQ,                 +  ( ' * ) $ # & %  " !  ,  S A C S  1 s 5 1 8 f 9 0 e 1  S A C S   H3 C o m m o n  1 t 5 1 8 f 9 0 e 1 ` C o m m o n  )  A T T B O R I m p l  1 u 5 1 8 f 9 0 e 1 d A T T B O R I m p l ; 8   B O X G R I D I m p l  1 v 5 1 8 f 9 0 e 1 h B O X G R I D I m p l 9T P   B U B L D R V R I m p l  1 w 5 1 8 f 9 0 e 1 v B U B L D R V R I m p l h ((  C S L T C I m p l  1 x 5 1 8 f 9 0 e 1 z C S L T C I m p l     D E T A I L I m p l  1 y 5 1 8 f 9 0 e 1 ~ D E T A I L I m p l <  '  E 1 L P C I m p l  1 z 5 1 8 f 9 0 e 1  E 1 L P C I m p l H  "  E X I S T I N G I m p l  2 0 5 1 8 f 9 0 e 1  E X I S T I N G I m p l s   E X T L I N E S I m p l  2 1 5 1 8 f 9 0 e 1  E X T L I N E S I m p l ̙  0  F P P D I M I m p l  2 2 5 1 8 f 9 0 e 1  F P P D I M I m p l )    F P P I N I T I m p l  2 3 5 1 8 f 9 0 e 1  F P P I N I T I m p l  #9   F P P S E T I m p l  2 4 5 1 8 f 9 0 e 1  F P P S E T I m p l \ (   G R A D E I m p l  2 5 5 1 8 f 9 0 e 1 ^ G R A D E I m p l h @    L D I V I D E I m p l  2 6 5 1 8 f 9 0 e 1 H L D I V I D E I m p l X    L I N E B R K I m p l  2 7 5 1 8 f 9 0 e 1 B L I N E B R K I m p l p *   M I R C E L I m p l  2 8 5 1 8 f 9 0 e 1 N M I R C E L I m p l T    M L T C P Y I m p l  2 9 5 1 8 f 9 0 e 1  M L T C P Y I m p l      P L C C E L I m p l  2 : 5 1 8 f 9 0 e 1 Z P L C C E L I m p l Ƣ     B A K A L I m p l  2 ; 5 1 8 f 9 0 e 1  B A K A L I m p l #  _  C L O U D I m p l  2 < 5 1 8 f 9 0 e 1  C L O U D I m p l O  p  M E T E R I m p l  2 = 5 1 8 f 9 0 e 1  M E T E R I m p l   Z  E N G L I I m p l  2 > 5 1 8 f 9 0 e 1  E N G L I I m p l m  R  R W C S T N I m p l  2 ? 5 1 8 f 9 0 e 1  R W C S T N I m p l q 0 a*  S E T S H O W I m p l  2 @ 5 1 8 f 9 0 e 1  S E T S H O W I m p l H |  S E T U P I m p l  2 A 5 1 8 f 9 0 e 1  S E T U P I m p l > ` s  T A G C U T I m p l  2 B 5 1 8 f 9 0 e 1  T A G C U T I m p l x G  V E S S H A T C I m p l  2 C 5 1 8 f 9 0 e 1  V E S S H A T C I m p l  $  c a d U t i l s  2 D 5 1 8 f 9 0 e 1 $ c a d U t i l s  T B A C f g  2 E 5 1 8 f 9 0 e 1  T B A C f g e  Tt  T B A H e l p e r s  2 F 5 1 8 f 9 0 e 1  T B A H e l p e r s ^   S A C S M e n u  2 G 5 1 8 f 9 0 e 1  S A C S M e n u (  B  M o d u l e 1  2 H 5 1 8 f 9 0 e 1  M o d u l e 1    E r r o r C o d e s  2 I 5 1 8 f 9 0 e 1  E r r o r C o d e s  " f r m T B A  2 J 5 1 8 f 9 0 e 1 = f r m T B A 8   G E N I m p l  2 K 5 1 8 f 9 0 e 1  G E N I m p l X P   A C S E 1 L I m p l  2 L 5 1 8 f 9 0 e 1 9 A C S E 1 L I m p l A h 8,  A C S L I N E I m p l  2 M 5 1 8 f 9 0 e 1 5 A C S L I N E I m p l   c M e n d L i n e  2 N 5 1 8 f 9 0 e 1 - c M e n d L i n e |  E8  c l s O p e n C l o s e  2 O 5 1 8 f 9 0 e 1 - c l s O p e n C l o s e |    f r m A C S E 1 L  2 P 5 1 8 f 9 0 e 1 c  f r m A C S E 1 L ř     f r m F P P D I M  2 Q 5 1 8 f 9 0 e 1 m f r m F P P D I M F  9  f r m S A C S v e r s i o n  2 R 5 1 8 f 9 0 e 1 1 f r m S A C S v e r s i o n =!   f r m T x t  2 S 5 1 8 f 9 0 e 1 i f r m T x t +  ) 0       `    (  H  P  8  8     @   P  X 0  x   h    LʉSD 5 ` ZC$/N۳{ 2L9+9 Qe_G h1w ;L q9 Q~/C>B cf~AE{  ~ϯAq ݔqBפ_Q Vvqc]Ek 4z Փ=MW \^QYJQi& o:)_WH`3ւ XiDp;qgK IJ'߽ _ )N3  Y[CB5Թ[ :uu3VNwp @V4#< AidH:<#I ;EI`Cň 8]W}GF0G1_0s ">Jq4ih  ГR@qVd Z@Lw{ aSAL+  akO5rI(8 M˗@ `   WCI|c p3EFqӨ #ԸAK:O Vf<菗J,_y /LCX7#o }GCA@ b3Е>A?BY  | s}A{4ð  _Co p  ?lI/Al :RIIeL Y;O|e 9$@3DTR DغCc fKF y)CB1EZˡ  P  B a  ImplementsMicroStationDGN8 VBA Win16~ Win32 Mac VBA6# Project1  stdole` ARAMCO_SACS Module1b  _Evaluate SACS ShellExecute" hwnd/ lpOperation8 lpFile lpParametersZ lpDirectorye nShowCmd Shell32.dll+ SW_SHOWf m_oOpenClose! clsOpenClose frmVersion3  frmSACSversionR mACSLINE ACSLINEImpl mACSE1LINEII ACSE1LImplJ fTBAC) frmTBA " fTBAValidatef LINEBRK9v LINEBRKImpl Run_ LDIVIDEo LDIVIDEImpl[ MIRCEL! nParamd MIRCELImpl?a PLCCEL~ strCellName?b nOption[ strLeft strRightt PLCCELImpl6 GRADE GRADEImpl^; ATTBOR strProductCode2n ATTBORImplF BOXGRID" BOXGRIDImpl BUBLDRVR.l nFieldNumt bChangeLevel`@ nMaxLen1T  nMaxLen2U  isFPP BUBLDRVRImpl| CSLTC] CSLTCImpl DETAIL2 DETAILImpl1 EXTLINES EXTLINESImpli FPPDIM FPPDIMImpl FPPINIT FPPINITImpl FPPSETsJ nParameter_ dTextSize FPPSETImpl TAGCUTP cellNameο FieldNumگ OnLine  Orientationw TextSizeWrk FixedSize' MaxLen1O2 OffsetX1j OffsetY1 MaxLen2P2 OffsetX2k OffsetY2 TAGCUTImplE VESSHATCl VESSHATCImplr{ SETSHOWz, SETSHOWImplf MLTCPYvd MLTCPYImpl(  E1LPC? strUnitsFrom0 strUnitsToM nHorw nVert E1LPCImpl2 SETUP SETUPImpl EXISTINGy EXISTINGImpl} GEN< GENImpl5 SELECTE1LBUSH GETE1LBUS  DRAWE1LBUS  DRAWSACSLineg CLOUD CLOUDImpl BAKAL BAKALImpl# ENGLI: ENGLIImpl METERi METERImplR TBAShow&L  Visible  Erro number- Verify  Show vbModelessZ  TBAValidate~ adData_ APPDATA adAppDataM Indexes INDEXINFOZ Plants8 PLANTINFOv Sizes  SIZEINFOR BordersC" BORDERINFO TBACfg LoadIndexCfg; TBAHelpers CompareTexts  MsgBoxR  ChrK~ vbOKCancelx?  vbOK% TextData ApplicationDara MendLine CommandState  StartPrimitivek cMendLineJ SACSVersionB ReleaseNotesX TBHelp fileDir InstallDira vbNullString OnProjectLoada LoadValidationReferenceP CadInputQueuel SendKeyinP TestValidationReference obj Application*  VBE  ActiveVBProject[` References  UCase5  NameConflict~ filePathO AddFromFileu str SySVars1 wScript CreateObject Environment5 Common GetModuleFileNamea hModule lpFilename2 nSize} kernel32_ GetIntegerValue strPrompt- nMinValue& bExit: msgQ  CadInputMessagev ShowPrompta  GetInpute  msdCadInputTypeCommandJ  msdCadInputTypeKeyink  msdCadInputTypeReset InputTypeI IsNumeric$* KeyinK ShowMessageE  msdMessageCenterPriorityErrordK GetPointValueD bUseKeyInD strErrorMessage! eInputType_j  MsdCadInputTypeX  Point3dr arrCoordk arrColonPos i`  msdCadInputTypeDataPointV  Split) GetDoubleFromUnitsտ  Xo  Yl point SelectElementj ptTouch  Element[ LocateElementL ViewI StrToSystemDependentStra5 strValueK  Replacef strUnits4 nColonPos  dMasterUnitsm dSubUnits2 dMeasure bIsNegativq{  ActiveModelReference  UORsPerMasterUnitQ  UORsPerSubUnit  UORsPerStorageUnitP RotateElementAboutZ0 objElemz pntFixed nAngle RotationMatrix  Matrix3ds Eltranss Transform3d] Axisgc  Zq " Matrix3dFromVectorAndRotationAngleA  Pi^ & Transform3dFromMatrix3dAndFixedPoint3d1 Transform isPowerDraft lRetE fileNamej  LCase: pos hError\ objMessage>* strRefFileCommandLine param RWCSTNParams dDefaultScale4 ShowCommand7 SendCommandc SendResetB r0^ rqtGetScale| fnRWCSTN/  rtCompletedSuccefully xaxsclQ  SetCExpressionValueU SendDataPoint8  Point3dFromXYZ#2  StartDefaultCommand  MessagesEnabled ErrorCodes Logd ReportToMsgBoxCurrent bGoOn bExit1 bExit2¤ nRowso nColsV ptLowLeftj} ptUpRight, dLeftl` dRight dtOp dBottomo dBoxWidthU dBoxHeight dWidth dHeight dX] dY\ bPoint mLine# LineElementD  SetDefaultCursor  CreateLineElement2 AddElement}  Redraw  msdDrawingModeNormalD sText  g_HeightFactorsf g_WidthFactorsN nDefLenFirstField nDefLenSecondField! dActivAngle  ActiveSettings  AngleA PlaceBubl GetStringValuewe fTextO frmTxtM%  vbModalt  Asc!u GetStringWithMaxLenY nMaxLen nDefLenL\ strText  Space  PlaceTextField]] ptLeftTop ptRightBottoms lGGroup* nLength&  IIfz idxScaleFactorω TextStyle(  Height| ptCenter elElement# TextElement1 reg  DataEntryRegion+ md  CreateTextElement17 GraphicGroupS Justificatione2 % msdDataEntryRegionJustificationCenter  LengthY StartPosition+  AddDataEntryRegionm ptOriginPoint CellElementw  CreateCellElement34  UpdateGraphicGroupNumber RWCSTNImpl yaxscl/? zaxscl  ScaleAlloN  ResetDisplaySetV dCenterX~ dCenterY~ dHeightCellQuaterM  Range   Lows  Highz iField) objDesEl objFenceŸ  FenceL eFenceContents  ElementEnumeratorz< pntElement bReset. catchError  ActiveDesignFileM IsDefined}T GetContentsO0  MoveNextL! ChangeLevelAndSymbology  Currente  LastViewK objElement9T IsGraphical  Level LineWeightG  Color2F  Rewrite'I bBreak4 objActiveTextStyleT objActiveLevel ptSection ptLineStart ptLineEnd dLineLengthc strDGNFileName] strDetailNo1 strRFlogicalNameS dScalei objTextElementog objLineElementj dTempَ  FullNameО vbKeyEscape=Y  Point3dInterpolateC  Matrix3dIdentity- objBusO! objCell, pntToPlace pntStartToDel pntFinishToDel@l pntToFreeCellB bReStart bPlaceFreeCell\ nOrientation. dBefore dAfter(  msdElementTypeLineJ AsLineElementh  OriginF  EndPointy ShowError LineStylew  RedrawAllViews fnc% ptPoint` ptPrevPoint= elPrevElement  SetLocateCursor ptDistanceG ptPrevTouch| dDistancebX elLineS elPrevLine1 GetDistanceValue IsLineElement pt^ bIsVerticalj ptMonument ptStart strDirection rwcstnResult` RWCSTNResultType. dOffSet; nActAngb  msdElementTypeLineStringD  Beep  rqtGetMonumentXY i0] i1] GlobalOriginw frmFPPDIMO dblDimension IsVertical  rtMonumentNotInits  rtTextNodeNotFound>  rtScaleNotInitn3 bReInit dPrevScaleXV dPrevScaleYS ptPoint2p ptActiveScalem  vbNo%  vbYesNo  vbDefaultButton2  rtAbnormalExit  rqtIncludeCSTNo rqtSetScalet i2]  rqtSetMonumentXY Point3dZero8I eEnumerator2 objSC%   ElementScanCriteria  ExcludeNonGraphical  ScanD  IsLockedٌ rotatione txt lvll  Levels ptBeginPoint ptEndPoint+H bExitSub dMinAllowedDistance dDistanceBetweenSets dDistanceOfLine, dDistanceX dDistanceY dSqrX  dSqrY  nNumOfSectionsD dAngl#  CosO  Sin  Sqr( PlaceSinglCell: strShowString nSegments1 ptBeginޡ ptEnde ptFromn ptTo1 ptTo2 dCoordinateY dLenghtSegment  EnableAccuSnapI elCell strKeyInCommandx` IsCellElement AsCellElement؛ bDoCopy bBreakFence6\ nCopies ptSrcF ptDstEa ptOffseth ptUpLeft ptLowRight  Undefine"- ShowStatus  Point3dSubtracti Point3dAddc  TextLine eSubElementsH objSubElw< bToSetq objLevel0O objLineStyleF lLineWeight lColor* objTextStyle bIsBold] bIsItalic bIsUnderlined% dTextNodeLSo strCommand strStatus0 strFontx IsTextElement\ AsTextElementU  IsTextNodeElementD  AsTextNodeElement y  GetSubElements LineSpacing  IsBoldl`  IsItalic IsUnderlined fontU  ID] strProduct  ptMenuOrigin ptMenuUpLeft lngResultQ CommandResult  msdCommandResultSuccess  # msdCommandResultCellLibraryNotFound'  msdCommandResultNoCellLibrary, g_TextFields` MAX_LEND TextSizeWrkUnits IsFixedSizev bFree PlaceFixedCell' PlaceFreeCellr objMsg[ bResume| ChangeSymbology@ ptCellOrigin3 objTextj region mtrxz MaxLend DEFAULT_LENGTH* MIN_DISTANCE_BETWEEN_POINTS[ DISTANCE_ALONG_X_Y_AXIS_POINTS dMinXY dStep  ptFirstW< ptSecond nSlashesC bGroundLineOnTop cadUtilsz ReportErrorToPromptd  vbCrLf  Right   Trim@ IsSupportedMode" IsDGNMode-  msdDesignFileFormatV88 CheckDGNMode ReportToMsgBox  errNotDGNFormat GetDefaultLevelName Error_Handler4 FindByNumbero ReRaise strNumber— strDescriptiond strLocation strReserved1G strReserved4 G strReserved3G strKey strBorder arrDescriptionV  SIZEINFO_BORD strNameZ arrBordersn TYPEINFO] arrSizes  arrTypes ELEMINFO dSizeu lLevel} lWeight  lJustify dRotationf bTextFoundU AX CZ D[ E\ szInfoL arrIndexesW arrPlantsN  strPathl StrLine hFile# arrStrings7* UnScramblerz  EOF ProcessIndexSectionG ProcessPlantSectionM ProcessSizeSection nIndex' nType՗ nBorder GetItemIndexByNameOrCreate GetTypeIndexByNameOrCreate/t GetSizeIndexByNameOrCreate GetBorderIndexByNameOrCreate< AddStringUnique8 ProcessSingleSection errTBAInvalidIndexCfg arrXD  Val GetItemIndexByName- arrItemsX} nNewIndexI GetTypeIndexByNamew GetSizeIndexByName GetBorderIndexByName GetPlantIndexByNameM) ByteArr~ Index PRECISION APP_ELEMENT_ID# strSignatureQ strReview strEmergencyw strClassifiedG strTypeAh strPlantNo; strIndexA strCode% strSizec strDrwNo strSheetNom strRevision: strHowMuch strTitleLine1fV strTitleLine2gV strPlantDesc' strReserved0G strReserved2G strJoz` strDAEnggd strDAEngDate>V strDACertڧ strDACertDate strRDConst; strRDDate,< strDROp strRDOpDate6 strOtherBy strOtherDate strDrawingFormat= strDateD strRevisionDescq strDCCNumber1 strRevision1G strRevision2H GetApplicationElementDataM ee] ae\  ApplicationElement+> db\ DataBlock arr u  ControlElementCachex  msdElementTypeMicroStation  Subtype^` # msdElementSubtypeApplicationElementX ApplicationID  GetApplicationData: offset ReadDataBlockString SetApplicationElementData WriteDataBlockString  Size  CreateApplicationElementk  SetApplicationData bt\ bContinueAdding5  CopyByte nLene, GetElementInfo4 GetTextByPosition ptElement2 dOldScaleh elText޺ elInfoi  GraphicalElementCache  msdElementTypeTextnd FindAllTextsByPositions: ReplaceText!/ RemoveElementG  FontsG  Rotate GetTextValue\ GetCellByPosition  msdElementTypeCellHeaderz GetCellValue ReplaceCell  eraseOnlyr GetTextsDatah bPreload) dateFromStr21 hErrf DateSerialU ReplaceBorderFilen strNewBorderRp strAttachmentNamet objAttachment| Attachment^6 pt3D VerifyBorder  Attachments_  Count0v AsAttachment" AttachName  Removeϱ  Addr ScaleFactor?Q errReplacingBorderG strErrord\ FindBorderName: SACSMenu< AutoSacsVersion OpenTBHelp PRODUCT_SELECT_ID SACS_VERSION_LONG SACS_VERSIONTAG_SHORT Module2c bEnableLogging sLogFileName sVersiono sProjectNameR ErrorBaseV vbObjectError  errNoError errNoActiveModelRef errRegistryKeyNotFound errNodeNotFound errCfgNotLoaded& errXMLParseError errDuplicateLevelInCfg errRegisteringCtls SYSTEMTIME1 wYear1 wMonthp! wDayOfWeekc wDay~. wHour wMinute_ wSecondq_ wMilliseconds GetCurrentProcessId GetLocalTime} lpSystemTime where֍ Description  SourceG logLine GetLogLine Skip_Logވ fnA]  HelpFile HelpContext/O FormatErrorMessageForDisplay vbCritical+} Code Message ReportToPromptCurrent  vbTabc9 ctime%  Version OfficeCodesh mCaptiona mIndexes mPlantsR mBorders!  mSizes\ mScale6 madData[ madAppData`+ mbVerify6% bVerifyX; btnExit_Clicko btnProcess_Click ErrorHandlerO  SetShowMessage8o VerifyData9  edtScale WriteAppElement( WriteTexts  cmbBorder N cmbPlantNo_Clickt cmbPlantNop  List* ListIndexQ  edtDescription5 edtLocation cmbType_Click'L bClear$  cmbSize   Clear  edtIndexK  cmbTypeb  AddItem  cmbTitle10 cmbSize_Click btnProcessj  Enabled۪ cmbBorder_Clickq edtIndex_ChangeF SelectComboValByName ListCount6 edtIndex_KeyPresscf KeyAscii#  MSFormsC ReturnInteger ToUpperCase edtDrawingNo_KeyPress edtSheetNo_KeyPress edtRevisionNo_KeyPress edtRevDate_KeyPresse edtRevDescription_KeyPress edtTitle2_KeyPressx edtJoEwo_KeyPress edtDCCNumber_KeyPresse edtScale_KeyPress edtLocation_KeyPressڔ edtDescription_KeyPressg edtDAEng_KeyPress^ edtDADate_KeyPresss edtDACertified_KeyPressu= edtDACDate_KeyPress edtRDAgency_KeyPress edtDRDate_KeyPress  edtRDOperations_KeyPress edtDROpDate_KeyPressV edtOBy_KeyPressH edtODate_KeyPress cmbTitle1_KeyPressW UserForm_ActivateZs  Captionx cmbOfficeCodeP optRestricted !  ValueK  optEDNoB  optKDRNo# InitializeControlsz{  Frame1 FillExtraControlsX edtDrawingNo edtSheetNo edtRevisionNo edtTitle2K  edtJoEwo  optConfidentialT_  optEDYesf optKDRYes[ edtRevDate  edtRevDescription  edtDCCNumberF  edtDAEng edtDADate  edtDACertified edtDACDate edtRDAgencyb  edtDRDate ~  edtRDOperationss edtDROpDate   edtOBy]  edtODate - cmbFormats  cmbOfficeCode1% edtDrawingNo1L8 edtSheetNo1  edtRevisionNo1 edtIndex1[  cmbType1   cmbSize17 cmbTitle11^ edtTitle21Ks edtJoEwo1v edtScale1 cmbPlantNo1 edtLocation1  edtPlantDescription1+  optRestricted1*  optConfidential1IP optEDYes1^  optEDNo1G optKDRYes1h optKDRNo1< edtRevDate1  edtRevDescription1o] edtDCCNumber1  edtDAEng1 edtDADate1  edtDACertified1 edtDACDate1 edtRDAgency1@ edtDRDate1>  edtRDOperations1 edtDROpDate1f  edtOBy1r edtODate1 cmbFormat1Z  cmb~  ComboBox\ lInstrPos dtDAQ dtDAC dtDRb dtDROp bVal$ ReturnBooleane  VerifyDrawingNoA  SetFocus VerifySheetNo VerifyDigits]& AddLeadingZero vbQuestion  VerifyRevisionNo VerifyIndex) VerifyEwo} edtJoEwo_ExitH  VerifyDateFormat  VerifyInitials VerifyDCCeu edtDCCNumber_Exit! strCellPath  AttachCellLibraryF Cancel InstrCount| fFindNthOccurn lSegment vbTextCompare Q pStr~ pFindث pNth strHoldq strFindiX intHold!1 intSayހ intKeepK ne ptTempB Class1+  IPrimitiveCommandEvents2W StatesB) stateWaitingN stateDrawingd` State mActiveBusf mCommandG mEleTemplatek InitializeTables frmACSE1LKp mActiveBusLine[ ApplyConfigurationQ sLevelw objStylep aEleTemplatebc  ElementTemplatePathg Class_Initializen IPrimitiveCommandEvents_Start_ !IPrimitiveCommandEvents_DataPointĮ StartDynamicsG ModifyVertexTO IPrimitiveCommandEvents_Dynamics DrawMode2  MsdDrawingMode3 IPrimitiveCommandEvents_KeyinT IPrimitiveCommandEvents_Resets IPrimitiveCommandEvents_Cleanup  ErrorHander _ mdlModelRef_getActiveDM bCont' mTextEl mPatternG mActiveLineIDl mStartPoint mPatternCell0 mSavedAxisLock mSavedAxisAngle8 mLineIDk mOrient; mType mText mdlPattern_linear] patternEdPP edPg filePos- cell cellScaleL patternTypeŧ mdlElmdscr_display elemDescr modelRef;@ mdlElmdscr_addo  KeyinArguments1 asArguments nID5 AxisAngle  AngleLockEnabledt7 CreateNewSegment}  CurrentGraphicGroupP  Class  msdElementClassLinearPatterned DrawLinevN  Vertex ConfigurePatternv PlaceTextLA  AxisLockEnabledFa  PatternCellName msdTextJustificationCenterCenter>  Findn  msdFontTypeMicroStation  Point1 point2 textPos textRotation Matrix3dFromAxisAndRotationAngle@   NodeLineSpacing?  Move>y msElementDescrP dblScale PatternScale  MdlElementDescrP}  MdlLib  mdlElmdscr_freeAll mdlVec_distance point1PKr point2Ppr mdlMinDist_betweenElmsI distance' edP1  edP2  closestPoint: inputTolerance mdlElement_rewrite4 newElem] oldElem` mdlLine_create pElementOutZ pElementIn  points #mdlIntersect_allBetweenExtendedElms isPnt1+ isPnt2+ isPntSize  rotMatrixz tolerance{y idPnt1P idPnt2Pǿ mdlIntersect_allBetweenElms, mdlVec_computeNormal unitVectorPM targetP baseP mdlVec_angleXYd. pVector? FirstEle SecondEle~/ nPoints} RestartCommand= ele  IsLinear3 line1 line2 minPnt1l minPnt2l minCloseS minDist  retVal; HasSameAngle` IsParallel1 ConnectLines^ extLine1 extLine2 idPnt1 idPnt2 PtsIA PtsIB cnt+ lineA lineB oPH1  PropertyHandlerK oPH2  CreatePropertyHandler AngleStrAR AngleStrBS SegmentA. SegmentB. VerticesCount`  CacheE  ModelReferenceEi  Is3Dr GetAngleR oPH accessString HandleError;  SelectByAccessStringo?  GetDisplayString0 IdPt18I IdPt29I PTsI Diffc StartPoint oE1  oEl hooks./ hooks_OnDesignFileClosed hooks_OnDesignFileOpened! OK_ClickR  Voltage  Hide9z ModalResult btnCancel_Clicke  vbCancel' btnOK_Click"  opPlacementVerH lblDimension  opPlacementHor lbl_VersionE txtStringM btnReset_Click L O `     [  m)  _    e   i -& H  w  {         % (   ! # a $   1  3  5 c ( I    7  >  ?   A # E  F  G i+ Z  8  K  M -' O 1* R 5% T 9$ V =" X C ] I ] J b        ` 0     "        ( "  0  8  H   X h ` ! d' R A@r o P   Reset ' R A@r o  B Attribut e VB_Nam e = "frm@Txt" Bast0{CC8 2D679-C7 7A-4AC7- 9A14-D89 E3364E69 9}{C61DA 04D-EC5D -4226-8D7D-8 (094@B30C7} G lobalSpacoFalse CreatablPredec$la Id Tru BExpose0TemplateDeriv CustomiziD P  " Sub btnO K_Click( ) sText NtxtS1 ng. Un@load M ZEnd) 'Reset()" 3 &   L    =!        x  ME  (  S<  S<  S<  S<   0 { 3 1 F 2 F B 3 9 - D 8 B 5 - 4 C 0 9 - A A 0 B - A 9 B 0 3 2 3 5 D F E 9 } { B 7 D 5 C 8 D E - 2 6 F B - 4 3 D 1 - A 2 0 A - 8 A 8 C C A E 5 A E 9 2 }  0  (   % X 0  % z  X   ` ` 0    "  4    @ P ` , Saudi Aramco Auto-SACS Version V6.0 SACS 6.0' o 8 0 H Attribut e VB_Nam e = "frm SACSvers@ion" Bas0{31F 2FB39-D8 B5-4C09- AA0B-A9B 03235DFE 9}{B7D5C 8DE-26FB -43D1-A2 0A-8A8CC AE5AE92} dGlobalSpacoFalse CreatablPredecla Id Tru BExpo se0Temp lateDerivCustomizD P ! % Sub Us erForm_Activ () lbl_VSaudi Aramco APuto- Vp6.0   E nd.:  H L O 3  F        x  ME  (  S<  S<  S<  S<   0 { E C 3 5 C 7 A C - 5 5 2 8 - 4 6 9 0 - A 4 C E - D E E E 3 2 2 5 9 7 6 E } { C 6 3 4 8 3 C 3 - A 1 2 2 - 4 0 1 8 - 9 3 1 E - 2 8 F 0 C 9 C 1 A 0 F 4 } p 0  (   % X 0  % h  D hp  hn     (     ( 0  "         "     0   @ "  H  P  `  h  p  x     "            ] ` ] x ]   ( B@ o 8  ! ' p d  ' p k  (  B@  o X ( nX ( | p  ( d  (  k  o  Attribut e VB_Nam e = "frm FPPDIM" " Bas0{ EC35C7AC -5528-46 90-A4CE- DEEE3225 976E}{C6 3483C3-A 122-4018 -931E-28 F0C9C1A0F4} dGlobalSpaco False Cr@eatablPredecla DId Tru BE`xpose0T emplateDerivCus tomizD  Public ModalRes ult As I nteger IsVerticalBooleandblD imensionDo * f1P N R Sub bt nCancel_C9k()  Me. ?= vFbHidELndPOKKIf opPl g@%t..Value The@- 5= _ErA O a#If0OK/\ADInit ializeCo@ntrolsElAT.CaptV= CStr([P?@ Fd   L    ř        x     ME  (  S<  S<  S<  S<   0 { 9 4 8 4 A 6 3 C - F 9 2 5 - 4 4 3 C - 8 A 8 7 - 9 3 C A F B 0 6 7 9 8 0 } { 1 E E 8 2 D 8 B - 0 4 C 8 - 4 B 0 8 - B 9 0 2 - 3 1 7 8 8 8 0 6 0 7 4 D }   0  (   % X 0  % hd    z    x 0    $      "      0   8  @ "  `   h  x           8  P  h     ,         x ] ` x !  ' d t A@ o @  Form initializationt   ! B   380K B 2  ~Ж~  230K B 2  ~~  115K B 2  ~~  69K B 2   34.5K B 2  h  13.8K B 2   4.16K B 2  F -  2.4K B 2  ------  480 B 2  ------  200 B 2  --p  120 B 2  F -  CIRCUIT B 2  --k `   d  d  G  ' d j d  ( find o   , Attribut e VB_Nam e = "frm ACSE1L" " Bas0{ 9484A63C -F925-44 8A87-93 CAFB0679 80}{1EE8 2D8B-04C 8-4B08-B 902-3178 8806074D} dGlobal!SpacoFalse CreatablPre decla Id Tru BExpose0Tem plateDerivCustoHmizD O@ption 4licit PubA mAct +B usLine A s Integer8< Sub OK_C k(0) = Voltage. ListInde x + 1HibdyEnd$,' Form in`itialZO PUser _(@!If  Count@W0 0ThenA)Call AddIt em("380K&"1W 23a 11569 34.!13.8`4.D16 2.4!8J0 L0 12 CIRCUITE!G 12A _BVDT kX=- -[Y       |                                  ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        x  ME  (  S  S  S  B@@ o  F ---------------------------------------------------------------------X P  Attribut e VB_Nam e = "cls OpenClose" Bas0{FCFB3 D2A-A0FA -1068-A7 38-08002 B3371B5} |GlobalSpacFalse dCreatablPredecla Id 1CExp Te mplateDeriveCus tomiz EOp tion 0li cit ' -A $ Setup this pss a  DGHN o/c event ha ndler P b f WithE s hooks A pp SaY . VarH elpIDQ-1?3DB%Sub C lass_Ini tialize(p) ;D*= A *End s##ubAC_ OnDesignFiled(ByVal f %@OSngD+ /%#%Ae%' CadInput Queue.Se ndKeyin "attach color" InstallDpir &a&  "stds\@dta\sa .xtbl~% !  d  k {  ʣ    D  (   ?8  |  T Z mdlVec_distance Z8 mdlMinDist_betweenElms Zd $ mdlElement_rewrite Z t P mdlLine_create Z x mdlIntersect_allBetweenExtendedElms Z mdlIntersect_allBetweenElms Z mdlVec_computeNormal ZD  mdlVec_angleXY       x  ME 0  , $  (     S  S  S  <  < 

h B             4        (  0  8  H   h                   :  N   P  X 2 p 4  ,  6  6 H     > B      (  8  @ X H (  p       : P  8  @ 2 X 4     >  B  X  `  h  p      @ @   0  & H  & p    "   "                (  8  @  H  P   X : ` B      0  < 8  x       >  B         0  8  @  X  h   p   x      :  4      2 ( 4 ` 6  6       0  8 > X B                       (  H  X  p  x      $                   0 t               %  @     %      (  Private newID As DLongx ]@P h er " Private aPoints(0 To 2) As Point3d  Private aEle(0 To 2) As Element ]@  Private oldID As DLong of  ' 8 (B@* Co  ] p 8    4 6 A@&  AA@: | ` k X  D Find the element. Abort if LocateElement does not find an element  ' 8     (%  . 4  4   A@: |  4 ! >  e ame ) The point did not select an line element. A@x A@: | ` k X  ' 8 4  B@  Select the second element A@x  |  k  8      (%  . 6 8 6   | 6 ! >  e ) The point did not select an line element. A@x A@: | h k ` 6  B@ Accept\Reject A@x  ' 8 | ( k o   o  H A@:  ' Keep it simple. Back out all the way. o   o   o   End Sub ( (B@>  Mend Line A@   Select the first elementA@x &  o ( 4 ----------------------------------------------------( * Description : This function mend two lines Parameters:  3 line1[in] = first line element to mend  4 line [in] = second line element to mend % View [in] = Current view  Return value: true/false  Misc: It uses mdl api % 8 --------------------------------------------------------h ] @ ] ` ]  ]  ]  D F J @ ! B ! H h㈵>$  ' L L  % ' & z k @ B $ N  @ B  D F $ P   @ B D F $ R  ' & % d p ' & k ` d X ' & k H i @ 4 ---------------------------------------------------- H Description : This function check whether two lines are parallel are not Parameters: + line1[in] = first line element - line2 [in] = second line element % View [in] = Current view 0 idPnt1 [out]= line1 point to extend 0 idPnt2 [out]= line2 point to extend  Return value: true/false  Misc: It uses mdl api 8 --------------------------------------------------------  ]   ]  8 ] x ]  F ! '   cnt = mdlIntersect_allBetweenExtendedElms(PtsIA(0), PtsIB(0), 1, extLine1.MdlElementDescrP, extLine2.MdlElementDescrP, rotation, 0.0001, extLine1.AsLineElement.EndPoint, extLine2.AsLineElement.EndPoint) $ \  $ ^   T ! V !  -C6? X Z $  ' ` `  ' P d p ' P k ` i X 4 ---------------------------------------------------- I Description : This function check whether two lines has same angle or not Parameters: , line1 [in] = first line element - line2 [in] = second line element  Return value: true/false  Misc: It uses mdl api 8 --------------------------------------------------------  ] ` ]  b $ l  . f d $ l  . j ]   ]   Segments[ b ! v     ]. ' r > & "Direction" Segments[ d ! v     ]. ' t > & "Direction" b ! x ! z ! | f r  ElevationAngle $ ~  ' n j t  ElevationAngle $ ~  ' p d ` f r Direction  $ ~  ' n j t Direction  $ ~  ' p k  n  p   ' N z k n p  ' N d ' N k i 4 ---------------------------------------------------- ; Description : This function gives property value of element Parameters:  ) oPH [out] = Property Handler 5 accessString [out] = angle property name   Return value: true/false*  Misc: It uses mdl api  8 --------------------------------------------------------F    %   +  ' ~ d  ]  F ! ' V ! ' ~  k  z   ' ~ i p 4 ----------------------------------------------------+  - Description : This function connect two lines  Parameters: + line1[in] = first line element D  - line2 [in] = second line element  F / idPnt1 [out]= close point to line2 1 0 idPnt2 [out]= lclose point to line1  Return value: true/false2  Misc: It uses mdl api 3e 8 --------------------------------------------------------  ]    ]   b ! *! $  '  F   b ! *! . +   d b ! *! +  5 k d ! *! $  ' 403B  d ! *! .  +  6 d d ! *!  +   k h ]  b $   $  $ J .  F b B@F  d B@F B@L B@N  F ' R i  Attribut e VB_Nam e = "cMe ndLine" " Bas0{ FCFB3D2A -A0FA-10 68-A738- 08002B33 71B5} |GlobalSpacFalse d CreatablPredecl2a Id CExposeTem plateDerivCustomiz E &P   DC F unction mdlVec_d istan pLi@b "std b ltin.dll " _ (By Ref poin t1P As P3d, 2 b)Dou AMinD A_bet weenElms E1V"F9@/%/Val edBPBLong2'?cl ist inputTolerSBBAElement_rewri@new ")oldfilpePosE f%_ceZep0OutM%InI'F%BV3d&In tersect_allBGxtFe@ H dZisP`Za!@b@Size{@d aI#frotMax#i( tOIfdqi!qOdl)zq(((+.r((KD comzepNorm`srdIunit torQ3@target1b"eangleXYts$p߁-Yj a I bs Imit CommandEv {s '4ID! DKFirst , Se|co @〡DaBs(0 To 2)ffSs P S ub RePort! () @A n1= 0Stet.P rt MEnd _D(t'1 ?ByCViewaq $ Dim e< If8 2 Then!1 ő e, q;wExitS!If' p1 theA k. Abort i`f Locp4 does not fi an 0! Set? Д#, TrueQ Is Nothing 3 {[1Eࡠ6 .$Istar S howPrEt " didBs@ct `lPS   +q.1'AСve Modelpere.S$  !0z@%   ` A E= _ e _ [ Wo  6' 7 ocel 3p*Accept\Rej2k % oSU3g_Dynamics_SRLUS1TDraw1,qMsd > '&[os_et eb PPKeep PRsi1t. Back op20way.QUvtKeyin| S@ng0 /PmggCleanup H'vo? >_"pez7@9XCuprsor3 a/T ~"hp+91BfB Ƶ'-0 'De scriptio n : This funcme nd two l0ines X Pa rameters:  %1[i n] = first7 ele H`t to P5 5seco rH6View6Current v / Return value: t rue/falseMisc: It uses mdl api 1 F M L(ByVal1 As E, 2 k )Boolean1Dim minPnt* Point3d  BClosfeDilD0oublJret2@LongE=OMin_ betweenEPlms((,+2 A ,D.MdlDP2- , 0.0 1)# !If D"<>4 0e@J- b@F~Exi,t kCE IfCXHasSA`ngle(µ')  Not IsllelJ , q@12M &H+ConnectsMUBB5[gc  Es% '(?gkchec k whether are pǀ-not@ @ _T`#& >2xO ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~     <  x M    Z mdlElementTemplate_activateElementTemplateByPath ~ Z\ ~ ~ mdlModelRef_getActive Z H , mdlPattern_linear Z e t mdlElmdscr_display Z 3 0 mdlElmdscr_add       x  ME  4    , $ 0 (  S  S  S 

% D % T (& @ & @ & 8 ' H 8' L ' < ' < ( D P( D ( @ ( D ) D h) D ) < ) @ 8* < x* D * \ + X `+ X + P , P `, P , L - D P- D - D - T (. T . \ . H 8/ 4 / @ / 8 / D 00 L x0 P 0 \ 1 X x1 P 1 T 2 8 x2 H 2 H 2 H @3 8 3 8 3 8 3 8 04 P h4 H 4 T 5 H X5 X 5 D 5 D @6 P 6 P 6 D (7 D p7 H 7 4 8 4 88 P p8 P 8 ` 9 ` p9 ` 9 \ 0: < : L : < ; < `; H ; X ; P @< @ < P < T = @ x= @ = 8 = L 0> L > < > < ? D P? @ ? < ?   @  @  (@  H@ "  P@  X@ $ `@  @  @  @  @  @  @ 2 @  A   A  A  A  @A   XA   `A  hA  pA  J xA  $ A  A   A   B   B < B  `B   pB  xB  B  B "  B  B  B  B  B  B  B   B  B : B  (C "  0C  8C   @C  XC  pC   C  C   C  C  C  C    C   C < D  @D   PD  XD @ `D  D "  D  D  @ D  D   E  (E   @E  XE  hE   pE  E  ( E   E   E  E   E   E  F   F  F V (F  F "  F 4 F   F  F   F   G  (G   0G   HG  `G   hG   xG   G  G  G  G  G   G   H  (H   0H   HH  `H   hH   xH   H  H  H  H   H  H L H  8I "  @I  HI   PI   `I   pI  I   I  I  V I  J  , 0J  `J ( pJ  D J   J  K  K    K   K @ (K  hK   xK  K : K  K "  K  K   K  K   L ( L   8L 0 PL  L    L   L @ L  L   L  L , L  (M "  0M  8M   PM  XM @ `M  M "  M  M   M  M  M    M   N < N  HN   XN  `N @ hN  N "  N  N   N  N  N  O  O  0O  8O  @O    HO   PO > XO  O   O  O ( O  O "  O F O  8P   @P  XP " xP  P 6 P  P 6 Q  8Q  PQ  pQ  Q  0 Q  Q  Q  Q  R  R  (R , 0R ( `R   R  R  R    R   R 2 R  S   (S  0S 6 8S " pS  S "  S  S  S  S  , S  S  T & T " HT  pT  xT  T & T " T  T   U  U  (U  HU   hU  xU   U  U  U  U  U   U   U ( U  V   V "  (V  0V  8V  @V   HV   `V  pV  xV    V ( V  V   V  V  V  W   W   W   (W 0 0W  `W   pW W  ' = Implements MicroStation spoecific asynchrnonous line drawing    ' 0  Q ! Returns a pointer to a structure s h   '  Status constants for eventsarted  '    Line drawing not started yet A@T   In line drawing mode of A@V   '  Current state of drawing  ' ]  ] 8  '  Active line, text, cell (TBD) E  ' ] P ] p ]   '  Active line ID s,  ' ]   '  Starting point  ' ]   '  Active Pattern Cell Name  ' ]   '  Saved setting  ' ]   '  Saved setting  ' ]   ' ) Bus Attributes - levels, weights, colors  ' ]  e ( ]  e ` ]  e  ]  e  ] e  $ Command names for line placement]  e @  ' 0 MDL functions wrappers to create linear pattern  ' x  8  ' 4 Initializes static arrays - levels, weights, colors  '    +  F    +  F 0   +  F A  +  F   +  F    +  F 0   +  F A  +  F   +  F    +  F 0   +  F A  +  F   +  F    +  F 0   +  F A  airlin  +  F   +  F    +  F 0   +  F A  elelin  +  F   +  F    +  F 0   +  F A  +  F m   +  F    +  F 0   +  F A  comlnk  +  F   +  F    +  F 0   +  F A  comcbl  +  F  +  F   +  F 0  +  F A  capil +  F  +  F   +  F 2  +  F D  matlin +  F  +  F   +  F 2  +  F D  comlnk +  F  +  F   +  F 2  +  F D +  F  +  F   +  F 2  +  F D +  F   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  airild  +  F   +  F    +  F 2   +  F D  eleild  +  F   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  capil  +  F   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  +  F  +  F    +  F 2   +  F D  +  F  +  F    +  F 2   +  F D  +  F  +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  000012  +  F   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  matlin  +  F   +  F    +  F 2   +  F D  01405a  +  F   +  F    +  F 2   +  F D  01405b  +  F   +  F    +  F 2   +  F D  01405c  +  F  +  F   +  F 2  +  F D  01405d +  F  ! +  F   ! +  F 2  ! +  F D  01407a ! +  F  " +  F   " +  F 2  " +  F D  01407b " +  F  # +  F   # +  F 2  # +  F D  01407c # +  F  $ +  F   $ +  F 2  $ +  F D  01410a $ +  F  % +  F   % +  F 2  % +  F D  01410b % +  F  & +  F   & +  F 2  & +  F D  01410c & +  F  ' +  F   ' +  F 2  ' +  F D  01404a ' +  F  ( +  F   ( +  F 2  ( +  F D  01404b ( +  F  ) +  F   ) +  F 2  ) +  F D  01404c ) +  F  * +  F   * +  F 2  * +  F D  01404d * +  F  + +  F   + +  F 2  + +  F D  001400 + +  F  , +  F   , +  F 2  , +  F D  001403 , +  F  - +  F   - +  F 2  - +  F D  001412 - +  F  . +  F   . +  F 2  . +  F D  001411 . +  F  / +  F   / +  F 2  / +  F D  01403a / +  F  0 +  F   0 +  F 2  0 +  F D  01403c 0 +  F  1 +  F   1 +  F 2  1 +  F D  01403d 1 +  F  2 +  F   2 +  F 2  2 +  F D  01403e 2 +  F  3 +  F   3 +  F 2  3 +  F D  01403f 3 +  F  4 +  F   4 +  F 2  4 +  F D  01403g 4 +  F  5 +  F   5 +  F 2  5 +  F D  01403B 5 +  F  6 +  F   6 +  F 2  6 +  F D  01408c 6 +  F  7 +  F   7 +  F 2  7 +  F D  01408a 7 +  F  8 +  F   8 +  F 2  8 +  F D  01408b 8 +  F  9 +  F   9 +  F 2  9 +  F D  01406r 9 +  F  : +  F   : +  F 2  : +  F D  01406i : +  F  ; +  F   ; +  F 2  ; +  F D  01410d ; +  F  < +  F   < +  F 2  < +  F D  01410e < +  F  = +  F   = +  F 2  = +  F D  001413 = +  F  > +  F   > +  F 2  > +  F D  01406p > +  F  ? +  F   ? +  F 2  ? +  F D  01406q ? +  F  @ +  F   @ +  F 2  @ +  F D  01406m @ +  F  A +  F   A +  F 2  A +  F D  01406l A +  F 8 B +  F   B +  F 2  B +  F D  01406n B +  F  C +  F   C +  F 2  C +  F D MOLTEN SULFUR C +  F  D +  F   D +  F 2  D +  F D SULFUR PRILLS D +  F  E +  F   E +  F 2  E +  F D  ETHANE (FUEL GRADE) E +  F  F +  F   F +  F 2  F +  F D  ETHANE (FEED STOCK) F +  F 1 G +  F   G +  F 2  G +  F D SOUR FEED GAS G +  F 2 H +  F   H +  F 2  H +  F D  SWEET FEED GAS H +  F 3 I +  F   I +  F 2  I +  F D  CONDENSATE FEED I +  F 5 J +  F   J +  F 2  J +  F D  C3+NGL J +  F 6 K +  F   K +  F 2  K +  F D  C2+NGL K +  F  L +  F  L +  F 3  L +  F E  000014 L +  F  M +  F  M +  F 3  M +  F E  000015 M +  F  N +  F  N +  F 3  N +  F E N +  F  O +  F  O +  F 3  O +  F E O +  F  P +  F  P +  F 3  P +  F E  cntro P +  F  Q +  F  Q +  F 3  Q +  F E  cntrrs Q +  F  R +  F  R +  F 3  R +  F E R +  F  S +  F  S +  F 3  S +  F E S +  F  T +  F  T +  F 3  T +  F E  000012 T +  F  U +  F   U +  F 2  U +  F D U +  F  V +  F  V +  F 3  V +  F E V +  F  W +  F  W +  F 3  W +  F E W +  F  X +  F  X +  F 3  X +  F E X +  F  Y +  F  Y +  F 3  Y +  F E Y +  F  Z +  F  Z +  F 3  Z +  F E Z +  F e [ +  F   [ +  F 2  [ +  F D [ +  F [i f \ +  F   \ +  F 2  \ +  F D \ +  F g ] +  F   ] +  F 2  ] +  F D ] +  F i h ^ +  F   ^ +  F 2  ^ +  F D ^ +  F -- i _ +  F   _ +  F 2  _ +  F D  elelin _ +  F j ` +  F   ` +  F 2  ` +  F D ` +  F k a +  F   a +  F 2  a +  F D a +  F -- l b +  F   b +  F 2  b +  F D b +  F ti m c +  F   c +  F 2  c +  F D  capil c +  F name n d +  F   d +  F 4  d +  F G d +  F } e +  F   e +  F 4  e +  F G  000012 e +  F f it + \   Instrument Leader Line  + \  F U  PID\Instrument Leader Line  + ^  F Ind Process Line  + \  F F M  PID\Process Line  + ^  F Q - Vessel line  + \  F J  PID\Vessel line  + ^  F  Air Line  + \  F G PID\Air Line  + ^  F  Electrical Line  + \  F N  PID\Electrical Line  + ^  F  Steam Trace Line  + \  F O  PID\Steam Trace Line  + ^  F Computer Link  + \  F L  PID\Computer Link  + ^  F ----  Computer Cable  + \  F M  PID\Computer Cable  + ^  F n in  Capillary Line + \  F M  PID\Capillary Line + ^  F Match Line + \  F K  PID\Match Line + ^  F Computer Link + \  F M  ILD\Computer Link + ^  F  Instrument Leader Line + \  F V  ILD\Instrument Leader Line + ^  F Q - Process Line + \  F L  ILD\Process Line + ^  F Vessel Line  + \  F K  ILD\Vessel Line  + ^  F  Air Line  + \  F H ILD\Air Line  + ^  F  Electrical Line  + \  F O  ILD\Electrical Line  + ^  F  Electrical Line II  + \  F R  ILD\Electrical Line II  + ^  F Fun Cable Line  + \  F J  ILD\Cable Line  + ^  F a Panel Line  + \  F J  ILD\Panel Line  + ^  F P  Capillary Line  + \  F N  ILD\Capillary Line  + ^  F f it  Equipment Line  + \  F N  ILD\Equipment Line  + ^  F R Ladder Line  + \  F K  ILD\Ladder Line  + ^  F Panel #1 Line  + \  F M  EIL\Panel #1 Line  + ^  F ---- Panel #2 Line  + \  F M  EIL\Panel #2 Line  + ^  F V Panel #3 Line  + \  F M  EIL\Panel #3 Line  + ^  F  Fence Line  + \  F J  VOD\Fence Line  + ^  F Vessel Line  + \  F K  VOD\Vessel Line  + ^  F Match Line  + \  F J  VOD\Match Line  + ^  F ---- Arabian Heavy  + \  F M  VOD\Arabian Heavy  + ^  F B  Arab. Heavy Safaniya Sweet  + \  F Z  VOD\Arab. Heavy Safaniya Sweet  + ^  F 5  Arab. Heavy Manifa Sour  + \  F W  VOD\Arab. Heavy Manifa Sour  + ^  F  Arab. Heavy Manifa Sweet + \  F X  VOD\Arab. Heavy Manifa Sweet + ^  F  Arab. Light Naphtha ! + \  F S  VOD\Arab. Light Naphtha ! + ^  F  Arab. Whole Naphtha " + \  F S  VOD\Arab. Whole Naphtha " + ^  F  Arab. Heavy Naphtha # + \  F S  VOD\Arab. Heavy Naphtha # + ^  F  Diesel (Local Use) $ + \  F R  VOD\Diesel (Local Use) $ + ^  F ----  Diesel (Black) % + \  F N  VOD\Diesel (Black) % + ^  F Fun  Diesel (White) & + \  F N  VOD\Diesel (White) & + ^  F .  Arabian Medium ' + \  F N  VOD\Arabian Medium ' + ^  F  Arabian Medium (Sour) ( + \  F U  VOD\Arabian Medium (Sour) ( + ^  F str  Arabian Medium (Sweet) ) + \  F V  VOD\Arabian Medium (Sweet) ) + ^  F xt i  Arabian Medium (Pressure) * + \  F Y  VOD\Arabian Medium (Pressure) * + ^  F ----  Off Service Pipe + + \  F P  VOD\Off Service Pipe + + ^  F  Crude , + \  F E VOD\Crude , + ^  F @ Slops System - + \  F L  VOD\Slops System - + ^  F  Asphalt . + \  F G VOD\Asphalt . + ^  F Arabian Light / + \  F M  VOD\Arabian Light / + ^  F ipti  Arabian Light Sour 0 + \  F R  VOD\Arabian Light Sour 0 + ^  F name  Arabian Light Sweet 1 + \  F S  VOD\Arabian Light Sweet 1 + ^  F  Arabian Light Berri Sweet 2 + \  F Y  VOD\Arabian Light Berri Sweet 2 + ^  F  Arabian Light Iraq Basra 3 + \  F X  VOD\Arabian Light Iraq Basra 3 + ^  F  Arabian Extra Light 4 + \  F S  VOD\Arabian Extra Light 4 + ^  F  Arabian Light Pressure 5 + \  F V  VOD\Arabian Light Pressure 5 + ^  F '   Gasoline 6 + \  F H VOD\Gasoline 6 + ^  F  Premium Gasoline 7 + \  F P  VOD\Premium Gasoline 7 + ^  F  Regular Gasoline 8 + \  F P  VOD\Regular Gasoline 8 + ^  F  Natural Gasoline 9 + \  F P  VOD\Natural Gasoline 9 + ^  F  Fuel Gas : + \  F H VOD\Fuel Gas : + ^  F  Fuel Oil ; + \  F H VOD\Fuel Oil ; + ^  F  Jet Fuel < + \  F H VOD\Jet Fuel < + ^  F  Kerosene = + \  F H VOD\Kerosene = + ^  F  Butane Refrigeration > + \  F T  VOD\Butane Refrigeration > + ^  F  Butane Pressure ? + \  F O  VOD\Butane Pressure ? + ^  F  Propane Refrigeration @ + \  F U  VOD\Propane Refrigeration @ + ^  F   Propane Pressure A + \  F P  VOD\Propane Pressure A + ^  F  Liquefied Petroleum Gas B + \  F W  VOD\Liquefied Petroleum Gas B + ^  F MOLTEN SULFUR C + \  F M  VOD\MOLTEN SULFUR C + ^  F o an SULFUR PRILLS D + \  F M  VOD\SULFUR PRILLS D + ^  F ut]  ETHANE (FUEL GRADE) E + \  F S  VOD\ETHANE (FUEL GRADE) E + ^  F  ETHANE (FEED STOCK) F + \  F S  VOD\ETHANE (FEED STOCK) F + ^  F SOUR FEED GAS G + \  F M  VOD\SOUR FEED GAS G + ^  F ----  SWEET FEED GAS H + \  F N  VOD\SWEET FEED GAS H + ^  F H  CONDENSATE FEED I + \  F O  VOD\CONDENSATE FEED I + ^  F  C3+NGL J + \  F F VOD\C3+NGL J + ^  F , ti  C2+NGL K + \  F F VOD\C2+NGL K + ^  F   Aboveground Pipeline L + \  F T  FPP\Aboveground Pipeline L + ^  F  Underground Pipeline M + \  F T  FPP\Underground Pipeline M + ^  F  Building / Equipment Line I N + \  F [  FPP\Building / Equipment Line I N + ^  F  Building / Equipment Line II O + \  F \ FPP\Building / Equipment Line II O + ^  F  Bldg / Equipment Centerline P + \  F [  FPP\Bldg / Equipment Centerline P + ^  F  Roads / Streets Centerline Q + \  F Z  FPP\Roads / Streets Centerline Q + ^  F ---- Trail Line R + \  F J  FPP\Trail Line R + ^  F ---  Sidewalks & Walls S + \  F Q  FPP\Sidewalks & Walls S + ^  F Fence Line T + \  F J  FPP\Fence Line T + ^  F ---- Grid Line U + \  F I FPP\Grid Line U + ^  F ----  Guard Tower Line V + \  F P  FPP\Guard Tower Line V + ^  F  Transmission Tower Line W + \  F W  FPP\Transmission Tower Line W + ^  F  Call Out Leader Line X + \  F T  FPP\Call Out Leader Line X + ^  F Parking Line Y + \  F L  FPP\Parking Line Y + ^  F  Roads / Streets Line Z + \  F T  FPP\Roads / Streets Line Z + ^  F  Instrument Leader Line [ + \  F V  DEF\Instrument Leader Line [ + ^  F Process Line \ + \  F L  DEF\Process Line \ + ^  F Vessel Line ] + \  F K  DEF\Vessel Line ] + ^  F  Air Line ^ + \  F H DEF\Air Line ^ + ^  F  Electrical Line I _ + \  F Q  DEF\Electrical Line I _ + ^  F  Electrical Line II ` + \  F R  DEF\Electrical Line II ` + ^  F Cable Line a + \  F J  DEF\Cable Line a + ^  F Panel Line b + \  F J  DEF\Panel Line b + ^  F  Capillary Line c + \  F N  DEF\Capillary Line c + ^  F Ladder Line d + \  F M  DEF\Ladder Line d + ^  F Fence Line e + \  F K  DEF\Fence Line e + ^  F o ?  '  Start drawing the line  '  ?   Get ID from key-in arguments  ]  $  ' ] P X' d 0?   Error: Invalid SACS line code B@~ k > ] h '  $   ' y > k > >     G   Error: Invalid SACS line code B@~ j   Set the chosen configuration A f ! F! (B@* | = = . SACS:ACSLineImpl.IPrimitiveCommandEvents_Start B@ B@ o =  '  Kinda constructor  '  T ' X ' . D . ' A ` o =  ' 4 Called back by MicroStation before stating acommand  '  <  Save context ! F! ^! ' ! F! ^! ' $ \   A@   Define Start point A@x  ' ! (B@v k < | < < . SACS:ACSLineImpl.IPrimitiveCommandEvents_Start B@ B@ o ;  ' : Creates new segment of line with specified starting point  '   '  : Create and initally configure line and associated objects ! F% J . D  Patterned $    ! F! D(  D( k :  With text $    $    ! F%  . ! F! D(  D!  ( k : A@f   Start tracing V ' X o 9  ' O Draws line so it direction always is from bottom to top and from left to right  ' h   !  !   !  !    Vertical line !  !  DB@x    DB@x  d 8  DB@x   DB@x  k 8 $  !   D%  (  !   D%  (  k @8 d 88   Horizontal line !  !  DB@x    DB@x  d 7  DB@x   DB@x  k 7 $  !   D%  (  !   D%  (  k @7 k 87 | DB@N o 7  ' F Called back by MicroStation when user specifies (enters) a data point  '  6 X T  A@   Define End point A@x ! (B@v X V  e  PA@   O Permanently store line segment (and associated objects) between points A and B D ! F! B@L  % Draw the line and associated objects P DB@N   $    G PA  j   $    G  D%   D%  PA  j   Create next segment A@  k 4 | 4 4 2 SACS:ACSLineImpl.IPrimitiveCommandEvents_DataPoint B@ B@ o 4  ' 3 Called back by MicroStation for rubberband drawing  '  4 X V   | A@    Pattern   $    G | A  j   Associated Text   $    G  | A  j k x3 | p3 h3 1 SACS:ACSLineImpl.IPrimitiveCommandEvents_Dynamics B@ B@ o 3  ' & Called back by MicroStation. Not used  ' @  Not used... o 2  ' : Called back by MicroStation when resent is issued by user  '  H2 ! F! ^(   Restart ! F! (B@* | 2 1 . SACS:ACSLineImpl.IPrimitiveCommandEvents_Reset B@ B@ o 1  ' 9 Called back by MicroStation when line drawing is stopped  '  @1   Restore context ! F! ^( ! F! ^( ! F! ^(  T ' X . Dk 0 | 0 0 0 SACS:ACSLineImpl.IPrimitiveCommandEvents_Cleanup B@ B@ o P0  ' " Activates specified configuration  '   ? Set Microstation active parameters to those of active bus line /   Set axis lock  $  ! F! ^( p ! F!    ! F! ^(  $ ^  $ | $ V   " Error: Element Template not found! B@~ k /  0 If the line has pattern, set pattern parameters $     $  ! F! ^( ! F! ^! '  k p.  * If the line has text, set text parameters $       ! F! ^!  (   (   ! (  (  ] `  font061 ! F! ! H%  .       G  ! ( j  ! !  ! (   ! !  ! ( k 0- | (- - # SACS:ACSLineImpl.ApplyConfiguration B@  B@ o ,  ' 0 Place text to the appropriate place on the line  NB: line must be orthogonal   '  P, ] 8 ] X !  !   !  !      Vertical line     $  ' !  ! F! ^! ! (  !  !     ( $ d +   Horizontal line  $  ' !  ! F! ^! ! (  !  !     (  x k + ] x !  ! ,!  (  !  ! ,!  (  !  ! ,!  (  (   B@  |  B@N | P ! F! B@L ! FB@ k (* | * *  SACS:ACSLineImpl.PlaceText B@ B@  o )  ) ]  ]  ! F! ^! '    ' k ) D! ' $ | A@  | A@  | P  A@  0 ! FB@ k ( ! B@   | ( ( ! SACS:ACSLineImpl.ConfigurePattern B@ B@  o ( ( ~ Attribut e VB_Nam e = "ACS LINEImpl" Bas 0{FCFB3D 2A-A0FA- 1068-A73 8-08002B3371B5} |@GlobalSpacFalse dCreatablPredecla Id C@ExposeTe ateDerivCustomiz E'' ' ement s MicroS tation s poecific asynchr nonous l ine drawing!P = A De Func!mdlEl-S4_a v  By Path Lib "std bl tin.dll" (ByVal wAs LonHg)  ?M odelRef_getAe ' Retu rns a po inter to struc@y0 Op8glicit R"I@%mitdCommandEvXA ]Y@Sconsta_for e 5Enum AA es '0` not rt@ye! teWa iA zrnn mFCB DatEnd *C8urr@/ofyDi'd*bContBoopleanb, text, c ell (TBD)mLzDDT ElCBdD@6nAE8 ID  IDI`>ger'rQgA(PDC hDGN.3d.%C( d;B@Sa8#' Sa|setAxisLocka.>Ang `Doubl\cUB Us - l Uls, weight colorS&7ID(1 To 101uOri J"Type2 @%%n(0 #a n s aoplDINE 2MDL f s wrappeTrscaeBoar pataSE|@_6 0EdPP!?^, edNfilePos-p?aSqScaE7?-Sub mdscr_dtis 0yuD@DeM^}M`uF)kadd; ieu!In0XalizesStrray_4\4 GT|s( Q,o[S R7)p73:m6QTru~eS54"": 2b014R 35 R 46 R  22"air`65d7jRl72i"!o(6d8jRlcQn79 R 2y "comlnk8c20j?Rl2iacblm9d1jRl2i"capi^10de/b|"mat(1k= 201 c "c/ne:2:bB4 1B2@ ;cMJO301K;1bMBJOs301;1bM;ild]&13@;cO;(1S401 T"0 127-W - ׊WB+82!EV +B"matlin+9+B"01405a306nCb4027Bcۀ8Bd4030J "B 7o-g@ I$D3M J "C o-bh@ $E M J "C o-"i@ +3M J "A 10""i@ Z3M J "C "i@ ZM J "C "i4049+DM J "A 04"4q5OL ߃I #C "4i@OM bJ "C "4i@ $OM bJ "C q4i@ OM bJ "@0 }4i@ OM bJ 34O4bBk44Oc1^ 4407 w4bBb3-4lbB'4lbB'587;DcCe54P "cf4"5bBg4O5boBB4409 bB8"54 bB~-54 bBZ54410`c6r4Z5bBi4;D~5bB1086810;DcC864P ;DcCUŮ`64412kwcQ 06p64dcq4bBm4bBl4415bB644081: mOr ient(67) = TruePTypeP3Dex"MOLTE N SULFUR": Lin@eID(684082p,  a"Z PRI(LLSa9a12~7 a a a" ETHANE ( FUEL GRAHDE)370383 3 33E ED STOCK313453 3 3"SOUR$ F2GA72060MJB@"SWEET3 e7B "CONDENSXATEd49?1B"C3+NGL550B("C26505D 7FalnsCTC"r0 14-4-B"c 5n Bq` Fn "" o D߮  " 8Bu ?+C  #"cPntro 8k506+CN J "B rsn "k509!8n !!i !  "c g510dX8  "CM2 g` Kd8o n10˪8n  Bf@L6?  " e51L8  " e l^RZ^9614%c]SY_r2701+ 9b, CJbO"3@Q9bMBJO1@{%9bMBJO1@V9bMBJO1@}9bMB;c"@elelin;91c  1@%bMBJGO1702[9bMBJO1@P9bMB@"capil105tT $. [q703 t5Y ,\ÿY mCommand( ""V:Instrum Leader ="R? mE leTemplate(CPID\\=Process__ <?V el 05eCAAio cC" ctrical |cDSteamaceU$/F.put+ka<H6Cabl/$?I (8) = "P ID\Compu ter Cabl@e": m Xmand(9 Capillary Lin # mEleTemplate P u10vMatchr ":4sJtN11s sk79&IL( s2: Instrument Lead{1* ?,C3!Processx1?4V elM5BAir76 ctrica}8M7Q II#  C,z>1#  #PanHN # 2C? j ckEquipC?JG- Lad  -":#1Hk EIL\: 2  c3  ÉFenc>e/, VOD\D^^  ^ f2C CArabi an HeavyW+! |3HA.3 Sa faniya Sweet///%SEMfourcFoO3snniQ_ 3#HL ight Naphthak?#glHWhole#lI13#lJDies(LoAUse)Oo+O_3KBlackgP}KUWhit?o{P}QMedium{/Q|47QXS (S HD&m4PBoooTo wPy Pressure)": & mEl eTemplat e(42) = "VOD\Ara bian Med ium ( mCommand(43hOff Service Pipe7O S {4{Crud_8p"8$252S lops Systemn%6'969Asphalt77M7C|Ligh M8O Sour:CD9wee> L 50P Berri| S!  1Iraq Basra2'J5 i mÐEExtra R'"/ -c%b E!?''5 CGa`solin_ +Gg m #m! Dk'o mÔ Regular ?}Ǟo mCNaturalOl-Go mcFue?Kk-gIOil gN 6MJet 1 tCFKerose?2z 6JcDButane Refrigeration?{Iq=SD5B!GI.SDProp?Ir]uJS yJ=sE Liquefie d Petrole0K?+Jem!I":SFM OLTEN SULFUR1 ?a6 ]sF PRILLS___QGK ]GETH ANE (FUEL GRADEGLo`7LEED STOCK$1o7ISOUR FGA?N }ISWxEEToJ7N}CICONDENSATE&7N.HC3+NGL?-T}SGC2? KC2 +NGL":  mComma nd(76) = "Aboveg round Pi peline":# mEleTe@mplateFXPP\ 7UnderFSWA8ABuild ing / Eq uipment L I7-E/H9H8I$$80$ldKHCI|er:$M$1AB$Roads mStreets ?$(8C$Y#2#`Trail8/CI3Si dewalks & Walls/  4FenceLj8$ ` 5 Grid   c Guard Tower n m ?nsmission_,/ǢV -×CJ Ouea?!G mPark\kg l9cm jd !@ mcInstr~ucѿ/SDxEF\ }HProcess/=HV eT+!3HAi>9sH`ctrica_;AO]9H(e I9cHCablc/{qFPan$3FC apillary3_;3|D10CKLad5Z Rjq.10Dy{/,SI  ESub '' ' Start drawqathe APublic  DRAWSACSM()Q !On Error GoTo "Hler' Get ID f rom key-@in argYs#If Len(@KeyinA) > 0 ThenCDim as&() As` r GSpllitn pLongA= C InBElse@.Raise errInvalid rameter, , "b4:   c0ode"1If7 S iApegQamActivFe = 0F%pi LB(m) U+t(ia;= iExit W Nex>tS ! r _"rrar?. (-chosen nfigurat3ApplyCo 9 Micro StationD GN.Applicp.Comma$ndte. rt Primitiv e Me Exit SubA rrorH Zl er: E$Codes.L og "SACS: LineIm0pl.IiEvents_j"D ReportTo PromptCuLrr - ynd  ''  Kin da constructor lvate+ Cl@ass_Inealize()6<= s eWa ng bCon t = Fals }oSet mf Nothi @TextEl mAcD 0. Call GTa0blesmed back by before]D ac~ EBOno GoToDwC,C' Sa Zt;m dAxisAngle 9٘C@Lt -Ls. Lo<=OA EnSdCCCShowĜ (mD( g) C ("Def   pointF" If T rue ThenCАG#¢݀Dynamic@ E If9\ve_p_p' Cre@ms ne@w segm u of l'wit h specifi`Y@mra?)PuB PNewS(. AsnAP13d2!%m5P1'e iqyfigu@jaoci d object$2a ~^C#Ele#2(, HPatterneD[ PmTypvelY2Q. GraphicGroup )' «@ msd"ar)ZWE33鈴_3CB31H3*,cV, Matr@ix3dId ]ity5, ,M7 ')w,!ym.W ^tart tracZrJ2sDrawS=' s@so `dir4` always is f} bottom to Fp29blefo rightB&AA, ByhVal MЉDN.Msd !`'Abs(H:.Y -3 .Y) >, _VXX):*'VepPc Ff.WL <.# ifyex< 0jDF@) 1,fElQ, Î. 0;X<)AOri4}L u% (1).XQGX/ 2 Z'Horiz[puXa*k??@negOf  ID+.&wY|Y/ wpGzhRedH < PBIߴ w users ( )ers ) a data8HcD02H/J/J"JVi𓟎.qDIUS )371 ݱQr>!}wOKg7 Y5Q( OZ\Norm al ' Penly a2-(ϟ)0tweens Aj>B߆ʁ)lRefece.A>dV t thet 0  eNormal   If mT ype(mAct iveLineI D) = 2 T`hen _C all Conf igurePat tern(msd DrawingMtod)p3nPlaceText(m.Ve rtex(1), 2 H ' Create n 0 segmentNewBS poiE nd If Exit SubrrorHandler:E Cs.Log "SACS: mpl.IPrimiCommEvCs_DataP9"$Rep ortToPromptCurr\CJC '' ed back by Micr oStation for rubberb dq[C@$vF  'ynamics(E AsDGN./3d, ByVal View  MwĘOn X GoT~o_MC=es?eDCAAAez, #C ' 'Dsociey2&' qa¡ parame s to tDho@of bxus q/sG2e/LCa@' l?"C/&/&/&%&Ori0&&V/ Pi / 2O#1dlEleaTe@P_ I|By0h(cPptr(m )) <> 0 -0.Rai0err InvalidPA, , "R:N d  nofound!%'`j-C '`e has, t p ķSTCellN'mciDnm.m.m ?V o/$3 ApQ2 El IsG.Level  ev "jWeighR1QStyle.Just E〰ejC07erS Col= P!1 HDimntfojG =DesignFi` FPs.Find? (&1061"# ;!R=  Width@3pCn0RVlRefece.UORsPer@Uni}[HNt~O ModelRef erence.U ORsPerSu bUnit End If, Exit | $rrorHander:R"C s.Log "SACS: Lin eImpl.Ap plyConfi guration"9Report ToMsgBoxxCur v  ''  Pla ce text to the a ppropriate ponl 2NB:  must be hhogonal *Priv 4/T /(Point1 As 3d, p 2 ByVal Dr aw MicroStsDGN.MsdingB)|On E pGoToDimqPos6 Ro19atrix3dIf Absc.Y -A_.Y) >XX) ThenA' Vertic 9SA ` = MD Fro mAxisAndEAngle(2 , Pi / 2D@8.X =Y1- MP@  .ActiveSHett Ts.AjStyle.N ASpac0*vY GC+HC % Else' Ho@rizont??, 0=$g+==W=X =@=j}!3PoffsetOb6E+!HmA1 El.Origixn.X(0-j YZ 5Z`SZ era=fEOMovGRedx ~(y 6 ie@myNormCfXAAddElementE##A1 Upd Grap hicGroupNumberE߷deշB;iEePattern( Wms$*DescrPXLongPdblSe!DoublD#@ ؑ  H 0H1%7?## = ma.MLdldl_!aar m, I" StrPtr(uCell),  ElmBd_disPwy dl-_get[,6rS 58PL75maddF2plc?22S PLib.8freeAllx6A-2/7PCP \  8   2,  ʱA  H Z z mdlElementTemplate_activateElementTemplateByPath        x  ME  (    $   S  S  S 

  X   h  p , x   "          @    "  (  0   8  H    `   h < p        @    "       (  0    8   @ > H        (    "   F    (   0 6 P         0         ' = Implements MicroStation spoecific asynchrnonous line drawing   '  0   '  Status constants for eventsH  '   Line drawing not started yet ( A@T   In line drawing mode ( A@V   '  Current state of drawing  ' ]   ' ' Active line (line element being drawn) ;  ' ]   ' Active bus  E  ' ]   ' ) Bus Attributes - levels, weights, colors  ' ] 0 # Command names for line placementno] h  ' 4 Initializes static arrays - levels, weights, colors  '   BUSLINE\BUSLINE_380K  + ^   fit  BUSLINE\BUSLINE_230K  + ^   BUSLINE\BUSLINE_115K  + ^  on="  BUSLINE\BUSLINE_69K  + ^  >B@  BUSLINE\BUSLINE_34.5K  + ^  n  BUSLINE\BUSLINE_13.8K  + ^  B@  BUSLINE\BUSLINE_4.16K  + ^  set  BUSLINE\BUSLINE_2.4K  + ^  >B@  BUSLINE\BUSLINE_480 + ^    BUSLINE\BUSLINE_200 + ^   ( d  BUSLINE\BUSLINE_120 + ^  t  BUSLINE\BUSLINE_CIRCUIT + ^  s + \   E1L 380KV Bus  + \   E1L 230KV Bus  + \   TO E1L 115KV Bus  + \   E1L 69KV Bus  + \  B@  E1L 34.5kV Bus  + \  ----  E1L 13.8KV Bus  + \  ----  E1L 4.16KV Bus  + \  ---- E1L 2.4KV Bus  + \   E1L 480V Bus + \  No com E1L 208V Bus + \  P E1L 120V Bus + \  R E1L Circuit + \  c:  o   ' / Displays a dialog box with bus line parameters -- H This function is called from getE1lbus (Check of Existence of Bus Line) I or using E1L Product toolbar, 4th group, "Set Bus Volt" button to select  active bus line.  '  Z b ( d $  j b B@ b ! d ' Z  CA f o  ' C This function verifies if any of voltage of bus lines is selected. format E If it is not selected the systems asks to select voltage of bus line  F (look above Selecting Voltage of Bus Line) and only after that allowsx E place cells or draw bus line. It is called before placing cells from " E1L product or drawing bus lines.  '    ] ` ] x  ]  ]  ]  ]   ' If no bus is select it, display prompt    Z  G A  j  1 Check that active template selection is not lost ! F! ^! n ' l % '   ^ ^ l $ ^    '  y  k       G A  j |   - SACS:DRAWE1LBUS.IPrimitiveCommandEvents_Start B@ % B@ o X  '  Start drawing bus line D This function is called by pressing E1L Product toolbar, 4th group, E "Place Bus Line" button to draw bus line' Starts drawing a line with ' settings provided via Configure method  '  H A  ! F! (B@* |   - SACS:DRAWE1LBUS.IPrimitiveCommandEvents_Start B@ --- B@ ^ o   '  Kinda constructor  ' P T ' X . D ' Z A ` o h  ' 4 Called back by MicroStation before stating acommandF  '   Z $ \   A@   Define Start point A@x |   - SACS:ACSE1LImpl.IPrimitiveCommandEvents_Start B@ B@ o h  ' F Called back by MicroStation when user specifies (enters) a data point  '   X T   # Create and initally configure line   ! F% J . D   Start tracing V ' X ! (B@v  Define End point A@x X V  e   DB@x    6 Permanently store line segment between points A and B D ! F! B@L   Draw the line P DB@N  : Create next segment like current one and continue tracing D   ! F% J . Dk 8 | 0 ( 1 SACS:ACSE1LImpl.IPrimitiveCommandEvents_DataPoint B@ B@ proceso   ' 3 Called back by MicroStation for rubberband drawing   ' ` p X V  ----  , Dynamically trace between PointA and PointB D   DB@x  / |  DB@N k  |   0 SACS:ACSE1LImpl.IPrimitiveCommandEvents_Dynamics B@ B@ c: o   ' & Called back by MicroStation. Not used----  '   Not used...X o (  ' : Called back by MicroStation when resent is issued by user  ' x   Restart, ! F! (B@* | - SACS:ACSE1LImpl.IPrimitiveCommandEvents_Reset B@  B@ o 8  ' 9 Called back by MicroStation when line drawing is stopped  '  T ' X . D| / SACS:ACSE1LImpl.IPrimitiveCommandEvents_Cleanup B@  B@ % ^ o `  ' " Activates specified configuration  '   ? Set Microstation active parameters to those of active bus line Z $ ^  $ | $ V   " Error: Element Template not found! B@~ --k p | h ` " SACS:ACSEL1Impl.ApplyConfiguration B@ B@ : o    Attribut e VB_Nam e = "ACS E1LImpl"D Bas0 {FCFB3D2 A-A0FA-1 068-A738 -08002B3@371B5} |G lobalSpacFalse dCreatablPredecdla Id CE xposeTe ateDerivCustomiz E'' ' ements MicroSt ation sp oecific asynchrn onous li ne drawi ng! Op Ulicit L PFJ Dn FuncmdlLEl7\_a v  ByPath Lib "std bltin. dll" (By Val wAs Long)  4I"mit GCommand$Ev: .' ;5constaAAfor e H!2EnumB esh ' 'B not rtaye A teW^a AKA@\n Q Xmod F DVEnd *CurNr@/ofaDi'B5*9AAY*e(pea bfe@rBn)C m~LyATf"DbuBHB B S Integer s - l Y ls, weight color l(0 To 12xSLngR ns 7"pl@rAZOM0 GIn4a`lizesB,a_rrayEDSub Tms(*Ka Fm1)BUSLINE\ _380K@a 233r (115r 469E534.s 613.8 7P4.1682.49 80.410s 09129CIRCUITEFFae` 3@GV mM AERFADRDA C2CC!AkrAab@r@a??r#?a=/nd(b804R08/!/!Circui>t?\AFDispJEa dia log box wi0o`UZpar MteRQ Thi@Nt callf from getE1l(Check aExisten W1]1^2 nusa_APr oduct to olbar, 40group, "Set$ VoPlt" tt(o scc@n' -{e.3dPu b QSELECTpKPfrm.mfcg= /Show vbModalT17gd= ?us1C ApplyConfigurr, {vfiaif anyqbvage s& 3ed! If itQr@the syPmspks@ _P' (look above S?bq$ d only af0#@ that Po wAu Rq cells!G I %bete3a& !#p$#p$%s GEOn ErrGop} Hl2Q NiUlW2, lC11alsLqS҂bXFoupB.eanobjStyq# ah{a= f!-p ,0>> mpġ1".p`hen _CR+ 4 ' #?t% (los* =DGN.2ticb2.6@0g|s.eq 3d t= 4 F ipLBA()Uؓ ʑ~i0@ Trud RtA (@IfNex0=Not $Tl Fx@oP Q/.:3/C s.L@`"SpQ:DRAWS.5_ r%f8ReportTo@]p&?À0/Ybrt?;=of0DKby9+esococa"PQc4cGsaopqset"'3vidvia 5\e meth od ߵ '' Publ ic Sub D RAWE1LBU@S() O n Error GoTo(Han0dler| Call GETv& MicroSta tionDGN.App .CoLmm :e. r tPrimiti ve Me Exit ~ s:ZCode s.Log "SACS:.IMhEvents_i"CRepor tToPromp`tCurr @I8mpl_wh en user specifies (ers) a data8UcD PAE(F As{ނ3d, ByVal View $+~:If [ T> ' Cre!e@ i`dyifigu@Rl< czb !hElem`)2(h,C) $IJtrac&oADraw$YDynam|ics a (j[GElse--$+-.Modi fyVertex 1'' Per`&ly aa0 seg)@t we Vs A =7B2`elRefe@ce.xAdd4cG ''  the B!.Red1 mLsdd A NolC dNnextl ike c o` tinue AhyC JQd0g Qa?If_or-__oo oM} e rubberb2q/ey2/LՃ/L/L@!LeN!!NN.M#OOr 8A߬8P,@2N%e4 4 53.P <-C0(eD $C2o$CSqMd$E -$$.Q!rd/p##Key8in(m !Str0(T'V...  -2{res is su^yr|O O C Rt'oo_' @tartGp_WE0  g "i$Estop4pe! Cleanup A^PZ xpsFdV@qxyCon2' ( t@ paramDet to{ose ofbp?|(VVVmddlETep _aр |ByPath(?Ptr(mJ) <> 0[ R.Rai@ errInvdP% , , ")"T: 4  notpund!5N} ! er7y7L1_O E M sgBox       X        x  ME   (  < < < <  h D N  L X o{ %     Y     X   h , D    X  X x "   >        @  `   x                0   H  h                   8  P  p                 0  P  p                  @  X   p                    "   (  H   X h x p Q -------------------------------------------------------------------------------- Description: % ; turn only view no. 1 < = ; tile screen, fit view, compress, file design 0z Parameters: Returns: Q Misc: Used in stds/gen.sbm side bar menu. Has been ported from VIEW1.UCM Q --------------------------------------------------------------------------------   7 Temporary point for supplying to SendDataPoint routine ] @   Turn only view no 1 view off all >B@@ view on 1 >B@@  Tile screen window tile >B@@  Fit view  fit all >B@@ L  >B@   Turn on levels 1-63 on="Level *" >B@@ L  >B@   Turn dimension data on set dim on >B@@ L  >B@   Turn dynamics on set dyna on >B@@ L  >B@   Turn enter data off  set ed off >B@@ L  >B@  Turn Fill on set fill on >B@@  L  >B@    Turn grids off set grid of >B@@ ! > L  >B@ (   Turn Level Symbology on  set lvlsymb on >B@@  L  >B@    Turn line weights on set weight on >B@@ L  >B@ x   Turn patterns on set pat on >B@@ L  >B@  Turn text on set text on >B@@ h L  >B@    Save view setup by name x  sv=x >B@@ % L  >B@  ref snap on all >B@@  File design  file >B@@    Update  up both >B@@  |      Report that function failed GENImpl.Run B@ h B@ o  Attribut e VB_Nam e = "GEN Impl" O ption Ex@plicit@Priva Mod ule ' -L SDescTri: ; turn on ly view no. 1'ile Jeen, fit., compress @designParters; Re4Misc:CUsed i n stds/g en.sbm s ide bar menu. Has b< port from V IEW1.UCM#7OPub S ub Run() Y' TemBary Fint for sup plying t o SendDataPoroutin xADim ptA As 3dcc CadInput@Queue.Ke "moff al n 1@ DTxC window t  Fą+GOK,@TI levels 1-63on=""L *""/-O8VJ Bdisdata hset ` dDdynamics_BUY-en y ff? `t R?:Filvlf# gxrid*@9a of?:RSymbologylvls l weighztI"A?Ipat Jn_a]textW $++Savet0up by ;e x\sv=x_^I`zWILa ref snapb' [H{t 6e UpAmtothOrrpsGoTpo hE Ex0d@wC 0!' Re! tDhawunc•fNahttCo.Log.Run4ToMsgBoxCurrN1End                                                                                                                               p           x  ME  < 0 4  , $ ( 8  S<  S<  S<  S<  <  <  <  <  <  ` (  D  k    $ %  `(  6 X : ` x ` ` ` ` ` `h H 0   % <  5 ` ` ` ` `P ` ` `h `     >  4 ` `t ----` ----` D ^x - e combob`  ( % hand D     )F  Q - , % N X 0   )F P x  , % P   )F ! d , % R (   )F $  , % T h   )F com , % V   )F   , % X ` 8   )F X st  , % Z   )F  , % \ 0    )F ( ---  , % ^ p   )F ---  , % `   )F ---- , % b h @   )F `   , % d   )F d Er , % f 8    )F 0   , % h  x   )F   , % j     )F  2   , % l p H   )F h % Te , % n     )F   A , % p @    )F 8  , % r     )F   , % t     )F   , % v x P   )F p  , % x     )F   , % ,L h     )F @ H  , % i z  , `  P u   % `P `    Y  )   % @ p    )    0 % iV  ` ` ,    i  `V `  ` @ @ @ @ `2   4 %    T  )   %   X `  )x   % `,     8 % `| ` ,  H   iV h  i "     )0   4 % `2  `6  *  `   )0   4 % `2  `6  ,4   ,   i:   i<  8  i>  X  i `@  `B  `D  `F  `H  `J   -    0 (           8   @   H   P   X   `   h   p   x "     "     "     X   * 8  h          X  "       (   X 0   .             X  "  x    4          8  $ 0  X   h                        X   x 6             X  "  p  x                     (  @  H  h  x                X   @ 4 X            X  "  8  @  H  P  X  `  h  p   x           0  @   `  p                    (   0  8  X  h  x      X  ( 4 @  x     X "   (  0  8  @  H  P  X  `   h           (  8   X * h   &           4   P  , `   h    0  @  H   P   X  `  h   p X x   6     8  @  P X  h X p "                           @  P   `  p                 0 * @  p 4    0       (  0   @  H   P  X  `   h X p   4     0  8  H P  ` X h "                       @  `  p                  "      0  8  @  `  p                *   " 0  X X h   8     (  0  @ H  X X ` "        "        "        "       0 "  8  @   P "  X  `   p "  x      "        "        "        "        "       0 "  8  @   P "  X  `   p "  x      "        "        "        "        "       0 "  8  @   P "  X  `   p "  x      B   (             X   ` ( x            X  "  H  P   X  ( h "   "            8  P  p   x          >       ( & @  h    p X x  .  !  0!  8!  H! P!  `! X h! "  !  !  !  !  !   !  !  !  "  "  0"  @"   H"  `"   x"  "  "   "  "  "   "  "   #   # 8 (#  `#  h#  x#   #  #   #  #  #   #  #  $  $  $  0$   8$  H$  X$  h$  x$  $   $  $  $  $  $  $   $  %  %  (%   8%  H%  X%  h%   x%  %  %  %   %  %   %  %  &   &  0&  H&  P&  h&  $ p&  &  & " &  &   '  '  '   '   ' ( ('  P'   `' X h'  ' 8 '  (  ((  0(  @( H(  X( X `( "  (  (   (   (  (  (   )  )  ()   8)  H)   X)  h) 8 x)  )  )  )   )  )  )   *  *  *  0*  @*  P*   X*  h*  x*  *  *  *   *  *  *  *  *  +   +  (+  8+  H+   X+  h+  x+  +   +  +  +  +   +  +   +  ,  (,  0,  H,   P,   X, & `,  ,   , X ,  , @ -  P- 8 h- : -  -  - -  . X . "  h.  p.  x.   .   .  .   .   .  .  .   .   . X /  X/ P p/  /  /  /  / /  0 X 0 B  h0  p0  x0  0  0  0  0   0    0  0  0  1  1   1  (1  @1   P1 H h1  1  1   1  1  1  1  1   2  2  02  @2  H2     P2  `2  x2  2  2    2  2 , 2  2  3  3   3  (3  @3  P3  X3  `3  p3  x3  3 0 3  3  3  3   3  4  4  4   (4  @4  P4  X4   `4  x4  4  4   4  4  4  4   4  4  4  5    5  5  85  P5  h5  5   5 z 5   86 X P6 N 6 B 6  @7  H7 " P7 Z x7  7  7  7  " 7 R 8  x8  8  8  " 8 X 8  9  (9  09  " 89 T `9  9  9  9    9  9  :  :   :  (:  8:  @:   H:  `:  p:  x:   :  :  :  :   :  :  :  :    :  ;  ;  ;    (;  H;  X;  h;  p;   x;  < ; 6 ; <  0<  P<   `<   h<   p<  x<  <   < X <  = @ 0=  p= . =  =  =  = =  = X = "  H>  P>  X>  p>   >  >  >   >  >  >   >  >   ?  ?   ?  0?  @?   P?  `?  p?  x?  ?   ?  ?  ?  ?  ?   ?  ?  ?  ?  @   @  @  0@   @@  P@  `@  p@   @  @  @  @   @  @   @  @  A  A  0A   8A  XA   hA   pA $ xA  A   A X A  B . (B  XB . pB  B  B  B B  B X B "  0C  8C   @C  HC  PC  XC  `C   xC  C  C  C  C  C  C  C  C  D  D  (D  T 0D  D & D  D  D  D  D  E   E  0E , HE  xE . E  E  E , E  F . F  8F   @F , XF  F . F  F   F  F  F  G  G  @G  HG  " hG $ G $ G $ G " H $ 0H $ XH B H " H " H   I $ (I * PI & I * I ( I . J & 0J * XJ & J ( J , J " K * 0K ( `K , K . K   K   K  K  L   (L B  0L  8L  HL  XL  hL  xL  L   L "  L  L  L  L   L  L   L   L  M  M  8M  HM " hM  M  M  M  M   M  M  M  N $ N  HN  PN  `N   hN   pN  xN  N   N "  N  N  N  N  N  N   N  O   O  O  O  8O  ( HO   pO R O * O  P   P  (P  0P  8P   HP B  PP H hP H P  P 2 Q 0 HQ > xQ 4 Q D Q 0 8R 8 hR : R  R $ R 2 S H XS   S   S   S  S   S  S  S  S  S  S  T  T  T   0T   8T  @T   HT   `T   pT   T   T  T  T   T T x ] ABHRVGKLNXD `  Module variables ] x ]  ]  ]  ] P ] p ]  ]  ]   ' m h H '  m P   '  m 8 Q -------------------------------------------------------------------------------- Description: $ 'Exit' button handler Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------  A@r o  Q -------------------------------------------------------------------------------- Description: ' 'Process' button handler Parameters: Returns:  Misc: Q -------------------------------------------------------------------------------- P x  - It will enable logging for validation routine  A@  ]     Get the new texts  ! d$   0.000 $   ,  . $   ( d   Write to Application element A@  hor: A   Write to screen strings'' A@     Set new scale  ! d$  ' !    TODOAV!   ! d A@b  k  |   B@ nd theo  Q -------------------------------------------------------------------------------- Description:  0 PlantNo combobox changing handler Parameters:  Returns:  Misc:  Q --------------------------------------------------------------------------------  ]  ]   !  %   ' t t   Update the comboboxes2 S  t %  ' it    or  Set the controls $  ! D " ( dic $  ! F $ ( dd  Clear the controls  Er " ( d $ ( d ''k p d h   Clear the controls format " ( dsage $ ( d Ak o  Q -------------------------------------------------------------------------------- Description: " - Type combobox changing handler on f Parameters:~ Returns:  Misc:  Q --------------------------------------------------------------------------------   ] ` ] x ]  ]  ]  ]  ]    Clear the controls d next * B@, ind th ' ( . ! d'  ~ 0 ! d' $     V    Update the comboboxesce b    $  %  '      $  ! ^  %  '     --   Fill the Size combobox --  $  % ^ ! \' ----    ti $  ! V * B@2   d  ' ( k  d  ' ( k  d  ' ( k  (   Clear the combobox list 4 B@, read l * B@, 3  B@, hFid p   Try to set back the texts * ( k 8 o 0 Q -------------------------------------------------------------------------------- Description: Q - - Size combobox changing handler ---- Parameters:----- Returns:  Misc:@ Q -------------------------------------------------------------------------------- 0 ] p ]  ]  ]  ]  ]  ]   ]    Clear the controls   B@,  % Do . ! d' rror 0 ! d' he l * ! d' d Er    g, "   Update the comboboxeson",    $  %  '      $  ! ^  %  '     G  $  % ^ ! \  %  ' hx h    h  $  % ^ % \ ! X' ra    $  ! P  B@2   ( posi  - Check the border name (can not be DOC or XLS) $  8 ( : h  % Test if border starts with XLS or DOC  ! d   % ^     ! d   $  $ N  DOC    ! d   $  $ N  XLS      Disable the process button 8 ( : k  k  k  k  k  k  o  Q -------------------------------------------------------------------------------- Description: / Border combobox changing handler Parameters: Returns:  Misc: Q -------------------------------------------------------------------------------- X ]  ]  ]  ]  ]  ]  ] ( ] @ ] X ] p   Clear the controls 4 B@, 4 ( d . ! d'  0 ! d'  * ! d'   ! d' P      Update the comboboxes    $  %  '     $  ! ^  %  '      $  % ^ ! \  %  ' h h   h  $  % ^ % \ ! X P %  '      h  $  % ^ % \ % X ! R'     $  4 B@2  4 ( k k k k k o Q -------------------------------------------------------------------------------- Description: - Index editbox changing handler Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------  ]  ]   ]  ] 0 ] H 0 ! d'  . ! d' t t   Update the comboboxes  t  $  %  '      Refill Type combo 0 B@, $  ! ^' ^   ^ $ ^ ! V 0 B@2   0 A@@  0 ! d  0 ! B  0 ( k  d   Clear the combobox list 0 B@, * B@, k x d p   Clear the combobox list 0 B@, * B@, k ( o  # Private Sub optInstallation_Click()  edtDwg.Enabled = False  edtSheet.Enabled = False  End Sub Q -------------------------------------------------------------------------------- Description: 1 To upper case conversion functions Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------  F $ L  ' F o (  F $ L  ' F o  X F $ L  ' F o   F $ L  ' F o  ( F $ L  ' F o   F $ L  ' F o   F $ L  ' F o h ` F $ L  ' F o H  F $ L  ' F o ( 0 F $ L  ' F o   F $ L  ' F o   F $ L  ' F o  h F $ L  ' F o   F $ L  ' F o  8 F $ L  ' F o h  F $ L  ' F o H  F $ L  ' F o ( p F $ L  ' F o   F $ L  ' F o  @ F $ L  ' F o   F $ L  ' F o   F $ L  ' F o  x F $ L  ' F o h  F  a $ l  F  z $ l   F $  $ N $ l ' L d  F ' L k  i  Q -------------------------------------------------------------------------------- Description: " Form initialization Parameters: Returns:  Misc: Q -------------------------------------------------------------------------------- h ]  ?'   " Load and parse the Index.Cfg file     %  ( |   Prefill the Plants combobox    $  ! B  B@2    Fill the office codes       $  ~ B@2    Select the first item ~ (  (  (  (  8 Get the application element and initialize the controls A@     Resize the form\ !   !   (  k  o  Q -------------------------------------------------------------------------------- Description:  ( Initializes form controls_ Parameters:+  Returns:  Misc: F Q --------------------------------------------------------------------------------  0 ]   ]   ] 8   '  A@   d    Get application data c A@  c k    Fill the data  ~ ! A@@  !  ( d !  ( d !  ( d !  . ( d 0 ! A@@   F * ! A@@   !  4 ( d !  ( d !  ( d ! $  ! $   0.000 $   ,  . $   ( dd  !   ( dk   Set scale ! $  ' Proces  ! A@@  ! F $ ( d !  " ( d !  el lin  1 K T  F  ( ne   2 K T PI (  + n  !  ical L  1 K T X  F  ( Electr  2 K T  +  (  Stean p !  X  F  1 K T Steam  (  +  0 K T Comp ( rtrn    Initialize new controls !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d B@, Comp  VECTOR B@2  F M  HYBRID B@2  k !   VECTOR st  VECTOR ( d + d   HYBRID ( d Leadek    Set the border combobox text + X $  ' PILD\Pr   ! B  Vess   %   $ N P$ N  el Lin   ( F y  k   |    frmTba.InitializeControls B@ B@@  ILo  Q -------------------------------------------------------------------------------- Description: Cabl 2 Fills right-side controls with data Parameters:+ X  Returns:  Misc:Capi Q -------------------------------------------------------------------------------- P 8 !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d ! $  ! $   0.000 $   ,  . $  ( dd H !  ( dk 0 !  ( d ! F ( d !  ( d !  + X   1 K T D\Fenc ( + Z   2 K T Vess (  + X n  !  el Lin  1 K T  F  ( Line  2 K T J   ( Line n P !  Arab  1 K T  +  (  VOD\  0 K T avy  ( n    Initialize new controls !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !   VECTOR r  VECTOR ( dphtha d   HYBRID ( d. Lighk  |    frmTba.FillExtraControls B@ B@@ . Wholo ` Q -------------------------------------------------------------------------------- Description: el ( : Sets the combobox selection by string value Parameters: % + 1 cmb [in] - combobox control 3 strName [in] - Text to search for Returns:  Misc:VOD\ Q --------------------------------------------------------------------------------  ] @ ] X   ' n Medi  ! B  VOD\  %   V ' y ( k    ( ) o  Q -------------------------------------------------------------------------------- Description: e Pi J Verifies if user has entered the correct values in the form Parameters:F L Returns:  Misc: . Q -------------------------------------------------------------------------------- p  ]  ]  ]   ]  0 H ` x ]  '    Drawing Number gh ! d ~ ! d$    VOD\Ar B@ t Sweez  k   Sheet No ! d$    + X  ! d$   ! d   eet  Do you want to set sheet as ! d$       $    ! d$   ( d+ k 0 k ( k  B@ 4 + X z  k    Revision number ! d$    n Ligh B@ 5 + z k   Index t Pr . ! d$    . B@ ne 6 z p k h  Verify type F 0 ! d  ne 7  Please select Drawing Type B@6 F 0 B@ r Gasoz k  Jo / Ewo ! d$    F B@ l Gasoz d A@"  Naturak   ScaleF  ! d$   X  F  Please enter the correct Scale B@6  B@ VOz  k  ! d$ $   < B@ VOz k ! d$ $   = B@ VOz k ! d$ $   efri B@ > + X z p k h ! d$ $   > + B@  Butaz 8 k 0 ! d$ $   tane B@ ? + z k   Check the dates+ ! d$ \ '  opane ! d$ \ '  r@ + ! d$ \ '  e Pres ! d$ \ '  VO ! d$ \ ' 2 A +   Check the date chain eum    ! d$ ,  * ! d$ ,  * ! d$ ,  * ! d$ ,  * ! d$ , ' V+ Z   V  ** '  RILL  R If first date is empty or there is an empty date in the middle (date length is 8) V  $   *  V  ****    V        X / Empty dates are not allowed in the dates chain. B@6 G + z  k    ! d$ ,    SWEE H "Const. agency/date" must be the same or later than "Certified by/date". B@6 X  F B@ CONDENz  k    ! d$ ,   VOD\ @ "Certified by/date" must be the same or later than "Engg./date". B@6  Abov B@ pelinez p k h  ! d$ ,    F F "Operations/date" must be the same or later than "Const. agency/date". B@6 B@ ipmentz  k  2  ! d$ ,   Line A "Other/date" must be the same or later than "Const. agency/date". B@6 ipme B@ O + z 0 k ( ! d$ &   rline B@ F [ z  k  ! d$ &   P + B@  Roadz  k  ! d$ &   Z  B@ / Strez  k  ! d$ &   Trai B@ + X  z P k H ! d$ &   B@ lks & z  k  ! d$ $   s & B@ + Z  z  k  ! d ! d$ (   P\Fenc A@*  + Z  B@ r z  k  . ! d 0 ! d * ! d ' V  5 If Not VerifyFormatType(cmbFormat) Then Exit Function r Li 0 If Not VerifyFormatType(cmbFormat.Text) ThenF  cmbFormat.SetFocus  Exit Function Lea End If'  z    frmTba.VerifyData B@  ErrorCodes.ReRaiseP\Pai @ Q -------------------------------------------------------------------------------- Description: rume 9 Writes the data to the application element Parameters:ress ' adData [in, out] - text data Returns:  Misc: Lin Q --------------------------------------------------------------------------------     Fill the dataI ~ ! d (  ! d (  ! d (  ! d (  . ! d (  0 ! d (  * ! d (  4 ! d (  ! d (  ! d (   ! d (   ! d (  $ ! d ( F " ! d (  ! ary Li  1 ( N d  2 (  k p ! Ladd  1 ( X d H  2 ( ink 0 ! Fenc  1 (  d   0 (  k ? ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d  VECTOR e  VECTOR ( > d >  HYBRID (  k >   Set application data A@  > | > >  frmTba.WriteAppElement B@ r: I B@@ S lineo H> Q -------------------------------------------------------------------------------- Description: SACS ( Writes the modified textsB@ Parameters: ' adData [in, out] - text data ' Returns:  Misc:' Q --------------------------------------------------------------------------------  < ]  ]  ]  ]  ! $  '  ! F !   A K T  A@  ! n' Defi  B K T oint !  '   C K T ' ! p'   D K T < ! r' SACS  E K T pl.IPr ! t' ndEvn ;  M Try to obtain the SACSV8i_DIR environment variable and get the cell lib path ith 6  arti  C:\SaudiAramcoV8i\tbv\tba.cel ' | Cd 8; 6 tbv\tba.cel ' |and ask ;   Attach cell libraryF% J | FB@.  P  Set cells !   1  ! F   emg !   _EMG  A@T Wd :   emg !   _EMG  A@T k H: !   1  D   res !   _RES  A@T  Sd 9   res !   _RES  A@T ink 9 !   2  s from   con !   _CON  A@T  ' d p9   con !   _CON  A@T  k 89  Write textse !   1    r  x  A@D  d 8   r  A@D B@t k 8   jo !   A@D   type !   A@D  (   ddesc !   A@D   gdesc !   A@D e   pdesc !   A@D B@t   loc ! F  A@D 7   plant !   A@D B@t   index !   A@D !    drawing !  !   - !   A@D 87   sht !   A@D F C   rev !   A@D er spe  New texts   Da_eng !   A@D 6  Da_eng_date !   A@D rne E   Da_cert !   A@D r  Da_cert_date !   A@D store  Rfkd_const !   A@D   Rfkd_const_date !   A@D   Rfkd_op !   A@D je  Rfkd_op_date !   A@D     Other_by !   A@D   Other_date !   A@D  DrawingFormat !   A@D A@   Date !   A@D 2 SACS  RevisionDesc !   A@D oint  DCCNumber !   A@D   RevisionNumber !   A@D rban   RevisionNumber2 !   A@D R | 4 4  frmTba.WriteTexts B@ B@@   o 3  V   te  00 V ' V V   e   0 V ' Vk 3 V'  i p3  A@  CSLine ! d$  ! d  ! d ( dd 3 ]  ! d  - $  ' 2 d ba 2 tati ! d  - $  ' 2 2   sed. ! d  -  $ 4  ' 2 : C]  F ! d 2 $  ' 6 sent i ! d 6  ( d' d P2 ! d ( dk 82 d 02 ! d  - $  ' 2 ! ( 2 2  ! d  - 8 ' 2 .IPr ! d ! d 2 $   ( d d 1 ! d ( dk 1 k 1 k 1 k 1  A@  when o h1   A@   ' ]  ! d$  ! d  - $  ' 2 ! ^ 2    ' 2 d 0  ' 2 k 0 ! d  - 2 $ 4  ' 2 ' T 2 0 ]  F ! d 2  $  ' 6 6   6    * Do you want to set DCC sequence number as 6 $       $     ' ! d  2 $  6 $    ( dameterk / k / k / k /  A@    So /  $ $  ! B ------------------------------------------------------------------ A Purpose: Return location of nth occurence of item in a string.  Coded by: Nitin , Arguments: pStr: The string to be searched.   * pFind: The item to search for. 7 pNth: The occurence of the item in string. pa . Input: From the debug (immediate) window:!  > x = "The quick brown fox jumped over the lazy dog" ) 1) ? fFindNthOccur(x, " ", 3) 2 2) ? left(x, fFindNthOccur(x, " ", 3)) 3 3) ? mid(x, fFindNthOccur(x, " ", 3)+1) -  Output: 1) 16  2) The quick brownB@ + 3) fox jumped over the lazy dog ppropr B ------------------------------------------------------------------] x ]  ]  ] D ! ]  ] D  : ' @ < ' B > ' D ' H ' J J D b  $ @ B  ! F ' 4 x + d +  @ B ' F   H F ' H J  ' J H @ F B  $  ' @  ' H ' 4 k P+ H+ i @+ 8+ ] Attribut e VB_Nam e = "frm@TBA" Bast0{724 DC9AF-FE C5-405D- A3BD-B1E 1CDC15CB 2}{43867 0EB-0068-4C7 @0C4 -753DA2F@A80AE} G lobalSpacoFalse CreatablPredec$la Id Tru BExpose0TemplateDeriv Customiz D Option HlicitConst OfficeCo des As S ngABHRVGKLNXD ' Modu!variFs Dim mCa- Indexes()+IND@EXINFOPlantPLANTBorderBORDERHSiz*IZEca ' !Dou mA8'adDq APPDATAD adAppbV @dfy BooleanAProp erty Let Text(P) m=  End /" faiDara-d2(43*E= D*' -? *IDesctriG:&g '@Exit' t WhandlerP#met D!ReturnsMisce?1) Puv S@ub btn_C`7k(*Unload MA>=Bc !?)a )@Ocess?*a ?*?".**O`rror GoTo EAHEBaFA+ 'It w@ill en¥lPoggif validl ro0utin3!Se@tShowM`#age 1# A$x@c&If cjThea ' Gthe new tedtS.@Re ce(Forma@t(Val(J) , "0.000"!,"."L Writo ȇ elemen@ E3#' & @seexn ss*B s mG 'TOD8OAV$bFi1 _cmb R, 7If D1;M#`Bq$2p. ortToMsgBoxCurr 0 -;UppAle Q;e/D = Cfg.> IbBya(ms>,2 X:> -1 ' 2ntrol0A]C().XLocOnP%EBUq ' Crn t>" yP );J Eq D{>/>>Type> >>> ~> O>iN -1 Then >T' Fill the Size comboboFx) m = (jHs@For i B o UBound( T cmb#.Add Item (i).t.NexBt Elseb Clear CTru End If    5ӄ' *ge0 lis9@ITitle1. .OBorder ,' Try t o set batcktWtLw@#B T0C7S ub ' -? JDesc ription:EF changing dler ParatersAR eturnMisc/K P rivatub S_Click"($bDimeAs Intega!`.StrC/db~S"PC   C2 nu) BORDERI8NFO# [ntroldK !S = edt.T~=a)!k"b!h`oLen(Ņ )`0 A A msUpd7se(d$*= TB , Leftf, 1) d Ը4  ?cg{?nd*p!*a!$BAa@N`rr NH7E ֩aGXOC YV] !'Che\b_ nO (can nop^e DOC zXLS_R btnProce ss.Enabled _tD  'Test if starts with Q:'!@ := 36 (R Comp(UCase(Mid(7, 3)), "") 0) Or _?u uE 'D,is"xp butto FaX{ [ = q Sc!yw1 3:  σi| n0σpem!SDP-km$f߈_rr(R9)PADE3""sS &$mPa@ܯA OS 0P' x0 篊z6?OOQ oop gOrB nf#" ByName(m Indexes(n@).arrTyp -1 pThenR< y 4= 8(lDe scriptiorFor i : M o UBound( CgpcmbT itle1.Ad@dItem (iNext|'ListÀI0 End If  Sub ' -? Jh:WA editbox changingB dler PtartAR@eturnsM8isc/K Private H edm_C)De(ĂDimAs IntegA-W6AT Str 6m@/A)TYPEINFOCC= @.!;g=&xLeTn(D)`y0Ly' Upda!the@ combo`6esc A= TB ACfg.Getgb<,, Left , 1)k!C' Refill !C!eCleaHAe *@qv+2h %B .`- SelectC/Val*e=_ KD;EB)a AC`t0?8EElse)' 2 H l`P8@.LI_el P '"opstalla_Clhicka'a"`D wg.Enablded0Fa"$Sheet QUZ%q To upper ca2s?nv YPw funca`@' ZZZ ZA _KeyPresPs(By2 AsciiSMS3OB?{O;;cmbTi0tle1yFuncaKJzcz }I{ {If'|>=c("a")L Aŋ <z ThenC``(U"Chr)DElseUe IfA8' - ?( ' Descrizp*:g A initializzParametersa!MiscE_?C)User_A CA(.Dim i M>C,mScale61# ' Load a?parse t he Index .Cfg filD8Me.Cab&`TBA.Ab (mSizes, m""PlantABord '7% lBC comboboxC#= 1`_ UBound(m#D 6rbNo.AddItem  (i).strN umberC Ne xt# ' FilCoffice1@desLen(OBCo  #fMid, 0i, 1SelectB!first ip S List`0 optRepicPted.~uqTruEDqKDR`' GeS applic0 mentR#2#cont(rolIe4eCzHNot m bVerify F' @ %3C(Width FQ91. + 2 * $Left + 4cFړ/F9A/F5 gs f 0'U' FFF FFOn E rror GoT8o h 1HadyaHAPPDAFCN@9ByNe z>, cKFS Araw;T Mp0DrwNo SheetotrRevis ytr&bH.obCm V`y4peT ale S rLine1"22JoEwoJ3s`*IsfLc(HowMuch6)M`S!yURe@place(@gmat(p!?), "0.000" ," ."4e,# kQQ+' S_s # Q CS y$s Loe?UroS s i5l assifiedS""1"Q`rv v2Gfidry  3  Select Case ad Data.str Emergenc8y  "1"DToptED Yes.Valu e = True% h2hNofEn?r&CS Class?BSCoQ`Re*icted113"ϧ0`nfPGn QrsS ? 1 t b1:_ _ Q =/ t? 4 ϲaO 1O Q߲߲vq$r瑰*p '=HEnrD1rrR_ b (o`x2&E?r_ RhrDt`tPOr"s c[7RZF,U_"XYzOOώ -( ' De scription:< Set s the co mbobox selecZ by string valuexPa rametersKcmb [in ]`-Tcontrol `N Q7 - Text to arch for5ReturnuMisc@) Pri vate Sub SCValByV(tAs Box,c "S) Dim i Intege e nIn8dex = -1For&= 0 To .ListCou`nt - D IfF(i) ='Then FiExit GEnd If>NhCC"4= C Q iOnVerif ies if u ser has "e@bredrr ÷ nBm? A!GFun3yData()GBoolea:On Err DGoChb3aPl!cSlIn PosLongGVdtDA, C R Op |Op@aKbfMSIms.#(*cUFals rawaNumbi]Not No(Ve.,bO fficeCodreb) Kb`Focus!b1b#' Sheet Nof`bDigits@Len/<> 3b `Msg@ ("Do you wa¯t s`f" & Ad dLead/Zer+ , vbYesNo Or@Quesȡ6@ .`? d* I0m< c' Revis nQ%>O(` _ Y 'RY2r" / o`0   ': typ=+cmbT0mjjL;CportTo3+ 0, $"P PseT D? "!%_ _ _ ' Jo / Ew=ZP1Jo ?0Y EO _TS `GcalqIsR@pc S `ssZsX 3lS 'dAcat DA , True[i2_kZ]Ccd qD~ACR*2D3OpTO#c'S ' Check".dt`iFrom (qCU!#R|0= R6dtd chait%= 6imm + "*"P TrW1)G+_MV n. S׫=h In1Pa**"'%fir$stb impty prean eBic middle (2length8J(Leftb(, 1A'`1P"* ")( < `nQ:)P7> 0MYJ portToMs gBox 0, "Empty d ates are not all owed in thepchai@n."  E xit Function,End If If dtDR < AC A :Tri(m(eD r.T ext) <> "" TheF` ErrorCod es.Re"" Const. agency/ Bmust be same or Jl gr an dC@ertifimb iLSetFocusdHw yguy yACy^ yEngg.uD$:;ROpCxR xOp;OperaswPx&y= NiF ormatANRevl, True)@OiOCC^CCNumHberb, ` JPoEwoU!D_bValC  ._Rstr =Index + cmbTypeSizݩ's(0  ~' t"aX /H aQ k9 ,hb:(L og "frmTxba.R eRaise qǎ ' - 1DescripAo@ 10 Wria4a toapplicr elemeDntPar tHersad[ in, out] - tpqaReturn MiscA  Priv@ Sub "AppEs ( As APPDATA)On R GoTo c' FillP c. 3!p#p(Office *S DrwNo;rawingN?Sheet x JisC Z>>M70 @#8AitleLine1 1?u0T2P 2;JSHo wMuchSc alK trPl|ans Lo$22S b8#H9S `PoptRePicted2.`^ueliClass= "1ElF 1 }2`AֱIELDY Emerҋ lcy Ԛ#K lib p@?c I@allDir`("E">= "C:\SaudiA@gco\tbv` |a. k +< "%Attach l!raryC.aYLibAA[C  4@gKEmer"a1Replace!  L, "emg",S @_EMG ], ma#[k" rXv ,@uDbD& Class@7? "res3RES ҁ 3?ze ?leߟ S 2~con qCON "? ? q( ']j~*ReviewO* qaE*r "xo o e t: "jop5Jo, 1 "tytpeT ?r*X9dcitleLine1OOBgOE2OOBpNPla G? "lo L>os//Jp0nt;*NO"inde$WI?d:Q`@'O-"jDrw shSheetrev{Z 17s0ɯc'< N`9dDa_en[cDAEng_н1RQ˟cerkDAC //)s%"Rfkd_PTs R/ / " g_ RD  `P Dopz 'opRDS_byBByOOH#bµ laceText arrX, " DrawingF ormat", adData.str d, dSc@ale, m D Repate &zRev isionDesc E 'CCNumber J&;K%2r&Ex it Sub hError: Codes.L og "frmTba.Writs"ReRaise EndC@ Privk Functa A@ddLead@Zero( As Str@)@If Len ) = 1 ThenC= "0`0" & CElse 2 ,If(@A51 6N edt@JoEwo_AS( ByVal Cancel4MSA s.Return Boolean) SetSh owMessage 0 1Verify(.) 4@ D@-"" M B/9 ARG D im InCCount6Integerh= UBd(Split -")&!B > 0?A ! l = 3 fFind NthOccur0, 3` )lSegme( `: f= Mid T >@ p hj  9T9bSFA In/(1,x8vbnCompare.r p`&k._:2c ?2b@z22!e1^^SuboQoQkQOQa GG<SS7LI'&B=IP %2/3 zGz_" ,HZ* 2 IyIdt2H + 1K2q|UG) /=, D)?_{6/[<98ublic{$#pStrǑ9` , _7)q{? pppsaD<='-  ' Purpose:A locaof nth o|# item in a0.1ad by@Niti ' Argu{s: Q:Q#4 p)be )arched"R, for `{ the InputAFrom ad ebug (immedi) (dow'h x,"quick@ brown x jumped overlaz`y dog 1P) ? k%xH  a2lef|t( ?31J3]Am`?v+G'0 Out` 16?a fo' VHold3f[5cint2QpSay 4Keep~nv>=b-% q 2u= pNth intKeep = 0xnHX Do While n <Hold` If InStr(str., Find) ThenT Zf2 Occur Exit Do-Else9 Say 2m1g p -+ A$n + 1 b13Midi>+ Len p) l;End IfLoop   Functio  <   "   L j p GetCurrentProcessId j< GetLocalTime       x  ME (   (  < < < <  ( `K `H `H `H @L HL ntisHL X HL ModHL  HL  8.HL HL ? BaHL ch mH8L s owHL  HL H~L l er  ` ----` ptio` Note` ` ` ` `  +     (  )   %  X '   i  ` ` ` ` ` @0  p  6    i   i   0   p    i   10i   +H      i    it  ` ' +     i    i   $ i   `     % p H  1  R   h p           F    `  x            $          8   P   h          L  (   8  @  H  P  X  `  h  p  x    H   (        \   0  8  P $ X  "                         *   8  P  h  p  x                             0 $ 8 ` "  p 2 x     8    $  0 "  @ * H   x  8    $   "   "    8 @ 2 P   $   "   4       ( 0 2 @  x $ "  4      " (  P * X (   $  B   (  H   `   h             B     (  H  P p p f   H  X  p 0  *   ,  & 0 * X 2  6           0  ''' L A module which holds all constant error codes and error reporting functions  Author: Rimantas Benentis  '''  X  Option Private Module 08]D   ]D   ]D  8.1.1.110 ]D ARAMCO SACS H ? Base of all errors. Each module should have its own error space  ]D   `  ]$ x   General errors0 --]$  ----]$    ------]$    riptio]$    8 In XML file  ]$    B]$    ]$      % ]$   8 1la ]$   P h Custom errors ]$  d h P ]$  e    '''  E Declaration is needed to get current PID and for getting system time  a  '''  "  ^  ^  ^  ^  ^  ^ ( ^ @ ^ X p x p   ''' is ILD  Logs current error ****** V Parameters: where - a string representing source of an error (module + function name)  Raises: Nothing  Author: Audrius Pundzevicius %  '''   ] x ]  ]  ! '  ! '  the ! '  ]    $  '    $ Append the error message to log file    ----   We got a file name]  '       V  k X P  H [   (   (   (   o   '''   Reraises current error  Author: Audrius Pundzevicius  ''' t  !  !  !  !  !  B@~ o H  '''   2 Shows the message box with formated error message  Author: Audrius Pundzevicius '   '''  0 !  ! $    Error A@ o  '''  2 Shows the message box with formated error message  Author: Audrius Pundzevicius   ''' do p  $    Error A@ n ero   ''' N + Shows the formated error message in promt 7  Author: Audrius Pundzevicius  '''  2   - Reporting to prompt is cadSpecific operation  !  ! $  $B@& o   '''  % + Shows the formated error message in prompt  Author: Audrius Pundzevicius %  ''' 0  - Reporting to prompt is cadSpecific operation   $  $B@& o   '''  Formats message for displayx $ Parameters: code - Code of an error% n wr ! msg - Error message  Returns: Formated String  Author: Audrius Pundzevicius  ''' R  " The string should look like this:   [Err code] Message] 0   Format error code    Do nothing X  e  [   ]  ' d (  [ $    ]  ' k   t ' i  H ]  $   '  <  PID ]   A  ; Local Time %       !   0000$    /  !   00$    /  !   00$     '        !   00$    :  !   00$    :  !   00$   '      Do nothing    e @ Error number    [  $    ]   ' d 8    [    ]   '  2 k     '  <  Error description A    '  < Error source    '  =  TDO CAD version V  F!   '  <  CAD Application name 2  F!   '  <  CAD application version   '  < Project name ' i _ Attribut e VB_Nam e = "Err orCodes" '  A module w hich hol ds all c onstant el  n andreporti ng functi Z utho@r: Rim >a s BenentLis tOp. Explicit Priva BM C bEnableLoggxA Z@oolean FPalse 0s File SXVersc 8.1 1  FsProject-ARAMCO SACS3'Base of`s. Eas hould ha ve its ownspacj)= vbObB + 1000ub W M$NoC= 'Gdral@fP InvalidPar ter@X NNAve nelRefI %O Registry KeyNotFou =  2$deT 3  'In XML f~OCfg Loaded *4O  A,se& 5 Du LevelI6n  6 #DGNFormatL &7O NerCtls 8A'Custom;TBAwYearvIntegerMonthDayOfWeekRHou9 in@SedMillissE _a'##'e F$ GetC&ces sId Lib "kernel3 2" () Long%SubALocalT*nxlpSb.&,){k:sf7B=@ s: ere - a |E `Xresas)cKá(+ e n`@?' Ra ' dh $A Audrius P@zev uF (wh cEDim numbZ(!KDescriCFS,D .h  C?  !logLine>S[C=32(,{@9 ,QOn3X GoTo `Skip_'Appe*the E m(age 0=@VqIfzLen(y) > 0 Then'We got#[b AfnJ7q`= Free~O ZPV 0#f7 , 4Clo'0|A;If }e:;v Debug.s&e$" ]"9(=9""1 /;04er4< ' 4nd4R` Re}b9(#Q # ,  x Help tex@ ? P Shows ('box wi^ds }bI)@q $ ToMsgBox7WC zporFMs0Dis0ry(%7 ),@CritiX,Tp Q0bQR(16aP, SBF__W _sGin pprom`'!tmpua2G̀Mapt c adSpecific op48Utils.aorTo"e"g#0" !u<pr5/ !2o! P =%%AN3svjy d:P jcPԉa\5 pmsg `r \FReturn H#3 QOHOHTOUF p: EѲ g) As String ' The s should look like this: [Err cod e] Message0 Dim8 @' For mat erroCHIf C U h= 0nD0o no Eltse/>/=@ "[" &V& "] "T>/ Hex(D) nd If3corDi`splayb+&( ms EFu nctio m Private  GetLog Line(numberLong@, desc,8 srrepsultX =5CurrentProc@qId(;vbTab\ 0'PIDCwtimeYSTEMTIMECalBl1calT (1@;me)J'Lzo  )&.wYearP, "0 "i/8" _MonthmDay E*Hou*:'*inuteHSecond?EC@D$<= &HF bs,'b cA%N`su!oc:]w"Cv  bxNyo Bn& ripC{ Av j sFcĪP V8ers@'T DO CAD vc( Applica.Na {f'! H n@_ n.B as`pjectF0 '竀   k      x  ME   P hH hH hH 0    d   p   x             ( ^ This file was automatically generated from product information file for Auto-SACS 6.0 (SACS )jh ]$  AutoSACS Auto  Full version tag ------ ]$ 08.11.00.22   Short version tag ]$  08.11 0 .  Attribut e VB_Nam e = "Mod ule1" '  This f ile was automati cally ge nerated from pr t ct inforJonr  A r -SACS 6.(0 ()cPu blic Con st PRODUCT_SELE ID As S 0 SetI[= Notxhin@@A'G`oTo 0mIsKewA Jx . vb Modeless' A ^mTR aseA1e"A*es@F nP@XTitleBlo`KHelp_ P W`nTB! DWr`~~0f= IyallA@+ "tbv ʛ0, "n" Ap.doc`vbNullSD ,Agh&     T          x  ME   (  < < < <  h                                 ! " # % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l n o p q r s t u x y z { | } ~    D ( U  ^        x  ME  (  $      <  <  <  <  <`  <  <  <  <    R`@  M` Q - D B   )  X   F   % tingiV  it   i 0  ! i8  ! :h    % `b x 6 !   % `  +L  *   )8 H        % ! iV h  A@"i   :    % `b !  6 !   % ` 2 +N 8 0 A   )p    rite new X   % iV   ! )6   2  % i   ! i8   i  !   % P 2   % p    % < !   % ` 2 +R      )( 8  ise s read u    % icatiV X  , Ifi  700  ! $  % 6 A@"  % T@  '   )0 @   B@(     % iV `  ----iR   ----i   ----i8   iV   ads a li   xt f  % `b 68 a Un  % X  i   )   om  % )    - s % )    ns:  % iZ   string ` h ---- --------P   % ----`V --- +H     )    % )    * % ) @   % +\     iV  ipti b  $   id   i  0 ` ] `V te `f db  bloc  6   h - s $ % l R  % +n (    iP  ----` --- `V H `  ' `f     $ l   +    ` ----`f ----  ----  escriptih  p     @         0  P * `          <         (  0  8  @  H  P  X : ` (          N   8  @  H  P  X  `  h  p  x                  X    J 0   F         X  B  h  p  x                      (    @   P  `                   0   H < `               8  P  h    "       L   @  H  `  x               8  P  h                    X  P B h  F    (  8 X @ B        (   (   8  H  X   `  h   p  x             (  * @   p             0  H   `                (  @  X  p       ,  J  2 P                     0  @   H X P   L  4   H > ` <    0    0 X 8 B                                (  0   8 X @   N      6  > X <         X  "  `  h  p  x           $              X   p <      D  4 0  h  p P     X  B  @  H   P   `  x              X    < (  h  p D  4  0   8  @ > P    X  B              (  0   8   P  `  h  : p     &      0  @   X $ h  @             &   (  H  h   p * x      X    R 0     D      4  @  P X X "            !  (!  8!   @!  X!  h!   !   !   !   !  ! H !  ("  @"  P"  X"  `"   h"  p"  x" @ "  "  "  "  "   " 0 #  0#   @# X H#  # \ #  $  $ D 8$ 4 $ : $  $  % > % P%  `% X h% B,  %   %  %  %  %   &   &  (&  0&   8& $ P&   x&  &  &  &  &   &  &  '   '  @' & H'  p'   x'  '  '  '  '   (  (( 4 0(  h( 4 p( 4 (  (  (  )  )    ) X ()  ) < )  )  ) D ) 4 @* 4 x*  *  * > * +  + X + B  x+   +  +  +   +  V +  ,   ,   (,  8,  @,   H,  X,  p,  x, $ ,   ,  ,  ,  ,   , X ,  H- < `-  -  - D - 4 .  @.  H. > X. .  . X . B /   /  /   (/  0/  8/  @/   H/   `/  p/  x/   /  /   /  /  /   0 $ 0  @ 80  x0 4 0  0  0  1  1  1  1 . (1  X1  h1  p1   x1  1  1 " 1  1  1  1   2 * 2  82   H2 X P2  2 R 2  3  3 H 83 8 3 8 3  3  3 6 4 @4  P4 X X4 B  4   4  4   4  4  4   5  (5  85   @5 X H5  5 Z 5  6  6 H 86 8 6 D 6  7  7  7 7  07 X 87 B4 " 7   7  7  7   7 $ 7   8  8  @8  P8  h8   p8  8  8  8  8  8  9  9    9 X (9  9 R 9  9 6 : F @:  :  : :  : X : B ;  ;  (;  0;   8;  H;  X;  h;  x;  ;  ;  ;  ;  ;  ;  ;  ;  <   <  <  0<  8<  @<  " H<  p<  x<  <  " <  <   <  <  =  =  =  , (=  X=  h=  p=  =  , =  = , =  =  >  >  >   (>  H>  h>   > 0 > 4 >  ? P ?  p?  ?   ?  ?  ?  ?  @   0@  P@   p@ & @ " @ & @ $ A * 0A " `A & A " A $ A ( B  (B & HB $ pB  ( B * B   B X B  PC ^ hC  C 6 C F D  `D : pD D  D X D B  E  (E   0E  @E  0 XE  E  E  E  E  E  E   E  pP xG  H  H  H   H B  H   H J H  HI   PI  XI   hI "  pI  xI   I  I  I  I  I  I   I 4 I  I  J   J  8J  XJ   pJ  xJ   J  J  * J Z J  (K L @K  K  K  K  K   K * K \ K   XL B  `L  hL  pL  xL  L  L   L   L  L   L   L   M  M   M  (M   8M   @M  XM  `M   hM  pM  xM   M B  M  M  M  M   M  M  M   M   N   (N  8N   HN  PN   `N   hN  pN  xN   N N x ]$ -C6? ` ] X llin  Const APP_ELEMENT_ID = 102  TODOAV # General application data structure 0 ^ H ^ ` ^ x ^  ^  ^  ^   5 The following 3 items are in the s_drawing_no member ^  ^  ^   ^ 8 ^ P ^ h ^  ^  ^  ^   3 The following 3 items are in the superceeed member : C^    1 - yes, 0 - inst removed^  ^  ^ ( ^ @  H The following elements are present only in a new version of App Element w^ X ^ p ^  ^  ^  ^  ^  ^   ^  ^ 0 ^ H ^ ` ^ x ^  ^  ^  p @ Q -------------------------------------------------------------------------------- Description:  D Function gets and parses the Application data element 4 Parameters: or a ? adData [in, out] - application data structure Returns:  Misc: Q --------------------------------------------------------------------------------  ] @ ] ` ]  ]  ]    Set the default values  1.000 (   VECTOR (   '  ! ! .  ! b ! ! l  ! !    ! . ! !     We found our element ! . 10 (     $  (    $  (    $  ( !   $  (    $  (    $  (    $  ( '  $  ' V ?  5 The following 3 items are in the s_drawing_no member V  $  (  V   $  (   V  $ * (    $  (    $  (    $  (   2 $  (   2 $  (   2 $  (    $  (   2 $  ' V 2 superceeed  2 $  ( F   $  (   E Old format does not have the foolowing fields but it is not an error h   New fields  2 $  (   $  (   2 $  (   $  (   2 $  (   $  (   2 $  (   $  (   2 $  (   $  (    $  (   $  (   2 $  (    $  (  '  x @ k 8 k 0 ( z   '  i  Q -------------------------------------------------------------------------------- Description: ; Function writes the Application data element Parameters: ? adData [in, out] - application data structure Returns:  Misc: Q --------------------------------------------------------------------------------  ] X ] x ]    Find the existing element ! ! .  ! b ! ! l  ! !    ! .  !   ! .  x  d  . k  k  x (  !    A@" !    A@" !    A@" !    A@" !    A@" !    A@"  !    A@" !  !  !   A@" h !    A@" !    A@" !    A@" !   2 A@" !   2 A@"  !   2 A@" !    A@"   2 A@"  ! F  2 A@" !    A@"   Write new data fields !   2 A@" !   A@" !   2 A@" !   A@" !   2 A@" !   A@" !   2 A@" !   A@" !   2 A@" !   A@" !    A@" !   A@" !   2 A@" !    A@"  & Application element size must be even.  C Otherwise incorrect size is read using GetApplicationData function.  , If 701 bytes are written, only 700 are read. ! $      A@" k @   Create a new element    $ & .   B@L d   B@( B@ k  i  Q -------------------------------------------------------------------------------- Description: F Function reads a line of non-Unicode text from file and . converts it ti a Unicode string Parameters: 8 db [in, out] - Data block to read from 6 nLength [in] - string length to read Returns: ) A converted Unicode string  Misc: Q --------------------------------------------------------------------------------  ] @ ] X ] p ' , '     * B@. *  ' , k ,  *$  '  k i Q -------------------------------------------------------------------------------- Description: H Sub writes a line of non-Unicode text to a data block and Parameters: 0 str [in] - string to write 8 db [in, out] - Data block to read from 6 nLength [in] - string length to read Returns:  Misc: Q --------------------------------------------------------------------------------  ] 0 ] H ] ` ] x V ' 0     0 V   $  $ l  B@. d   B@. k   o  Q -------------------------------------------------------------------------------- Description: 6 Function finds the element info by name Parameters: = arrX [in] - array of text positions info - strName - Element name Returns: I Element info index in the array on success, -1 on failuure  Misc: Q --------------------------------------------------------------------------------  ] 8   ' 2   $  ! V V ' 2y ` k X P i H Q -------------------------------------------------------------------------------- Description: 6 Function finds a text by given position Parameters: = arrX [in] - array of text positions info - strName - Element name * dSize [in, out] - Text size Returns: 7 TextElement on success, Nothing on error  Misc: Q -------------------------------------------------------------------------------- P  . 4]  ]  ]  ]   V$ 2 '      z  k   4 Calculate text coordinates based upon the old scale $  ! > 8 6(  $  ! @ 8 6(  $  ! b  F! !  ' b ! >! .  ! b ! ! l @ ! . :  Check if the element matches :! ,!  6!    :! ,!  6!     :. 4 x  k  k     Calculate new element position $  ! >  6(  $  ! @  6(  z    TBAHelpers.GetTextByPosition B@ B@@ i @ Q -------------------------------------------------------------------------------- Description: L Function finds all text and saves them to the ELEMINFO fields Parameters: = arrX [in] - array of text positions info Returns: . True on success, False on error  Misc: Q --------------------------------------------------------------------------------  @ ]  ]  ]  ]   ] 0   Reset the "Found" field   $  ( l  ! >! .  ! b ! ! l @ ! . : :! ,! ' > :! ,! ' @   $  ! l > $  ! >    @ $  ! @     :! d $  ( t  $  ( ly  k  k   k    9 We've searched for all texts, so set them all to "Found"    $  ( l  |    " TBAHelpers.FindAllTextsByPositions B@ B@@ o  Q -------------------------------------------------------------------------------- Description: U Function finds a text by given position and replaces it with a new one Parameters: = arrX [in] - array of text positions info - strName [in] - Element name 4 strText [in] - Text to be replaces Returns: 7 TextElement on success, Nothing on error  Misc: Q --------------------------------------------------------------------------------         H ] P ] p ]  ]   V$ 2 '      z  k    Find the element  V b 6  8$ 4 . : :     Remove the text element :(  : F! B@F k ( t   Add new element t 6  F%  . :   The font might not exist    font061 F! % H :! (    b :! (  ( * dScale b :! (  ' * dScale $  ! h :! (  $  !  :(  $  ! f :(    Level might not exist    Level $  ! dX F! %  :/     . We also need to rotate (we convert to radians) :! , $  ! j   :B@J  :(  : F! B@L P :B@N k  i  Q -------------------------------------------------------------------------------- Description: 6 Function finds a text by given position Parameters: = arrX [in] - array of text positions info - strName [in] - Element name . dScale [in] - Current scale Returns: 7 TextElement text on success, "" on error  Misc: Q --------------------------------------------------------------------------------      ]  ]  ]  ' L  P Optimization for Report: if the text has been found, do not search for it again ]   V$ 2 '      z  k  $  ! l $  ! t' L d    Find the element  V b 6  $ 4 . : :   :! d' L k  k  i  Q -------------------------------------------------------------------------------- Description: 6 Function finds a cell by given position Parameters: = arrX [in] - array of text positions info - strName - Element name Returns: 7 CellElement on success, Nothing on error  Misc: Q --------------------------------------------------------------------------------   . N] 8 ] X ] x ]   V$ 2 '      z  k  $  ! > 8 6(  $  ! @ 8 6(  ! >! .  ! b ! ! l P ! .   Check if the element matches ! ,!  6!    ! ,!  6!        . Name supplied lets test that name also matches $ N ! $ N    Ok this is correct cell . N x  k  d   ' name not supplied test only coordinates . N x  k  k  k x p   Calculate new cell position $  ! >  6(  $  ! @  6(  z    TBAHelpers.GetCellByPosition B@ B@@ i Q -------------------------------------------------------------------------------- Description: L Function finds a cell by given position and returns it's name Parameters: A arrX [in] - array of text positions info 1 strName [in] - Element name 2 dScale [in] - Current scale Returns: 0 Cell Name on success, "" on error  Misc: Q --------------------------------------------------------------------------------      ] x ]  ' R   Find the element  V 6  $ N .     ! ' R k i Q -------------------------------------------------------------------------------- Description: S Function finds a cell by given position and repleces it with new one Parameters: A arrX [in] - array of text positions info 1 strName [in] - Element name = strCellName [in] - Cell name to be replaces Returns:  Misc: Q --------------------------------------------------------------------------------            ]  ]  ]     Find the element  V 6  8 R$ N .       Remove the text element (   F! B@F k  R V     Add new element R 6 F%  .  6    B@  (   F! B@L P B@N k  i  Q -------------------------------------------------------------------------------- Description: K Function get texts and cells from the text and cell elements Parameters: / adData [in, out] - Real texts ? adAppData [in] - application data structure Returns:  Misc: Q -------------------------------------------------------------------------------- @ ]   ] 8 ] x !   A K T ! n'   B K T !  '   C K T ! p'   D K T ! r'   E K T ! t'  S  ! n'  n  ! $  ! $  '  d  ' k    Preload texts if necessary Z  A@B k p   We also set the string value   0.000 $  (    r $ L  x   1 (  d   0 (  k    emg $ R !   _EMG   1 (  d   2 (  k x   res $ R !   _RES   1 (    con $ R !   _CON  e  2 (  d  (  k    type $ L (    plant $ L (    index $ L (    drawing $ L ' V    V   G V  $  ( j    V   G V   $  ( j V    J We take to the end as the number may exceed 6 chars and it becomes invalid V  $  (  k p   sht $ L (    rev $ L (    ddesc $ L (    gdesc $ L (    pdesc $ L (    loc $ L ( F   jo $ L (    Da_eng $ L (   Da_eng_date $ L (    Da_cert $ L (   Da_cert_date $ L (   Rfkd_const $ L (    Rfkd_const_date $ L (    Rfkd_op $ L (   Rfkd_op_date $ L (    Other_by $ L (   Other_date $ L (   DrawingFormat $ L (    Date $ L (   RevisionDesc $ L (   DCCNumber $ L (    RevisionNumber $ L (    RevisionNumber2 $ L (  i = Q -------------------------------------------------------------------------------- Description: W Function gets texts from application and text elements and compares them Parameters: / adData [in, out] - Real texts ? adAppData [in, out] - application data structure Returns: 4 True, if texts match, otherwise false  Misc: Q --------------------------------------------------------------------------------  '  A@   A@X  ) Find which revision number does not match !  !   !  ( k @: !  !   !  ( k : <      !  )  1  9  A  I  Q  Y  a  i  q  y  !  !  !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   ! F ! F  !  !   4   ! ) 1 9 A I Q Y a i !  !  !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   '  k (7 k 7 i 7 H ^7 V  $ * $  V  $  $  V   $  $  $ ` ' \ z 6 ^6 ' \ i 6  ^6 ] ( ] @ ] X ] p ]  ]  d$ n   - Correct border not found - Detach old border  '   F! ! p! r b  F! % p ! t! v' f f  $ * $ N  .BOR  F! ! pB@x d 5   '  k p5 h5  # Get the new location of the border F! ! j!   F! !  F! ! j!   F! !  $  ' l   Attach a new file  BORDERS: d 8 d d l $  F! ! p% z . h  h( | FB@4 k H4 | @4 ^84  TBAHelpers.ReplaceBorderFile B@ ! ~  TBAHelpers.ReplaceBorderFile  Error replacing border " d  " B@~ o 3  ] H ] ` ] x ]  ]  ' n P    F! ! p! r  F! % p ! t! v' f f  : $  '    $  ' f d 2 $  ' f k 2 f$ N P$ N  ' n y 2 k 2 2 k 2 i x2  ]   ] 8 ] P '    F! ! p! r  F! % p ! t! v' f f  $ * $ N  .BOR f  : $  '    $  '  d 1 $  '  k 1 y 1 k 1 1 i x1 p1  Attribut e VB_Nam e = "TBA Helpers" Option Explici t Pub , Const PRECISION As Do 40.0001XJAPP_ELEMENT_ID 22559 '102  TODOAV General apadata s tructureAType pDATA #`Signa&S ngReview Emergency Classified As 4PlantNoIndex ' The followin g 3 item s are in t s_dra_no memberkCodBSiz DrwO&SheeS.OsA;HowMuch;Titl@eLine12CPDescR eserved0!RuceesQE* ' 1 - yes, 0 iremo oL Q13M*@LlocTJM6e@lementÈpr Dnt onlya nvkof App E#DAE@MoDa qCer2tpDARDNTRD ROp RDOp4OdDim e±Enuatoa3 Gdb! Block! " 8rr( S'Setdefau lt valuevs .P]1o~D*4`VECTORtKQ = Fal>s0}Aq = "AP'veMmlRefer ze.DtrolTCac he.Scfo While.MqPZNex1 I"fqCurt.{= msdMicroStY .e Subt!94?!} w a =(  ae.& \Q' Wu our &9u 1 %|= ;1d@b.offs#= 0g"w=`< s2,S2(db, 6)Q`m 1 7 ///dtr4'Res 3 U  F?59 @cD= Left(9, = Mid2q"c3Pigh) 'GwR"g.IHD5&/&0??ne2o r?w8o//{!U0_V$ A? 's!ooo`P 20)  ' Old format d oes not have the `olowing fields `but i Nan errorOn E2 Go0To h}NewZadDat a.strDAE! = ReBl@ockStr (db, 5 >)%e !1!Cec! a_?) PubF SH(DAs APPDATARDim0 ee NEnumerata/TcC!dbAѡV˃ ' Fi`S1exist0* = A`PveModel Reference.trol$ Cache.Scan Do While .Mov`eNext#! I"fCur@ t.Typmsd MicroStibo Ae@S8ubtm4 TheD 1  a=(  ae.ID @ _ELEMENT_ _`= :!kDPE<9 f NothYFQ ]Gdb.offseAx0cS W:5#S C+SiHgna!6, 6OOHa^ew1SrE/g 'yO  Classid__U' 3 rPlapntNo//%Ipndex rC7 +ze Drw9#rShee/ `Z/ % zo?5HowMuch#5 rTitleLine1T)_)`W)f2oe  al__6Reserved0S- 8" " rL^oCJt)2:=' b n0rw3oo?; :eS1/6ϸ-DAqŏȟofǯ?8 D0??8cCokhBdR5t~r2 3 7$$rF9 teDataBl ockString ad.st rDCCNumb er, db, 25 'Applica tion ele ment siz e must be even.X Otherwis e incorrecXis re ad uswGetV funccIIf 701 bytes a re writt en, only= 0T2 1db.SMod 2 = 1 The6nW!""y1End IFf' C 5te a new aQF0<V t-Asc(Mid, i, 1)),Dv 0X6@va$6Q 5 F]f`inds p֝info nPq5arrX5b-rayzzposia~0x 'NF- ?rb ex an su ccess, -1 failuura' 6s--t I5((qINFO,1I68n2s. 2-t%2jo UBoundRagr i)ݲ=V 3ix`Wg)1Q'15 q  1aӥby gi E,1111C15.1 dBg- TQ 3%ޖ20errorA?2o2n % ByPC22ng k3Do `e, pt@P@oint3dacaPxdOldSK78 On E GoTo h -N 8C3S Qqeeo EnumeratlA 1D2CnIndpP C nI ndex = G etElemen tInfo(ar rX, strN0ame)If -1 Then0Exit Functio,End IfD ' Calcul ate text coordin s based upon th e old sc(ale:p.X ().dX * dOldS.Y.YdSi 0 Th enr' Add new IQSe^ CreateQ1(N othing, !j, pt, Matrix3dIdXity)1E'K fo imight no>xistOn Error Resume N.KStyle.&= DesignFiF 8s("061"L6GoTo 038He]= d Size ' *1calN)Width X Justifarr X(nIndex().lCy)CorlN= K B LineW3 G G'Level oG.\n n " + CStrv( +)auˆ2W4e o to rot (w e convert Aadian6swR DOrigin, 0B *d"`} / 180 FPi HTru?' }drʆ d Redraw msdD zaNormalKFuno@ ' - ?(Ca ucrip!:g  fin@ds a t by g@n p8osi! aPa rametersP !3 [in] -aeay of e s info 7!`N F- -ndSa' - Curt s'aReturn(on success, "" eᥡMiscAa?0?A) Pub f1GetValueCr) As ELEMINFO, _\( ")?`zP>d) Do=e c[ Dimdb+ &APoint3d !Z""' O-miz pmport: i`'hehas been un0d, dI rsearchRit agai} aA Integery= T*I@-?R|MsF-1lExBObqFo J4' F0@ t@eSʌByPAk{:%9_' `e$Is D  W q W<;1W1 5 WcellW?WO W[WCW%WSC ZSuS YS! *(LT0IUR=H3BfK`,OlS,Honal WrKH Khҹ,6^ PCS WeqJEnнratoKlA K24fTKP &M PP PP; C F.X0MdX1YYCNe?0Grap h l$Cach e.P"co Wh ee.MևNp.Typq0AHeaderO = a ' C0heck5q] m4at s Abhs(e.÷-'.X) < P RECISION And /YHY+[e 3   'Nam e suppli ed lets test that npalso matchesIf UCas@e(cell)D ="elC &.a(ThenA'DOk uis correct P1Set GetaByPosit8ion zt7Ex it DoEnd If Else'notonly coordina1b`^ Loop &' Calcul* ne2w^ pDUpt Element.XYarrX(n Index).d X * dScalDI Y Y C!B4Funcp hError:Codes.L og "TBAHelpers.N" ReRain=G ' -? JDescri6p1/' f@inds aYby givenF[ a returnt'sBAPart?d [in]- A@ay of@{xft @ nf`stru- $?% #?+- CuxnbB'Rp x "xsucc ess, "" ea@Miscaa7?) Public 4K@Value(a+( ) As ELE MINFO, _M!E)`Str8ing>) Do=e c[ Dim ß!*6s!Point3d/ i w"Dj' F`V e M$=&, , , ) N Is h' +,b%?D;Q??d reple_B with±on "hr@+U+i@F. 0&C @C to be a !@ =_--=~RPQ == %-A4= )A/ ADdOl? JZOkal erpO BooleaF@e$: 37HHdSizeqNwII/H/Hll/H (H%Ju,/ItU/Id ' RemoverRteve QdJIsLock0,= AcaB.A veM lReference.#T $ OqTLen(') > 0 A(BV)U' A= 1e _ sCod!Left, 1;$rl2xa MijdC24'@take to%"e`pasBnu mber may exce@6 0char`it becomen idDrwB5&4!<Shee,`ZbSIZEINFO) Boolea$߉@?F Q0H%Elev wa h ,#S 'Q which pis ion numb er does not match If StrComp( adAppDat a.strRevis , ad & 1) <> 0 pThenN =x1End If 1292AD cewb A__ ~Emergpency  C lassified  Type V PlantNo  IndexM  CodN'V SizN qV DrwO3Whee@S ȍAVTitleLpine1H_2V2 VB;DescvLocatz(b6JNL GigpDAEngm pBHCert{?tS":RDCons| 1RDDROp7a OA,RDOtherB?.Dr awingForQQqcj{CCNCLrDlA21 ~are TextsTrVerif yBorder = FalseIf<> "" ThenF i 91 T o Applic ation.Ac tiveMode lReference.s.CoxuntHL =)(i).As!7 4 dS at(D, ":"&) UBbd( ) > 0mo(1 /Eb 0 nd If-CaseO9) @6UC})3LTru +Exit E$NexEFuno Pub  Find'vAiAIntegerԌe @M"" C$(a;la c!Y!B?Righ2`4)C".BOR̀&!hAb hF?n/5hA9h & \X[ Z  t   Nt  e        x  ME        P  <  <   ns t`@ E dB`b ! F`V 0 `d ` ; R`f N V8`h ror `j  ' `t 4 `l or a   n 6 k    %  ''       %  p` t to  FH   % in r ' j     %  t (  EM ACTIV   % ET(F+ 0  Q   )vP X  F!  % )x   1 MU ef is 10 x   %  )z   @ >B     % F! )X   ENGL       % ( `|  ' `~ ? ` !   rdin  ^ l                0   P   p    x  7  i~   i 0  )xh x   P   % )X      %     ` ` `h `   X  *  i~  i  )z0     % p  X  `    X   i~   i 0  )vP   %  3  i~  i  )     % P  8  ` `    +h     ) 0      % iV  ` +h    )     % iV  `   (   H +(      )      % iV  ` +( h    )      % iV  `       + h     )   orde  '     % @iV  ` ( N+ (    )` p  ---- -------- H   % ----iV  ` Fun      + (     )` p  hFi - fil H   % iV  ts [` ith +     )  0  ---- --------    % ----iV  ` $   h      !  )  (   '     iV  rror` ` BAIn  x +X      )    '    % @iB  ( B` +   *   i~  H  0  --------  ` ----   X J   t     4    H  P  X  `  h  p  x                2           @ * H   x        @                        0 (  X   ` . h                 X   ( B @   R  V  J P   N     X  B  p  x             $             0  H  ` : x   $            (  0  " @  h  x   h       , (  X  h                0 & 8  `   x  .                 "  H   X X `  F   < 0 : p V      0 X 8 "               (   @  H   P  $ h , j & 0   X , `   *  "  *  , 0 , ` 6   P  < 8   x     0              X   x F    <  : 0 J p        X  "  H  P  X   `  p                     , 0 j ` &         ( X @               X   0 D H   <  :  R (        X  "      0   @  X   h                   T   X   ` X h   L   ( < @ :  V  :   X  h p   X  "              0  @  P  p                    l  &                8  P  p                 (   0 X 8   H    <  6 H  H  X B  H!  P!  X!   h!  !   !   !  !  !   ! X !  " V 0" 4 "  " < " 6 #  P# : `# #  # X # B  $  $   $  8$  H$  `$  p$  $   $   $   $ X $  % H 0%  x% < % 6 %  & H & `&  p& X x& B  &  &  &   &  '   '   ('  0'  8'   @' X H'  ' V ' 4 (  H( < `( 6 (  ( : ( ()  8) X @) B  )  )   )  )  )  ) : )  8*  X*   `*   x*   * X *  * H *  @+ < X+ 6 +  + H + (,  8, X @, B  ,  ,  ,   ,  ,   ,   ,  ,  -   - X -  h- V - 4 -  . < (. 6 h.  . : . .  / X / B  `/  h/   p/  /  /  /  /  /   /   0   0 X 0  h0 H 0  0 < 0 6 1  X1 H h1 1  1 X 1 B  2  (2  02   @2  X2   p2   x2  2  2   2 X 2  2 V 3 4 `3  3 < 3 6 3  (4 : 84 x4  4 X 4 B  4  4   4  5  5  85  H5  h5   p5   5   5 X 5  5 > 6  H6 > `6 : 6  6 H 6 87  H7 X P7 "  7  7  7   7  7   7  7  8   8  8  2 08  h8  x8  8   8   8  8 X 8  9 H (9  p9 < 9 : 9  : H : `:  p: X x: B  :  :  :   :  ;   ;   (;  0;  8;   @; X H; R ;  ;  < * <  @< ( H< X p< B  <  <  <  <   <  =  4 =  $ P=  4 x=  $ =   =  =  =  =   > > x p - Structure contains the TBA plant information fit ^  ^ 0 ^ H ^ ` ^ x ^  p x  ^  ^  ^  p P ( ^ @ ^ X p 0 , Contains information about the Indexes Type  ^  ^    arrDescription() As Stringp $ Contains information about an index. ^   ^ 8 p h : Contains information about a position of a single elementx ^  ^  ^  ^  ^  ^  ^   ^ 8 ^ P ^ h  " Saved Text for further processing^  p  ( Contains size information for all sizes ^  ^  ^ 0 ^ p ^  p 0 Q -------------------------------------------------------------------------------- Description: ; Function loads and parses the Index.Cfg file Parameters: K szInfo [in, out] - information about the text positions O arrIndexes [in, out] - array with information about the Indexes D arrPlants [in, out] - array with plants informationP Returns: H Returns the form header that it reads from Index.Cfg file  Misc: @ Q --------------------------------------------------------------------------------   ] 0 ] H ] ` ] x '    Initial array initialization x  z  X  v n ( v   H v p h v r  v t   3 Try to obtain the SACSV8i_DIR environment variable 6   C:\SaudiAramcoV8i\index.cfg ' | d  6 index.cfg ' |k  Open file '  |     Get the version information  ~ ~$  ' ~ ~  ~ $  '     $  $    $ *  TITLE BLOCKS -  $   $    $  '   ~ ' 0 ~$  ' ~  & Read the file and process all records" $   b  ~  $   [   Section found, Gr ~  ~  $  e = DWG INDEX K T  " Le ~  x XA@ ig  PLANT NUMBER INDEXK T ashes ~  zA@ om NW  END K T x  S   Should be a "x_SIZE" section ro ~  vA@  > Can  d x ( Read next line to find the next section  ~ 1st in ~$  ' ~h k   V  z      ce b V  k   TBACFg.LoadIndexCfg B@ 1st in B@@ with i  Q -------------------------------------------------------------------------------- Description:  ? Function processes the index section of the file  Parameters:ulate 5 strLine [in, out] - last read line rner 3 hFile [in] - file handler | O arrIndexes [in, out] - array with information about the Indexes Returns:  Misc: ex Q --------------------------------------------------------------------------------  ]  ]  ]  ] ( ] @ $   b pe   Read the next line |  ~ he rig ~$  ' ~op ~  $   [  Section end the rx  d  ~  ~ $  '  \    $      % Do not raise error just skip the line  d Err.Raise errTBAInvalidIndexCfg, "TBAHelpers.ProcessIndexSection", "Invalid Index.cfg file format !" [  Index section: Line skipped. e d   & Get the Index's position in the arrayw th x $  $  '   # Get the Type position in the array   13 $ x ! ^  $  $  '  , ca  # Get the Size position in the array  $ x % ^ ! \  $  $  ' h  % Get the Border position in the array h  $ x % ^ % \ ! X  $  $  '    Add size and description  I AddStringUnique arrIndexes(nIndex).arrTypes(nType).arrSize, arrStrings(3)  h  $ x % ^ % \ % X ! R  $  A@  Add Border X  '  @X p $   $   $  $ X ( N  $  $ X ( Pk  k   o  Q -------------------------------------------------------------------------------- Description: ? Function processes the plant section of the file Parameters: 5 strLine [in, out] - last read line 3 hFile [in] - file handler D arrPlants [in, out] - array with plants information Returns:  Misc: Q -------------------------------------------------------------------------------- x ] @ ] x $   b   Read the next line  ~ ~$  ' ~ ~  $   [  Section end x  d  ~$ ,  ~  ~ $  '     % Do not raise error just skip the line  d Err.Raise errTBAInvalidIndexCfg, "TBAHelpers.ProcessPlantSection", "Invalid Index.cfg file format !" [  Plant section: Line skipped. d z  '  @z $  $ z ( B  $  # $  $ z ( D T / Limit length to 35 chars as requested by ARAMCO  $  $ z ( Fk H k @ k 8 0 o ( Q -------------------------------------------------------------------------------- Description: > Function processes the size section of the file Parameters: 5 strLine [in, out] - last read line 3 hFile [in] - file handler K szInfo [in, out] - information about the text positions Returns:  Misc: Q --------------------------------------------------------------------------------  ~   $  $ N  A K T ~  v! nA@  B K T ~  v!  A@  C K T ~  v! pA@  D K T ~  v! rA@  E K T ~  v! tA@ S    TBAHelpers.ProcessSizeSection  Invalid Index.cfg file format ! B@~ n  o  Q -------------------------------------------------------------------------------- Description: E Function processes the single size section of the file Parameters: 5 strLine [in, out] - last read line 3 hFile [in] - file handler O arrX [in, out] - information about the text positions for 4 a single size Returns:  Misc: Q -------------------------------------------------------------------------------- X ]  ] X ] p   Read the [x_DATA] section  ~ ~$  ' ~ $   b   Read the next line  ~ ~$  ' ~ ~  $   [  Section end x 8 d 0 ~  ~ $  '       Just skip the line  e Err.Raise errTBAInvalidIndexCfg, "TBAHelpers.ProcessSingleSection", "Invalid Index.cfg file format !" [  Size section: Line skipped. d P   '  @ $  $  $  ( >  $  $  $  ( @  $  $  $  ( b  $  $  ( V  $  $  $  ( d  $  $  $  (   $  $  $  ( f  $  $  $  ( h  $  $  $  ( j $  ( t $  ( lk k o Q -------------------------------------------------------------------------------- Description: B Function gets an index of the array element by name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ] P   '     $  ! V V ' y X k P H i @ Q -------------------------------------------------------------------------------- Description: O Function gets an index of the array element by name or creates a . new element with the given name Parameters:( 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: 4 Index of the text in array on success  Misc:( Q -------------------------------------------------------------------------------- h ]   V$  '        '   @ @ $  @^ ` k h V $  ( V ' i @ Q -------------------------------------------------------------------------------- Description: T B Function gets an index of the array element by name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item nameT Returns: B Index of the text in array on success, -1 otherwise  Misc: Q -------------------------------------------------------------------------------- h ]    '    $  ! V V  ' y  k   i  Q -------------------------------------------------------------------------------- Description: T O Function gets an index of the array element by name or creates a . new element with the given nameT Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item nameT Returns: 4 Index of the text in array on success   Misc: Q -------------------------------------------------------------------------------- ( ]   V$  '        '  @   4 ReDim Preserve arrItems(nNewIndex).arrDescription(0) $  @\  k  V $  ( V ' i x Q -------------------------------------------------------------------------------- Description: B Function gets an index of the array element by name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: B Index of the text in array on success, -1 otherwise  Misc: Q -------------------------------------------------------------------------------- ( ]    '    $  ! V V ' y  k   i  Q -------------------------------------------------------------------------------- Description: O Function gets an index of the array element by name or creates a . new element with the given name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: 4 Index of the text in array on success  Misc: Q --------------------------------------------------------------------------------  ]   V$  '        '  @  $  @X  k  V $  ( V ' i  Q -------------------------------------------------------------------------------- Description: B Function gets an index of the array element by name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ]    '    $  ! P V ' y k x p i h Q -------------------------------------------------------------------------------- Description: O Function gets an index of the array element by name or creates a . new element with the given name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: 4 Index of the text in array on success  Misc: Q --------------------------------------------------------------------------------  ] P  V$  '        '  @  $  @R  k V $  ( P ' i h Q -------------------------------------------------------------------------------- Description: 8 Function adds a unique string to an array Parameters: 7 arrItems [in, out] - array of strings 4 str [in] - string to add Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ] H ] `   $  V |  k     '  @   , title 1 should not be longer than 30 symbols V  V  $  ' V k h V +  o P Q -------------------------------------------------------------------------------- Description: B Function gets an index of plant in the plants array Parameters: 6 arrItems [in, out] - array of plants 3 strNumber [in] - plant number Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ] @   '    $  ! B B ' y  k   i  R ---------------------------------------------------------------------------------- L Description: This function unscarmble(Scaramble data) using ROT47 algoritham Parameter: # [in]:unscarembled data " return: unscarmbled data in string R ----------------------------------------------------------------------------------X ]  ]  ~'    $   $   ! $ l  $   O $ l   $  /    +  $   P $ l  $   ~ $ l   e $  /    +  k  k   ' i    Attribut e VB_Nam e = "TBA Cfg" Op tion Exp licit@Priva Modu le ' Structur e contains the plant i@nforma  Pub Ty pe PLANTINFO strNumber AsUingDescri1Loc^8Reserved14 3 End\| dBORDERdKey*Bor"doarro()!9SIZE8_=߇䌏.;s, V1 4' CoHl aboutBtInd0exesD@?TYP#!SizeD!/'AZ*an *INDEX h¼J(G5Ia posiof a sle el0emen MEL$EMG$dXA}DoՁdYNO AP}lLevel  LolColoBWeight Justif"XGdRotl)q>Tex" @  5`a@o ` fur@r proXces#Cb!F ouk 2Boolean .sHʼn A all-K>L A#`+/BjCDE- ?(!:E!g Func"Plo ads a*pa\rs wx. fi!' Par!Gters szI [in, ] -/'t?=%`sO |( - ay with 2 PsJ* Ms Re@nQ$B Km he"atha`t rs from )Misc(A :?)&[& 0[pzz orCodes. Log "TBACFg XadIn dexCfg" D ErrR eRaise End Func tion ' -L SDescripd: proce sses theD i se Doffil ' ParametersPstrL ine [in, out]5- last read l DhF.'P- : h@andlerarr [8- ay with e forma abHe(ReturneMisckPriv ate Sub P\"SZ(SOAs ing, CF Integer,A7/() NDEXINFOBordf@BORDER)Dims {nBBTypeSSizTC$N Do Wh~ Not EOF(;D+' Rnextď Input #B~,NA 7 = UnSc b ZHIf LeftE, 1) = "[" The'' l e ndG AExit DoEl}Ae S.s Spli"~"h!UBound( ) <> 5 Or@n(0)0PA 'Do n% -rA e ju@sskip"csai ' .▁@InvaliƜ,Help@O.0[" d K.cffg{s !DDebug intl "R:#?p8ed.l/. ' Get's posi"in+\ay9b=Item"ByNOrCteA0esp;1 i n!r(c).@4)LL Byߢ!(3Ċ"cz(nA  2 ' `Add sR0m 7y_"'c$Uniquey_|*(3Qes#-o(nZ1_ ?S SPs) + 1RenPreservU/2<.0Key`Ssp= 4 O r#f2If LoopäSub?b5D Tpla[' }2_6 P svz sQϣϣ ϣsR ϣ1ϣţPLANTe. '4d8'Н,n 25 w5 Trim6"o#WB@?ϟ?1 x< 2_#P rߞߞAܞ(ߞߞ"i "e_crc7c#cx arrPla nts(nInd ex).strN umber =  tStrings(0)  Description Left(1), 35)M'Limit length to  char s as req uested b y ARAMCOa(Loca}2dEnd If - Loop Sub ' -L ):CFuncop rocesses the siz% e of file Param`eters ~L ine [in, out]- last@bad l!hF@A  '-  handlerO szInfo  - i@rmmab!0 text pos iGoLbL() `LELEMhLDim"P33dQ0Type' Regm[x_DATA] sWWInput #=B ,Jp"= UnSc0pb0i%VAUDo WhlNot EOF(WXnhp/+qooqIf 2``"[" T8hen# q1 ' ^endEx|DoGOK@sA Splitg"~"p UBound؜) <> 8  'JuᰃskipR|@ 'SSAS+SSDebugXint "|5% : a ped.w\cOn2[@X ) + 1Re0Preservze13Xŷ6).dX Valɴ01 [Y_K_`d= 2 * @0P% (3$N lLev4el 4lColoʜ 5@WeightO6G-ify7ÿdRotu< .8@TG= "|).bF:P FaLqEgo߅Q 5 getnF 4%ay pme =Yxj j)-1 Khr + x 7RePreservQÈ&x. KTypes(0IrCO(G OC o3 }?I=Q}B}e} uemsuq uuu, orwiseAw052MBl2TYPEl r/pppOp1(q ppp pFpupmep2H5r@yp5ppa5pph&p_5m[ffZ p!rp\fxp pw=pm pxp'pMsp0prrSizotSot YDotexot/?%B'a 8 BBBAot8>O>sOO>inN?otot--?ot!& ot=IZbt_BORDV8<_?&Q?OtO?H8ObO3 tttt1?1 escription: ' Funch ge ts an in dex of t he array element by name or create `newbwithgiven=0Par G0ters sIt ems [in, out]- iwstrN 61- .<@Return;Ia{text9n successa:Misc[-L Priv GetSizeOBypOrC(() As SIZEINF O_BORD,  tring Integer  AGDim nN|ew> J=. " ) IfH= -1 ThenUBound) + 1G Re)PreservBB(FDA .LBord(0DEndx IfCCV.S=EV i =B Ev De*~ vv_*vvuv,OorwiseA?xz5 xublic? x#NHx]Cw!vERwv\biA~u`P[ O-diUF`i0 To oCiwf`i)a_C oE6yi Epxit oN d3=@dac  lllqqaO6qqh.qRo5esqq~6σ+a 1/me>q7qq1=:qm qGk76q]tq1q qBS d1 ;inqq--g { = Lheft!,  -ȸs<'!/| 5 Ԟpla0! P>A O >="c("!" ; OZ= ((L+ 47) Mod 127A(h ElseP~))-Hl n "*1HA? /rr )             x  ME    &x @    it ` +.  ` s er+0  +4P   +:   ` tP  P    Q  F   P  h . p      &  "  $    (   @  P > `        *      6  P B  `  h   p         $    B                  B   ` B  h  p  x    (            &   B  0  8  @   H  h   p   x *         ' ? Implements MicroStation specific commands that do not fit into  any other module ' Updated: Rimantas Benetis (2003.05.19)  ' P H  '  Writes error message to prompt  '    Replace new lines with space ] `  t ( '   b   Replace t   $    t t   $ *  ' t  t ( '  @ t$ , ' t  Error  :  t  B@ o   ''' / Returns true if current work mode is supported L  ''' t  x ]  $ 0 '  Vess ' .i p  '  Returns true if DGN work modeE dB  '  ! F! ! 2 ' 0 d  ' 0 k i  ' ; Returns true if in DGN V8 mode. Reports an error otherwise  '  0 ' 4   Report an error also B@H 8  Not a valid DGN file ! B@6 d 0 ' 4 k i   ''' level Returns the default level name.il  ''' ustalP < ]  F! ! % > ! ' np ' :z  <  cadUtils.GetDefaultLevelName B@ Queue. B@@ ("lc=0i 8 0 : Attribut e VB_Nam e = "cad Utils" '' Impl ements M icroStat ion spec ific com mands th at do no t fit intoany o ther module &,Upd ated: Ri ?tas Ben etis (20 03.05.19&) ) OpsEx plicit !Priv D MX-' Writes erro u essage to promp >Pub & Su b Report"EToP(B yVal msg As SngQ F 'l ace new lin5with Dim posLong != In'(1,., vbCrLf-,o While > 0 < Q= LPeft( ,- 1) & " &gh Len) - 'a'Loop CTxrimCD GN.ShowM`"Y"&:',T""d C e*rvo@qy End Sub  xCReturnrue if curr work s sdupved }Func”IsS@e()AlBoo0lean3Arresult vs;CCCC C5E"6) 6 591 O1F)IfcJ .Apy.A veDesignFN.Forjm y=SdV`8 The#RIET 1#Elsg|mFaFA:If! in `f @e.$!;s an}wiA| Check <4f N`GK(C!bt` aa "ZC odes.ToMsgBox #@-, "a validf! ,1@g,,hhe defa]level n.N)GetzDLȃgiOn  Go$ToC_Hler&kIfkZV" s.FindBy Number(0).a@8p)yEx GQb:GD7Log'.p 5GReRa"T1                                                                                                                             8     $  ʮ  H Z mdlElementTemplate_activateElementTemplateByPath lz       x  ME    (  <     P X  x ,       0        ( 0 8  h  p                  (  @  P  X  `  p  x   2    (  :  < 0 D p 4 F 4 8 P p   $     . . P . 8      (  H  h  x 6 6 6 6 (  `       0  ( H  h .          2  2 0 2 h 2           8  X  h 4 p *  *  *   8  H  h  x       0      @ . X                         0 0 8  h       .      0   8  @   H   @ P         &          x  h `   Controlling flags ] D  h   Looping variable ] D P   Distances  ( Const DISTANCE_BETWEEN_SLASHES = "0:0.4"; ]  0:0.6  Requ]  0:0.5657 ame  . Dim dBetweenSlashes As Double ' not useds as] D   egiste] D  none**  Input points ] D0   ] DP     Vessel dimensions ] Dp  ------] D  ------] D  ------] D  ------] D  ----- ] D  cripti   Hatching ] D    ] D    ground line position pard] D0    Line element  ] DH    Vessel Cross Hatch FB@    Calculate distances  E dBetweenSlashes = Common.GetDoubleFromUnits(DISTANCE_BETWEEN_SLASHES)  `%  '   `%  '  line   get tangent points _  / Set default cursor for the spotting operations (B@H ' r   Get first corner $ LOCATE TANGENT POINT (RESET TO EXIT) r `%  '   r  koniec filmu: karaul ustal! x  k  4 Application.CadInputQueue.SendKeyin ("co=1") ts) 4 Application.CadInputQueue.SendKeyin ("lc=0") % 4 Application.CadInputQueue.SendKeyin ("lv=1") 4 Application.CadInputQueue.SendKeyin ("wt=0")  OTHER\VESSEL$ | $ V   " Error: Element Template not found! B@~ k P  0 Get second corner (defines the vessel's ground)  (RST FOR NEW Points) FB@  ' ENTER SECOND DIAGONAL DP TO CLOSE SHAPE r `%  '  r  go to next 2 points input d  & check eligable distance between points !  !   ' : :  " Increase X distance between points FB@ d !  !   ' < <  " Increase Y distance between points FB@ d   do all the stuff here   calculate coordinates   hor  !  !   ! ' . d  ! ' . k  . : ' 0   vert !  !  ! ' 4 ' " d  ! ' 4 ' " k  4 < ' 2  , Ground line has always ordinate = ptSecond.Y  " Let's hatch the vessel figure with  3 45 degree slashes //../ spreading from NW to SE and  5 135 degree backslashes \\..\ spreading from SW to NE.  > Calculate the distance between left upper corner of the figure  - and 1st intersection with 45 degree diagonal.  @ The same is the distance between left lower corner of the figure  . and 1st intersection with 135 degree diagonal.  I The aim of all this rush is to create the hatching with central symmetry. : <    '  : <       ' \   45    ( calculate starting point: v  ( from the left upper corner |  ( down to the left lower one |  1 then to the right along the bottom +--------> . (  2 \   (  !  4   exceedes bottom border . 4 !  (  4 (  k   0 calculate finishing point >-------+  0 from the left upper corner |  0 to the right along the top |  0 then down to the right lower corner v . \   (  2 (  !  0   exceedes right border 2 !  0  (  0 (  k   ) Create a line in the application context   ! F% J . D   Save the line to the file D ! F! B@L  ' Redraw the line, so it becomes visible P DB@N    135    , calculate starting point: ^  , from the left lower corner |  , to the right along the bottom |  , then up to the left upper one >-------+ . \   (  4 (  !  0   exceedes right border star 4 !  0  ( l 0 (  buk   - calculate finishing point +-------->  $  $ from the left lower corner |(  $ up to the left upper one |'   $ then to the right along the top ^op . (  ch 4 \   ( ! !  2   exceedes right border al l . !  2  ( he 2 (  thek 0  ) Create a line in the application context   ! F% J . D   Save the line to the file D ! F! B@L   ' Redraw the line, so it becomes visible li P DB@N  #  Ground line d exit . (  0 (  " 2 (  on 2 (  d 4 (  . 4 (   k  ) Create a line in the application context   ! F% J . Dts   more solid than hatching  D( sign   Save the line to the file D ! F! B@L de  ' Redraw the line, so it becomes visible  P DB@N k k k r  : Should be called before exit - sets cursor back to normal (B@ equire| X P   Report that box drawing failed   VESSHATCImpl.Run B@  B@ ' o - Attribut e VB_Nam e = "VES SHATCImp l" Opti on Expli cit Priva Declare FuncD mdlEleme0ntTe v F_a 2X .ByPat h Lib "std 8bltin .dll" (B@yVal w"A s Long) ModulHe ub Sub Run(0) 'C ontrolli ng flagsDim bEx it0Boolean 'LoopvariaVb5 iI@nteger Distance3?st DIST ANCE_BET WEEN_SLASHES0:0<.4 . VMIN_POINT 6 ALON G_X_Y_AXIS_5657'bdBetw eenSlashLes[DoSe@' not usedC8 MinXY StepC 'Inp ut pointHbptFir@>@cP3ptS`econdV essel di sHdLefyD8 4Righ tO4Fr omUnits(pDvda9xe 2{gBmg+lo#/' AGdefaul@t curs 1f` the sp`YAoperB/h!0St +.DcCB = Fa|ls!a )- f}cornI"ue("LOCATE ` GENT ( RESET TO EXIT)",'# IfdTheda 'konieclmu:0 kar #ta\l!g!DH)EQIf 'a IVCadBQueue%ndKey in ("co=1"lc=0 lv tO wt ; `{4=~@u~(St rPtr("OTHER\qEL" )) <> 0 O A.RaisE rrInvalidPmeter , , "BC: T kfM!DA  H M)sCfS)L (P20Ps 1ve's S%J2 us "(RST FOR NEWr B,s)H &m.al. .ER SECOND AGO@NAL DP.C LOSE PE. g /'go to nextd 2B iyE*<'check9_ig!v bzGd3p= Abs($>.X - 5.XQp D<< V_"atIncrea $~X/ Ç!dy Y Y a  : ? < Y? ? $ 'do all,stuff herZuq 'c6tcoordin@_`ho$Y `</?= R.X)yG_AWd= + C)!'ver@ӗ Y YvdYn= Trueq y ddWS4O1's bhas-ways *F Ra_Q'Let_h(aguwith45 degre //.|./0J5` |NWYp]`13backs\\..\SNE. 'Calcu late the distanc e betwee n left u pper corn offig@ure  ' and 1st intersec tion wit h 45 degreagonal.CT same islow E13Maim 1all OQrushUo crehatching~centra l symmet ry}nSla shes = I nt((dWid+ dHeig ht) / dStep)dOf0fSet  - (*D2S'45For i0 To g A'cƤ@rRtOpo:˚vfrom |down toGÚone! Ԇrh alo bott(+- >#ptF@irst.XQdL@ Y tOp @w~-v * iIf Y < dB# rn'exceed@Tborder ZD-#BEIfOfiniswPg >6+X Pj ǚICQHtopJ?R[ mptSecondR7$ 9ᑻM&U)S > dRbjSSR O$ @i'(= >S CCa li iapplica1tex&tw AmL= MicroStDGN.A.!Elemk2(Not0,U9 CO#' SavӅ2 Ufil߃F .AveMo delReferBe.Addd  ' Redraws]p, so it comKvisib .TmsdD0j NormalN`oWcq' u1 ug u^oLBp G'$ 8q o'uup:z6z/Z g`KL_ rBϿges uX L Lu Y(/L- L Luu](i#v'o#ͪ'o,2Ey4;aϜ [/v ysYQ'A_s?'?'= #'t0'bK7' '/s /s/s/s/s/s/s/s /s?%/s/s/s-su Element mLine  ' Redraw the l , so it becomes visiblB.msdD i ngModeNormal|Next i'Gr0ound!pt First.X = dLeftS nndRighIf b: OnTop Th\en+@Y@tOpBEls 7BottomK8Y E@YIfS' Create "ab inap plication cont@w SeĤ@HMicroStB DGN.:A.C]D2(Noth@, = Q)*more lid@)an hatc ,WeA(1USaveB> to fiUʙ:ActivelRefe rence.Add_wO"Fq''LokWh ( = bExir ' Should calTle!fa ox ! Sh fad"Cs.Log " VESSHATC Impl.Run" ToMsgBoxCur A@ A%    * G         x  ME        P  Oni `  locki   i   i    h lei   i   i   | i @  > Cei `  F ; i  on-`z +:H`r F ; `    +@ 0  i P 6-i  p  1:Yi  7-i  of 1i  s noi ompl    % ( > Ma  % H D fi  % h 11 % ` ts)   ;  %  ion  % `r will` G ; ` ly i` lin`p T dt+    J  i  i    ; i   ----i   ----i      i   2  X set % x    %  s  % `r  ` sca`  `   x` @ R  )` h    % i    uli    i     i"    i~    ir    z@   % |` s  %  FT=6 %  B@@  %  CC   %     % `t heck` ` MDL `: . `< $ +n    i noecir   ll @L AC= `t A +d P    in p   ir   t ma % H   #               (   8  @  P N X  , 8 <  , ` B  B  4  L X L  :  @ 8 H x H  H  H P   J  N  P @ &    N  "d 6     H  h  x      $          &   H  X  h  x                 (  @   H  `  x        8  6   H  , P        8   (  H * `          > 0 @  `   h  p   x  0 H       @   P  h   x         B4    ,  0 < P                 2   X 8 x (            0   8  @  " H  p                   ,    H  " P  x   ,            ,    8  @  `  p     .          .   P  ` , h   ,        $      ( * 8  h   p  F x   *          (  0 . 8  h P p 0            * (  X   `  h  p                        (  @  `  h  x                    0  8  P  `  p  x            B4       <    8  H  X   h   x       (      $    8  X * h        F    *    8   P  `            "             *   H   P  X  `   p  x          $      (  0  @  P   X ( `       "< "              (  8  H  X  h  x  &  &  ,  &  & 0 , X          *      8  X  `  h  p          8            , , P          " ! " (!  P!  p!  !  !  ! D !  !  "   " $ 8" `"  p"  "   "  "  "   " B  "   "  "   " 0 #  H#   P#   `#  h#  p#  x#    #  B  #   #   #  #  # ( #  #   $  $   $  0$   8$  @$  P$   X$  `$  h$   p$ $ x p h ]@  D  ]@  D8  ]@p ]    G ;----------------------------------------------------------------------  ; Note: t & ; Requires: 1-----> Cell name (C0) t 2 ; 2-----> Number of data fields (R0) 5 ; 3-----> On-line/free cell option (R1) lock % ; 0: on-line < ; 1: free with level & color change3 lett < ; 2: free W/O level & color change | - ; 4-----> Cell orientation (R2) $ F ; for on-line cells 0:Fixed, +:Horiz, -:Vert fp F ; for free cells 0:Fixed, non-zero:ActAngr 3 ; 5-----> Text size in WRK units (C1) FB@ : ; 6-----> Fixed text size (0:No, 1:Yes) (R3) B ; 7-----> Max length (in chars) of 1st ED field (R4) A ; 8,9---> X/Y offset (in WRK units) of 1st ED field B ; 10----> Max length (in chars) of 2nd ED field (R5) A ; 11,12-> X/Y offset (in WRK units) of 2nd ED field  ; C ; NOTE: This revision is a copy of revision 0. It will not work etup G ; properly in Microstation 95 at line 307 unless the TEXT dt J ; EDITOR STYLE in workspace/preference/text is set to KEY-IN  ; not Dialog Box.  ; G ;---------------------------------------------------------------------- go ,             $  (  -  2   =s   active settings to save el] D      work flow control flags ] D   ] D      Set text WIDTH scaling factorsA@ Z  + V ol J  + V  8  + V 0  + V   Set text HEIGHT scaling factors ^  + T 0 T  + T  J  + T 1 H  + T ul     br    +  K T $    +  $    +     ----    +  $    +  $    +  k    perform key-ins lock GG on >B@@  FT=61 >B@@  LC=0 >B@@   Text Justified CC  /TXJS7 F! >B     % E1L product ? - check/get active bus A  ) former ...KEY 'MDL COMMAND getE1lBus'... k  ^! `' z $  Save current active angle    ^( ` , Set angle k H  noecho F! >B  Place Cell  FB   AC=  F! >B  A  Activate required cell   let's handle the error F! (!    Cell  not found FB@0 ' r k `  main loop r b    place fixed cell '   1 in case of changing the orientation on the fly %(   #  # # #  #     $  $  ' rd  '  k    place free cell   "  " "  "  "    $       $  ' rk     restore z F! ^( `  9 Should be called before exit - sets cursor back to normal  echo F! >B  (B@ |  x  TAGCUTImpl.Run B@ B@ o @       ] D  (  response object ] D  (  selected line element (bus) ] D0  ( cell object ] DP  ( , point chosen by user where to place the cell ] Dp  ] D  ] D  ] D  ] D  ] D  ] D  ] D(  _  '   , Ask to specify placement point for the cell.  /PACELL F! >B  ) Identify line or RESET to place free cell FB@x  < |   F! >% z .  !   ! '  !   !  |  e  goto free cell '  z d  Must be a data point FB@0 resume loop '  k h  b  locate any design element  (!  (%  .     Line not found FB@0 '  x  $ exit inner loop and start outer loop k  ! l ( : bus line???  Line not found FB@0 '  x  $ exit inner loop and start outer loop k ( Accept/Reject  `B   '  x  $ exit inner loop and start outer loop k   check bus orientation  ! * 5 ,! 5 .!   vertical line ' p  ' adjust the abscissa of the chosen point 5 ,!  ( 5 ,! 5 .!  e   horizontal line ' p  ' adjust the ordinate of the chosen point 5 ,!  ( d  Not a horizontal/vertical line FB@0 '  x # exit inner loop and exit outer loop k ( q  Place the cell on right point   F%  .     Error during cell placement FB@0 z k ? increments Graphic Group number and saves it to the design file  (  # saves new object to the design file  F! B@L P B@N x  ( do not place anything here between Loops   J Decide rotation angle depending on required placement and line orientation   p      p   Z ' d ' k    ! ,     !  rA x r y k    Change symbology ^!  /  ^!  (   Rotate cell     A  k P B@N B@   Partial delete   calculate coordinates p !  (  ! ! !  (  !  (  ! ! !  ( d @ ! ! !  (  !  (  ! ! !  (  !  ( k    perform command  >  delete partialC@ C@ C@ C@ q  A@4 '  i h          @ ] D@  (  response object ] D`  ( cell object ] D  ( , point chosen by user where to place the cell ] D  ] D  ] D  ] D  _  '   /PACELL F! >B   Enter cell origin FB@x  < |   F! >% z .  !   ! '   Place the cell on right point   F%  .     Error during cell placement FB@0 '  z X k P ? increments Graphic Group number and saves it to the design file  (  # saves new object to the design file  F! B@L P B@N !   !  |  e  goto end '  z ` d X  Must be a data point FB@0 resume loop '  k      ! ,     !  rA x r y  k      Change symbology ^!  /  ^!  ( k @  Rotate cell   $  required rotation   rotate   A  k  P B@N B@ A@4 '   ! DP - 26/06/2012 - Clear the fence  /PFENCB F! >B  i P               ] D(  ] DH  ] Dh  ] D  ] D  ] D  ] D  ] D  ] D  ] D0  ] DH    calculate LT corner coordinates !    $   z(  !    $     z(    calculate RB corner coordinates !    $   |(  !    $     |(    Place fence block  /PFENCB F! >B  z F! >B  | F! >B   $ DP:18/06/2012 - Avoided fence window  NULL F! >B    $  r$ n ' t r ' d t '  k x   ' d `  1 Reduce text size as required in 2-character steps      '   V V ' k tok  k  $ V    $ V  ' : P  100 x $ T    $ V  ' < P  100 < F! ^! (  : F! ^! (     onse  WT=0 F! >B   d   WT=1 F! >B  k  |!  z!     (  ( , |!  z!     ( e the t   F%  .  ~ (   (   (   (   = If text is entered, place the data field with the given text spe  B  p  F! B@L  Rotate text >B  "  %  required rotation o pl   rotatel   "A  | k p B@  .  P B@N  NULL F! >B  o 0  % ` e ]   ree ]  t  t   b Must  Enter text or RESET to ignore r$ d ' t r $ v ' t x  k   t' ni x    ]  ' d_ P n FB@x ne  5 | ~  F! >% z . t t!   t!  |  ' r d  t! $ l   bu' r d  t! X ' doux  k  k  r i   ] Attribut e VB_Nam e = "TAG CUTImpl" Optio n Explicit @Priva Module,Base 1 @g_H eightFac tors(4) As Integer 'Width &'TextF ields() Const M@AX_LEN 2 ' ;-B $ Note: Requir es: 11> @Cell n(dC0 K';2Number of data fd (R3 On-line/@free c5o1(R16;0:< o^1: Bwith l evel & c olor cha\ngx42Wh/O 4D7No@rientaB(tR2\5f%5Cs 0:Fixe@d, +:H z, -:Ver-FU@4n@ zero:ActhAngO5D0 size in WRK units (CRg6D + t(0:N o, 1:Yes*)3A7MaxYng@k( hr 1EDE 48,9> X/Y Qfset &)S p$10!> 2nd 511,x12- NOTE:PThis revis!e`aVpyA0. It wito ork properly8MicrosR@95 at Ap 307;less the TEXT0 EDITOR@ STYLE w space/preferen@"?/to KEPY-IN n D ialog Box.!a / = ub` Sub pRun(bSng, _ K%`hOnL_HG lSlWrkU"lzIs"l!Boolean `XLen1Zf!eX7#OYalg@2] XxY_p+9 S 'zive p)ting.o sav` Dim dPleY|Do#'a. flow8ntrol agscbExitPp=FmB'S@J3WIDTH sca8g fsICg_J1) 90p2743560= 48G HEIGHT_ -c r 8“ G q= 71 RreAg_q3$;, e 1g1c 2 GetFrom8()Ao_odYeI f E 2 ThensN2 _,   a_ YEnd InfA 'd m key-int0 CadInput Queue.Se ndKey |"lock GG𚑷`FT=61COLC=04' Justi d CC Ca q,Ap.Co mmand("/TXJS7"Cs^< 2 'E1L uduc@t ? -`e0ck/g` 0L)Q8= Om`nge "noechoSho2wPl " +~ooE AC= ':r3dS 'let's @dPAerro`K'Spe. R esult <> msd:Suc^cBqE "R"A&found21 Cj= Trum'ma ;loopCDo Whi } s G$=>$'pfx 1 br= Fal`0 c`B_zR1f`%(2 bExit = PlaceFix edCell(c Name, _  bFre&XFieldNum%Orient ation%2Ge tDoubleF romUnits (TextSizPeWrk)%KIs)Else Tru End IfIf Then 'p f ŋـ1,``H`$m(OnL ine <> 2)ImRcLoopXC'restorDqApplic .ActiveS ettings.Angle|dShould be calle%Af  eA- sets cur sor back to normTalC C adInputQ ueue.Sen dCommand("echo"7 S @ tartDefaultCCSub hError:aCodes.L og "TAGC UTImpl.Run"Repo rtToMsgBoxCurrt _B Pri vate Fun (onmByVal]! As Str,_> EByRei Boole>a߅ALaIntegercg dœCd)h0%Dim obj8 (N Message bponse!ect*Bus&pElem@ 'sel  alar(busdWo * 'npnO Poi0nt3d 'p! dsen b y user w0hereoth`u Gn#{BB ma_Del`DjFinishTom' N6A#bResum`0# ;etiB\nIsVertN ZTos 15 = Fap'As2Mspecify "P .oOoOeO/PACELLO' S XwPppt "Id(a' WRESET&vM]q&0=XX n!rY(msd2Ty$peV, |DataB"=Q? 4<. o1 0j H5=.p )Oru/  'goPrb@ bnf #Bq "Mustq|a d "x"QQ9l&Q1 2Do Whiy No`P{ 'loe any Pzign T{,QY= dLU(,lastView, %Gq sIs h@zO3a9nPfound,F '8inn]ad s outDMaV .3,O2 2 'k 1E???$@ "oG o o9ortoTo RX#on.MJue("Accept/Rej|", et!s 22=r%g  'che0og0WithJ..A^sAd @#.gin.X0V. 2 oUe 'vuv$Oqx@adjAJuabsci ofvho1[  ? ToPlace. X = .Ori gin.X ElseIfYEndPoi nt.Y Thenh'hori zontal lineJIsVertic $= Fa lMadjus t the ordinat f chosen p=pntYw!ApplStion.Sh owError "Not a u,/vgz"%bR esumeTruExit Do'einn er loop and outDŽ 4 If With 'Uell on htQWSet objC = GCregElement3(c@ @Name, c,: ?)K Is Whingԙd1fdurA p"dZFuncv"MPK'incr7s Graphicoup 0numbeAisaves rtoBU design f,il}=.DGr= UpdR N"newAd\ec ʜNA@v eModelRe ferenAdd7e,[nAn= 90 / M|FiField1 T|'ByCoN d 'Chang e symbology(.Level` \ t`TsEC r/'# 'RIe !#$3<`<,CjAbZE-+D&) # enwritdc'PaI@al`0le' xculF co~ov6 + \StToDel„?]{Qx .Low.xFinish1 1,High4 / f { q `'perfVmm@fa} Cad InputQueI.SNCo "p^p pc (qbData❑z_ let3 ,AllViewt&sS bIrF􅗒 {ePriv+ 3ree!(ByV0/A;q@ As St, _a? SQIntegerob/VDoubleYBooleanTSuTm$s  Dim_Msg ' Messa Y 'responspbj B{'AZ6 s "*3dS by user ws' Si  m2]yU Zo !5e R?9>( "/PACELL"HxPrompt "E-rRmqAu G.hGetG(E Type,ayF/*BO  rG8 l@X . 1 ~LWOo'=/.  40tRKt1ӠBӥp  Applic ation.Sh owError "0during cell pl acement",  P6FreeCR= TrueJExit 0Func AML tWh  KCFiFieldX1 To  G Ca DText(uOrigin, , d Size, IsFixed ݍ,lΰ, bUn) m_or eyN Change Symbology, ' s A S`MELeve.l%a tYs.'C rI#'Roty"#`(( <> 0aa Equired rA?c 9C DwAboutZ:, pPntTo">,@li%73 {writAllViews# r'DP - 2 6/06/2012Clear¦>fa#oQu`eue.S~( "/PFENCBr"  軡Priv2Sub s"aptAY3` As PAy3d,| _ap dn Integerk Doubl@l{ pBoo$`un MelGC?%Byȣ~dL' Dim ptLezfQp d,iR ightBott\omp?qCp,erd!~@*%1 T2reg 6fqDataEntr@ mtrx Matrix3TgAstrS0ngwnLength0#7 idxScalepFact]>dxWidh1$gdHe)'cula1LT corncoor8din@<.X@P2 + g_a"es(5d2)0=.wY}Y l, 3z / 2y RB 8% X_Qt, +gp    t H 2O blocksOtOO.3(64;P2(]:18]Avoid@m#window?RC]NULL]6= Get6WithMax@6(O)\1)y ߉ U:= MAX_LENG4u\ې?= 1 'Avuce tsЙ as re$ in 2-charPC0 UBpound@rGIs~)ҋ 1 o|rsdotN= ({) *:i g_ ( 100 QbcR$ Wp'VilQStyle.DY= 4  ?pS3S >=< 5l=_6("WT=0U6.__X1V crXG"D Bottom.X + ptLef tTop.X) @/ 2 p tCenter. Y = (ptRPightY YjnSet ob jText pAp plicatio n.Create!0Elem \1( Nothing, str, v, mtrx)SO.Graphi@cGroup \lFG #regdJ`ustifr #m sdDataEntryR" !6 @Length n StartPXosih1' If tyis edelace the d A field wi . givenC!Call.tAd [(pAct %Model Referenc>e )2'RotbH/nOri.k <> 08 Th@( 'r equired ^rZ'e2D!AboutZ(Dryll@`gin, D8Ed ! C @ue("merK or RE SET to ignore",$=! OAN Szpi(+hb%Do'GLoop#5C#>@=±9msg!9CWMesxsaga1 ""$ aShow?#a+!= 7g@Bi( p%TyLpejsdK|ey~?bo ResetI ."@ 1!\"'"U= Tru/qEls! [Asc"g.)27  ! .=C Oh K eBV 3Bz;P6W2  ,  5 m  >        x  ME    (  p                      *   2 @  x    F  D  N H >    $     @  P `  ,          .          @   X  p     0                   0  @  H   X  h  .     *     $   ( @ 0  p                x p  ] D@  ------] DX  ------] Dp  ------] D  ------] D  ----- ] D  cripti   Saudi Aramco Product setup FB@  Reset to exit FB@x  FB@ FB@0 t  noecho >B@@  set parseall off >B@@ lock GG on >B@@ lock grid on >B@@  lock unit on >B@@ node  echo >B@@ ' r ' _ X  NULL >B@@  Enter product 3 letter code FB@x  Reset to exit FB@ %  < | ~  F! >% z .  !  ~ !   $  $  '    pid K  e1l K  ild K  def K  vod K  fpp K T x H S @  product not found FB@0 n  d  ' r k  r r  loading   product FB@    + attach cell lib, ucm index and color table.   u  rc=mnu:samenu.cel >B@@   attach command menu    @ Since ustn does not wait for its commands to complete collecting  = input before continueing to next command. It was necessary to ) m  H force it to wait by using get LL and UR corners of the menus via UCM get(f  7 rather than allow attach menu command to prompt for it.  Saudi Aramco Setup FB@   am=u   cm,cm  >B@@ 0 in   handle possible error widt F! (! '    ACS9  Get point for menu origin  point for menu origin r `%  '  r   good-byeded 0  point upper right corner r `%  ' SH r   good-bye d    Attach cursor button menu am=sacb,cb >B@@   attach cell lib   vod   pid ' ----k h  rc=   :    .cel >B@@  color table A@  ct=dta:sacolor.tbl >B@@ k k k k FB@x G FB@ ce  K T %  0 FB@0  K T 1  12   an  Could not find the cell library FB@0 K T +  54 8  No cell library is attached FB@0 ------S  Error number: X  FB@0 n   : Should be called before exit - sets cursor back to normal (B@ | x p  VESSHATCImpl.Run B@ B@ o 8 0  Attribut e VB_Nam e = "SET UPImpl" Option ExplicitA@Priva M odule  Pub D Su b Run()  Dim strPr Zct. As S ng"bExi# "Boolean#objMessageFCad`Input+p nuOrigin- OPoint3d #UpLef=lngResulMLo\%Orror GoTo hE )Apa.S howCommand audi Aramco setupZAmpt "Het to e  Status "RF*SQue ue.SendKeyO"noechoDV @. pa rseall off lock GG onb grid un H5C@C= FalsG@`= 0C DoVCNULL5 rEnter pD3 letcodeXwASH= ,Get"h(msBd%TypeT, BB, _G ? + ĆIfz .a  8TheĄ (= @LCase(|(3 3)Se|le a" pid", "e$1l ildefvofpy bIb EfP IyHnot found(HA>E e`Tr&uD`eIfLo op While N@ # 7l3-Yloadi@ng " && h 'attach ce@ lib, ucm index Acoltable. `rc= mnu:snu. menuHSince u stn doesR 1waf@its cs`p@~elN` H biA be !n`tinue$@nextB. It wa` ecry` @@YBby gBLLURrners[ the  s via UCM (ra"r`an ^ow Au 1k  itH _qQqLu3b< "am=u#cm,cmH'hP!`+possi@! ez$^ *e. 0K`O'P/b_I 'V pa9r o"'gaʋ= on."Value("`G8qAQ T upper h*% !2 ?   & Fc2Burs8t?Pa*K/&'&sacb,cb%Uq Q=J_Q:k"c6 hq_[ P4:/lR'HY? 4 ct=dtaY".tba9  = mIu$AX?@Gb}`DSucA[ ' +QICpLibraryPxFq<12g"Could"kfPtR`u/NoP54_ic$ No|Q isd~e)> n@umber:rCLng(VR9l' 1bwmedw - P | Da̱xormalabP rtDefaqCSS iP S:dAiC!s.Lo0VE@SSHATCq.RucRep ortToMsg BoxCurre&n  "ub     v  ʫ        x  ME        P  <  <  <  <  <  <2  < <  0 D  X or A % x   %  Thi  %  ght, % ` for`     % ( e (h  % ` ` d te x node  % ` M ` t no` s ar` mete` eter` ns: ` 5           X   h X ` V 8 T       <  X ` "    (  ,  2  $ P & x :  0  6  6 H 0  &  &  .  , 0  ` "  &  8  .  . 8 $ h                 <   (  8  X  `  p  x         f   (  0  H  P  `  h  x     *                (  @  H  X  `  p              *  > @       @              ( 2 0  h  p       &         (  8  H  X 8 h             8  @  `  @ p     &       ( 8 x p Q -------------------------------------------------------------------------------- Description: ' v R This procedure displays the weight, level, line style and color for Z any accepted design element, and the font and text scale (height and width) P for any accepted text element and text node, and line spacing for M for text node. Chosen attributes are set as active parameters.  Parameters: Returns:  Misc: 5 The procedure has been ported from SETSHOW.UCM % Q --------------------------------------------------------------------------------  ] D@  0  selected design element ] D`  0  enumerator for sub-elements ] D  0 " text sub-elements of the text node Ke] D  0  point chosen by user! ] D  0  right mouse click flag] D  0 ) user's intention to set active parameters ( In] D  0 Level (former R2 in SETSHOW.UCM)] D  0 % line style (former R1 in SETSHOW.UCM) m] D0  0 & line weight (former R0 in SETSHOW.UCM)S9] DH  0 color (former R3 in SETSHOW.UCM)] D`  0  text style, including 0 -font (former R4 in SETSHOW.UCM)10 0 ' -text height (former I0 in SETSHOW.UCM) AC 0 & -text width (former I1 in SETSHOW.UCM)ACS9] D  0  text style, Bold] D  0  text style, Italic202110] D  0  text style, Underline S9] D  0 ' line spacing (former I2 in SETSHOW.UCM) ] D  0  string to show in command area ] D  0  string to show in status area .1] D  0  string to show font ---- h b `  noecho F! >B  '   Setshow A@  A@ ram.r0 Identify Element (Reset to Exit)   `%  . ----  G x j ---- Accept/Reject  `B       U    any design element 5 . Params 5 2.  ! 5 ' 5 '         LV= !   , WT=  X   , LC=  ! X   , CO=  X  '  '   text element& zaxs5  5 ! .  k   text node 5  5 ! . = !    $ get attributes from 1st line, if any= rqtS ! ! . all fn    ) ! .  k  k  5 ! '  yax  , LS= X  '  k     ale '  ! ' TN(p ! ' @ ! ' m.xa    , BOLD ' " k H   , ITALIC ' k    , UNDERLINE ' am.ik    , FT=  ! ! X   ' = 2.3  "  TH= ! X   , TW=  ! X   ' (pk x q p A@  / Retu A@ rdinat - Data point to set (Reset for another Element)  `B   '  x  k  k  k     + set active parameters without using key-ins ------ ^ = ------ = 2------ 9  9  5 ( --- check the type of design element !  !  reg ! 5 /  used ! 5 (  ! 5 (  5 (  --- 5 ( ---- 5 ( ---- !  ?  1 LineSpacing reported as read-only property in VBA   So, use key-in  LS= X  >B@@ -rek  k  q   Active parameter setA@ d   No parameter setA@0 E k   Setshow Completed A@  -lo A@x tempor  : Should be called before exit - sets cursor back to normal (B@ sent b| 8 0   Report that box drawing failed al  SETSHOWImpl.Run B@ B@ o   [ Attribut e VB_Nam e = "SET SHOWImpl " Optio n Explicit@Priva Module " ' -L ' Descri: Thi s proced ure disp lays the weight,@ level i ne style and col@or for*a ny accep ted desi gn elemen&.font$text sc2a+(h9 width).80/node ,l[pacingW). Chosen as a se W  ctive parters.(PXReturnsMisc ]T V[has Dbe porKfrom D.UCMK Pub@ Sub Run( Yń ADim obj@ElEAs EpE's^czG6es GEnumerat  'eAdsub-}us%A @T &'t ofǂFzpnt  Point3dI'pA cby use_a&xbReDc BooleanFD'rk mo c@1k flagbToSM q's @`kto UTg ;Lz ` '(@14 R2 ISFdELlSbA F WCq 1 l WwCa ox ' Õ  0 C F 3W *P_i fRa , cxlud3 '-F4S? ''-bd% I(? . B4I8?bIsBolo 43i)!\@Ita_#UnderL@wd 2N iLSpDoPXe V ,sj&7vZstrCommayRSP^2'pBhow"6ctma pStxatuZ r orF~S  -S S Q% Orr@cGo To catchE S Do Whi Tru#  Call( Apaa!.C adInputQ ueue.Sendt("noe _"xr^= FalZsS " \s P"i^Cv= on lecui("Idi!^fyfx(f Exit)", S L, l( If it DoqG "GetpValue("AҜp/Rej NotVIs h)WithF!'q륏tm= . k /!Yj3kg OA@8Q= LV=" &Œ .& _S8 WTC@A(] ) L.C1.ber= pCOx#9GH29Ýġ_ '.IsaW&)4"3| A].EXIf ! 1b 1=   8.p1kZXDV";?RtElsKAErr`5"No_ ^"0@s_Ypl`EdA Prompt "S$' u be c]0beZ(e eS-A s cursbaa: o normalAtartDefault#SRXSubQca(tch :' R@at bo@x drawAPf`ailed$Cs.Log " SETSHOWImpl.RunT rSCToMsgBoxCurr0                d                " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 7 8 9 : ; < = > ? @ A B C D E F G H I J L M N O P Q R S T U V W X Y Z \ ] ^ _ ` a b c e f g h i j  l m n o p q r s t u v w z { | } ~       [*  q        x  ME       P  -return completion code E -locally use temporary storage ? Request type sent by calling ucm 6 value meaning ? ----- ------------------------ F 1 Return scale in xaxscl & yaxscl D 2 Store xaxscl & yaxscl in CSTN E 3 Return x,y coordinate in i0,i1 D 4 Store x,y monument coordinate ; 5 Include CSTN in file 5 Return completion code ce.G 6 value meaning dPr ? ----- ------------------------ = 0 completed successfully Ca : 1 Text node not found < 2 Scale not initializede.Send ? 3 Monument not initialized in 4 99 Abnormal exit 0:97 9 r1 loop counter ( local use ) = i0 X coordinate of monument point  A received/returned for write/read = i1 Y coordinate of monument point A received/returned for write/read Q --------------------------------------------------------------------------------  ( ]    Was CSTN found? >]  #  function result ]  ]  ]   ) save previous setting during create CSTN ]  ] 8 ] X '   # lookup CSTN Element (in TextNodes) 8( B@  0:71  B@   %  . 8( '  ! b 0 $  ! .   %   G ' j  !     !   ) Return scale in xaxscl & yaxscl & zaxscl K T F   %   $  ' t     $   1   $  X (  >  $  X (   $  X ( B@@d v' k d v' k  ' Store xaxscl & yaxscl & zaxscl in CSTN N K T F @ !    !    !   1  ,   sv=2  . Return x,y coordinate of monument in i0,i1,i2 dK T F LL O  %   $  '      $   1   $  X ( fmonu  $  X ( hsign  $  X ( $ d 8 r' k ( d  r' k    Store x,y monument coordinate$  K T F (  ! f   ! h   !   1  ,  0   Include(create) CSTN in file N K T F J F! ^! . P F! ^! .   active level=Level 63 >B@@  le  active line space=:.001 >B@@  active txsize=:.001 >B@@ Mb  include fpp:sacstn.txt >B@@   point absolute=-:1,-:1 >B@@ B@  F! ^(   F! ^( n 8 d 0 t' k   (  ! '  z     Report that function failed  fnRWCSTN B@  B@    ( B@ ! ' B@Ni x p  Attribut e VB_Nam e = "RWC STNImpl" Option Explicit@Priva Module Const t_ELEMENT_IDSACS92021101 e ' FHunckco zeE d [Pub | Enum ResultTyp " rtC4ed SuccefulDly {0 T extNodeNotFound B1Scal I(nit 2 Mo 8ent 3 AbnormalEx99 E *P' Reque t Q s " by 3ling ft lmqtGetQ NqZqtS XMyZXY X 4eq6clude+n@ 5M2nAof params as Eregi sters inp ucm3/jPCB 0 Aspx axsclDo@{uyRzRiBIi1i2IAl;Yl-? JDescri:A Read WriCadd S tandardsJ  (C) ised otherAas Pto rs,"mă ax@.. . etc fr*ok'# ` CHADD tf n g whicha`ten/# B FPP_ed@ file Ha@ knownCsngs size.oThe followf! Apriormodifica!o $i)2B* (x y z 1[if@_ se])1103 xy r mnmt |4eo uga;<5?06?,7?,8?,9?+10,6Lines 2 p 3 afB<. will bex1.1 1d.2` 3 ್j2e22.be `" [in /out]ARe turns.r0 (=0 T"TededTg1 Us DimbVKu`'@ // InRg(cJte) gPCB2Ra = rJjICafn( StorHe xb& d&~ c=`DsqpvsqPvw y3 m  E  偟Np%@MsgBox." " &DfI,y ecoordinS30y= /:1P0:2?xCrn x w g i0,i1,i:?'j& '@ ?4Misc: гm~ rwcstm.™!*P & 9 uszor 5  Pi }uveralVs -rdcoo`U3Monumen?t 99!Abnor mal exit[rq6loop cqter ( lo_ use )iXordinate of m_ppoin?r eceived/@return@mf or writeՀaNi0Y ե Func tion fnR WCSTN(param As Ps)Res ultType On ErrJGoTo h VCDim bFABoole an 'Was ? r Cq 'f*  objEleB-ANN ΄ eEr|at+ SCNew `jnCBria# ' save p revious setting dur creR/!" A.veaStyuLevel!arrValues(4StAA*= rtCS/ᒤa'ookup 3d (itn *srS C.ExcludeAll!BsC InB msdd E  SetR )4= C$M@9l Referencte.0( K=` FalsAR`D`o Whi* .MoveN !A@ =.Cur !a If .ALine(1) =%_EL EMENT_ID Then^= TruL  #` Or o.r0 rqt'0 Select Ca%c'' Rb s 9 xaxscl & yzg `Get-le:G M Split2(#2), "< "4a UB() >= 3b& (3a-"1"tC!D 3Dbl' (0)!gn1oC2o DU*#W H:RNo@ sEnd IfE/// D ' S Se _#d%A*#5m# O4@42�*C* %F<1" /x,y/zuBc i0,i1,i280\XY0sW0t0300 0s0 4 00O0o)S$1,0t$2// _*t */+o5_t_/0 0 $co%?#/?# //rM0-Y.0i2S// 'c()|@.f q f-` ypP_caq.QsR/H5 Ìovefh% CadInputQueupendHKeyP "a l!=63 A| space=:.00txs ֯ i fpp:s acstn.txt OA ab solute=-:1,0 Aөx;`<W"o{)da6s@::xo2Ò2ÿ#U  hError: ' Re port tha t functi on failedCodes .Log "fnRWCSTN"<ToMsgBo xCurrentJparam.r 0 = rtAb normalExiS ) End F     L  ʄm        x  ME   (  < < < <   D I  `  ` (  x  % h    S     L  B ` 8 :   L 8 "                        >    X  p                         J    p  x  D  :        (  8  H   X   h  x           H            @   X  . p                           0 @ x p E ********************************************************************* ---- < Description: Toggle between meter and mm working units setup 2 If the file is set to FT,set it to IN 3 If the file is set to IN, set it to FT ******  Parameters: none** E *********************************************************************  h ] @ ] X ] p  noecho F! >B@ (  F! ! " F! !  '  F! ^! ' _     7 English system activated; for inches imput only kabayan " $  (   (    (   (  str  (   F! (   (  (   ( %  (    ( %  F! (  ; ENGLISH SYSTEM ACTIVATED; for INCHES(in) input only Kabayan FB x x k   F! !      F! !     '     8 4 English system activated;for feet imput only kabayanle  ft ( fo (   ( Firs  (  t to  ( xit  F! (   in (  ( ' j  ( Pick  (  . '  ( Pick  F! (  9 ENGLISH SYSTEM ACTIVATED; for FEET(FT) input only Kabayan FB x x  k  F! !     '   gu=10 F! >B   gr=10 F! >B   1 MU--> 1 in, grid ref is 10 cm FB x x X k P x H @  /file F! >B   echo F! >B@ |    ENGLIImpl.Run B@  B@ ^( o   q Attribut e VB_Nam e = "ENG LIImpl" Option ExplicitA@Priva M odule  '*A GDescriw: To ggle bet ween met er and m m workin g units setup > If the f i Ci# to FT, - it IN#IN,1FTPar Hs: non E Pub S ub Run() kO rro r GoTo hE Dim dUAs Do GG Griu MeasurementCCApAaA.Ca dInputQu eue.SendCommAd("noecho"*= Active@elReferenc@ubB.PerMasSA *UORs 7 IA +d:Sett s. I@>= u$" #?$?$'?$?$u.?$shdcd4#Call*eShowPr ompt(CSH SYSTEM ACTIVATEDRINCHES(in) iazcSKcSx+a Ex)cEIf'`fp(Notww`1) Or _G (#O A *bx)xhxAxfeetxx"ftSw3048Kw# u.wS)_\ \; 5N"in/k ] NpN`nAN ;dqN`)/n[;;;;beFEET(FT;an;; ;; 66;66 ("gu=10 /;# rS1 MU--> 1 Q, g` ref 10 cmOQ0Gy LooAC1 /1  rp4 C:Codes.Log.@98Repo rtToMsgBoxCur0`q5                                                                                                                   D $  X  '  %      -     L  6 ` <  L "  @  H   P   h  p                          0  H   `  Z x                0 @ x p E ********************************************************************* **** / Description: CACS Working Units setup activate; 6 METER input shall be used; mm DIM displayxp  Parameters: nonep E ********************************************************************* %    noecho F! >B  ] @  M ( om (   (   (  YPE-  (   F! (   CM (   (  (   (  ****  ( ****  F! (   gu=.1 F! >B   gr=10 F! >B   /file F! >B  L CACS Working Units setup activate; METER input shall be used; mm DIM display FB x D  echo F! >B  |    METERImpl.Run B@ h B@  o ] Attribut e VB_Nam e = "MET ERImpl" Option ExplicitA@Priva M odule  '*A GDescriw: CA CS Worki ng Units setup act; 1  input s hall be used; mm DIM display 8Paryters: n oncb Pub Sub R@un() ROrror GoTo hE RCXApa.CadIeQue ue.SendC ommand("noecho",Dim u A s Measur`ementu@.Label Hu.UPer BaseDeno minat(= 10 NumerEmsd3HMeWE Sypstem @ ric @Aze@ elRefere@nce.Ma@r;%@u C9CM!9 8FA?9m*9 Q8)gu=.1ň*r=10KS /fileSh owPrompt("} ?{${Ujj Exitw4 t:DvCodes.Logh.|MhRepo rtToMsgB`oxCurWE ndc      $  ʳ        x  ME    8     j  ʮO  H Z mdlElementTemplate_activateElementTemplateByPath       x  ME    (  <  <  <2 <  H +V` @   iX **** D v   nt.  %  reci %    % \ N  % ^8 and  % `p crea   X  % utom`r ch a b YPE-  % d ters  % `f  `h  `j `l `n `n `p `r `> `@ `t `v `x `z @  `       H     L  P h T T  R h   L  "  (  0  8  H  X  h  p                              (  0  8  @  H  P   X  p         $  6   (  " 0   X   p  x                       0   * P                0  P  p   8           (  @   X   V `   *    $   H  P  p                 <          (  H  `  x               0 x  h E ********************************************************************* I Description: This function draws cloud. Cloud is joined as shape element. N This will prompt the user to pick a point anywhere on the screen, N as a start point and enter point at random, thus creating a cloudters L automation,and can be hatch afterwards.CLOUD is TYPE-6 pp A-17.  Parameters: none E ********************************************************************* 8 `  ] D  ] D   ] D  ]   ] D   ] @ ] D  ] D  ] D  (] D   ] D   ] D  ,]   ] D8  .] DP  xit ] h ]  ]  ]  ]  ]  ]  ]  F! ^! . b F! ^! 2. d F! ^! ' f F! ^! ' h  noecho F! >B@ > OTHER\CLOUD $ | $ V  nge  " Error: Element Template not found! B@~ k   First point(Reset to Exit)' n exit n r `%  ' G r '   ' j  ' l  Pick up point no. ' n   Pick up point no. j ' n_ ( n r `%  ' = r G x j >B !  !  ' p !  !  ' r> p p r r $  ' x x   "  not too small distance BAKA p x ' vB@ r x ' t x   ʡE? ' x t ? x ' @ v ʡE? x ' >x !  > @ \(  \!  ^(  v ? x ' >h t ʡE? x ' @ !  > @ \( rdin \!  ^(  ^ l+ ` 8 $ element for "create shape automatic"   Drawing =1 l  ' l  /parce F! >B   F! >B  ' , \ F! >B  ' .  F! >B  . 0k !  !  !  !   T ( End Point coincides with the Begin Pointe  Reset to Finish.. FB@x  create shape automatic F! >B@  ^ F! >B   Working....please wait FB@x ] (  l     $ ` F! >B  p FB x x X k P j  ' j '  n j ' or Pick 1st pt. to close/Reset to Exit  ' n  k   FB   /nulcmd F! >B @ b F! ^/  d F! ^/ 2 f F! ^(  h F! ^(   echo F! >B  (B@ UCM Exited FB@x |   CLOUDImpl.Run B@ B@ o    Attribut e VB_Nam e = "CLO UDImpl" Option Explicit Priva Declare FuncDmdl ElementTe v F_a 2X . ByPath Lib "std 8 bltin.dl l" (ByVal w"As Long)  Module 0 '*A #Descri{: T his fqdr aws clouPd. C j oined as shape e5.% %wi ll promp t the us er to pi@ck a p%t anywhe  Heen, (8a start9d (#t random,5u\rea g 4Cb(utom@on, can be hatch afterwa0rds.‡A>TY PE-6 pp A-17 dDeltaX!Do`JT ECYRsSinrCosSqrxAng 4* #Set <= Apua.#@}s.??B$cBBCD C CadInp utQueue. SendComm("noecho"If ?%#(FPtr("@OTHER\")) <> 0 emF.RaisrrInvalidf, , r": [% td fbd!B nd IfG^!Firs$(Res?ơ)$c$pt= "on.Geo`ue(y , DNotT=U n>= 2= 1 ;Ppuptmno.$ " & (7Do qLptv]oalotd1 XThe!pY=G.HX -.XOtLaY .YMYSLE= P (E*J + Y 5Yo D!dsc0  'n"too HsmapdiЈncUA5 9s \/ dS= oTb / 2 / 0.866daB* 5 dX Yq~K0 d 9h Rp { D { u S%G OUD `@ nge `B  `D e.il`F `H F`J np`L  `N ultL`P eue.`R 8 `T atio` Keyi   @           \ 0 \ B   X \ p "                   (  0  8  @  H  P  X   `  x            T   0  @   H  P  h                         (   0 . 8  h $ x                        8  H   h   p  x      "                                  (  0  8  @  H  P  X  `  h   p   x                        (  8  @  P  `  h  x                  0  @  P  `  p    "                (  @   P  h            (  @  P  h           (  @  P  h            8  P  `  x           8  P  `  x        x p ]   U ************************************************************************************* ) Description: This function draws shapes U This will ask the user to enter the data required for structural steel % < shapes to be drawn to its correct dimensions.  Parameters : none V ************************************************************************************** @  ] D   ]  ] D   ] D   ] D   F]  ]   ] 8 ] P ] h ]  ]   noecho F! >B  F! ! " F! !  ' ct F%u?' np '   Dept'  DIM_ 8   '  " Enter dimensions in inches: Enter   /Reset to Exit r$ l '  r G x j   K T    ' .  thickness of web'   K T    ' ! ^  width of flange '   K T    ' OUD  thickness of flange '   K T    ' al dx  n   r b  Pick anywhere/Reset to exit r$  ' @ r G x j   working....please wait FB x # ac     A $ F! ]  $ & . FR F B@L = FB@N ! >B  FB  `' r   echo F! >B   (B@ T  UCM Exited FB@x ell |   BAKALImpl.Run B@  B@  so P  ]  ]  ]  ]   ]  ] 0 ] H ] ` ] x ]  ]  ]  ]  ]  ]  ]   ] 8 ] P ] h ]  ]  ]  ]  ]    calculate coordinates to ' ( (' D !  ( ' (@ ' * *' F !  * ' * AS=1 D   ' . .' H    ' ,ti ,' J H J ' , ( , ' ,! ' .    ' 0 . 0 ' ." .' L * . ' . !   ' 0,!  H J ' 2' ( 2 ' 2 Oe?  ' Nntal y):?  ' P h"lxz? N ' R h"lxz? P ' T , N ' 4 * P ' 6 . P ' 8 2 N ' : , R ' < * T ' > . T ' @ '    fill the shape points array  +    '  ( $  (  !  $  (    '  ( $  (  * $  (    '  4 $  (  * $  (    '  < $  (  > $  (    '  , $  (  6 $  (    '  , $  (  8 $  (    '  < $  (  @ $  (    '  4 $  (  . $  (    '  ( $  (  . $  (    '  ( $  (  0 $  (    '  !  $  (  0 $  (    '  !  $  (  . $  (    '  : $  (  . $  (    '  2 R ' < < $  (  @ $  (    '  2 $  (  8 $  (    '  2 $  (  6 $  (    '  < $  (  > $  (    '  : $  (  * $  (    '  !  $  (  * $  (    '   +    '  o 8 0 ٶ Attribut e VB_Nam e = "BAK ALImpl" Option ExplicitA@Priva M odule Dim m_p tShape(2 0) As Po int3d>'*Q 'Descri: T his funcdraws s=s +  +wi ll ask t he user to ent data req uired fo r structural eelG+7#be Anits cor rect dimHens s. P ar8s : Xnon S*Pub Sub Run() DO@yrr7GoTo hECCw@wtartBu wAAoLineAqEle@9 Eb0ExitABo oleannCXoun I@ag er ^WhatEBgSngda0Do@:RQda123=n9nAN(dConstdUnOA5%.CaA pa.Cad InputQue@ue.Senm mand("no`echo"mD=J IA vee lReferenc ubB PerMas A *UORsE!!H*= 0.025475@pDeptDo !+ 1.= Get/Value("Bj in@ ches: c" +wG+ " /ResetasS", 80, bT+If;C e XSelyCase gaa AT= I* D9 bHa)thickn ess of web$+Aa B2`_ Mwidthflange1312 ̟iR) da3 `=End c>Loop# Do While NotG ʧX"dXP9 anywh v'Se@ S R Show Prompt(" working. p X+waitE 7 Fillr}Array(y , ,A 1A 2A 33GDelaaSp8$= CLre(d1(h=0 ,78:NNAd:dh  .ReygNADisplay (Trueh%S}!^Co^]DSt .P rtDefault_ ("UCM!ited ,\ ~:~ Codes.Log(.Run=8 ReportTo MsgBoxCu0n1ub2= #Gp203d#X{ z Xz yg4 &di{0(di4ym5oa6oa7oa8oma9oa1/ 1?sOsssosaAabbb"a1ss; iJ' calculP70ordin ıJm%=pOud io9R.X`A(@kY - *6pF!/ 8!i6R51 958a9J30573`]iP a7ta0A & C4 F͟ab a8W 538q1.x087 !0.67410 4 0.322611vD;i< a1g dicHq di51gQ !!a1F" d0+P(aS i! qS ' f{" bps aa|! m_ptSh ape(i) = `tartPo@int i Ti + 18 .X Bdi32fY 2 .YH=di4+H9. .H1sdi1I:5G10 "֡"4)X6g4WW? di7e" XC D.(9\12V%U38 - daCKEB Bdi81?Ti)DeY_w/K4 ?O*) 3En d Sub  |   |  Ƣ        x  ME      P  <  <  <  <  B@] D  ) " location of cell placement on lineFB@]  )  start of partial delete ] D0  )  end of partial delete ] P ) selected line  ] Dp  )  cellCOPY] D  >B@@]  ]  ]  )  flag: place free cell# ac F! ^! `' \  noecho F! >B  Place Cell R FB   AC= R F! >B  Acce V `%  ' .B  X `%  ' 0! '  T     this is an fpp cell ]  ]   '   (   %   s  TS= !  F! >B   AS= !  F! >B  d   Drawing Not INITIALIZED FB 0 '  k  ' r k  _  r x  k   AC= R F! >B  CORN ) Identify line or Reset to place free cell  r$  . @ r '  x ( k   AS=1 F! >B  ; activ scale  activ angle pt2 F! >B  DNo1 ! * ! 5 ,! 5 .!  Z ' " $ vertical line  5 .!  ( 5 ,! 5 .!  e  ' 5 .!  (  ' " %  horizontal line d ( ' PLCCELL: ERROR Invalid Line Orientation FB 0 '  x  k  q  " K T !  (  !  (  !  . (  !  0 (  F! ^( ` Z K T !  . (  !  0 (  !  (  !  (   % Application.ActiveSettings.Angle = 90  1 Application.ActiveSettings.Angle = 3.14159265 / 2  AA=90  F! >B@ n x  AC= R F! >B  R  F%  .     ERROR: unable to place cell FB 0 '  x  k  T     F! >B   null F! >B  d   delete partial F! >B   F! >B   F! >B  F! >B  ! l    ] ( 0 .    '  " K T !   (  !   (  Z K T !   (  !   (  n   /pfencb F! >B   F! >B   F! >B   lock fence clip F! >B   /dlfncc F! >B   F! >B   lock fence inside F! >B   /pfencb F! >B  k   /pacell F! >B   F! >B   null F! >B  k (   echo F! >B  \ F! ^( ` (B@H   ac= R F! >B  d  (B@ k  |    PLCCELImpl.Run B@ B@ o X @  ; Locate a point joint of the line and press enter to accept. ]  _  n FB@x |   F! >% z . t t!    t!  |   ' r r x  d  t!  t!  F! (%  .     ! l ( t! ' 8 Accept/Reject r `B  r x  k k k k i  Attribut e VB_Nam e = "PLC CELImpl" Option Explicit@Priva Module '*A GDescriu: Thi@s funcp laces ce ll and p artial dele a line pending on O input re cieved f rom the comm*menDu.Part ers: 1. 0strC;(in)-- n 12. n>--can b e: 1-PIDl6srleave as vtr!4 !no change symb5-8FPP s et scale by l to rwcstVB3HLeft=Delt e of origin Xfor n$4BRigh--C htMicc:eTFus -.xbas @ @ Pub@ Sub Run(Aȉ As Sn g,Integer,K @>) 3OrrNGoTo hECDim dA vAngA nOrien|ta΀" '@ ;@3choosenDKptT ouchPoint# 3d 'loc arBW h4 Stujav :Av s;zAPtEnd  !% objLAEle's@ctA' }`A'd;aDoC *d;-bExitABoo~ lebDrawaf ' flag: #fre1 HD`Apb7.bGeSett`s.HCa ICadIQuePue.S-C("noeH"U.PShowfP q" +IAC="1= @on.Get.FUnits!vaD38$0c 4 = Tru>If1= 5@ m 't!۠@fpp¯ oARWCSTN^am`EdDefaul|tS"`CIJ = 1G `lam.r0 rqt`BGP q.fn (Ub)Atpqwd Succefully 7!?$?$5$4TS&a xaxscl8!cp|("AElsq1+V ("8Not INITIALI8ZED.% FaK If>y"ssDo#TheAUrC?_?54H@B 5T= SRU("Id1fify"d~ ReЂX>L: ERROR In@valid a Ȕ? )?Q1 )B<*;Q  6 CaseeǝM0;qpt.q_oYo teb$X - ’X{?;P*l9KOY 1 Y XOj, oint.X  'Appli cation.A ctiveSet tings.An gle = 9033.14159265 / 2C zCadInpu tQueue.S endComma nd ("AA=P90")@E S`elect C0all "[ -C= " + strCellName3 obj ( reate Element3(! , ptTouchP, Tru +If,Is Noth ThencԎgSho wError(" ERROR: unab to place c f A%bDraw3FalseOExi0t Do \IfGG52 nO6p M14gDataO(IRf4Đ("nullJ >idte partia%7StPD9Ptj|Rese(ka;a.Ty p54VDim d`ta AsI>uSD a $= (dRightp@dLeft)4~ Case Lrin/Bpdpt-.Y U+ -d  -ov"ѫVXB X&b-_ete.pWAma f ("/pfencbdfe  h f ? lock @lip6`'dlfncc'4e y y("insideO 0;y~~"D a(h  u /ppq;`/.w7??Z?h Lo|ops(msd, |6bx7s .2qqs Or 0g8 8/by+w! ?-Db 1g.View_  (q8 u Q1,6pt#,=g.b !S_QPiP R1ue`ס)/Rej0"$0hiDo.;dC= #Z?               x  ME   (        0  @   P   p   *      .        0 @   `   h   p  x        D   (   8  X 0 `              D   0   H   P   X   `   x                     <    P ( h 8    :      8  @  P  h  x          ,     0    8 " @  h      x p Q -------------------------------------------------------------------------------- Description: E Multiplies selected element several times in specified - direction at the same distance Parameters:-in MI Returns:  Misc:mirr Q --------------------------------------------------------------------------------  ] @ ] ` ] x ]  ]   # of copieslycomm]   for copy ]  ]  ]    corners of fence ] 8 ] X ] x  ' r  L MicroStation disables AccuSnap whenever a new command starts, so a command tal  4 should enable AccuSnap whenever it is appropriate. MIRR (B@ RTICAL r '    Terminate any active commands  NULL >B@@ r b  . Do choose an element(change cursor behaviour)RESE  choose element >B@@ .   MULTIPLE COPIES FB@  T (( FB@ / FENCE OR IDENTIFY ELEMENT (PRESS RESET TO EXIT) FB@x | (B@ >% z .  !   (B@ COPY ELEMENT >B@@ etNo1W !  >B@ isionN ! '  l # accept an element by click anywhere bSize1 '  RESET FOR NEW ELEMENT FB@x tI Accept/Reject  `B   ' bTitle !  ~ e   If message.Keyin = "" Then '  _  '  if no fenceWW ! !    select first corner 4  PLACE FENCE BLOCK >B@@ . DEFINE FENCE BLOCK and DEFINE DIAGONAL CORNERS  `%  ' ocat  >B@    select second corner Desc   DEFINE DIAGONAL CORNER #2  `%  '   G  >B@ j l1 k H k @  select point in fence  - IDENTIFY POINT IN FENCE (RESET FOR NEW FENCE)  `%  ' DNo1  G ! B@ j k   FENCE COPY >B@  >B@ k p r   ' bel44W   End IfFram !   !  |  e ' r k    Get number of copies   " KEYIN NO. OF COPIES(RESET TO EXIT) r `% l '  r    ! get (an element/ a fence) offset ' XXX,YYY RESET FOR NEW ELEMENT/FENCE  FB@ '   DELTA X,Y; KEYIN OR CURSOR   `%  '     $  '  k    do copy  $  '   b (B@  >B@  $  '    '  8 k 0 k (   & Set MicroStation back to normal state  ((  (B@ |     Report that function failed  MLTCPYImpl.Run B@ B@  ((  o P H ~ Attribut e VB_Nam e = "MLT CPYImpl" Option Explicit@Priva Module ` ' -L SDescri: Multi es selected ment veral tim in s pecified1Gdir tat@ the sd@istancn' Par tersCReturnaMisc Pub Sub Run()  Dim objM essage A s CadInput bExitBoolean BreakDoCopy Fe G' # of copitesn  IntegerC' for yA:ptSrc P`oint3 o@ptDsB5POff secornrA(f1UpLefLowRi,ghU,eBbTypBfMsdg%COrr #?BLOCK<yptn:p\DEFINE X@)d dDIAGONALJRNERS A3  w4e fseco@m?O CP ptF}O#/ #2f ?,Q!jioEIf{?FH q* _K5MAAIeePOINT IN#(;G$)0 D"p4Und4  F!Loop [ Odwf81Y!K  ,W#@#X 'O WxReO~r{AZ_NTru(n ' h numbe#ԤI>4ȔmKEY+NO. OF+, 0o?*E"F> 0H ' gГ(W/0B:)`+A~1us ( "XXX,YYY~/"8") bBr eak = False|ptOffset Com mon.GetP ointValu e("DELTA X,Y; K EYIN OR CURSOR", , True , , eInp@utTypeIf pmsdCaBd1Datay Then* 3dSubtract(, ptSrc?End If,' do copy ptDs6Add3.23Do Wh ile nCopies > 0-gandSta te.Enabl eAccuSnapQueue.SendU _1@61(E0=2- 1Loo -[W.C' SA MicroACi on back to norma8l sI MMe@ssagesOd rtDe`faultDC E0xit C hError: ' Report that fuHnct'fa xd Codes. Log "MLT CPYImpl.0Run" To MsgBoxCurrentC b6Q + E      T        x  ME    (  <  < < <   D @ 3   iL  `r  y or % ` N s ke  % (    >     R  8 h ` T  ( X .  ,  "                 4 0  h  p  $   "     $     (   0  8  @ H 8 h   "      $     8  @  `  x          "             0   @   H  P  p     x p K Description: This function mirrors selected cells around its original point  1 (either vertically or horizontally). Y This function uses key-in MIRROR ORIGINAL VERTICAL to mirror cell vertically N and key-in MIRROR ORIGINAL HORIZONTAL to mirror cell horizontally " Parameters : nParam - Mirror type: ( nParam = 1 1-horizontally0. & nParam = 2 2-verticallycomm  ] ` ] x ]  (B@  % S  noecho F! >B   - Get Mirror type: 1-horizontally,2-vertically F L  K T F   MIRROR SELL HORIZONTAL FB@  tal  mirror original horizontal' % SELE  K T F L LI  MIRROR SELL VERTICAL FB@  ted  mirror original vertical' n ' r ]  r b   Locate a cell to be mirror  IDENTIFY CELL(RESET TO EXIT) r N `%  .    ommand  ELEMENT NOT FOUND  FB@ cal lid !     Get mouse click for accepting ff  ACCEPT/REJECT r `B  r   The Cell is mirroring on  F! >B  J  ! ! , F! >B  n grid ! ! , F! >B  >B@@ F! >B   k 0 d (  ELEMENT NOT FOUND  FB@  set k  k    echo F! >B  (B@ n line|    MIRCELImpl.Run B@ ---- B@ >B@o x p T Attribut e VB_Nam e = "MIR CELImpl" Option Explicit@Priva Module 'Descri^: This func|mi rrors se lected c ells aro und its original poin f'  (either verticaHlly 0 h 4zont). 3 uses ke y-in RO R ORIGIN AL VERTIC to TO6--aZ&H +ZONT' W (Par te : n - M type::= 1 t1-' ~2 2-Pub Sub Run( As Integer)  CO o GoT0o hECDi m bExit Boolean1GelCxEl8emet st rKeyInCo,mmARSngCCSt@.@ rtDefaultD ~ ApaA.CadIn putQueue .Send ("noecho"D7' Get[ TF,M/ Se Casel!B1@mB 'Show#ASELL ܊J焨Fǁ B#2e#(~be%&feE@e&C% F= Fa\ls !CpbIP A3d#Do W hile NotMA'Locfauwbe$xSoL+++M LoopS [b("[1*`ca9in kPRlCodes.Log).RunKHReport ToMsgBoxpCurrm  (  < < < <   D 0  8X !  % `r p ` vert` ng s`  Pa8     7     L  V `  L "    (  0  8  @  H  P N X   $      ,   @  P  p  x     2  <            0 > 8  x <     >       8   X   p                          ( 8 x p E ********************************************************************* O Description: This function breaks the vertical lines by deleting segment of it.  Parametters: none E *********************************************************************   ] @ ] ` ] x ]  ]   H dLenghtSegment - The length (along the Y-coordinate) of deleting segment  0:0.2 `%  '    Terminate any active commands0:1. (B@  '   noecho F! >B   % Set locate cursur for choosing lines ical (B@> S  VERTICAL BREAK FB@  ic ' r _  (B@ 45) d  + Select horizontal line or point in the view are d % SELECT HORIZONTAL LINE(RESET TO EXIT) r `%  ' 8ted r x k 8! ' he l '   7 Call Application.CadInputQueue.SendDataPoint(ptPoint) le  b 5 Call Application.CadInputQueue.SendCommand("/DLPELE") @  Select vertical lineX ' SELECT VERTICAL LINE(RESET TO RESELECT)  `%  ' 8Le   8(   /DLPELE F! >B  awing 8 F! >B     8(  noec 8 F! >B   DIVI X P  echo F! >B  Ge (B@H f segm (B@  KEY|    LINEBRKImpl.Run B@ | B@   Geo   ҳ Attribut e VB_Nam e = "LIN EBRKImpl " Optio n Explicit@Priva Module ` '*A GD escriw: This funcbreaks the ver tical li nes by d eleting segment @of it. QPar tters`: non EPub Sub Run()  Orror GoTo hE Dim ptPDoiOAs 3d bExit  Boolean 3dCoor(din YDoK sF9dLenpghtS !'E-]e l th (alo U\Y-c)W\C+L= Commo n.GetCFr omUnits("0:0.2"M@' TermB1 any a@}ve candsCS@St:.@r tDefaultD all ApAa.CadI nputQueu e.SenLmm ("noecho!Set loc cursur fros"etLB C orC Show) ("VERT ICAL BRE AKE= FalsoorEAEnableAccuSnap! 'S@ct horizon*t 5pQinCjiewT7U Value("S ELECT HORIZONT ! (RESET T O EXIT)", " Distance may be horizontal, vertical or inclined. R For horizontal and inclined (less than 45) distances vertical strokes S are drawn. For vertical and inclined (more than 45) distances vertical ------  strokes are drawn.  @ The stroke consists of two connected line elements. Z The length of each element is half of a character height. The length of whole ' stroke is character height  ] @ @  Input value ameter] X ] p ]    Calculated value ]  ]    Length of each line ]    Point for drawing lines ]  ]  ] 8 ] X  noecho F! >B   DIVIDE DISTANCE FB@  ' r   Get number of segmentsV Bu  KEY-IN # OF DIVISIONS  r `% l '  | r   Get Begin point |  SHOW BEGIN & END POINTS r `%  ' k  r  Get End point  e  SHOW BEGIN & END POINTS r `%  '  k 8 !  !    ' t !  !    ' t F! ^! !    ' <hpvt !  (  !  ( ] x     !   (  !   (     !  < (  !  (  !  < (  !  ( d  !  (  !  < ( t !  (  !  < (  ek  ) Create a line in the application context   ! F% J . Dt   Save the line to the file D ! F! B@L  ' Redraw the line, so it becomes visible P DB@N   ! F% J . D   Save the line to the file D ! F! B@L  ' Redraw the line, so it becomes visible P DB@N @   Should be called before exit  echo F! >B  (B@ |    LDIVIDEImpl.Run B@ B@ o   q Attribut e VB_Nam e = "LDI VIDEImpl " Optio n Explicit@Priva Module 'Descri^: Thi@s func|d ivides d istance into spe cified n umber of equal lengh l' segmentsv. l DV Tjd ~_by po! sing rt and e  bsG th c 8draw .Strok _are n ^eparKO he0Xt7s0not2(. A v(ym@bologyjus for3J may be h orizonta l, verticinclinedF  J (lessJ@an 45)0sG2Mo B~ Pub@ Sub Run() Dim bEx it As Bo9anCCErrpGoTo h'Input` valu ^% nSk Integ er ptBe(ginaPi3d=iE i`*'Calculdd dvX Do`Y'LH1a7ydHB/" /gEsptpFromC To1622mL l! EK .# $Pl Apa.Cad"4Queue.SCommd("noech o"AShow  "# DISTANCE #G@= Fals-'xGetHB=b  on.DVaH(" KEY-IN # OF VISIONS ", 1,CU$C If N`#kWaBCM"!%Pb4eSHOW BEG& END POINTS $AUIf !n?N ?Bz#(b= (pt .X - D.X) / 1lY`dYhYp#*4 43=j(gSettp2s.TextS tyle./ 233 =  5 YS a5i1Feai 1 K'- 1S ;|+ 7Y>   "Abs(>@)0-ptC' s/ ) 2- 34O2.QElߥ? 1  1 To { * 5e: ' Cdrea [ vagS|t0*+ X= MicroStVDGN.VSZ2(IhP/,? q $DSa1 fi~?1 OG^5гel@RefereP.8AddDb ' Re!kQ, so becomvisib.TmsdDNormal 7//./ng+2///OA/ce/T///6e/-NV&'S`houldlbe e e0#?~?~5~~}+ tartDefaultS C:Co.Log .RunԁbSRepor KMsgBoxCur) Q9                                                                                                                               ʽh        x  ME    (  <  <  < <  h D X  X  % x  % `r 0000` qJ` ne    % ` ` ----` ----` ----` --- ` @ ` ` ` 8 `     i 8  GRAD)8X  AC=0 %       j     L  L `  L "      (  0  @  P  `  h  p                           0  P   p  x 8             B   0  8  H  ` ( h &  &            (  8  H  `  p  x     8               8   H   X  p    .  .     (  H  `  x                              (  H   X "  ` 0 h           x p E ********************************************************************* **** E Description: Place multiple instances of cell 000006 along two points qJ  Parameters: none E ********************************************************************* amet  ] @ ] D`  ] D  ension] D  s (]  ]  ] D  : ]   ] D  2-s] 0 ] H ] ` ] x ]  ]   0:1.0 `%  '   0:1.0 `%  '   0:1.0 `%  '   noecho F! >B@  GRADE PLACEMENT  FB@  AC=000006  F! >B@ _  F! ^( ` ! LOCATE START POINT(RESET TO EXIT) r `%  '  r x 0 k ( '  '  ! LOCATE END POINT(RST TO NEW LINE)    `%  ' ******   ~ ****  KeyIn input ******]  !  F! !  F! !  '  !  !  $   ( at !  !  $   ( Ind  !  !  '  !  !  '    ' or   ' sc   n CS   Make it horizontal !  ( d    Make it vertical% !  (   AA=90  F! >B@ aram.r  1 Application.ActiveSettings.Angle = 3.14159265 / 2 k  k  !  !  '  !  !  ' LI   '    '    $  ' ion   tion   Integer number of section    '        $  '        $  '        CELL PLACEMENT A  >B !   ( ax !   (   d x  SINGLE CELL ONLY A  mek P k H @  UCM EXIT FB@   GRADE  FB@x B F! ^( `  echo F! >B@ |  GRADEImpl.Run B@ B @ B@  dimeo   ) strPrompt - a prompt string to be shown  FB@   /PACELL F! >B  secti 8 F! >B  '  o    Attribut e VB_Nam e = "GRA DEImpl" Option ExplicitA@Priva M odule  '*A GDescriw: Pl ace mult iple ins tances o f cell 0 6 along two points GPar ters: non E Pub Sub Ru@n() O rror Go`To hE D im ptBeginPO As 3d End bExit4BooleanHUseKeyIneInputTypeMsdCad dMinAllowedDiCb# 3|Do@DX;B etweenSe ts OfLi\ne> iInteger#E!XYRSqr  R nNumOfxSecB3 $G= Common.Get4From Units("0:1.0"ĎLQg)Ap|a!.e?Queue.Sendand ("noechoShowb PLACEMENT AC=w{d>o DiA @2ve`Lting s.Ang`= 0o#mVal ue("LOCA TE START POINT(R ESET TO EXIT)", 'ld6IfC Theqa uDHq{ Ifb !v=` FalsgAbAu= Tru(pFtENDSBNEW LINE@ E , , KNoto/ '@m in$!'i'#!a B9-x d = E#.Y / DelRefere`.UORsPerMas areStor8ageg4.X!iO + X * Cos(bh.%H YM Y N SinR EK fS X -0 j.X?c YdW= * qHP6 C>r Y'5 'Makt horizontalu|./ /%vertic?_$/ A)/UYAA=9gW '3U 3.14159265032 N?  ;(; |?' ''_': ` ('+'L=R)ߔ*' number=scK\= { /h_GkIIff0, VX w=@Zc^2) F0iS1 p ACaŲUglC("CELL(,:R_qlT\X\!cq `&U_H Ne>x@ۢD Il( "SINGLE 2ONLYý= Loop S ESJUCMrߢn.PptPҥ_n.Q3Q% "0 :# Codes.Log.P8Repor tToMsgBoxCurPA #g'strStri֓ O'  3dD'  |a ps`!to be sn y Appli cation.S howCommand (str< String) ACall C adInputQ ueue.Send~("/PACELL"'tDat aPoint(pt :E Sub        \        x  ME   (  < < < <   D @ H   i `  i   Thi % ` eter@     Y     R   h R  , J ( @ x .  2  >  D ` 8  .  T  "  h  p  x        (  "      2   P  p            &   H  P  ( X   8  &       0 & P $ x 0  $  $  *  ( P $ x  *  ,  8   8  0 X 8     $  8  & @  h   * ( (  * 8   h  p                 x p K *************************************************************************** ----- Description:: L This function is sets fpp parameters to SACS. The parameters %  are:  % % Parameters: 1. nParameter can be: 0 D 1-Dimension parameters ( level, color ...) % : 2-stream delta parameters ( sd,st ) ( 3-text parameterstW + 4-pattern scale (ps)  7 2.dTextSize --Text size and line spacing ; = stream delta and strea tolerance % 1 used if nParameter=3 ' Misc: Function uses rwcstn.bas M ***************************************************************************** p   ]  ]   '   (  ! // Include(create) CSTN in file  param.r0 = rqtIncludeCSTN ompl  Call fnRWCSTN(param) FB@ , // Store xaxscl & yaxscl & zaxscl in CSTN   param.xaxscl = 1# FB@  param.yaxscl = 1#! >%  param.zaxscl = 1#!   param.r0 = rqtSetScale  Call fnRWCSTN(param)   noecho F! >B   %    Drawing Not INITIALIZED FB 0 d    K T   Dimension settings section  '  7  set Text size 3mm  !  '  7  scale Text size to active scale   '  7  convert to meters ya  tx=  F! >B @     '   ls=  F! >B @   dimension axis true F! >B @  dimension font 61 F! >B @ `  dimension justification center F! >B @  dimension level 5 F! >B @    dimension color 5 F! >B @ stnR  dimension text weight 0 F! >B @ e  dimension text color 5 F! >B @  dimension weight 0 F! >B @ SET  K T   Steam curve settings section > MbP?'  7  set stream delta 1.0 mm  !  '  7  scale Text size to active scale  sd=  F! >B @  MbP?'  7  set stream tolerance 1.0 mm  !  '  7  scale Text size to active scale  st=  F! >B @ . i  K T   Text settings section onum  !  '  7  scale Text size to active scale   '  7  convert to meters   tx=  F! >B @ East    ' R  ls=  F! >B @ H  lv = 5 F! >B @ D ACTIVE LEVEL  co=0 F! >B @ D ACTIVE COLOR  lc=0 F! >B @ D ACTIVE STYLE  ft=61 F! >B @ D ACTIVE FONT !   K T  ps= !  F! >B @ n h k `  echo F! >B  rr (B@ nt poi| 0 (  FPPSETImpl.Run B@ !  B@  o    Attribut e VB_Nam e = "FPP SETImpl" Option Explicit@Priva Module '*G MDescTri{:  T his func# set pp par ter s to SACS. TheQNare2P:!71. n can bE 1-DimensC( lev el, color ...)B# 2-stream@ delta h( sd,st 3-textv3 4-pat n scale (pBs2.dT@S@ize -- sand li ne spacing34hleranc&used if Hd=3Misck F s r wcstn.bas@ H Pub@ Sub Run(As IntegerL, GO@Do eK@YA+O rrG@oTo hE . ACp RWpCSTN¡1d DefaultSn = 1¤.r0rqtGec $ //clude(Bc Pte) a in fib| 9In!Call fnC( AJ Store xaxscl & yz %  d`#$ESF'(O,E"aApa.CadInp utQueue. SendComm Z("noecho";If !." <> rt pletedS uccefullyanShowBE("Draw o Not IN ITIALIZEDElsja Select Cxasehh a1, 'ǘt@ s >sa[= V3s ' 3lmm[ *DN$A \ 'Õ a v`a t/ 1000'conPvertm2rm)AdKeyin("tx="`\/B =/ 2Ols %dmaxPvtrue%_O2H2Tfont 61> @*`D?797ju@stificB: ceWr<{ 5C?Fweight 0? ? ? ? B F s0? bG2 'S"tQcur     0        8  X   `  p $               "     ( < 8  x 0        $ (  P  X  `      $   "          (   0   @   P  `  h    p  x * " ,    H ( X p X    0  F @            |  h F              6  t H v   8 0 @ 0 p   <  6  2   X > ` 6  &   2  0 8   h             2  2 (  0 ` .              8 " H  p  2  2   2  2 (   `                   8  H  ` 0 p       ,    *   P  `   h 6 x  X  X    `  h  p         0           (  8  H  h         0           8  X  h  x  6  <  6  8 8  p t x t  : h 8  2  :  2 X 6  :  2  , @  p   x $  2  2     8  H  `  x                    @  `  p   x         !   !  ! $ 0!  X!  x!   ! ! x p Q -------------------------------------------------------------------------------- Description: J Initialize the FPP design file by creating/filing the scala and monument * point text node(CADD Standarts TextNode) Q --------------------------------------------------------------------------------   ] @ ] X ] p ]  ]  ]  ]  ]  ]  ] 8 ] X ] x ]  ' r ' x  FPP INITIALIZE FB@   ((   T   Save active angle and scale NULL F! ^! `' \ F! ^! D'  ?' zxt ?' |at  (  cho $  ' X**  X **** ! ' leme ! ' z ! ' |fy l' x   Drawing Initialized at : (1:   )    Reininialize? $     ' r ' x k k r   user scale input X v (  ?' k P $    :  SET PROMPT Enter Scale 1:(   )   >B@@ Accept/Reject FB@x lid d   Enter Scale 1:(   )  FB@x  k   FPP INITIALIZE FB@   | ~  F! >% z .  !   !  |  ' r !  ~ e !  ****** !    $  $ l  ****' r d  !  `%  X' k  k  k  k  r   store new scalega  X (  t X (    Include(create) CSTN in file exte  (  aga A  ' X k  ' Store xaxscl & yaxscl & zaxscl in CSTN   (   ( 0:04  ( !  ( ! j A  point  compress >B@@ d x ' r k h k ` r   get monument point  F d (  ' $  ' X  X    , If rtCompletedSuccefully = rwcstnResult ThenT!  R( ! R( e R( ine  get monument point value y  $    N '  SET PROMPT North Mon. Pnt.( R!   )M  >B@@  d  North Mon. Pnt.( R!   )M FB@x k  | ~  F! >% z .  !   !  |  ' r !  ~ e !  _7 !    $  $ l  ' r d @ !  `%  X R( . i k  k  k   get monument point value x  r $    SET PROMPT East Mon. Pnt.( R!   )M  >B@@ _7d   East Mon. Pnt.( R!   )M FB@x k H | ~  F! >% z .  !   !  |  ' r !  ~ e !  !    $  $ l  ' r d  !  `%  X R(  k x k p k h k ` r   save current monument point+?E R!  ( f R!  ( h R!  (   (  A  v k  d  ! f R(  ! h R(  !  R( k  k  r   scale the border  reference scale absolute fpp >B@ D.T  tcb->refScale.master A@   >B@ 0  Point3dFromXYZ(0, 0, 0) i c >B@  A changed point values, as sacs upgraded borders have these values  01:7.16 $  z 8(  @ 1 + Application.ActiveModelReference.GlobalOrigin.X  00:75.48$  z 8(  A 1 + Application.ActiveModelReference.GlobalOrigin.Y  z ' z  | ' |  ? scale everything that is between (0, 0) and (01:1.60, 00:71.00) c ]  ]  ]  B@ 0T  %  .  ! b ! . v  # ! ! !     ! ! !      ! ! !  8!   ! ! !  8!   i c   scale this element !   4 1 Scale only unlocked elements or we will get error  z z z B@ d _ 4 B@ +?Ek  k  / This code is commented because it doesn't works v n ptPoint.X = GetDoubleFromUnits("01:1.60") ' * dScale + Application.ActiveModelReference.GlobalOrigin.X v o ptPoint.Y = GetDoubleFromUnits("00:71.00") ' * dScale + Application.ActiveModelReference.GlobalOrigin.Y * dPrevScaleX = dScale / dPrevScaleX * dPrevScaleY = dScale / dPrevScaleY 5 CadInputQueue.SendCommand "place fence block" / CadInputQueue.SendDataPoint Point3dZero + CadInputQueue.SendDataPoint ptPoint 8 CadInputQueue.SendCommand "fence scale original" / CadInputQueue.SendDataPoint Point3dZero  CadInputQueue.SendReset  0:97.00 $   F! ! j!  8(   0:9.90$   F! ! j!  8(   place fence block >B@ k p r   settings the views set ed off >B@@  >B@ 0  ?  0:85.00 $   F! ! j!  8(   0:18.50 $   F! ! j!  8(   1:1.60$   F! ! j!  ~(   0:0 $   F! ! j!  ~(  window area  >B@@ 8 >B@ ~ >B@ ~ >B@ -  ? set ed on  >B@@ ~ >B@  sv=TB, TITLE BLOCK >B@@ ~ >B@  0:00.00 $   F! ! j!  8(   0:71.10 $   F! ! j!  8(   0:21.00 $   F! ! j!  ~(   0:67.20 $   F! ! j!  ~(  window area  >B@@ 8 >B@ ~ >B@ ~ >B@ -  ? set ed on  >B@@ ~ >B@  sv=TD,TOP DATA >B@@ ~ >B@ set ed off >B@@ ~ >B@  fit all  >B@@ ~ >B@ sv=ALL,ALL OF DRAWING AREA NO ED >B@@ ~ >B@ set ed on  >B@@ ~ >B@  sv=2615,ALL OF DRAWING AREA  >B@@ ~ >B@  sv=FPP,ALL OF DRAWING AREA >B@@ ~ >B@ k  r x   / writting the monument point in the design file  0:03.700$   8(  < 1 + Application.ActiveModelReference.GlobalOrigin.X  0:03.600$   8(  < 1 + Application.ActiveModelReference.GlobalOrigin.Y ]  ] 0  N(   N(  N(  N JM! @$  ' ] P  E- R!   M 8 $  . ] p  level 5 %  .   /   (   (  Mb`?  ! (  Mb`?  ! (   B@L B@ B@N  N- R!   M 8 $  .   /   (   (  Mb`?  ! (  Mb`?  ! (   B@L B@ B@N  / This code is commented because it doesn't works 6 CadInputQueue.SendKeyin "active level=level 5" 0 CadInputQueue.SendKeyin "active color 1" 1 CadInputQueue.SendKeyin "active weight 1" n ptPoint.X = GetDoubleFromUnits("0:03.700") * dScale '+ Application.ActiveModelReference.GlobalOrigin.X n ptPoint.Y = GetDoubleFromUnits("0:03.600") * dScale '+ Application.ActiveModelReference.GlobalOrigin.Y 4 CadInputQueue.SendKeyin "tx=" & 0.2 * dScale 1 CadInputQueue.SendKeyin "active angle 90" , CadInputQueue.SendKeyin "place text" 4 CadInputQueue.SendKeyin " E-" & ptMonument.X + CadInputQueue.SendDataPoint ptPoint 0 CadInputQueue.SendKeyin "active angle 0" 4 CadInputQueue.SendKeyin " N-" & ptMonument.Y + CadInputQueue.SendDataPoint ptPoint & CadInputQueue.SendKeyin "NULL" k  r   writing scale in design file  0:93.000$   F! ! j!  8(   0:20.500$   F! ! j!  8(  edit single >B@@ 8 >B@  1:  >B@@  NULL >B@@ k !  F! ^! D(  !  F! ^! D(  !  F! ^! D(  \ F! ^( `$   SET PROMPT >B@@  k   ((   : Should be called before exit - sets cursor back to normal (B@ |   !  F! ^! D(  !  F! ^! D(  !  F! ^! D(  \ F! ^( `$   SET PROMPT >B@@ k  \ F! ^( ` ((    Report that operation failed  FPPINITImpl.Run B@ B@ o p h V Attribut e VB_Nam e = "FPP INITImpl " Optio n Explicit@Priva Module ' -L S@Descri: Initia lize the desig n file b y creati8ng/  &sc ala and monumen ' point text no de(CADD Starts T N )<>OpPub Sub Run( 4O rror GoTo hE Dim bExi t As Boo@lean RNe dS e9Do : مdPrevBXYAGparamR@WCSTNPsrwcstnRpesul.C Typ#objMessag*CadInputXptMDsPs3.d2dActivAng @Z LpteFTJ  Ck= FalsD9bi C C Apڀon.ShowCommAA ALIZE ApD te.I sEnabledC' Save aA8b !d3$= etks."$ k"&EZO= 1# Y`$ aK.r0 rqtGet C!L= fnM(Ska If rt'plete dSuccefully UThe'dlh= " .xaxscl$ w}acy' ET 0:aOAsc(MDidn, 1 ))vbE6o@ q (7CDbl(n trToSyst`emDep3pStr 2)ET]+ ,A>C K' store new#H'0PrtAbnormal<> Hq Fou =k'аclu2e) QsfsIn!CallsA5 D{"Srpgcn zn up(" =DK?am.??" IȄ4 ]m ([KI_cZr "_1_4 #*S ' gPV?s[@VeXYG ,b+ 0L Asc(MDid, 1 ))-vb Escape[:A A<OHEʙ= CDb l(VStrT oSystemDepend <|Q -'D gmon point va`lue xK XN8ot ÀӇis PowerDraft()XZKSB{ ("SET PROMPT EastWXDK74)vSh'_ U/'4kut !6$ #EP o @ ) ;%WV%X re uue ߌ ' save churr` nparam.i01YZ2Zrr,qt @ՇX_ C all fnRWCSTN(\M\g"!i0 HY 1O3a.ZG2F S p4c cale t he border#_aE"refe0ce @| absolute0 fppCEXxpr @Vl"tcb-> S.mPeer", 6d Q1iDataPrqR 3dZero ' FЦXYZ(0, !  Y ' c@hanged xs, as.cs upgrads h0sezspt .A @DoubleQ U nits("01 :7.16") * dPrevX '+Act iveModelRU.Globa lOrigin.X?$?00:75.48OOOIx3i = / le @)'&everything+at is between  ) ` `1:1.6 p1.00X!Dim eE5rator As EleOG zSCqN ew0nCriteria' b.Excl udeNonGr(aphpl 5Z P!e.a f SCDo W hip;.MoveNextg =.C_' G.R5.LowP1>= -1t Ap_+Y  0 High <=`58اd t rY xYOBd((s eS#; QIsLockaC= FaPڒ 'ponly unls `)`we wiherroYD 8A SRUF G? ew.g# I End If  LoophH'This code mm ented becaus (t d oesn't works ' ptPoint. X = GetD oubleFro mUnits(" 01:1.60" ) ' * dS cale + A pplicati on.ActiveM }lRefe rence.Gl obalOrigPin.XpYp0:71.05:e :18.5:ۖ 26Iץ2.__ GFwindow areaF#4 L2` Qe^n_Jjv=TB, TITLE BLOCK &y:00/5y yo&&y1&e?^/5F:2$?5//#l?567.2)#52W5G5Z/etd5p5D,TOP DATA?5iOqQf{all/ / Msv=ALL,0 OF DR AWING AR EA NO ED???_  2615 E/ p v=FPP i*AReIP.writ1"monu4 pq Лde sign fil>e c\:03.7BU'__\Q1 _T6jjjHuD@im rot As Matrix3dptrwp1 Z 07=@Vector0RAngle(p t, 3.14105926(3 txr TextEleQ  Set tx t = Crea teTextEl ement1(N othing, " E-" & @ptMonup.X 8" M", ( Point, r otation)  "Dim lvl As Level = Active DesignFile.)s("l1 5"a ? , KColo r 1 LineWeigh (Sty AH0. 002 * dS0cale %Wixdth5vM odelRefe rence.Add 2RewritB@@ ne by '  DIMENSIONINGA@  xt  % Set locate cursur for choosing lines **** (( ******  choose element >B@@ Identify line to Place Dimension r 8 `%  .  r       ! l ( ! l `   ! * + S5 ,! 5 .!   :0yE> ration' P 5 ,!  T(  8!  T( 5 ,! 5 .!   :0yE> e  Id ' P 8!  T( 5 ,!  T( d A@b  Dim:Invalid line orientation FB@0  '  k   Accept/Reject A  B@>k  q  d x A@b  Dim:Invalid Element type FB@0 LO'  k 8 Y *** aggregate ***************************************************************************    get monument point d ( n $  ' XLO X  aga ! f R(  ! h R(    if succefull request scale r exte  (  aga $  ' X k  X   E   if get scale succefull  ! '  P  0:04.000$  !  F! ! j!  ' \ point T!  R!    \    ' \Ca Z ' ^d X  0:04.000$  !  F! ! j!  ' \t.EndP T!  R!    \    ' \ ' ^k P T!  MbP? !  T( e  E ' V line d T!  MbP? !  T( ,,  N ' V>B k X  TX= Mb`? !    >B@@ F  \ l( n n P l( p sel   frmFPPDIM.InitializeControlsC   frmFPPDIM.Show vbModal  $ If frmFPPDIM.ModalResult = vbOK Then   If frmFPPDIM.IsVertical Then   strDirection = "N"   Else   strDirection = "E"  End If   Else    bExit = True   End If   Unload frmFPPDIM r P  active angle 90  >B@@ d   active angle 0 >B@@ k X $   H SET PROMPT >B@@ 8 --k  PLACE TEXT >B@@ ------ V  -  \  M   >B@@ T >B@  NULL >B@@ k   Z *** end aggregate ************************************************************************d @  ! get monument or get scale failed A@b     X r X t  X v  + Dim: Not SACS Design File / Old Design File FB@0 6? d   Dim: Abnormal EXIT FB@0 k p ' r k ` k X k P H  (( ------  : Should be called before exit - sets cursor back to normal (B@ ether |    (( r not   Report that operation failed ,  FPPDIMImpl.Run B@ t li B@ o h ` + Attribut e VB_Nam e = "FPP DIMImpl" Option Explicit@Priva Module ` ' -L SDescri: Calculand wri the dimens (dis tance of a line/ patterne&d*re(iv e to &monu 't point 41esi gn file scaQPub Sub Run() rro r GoTo h2E Di m objMes sage As CadInput bExitABoolean xEle= ptPC3d bIsVertiDbReStabrptM[ptstrDiXrec Sng%G'dDefa0ultSl'Do@X@PNparamRWCSTN PsrwcstnResG TypdOff Se9nActAngInte8gerAA Cd= 0Falso WhNot B ' Terminy a?comm@.  Queue.Se ndKeyin "NULL }aa G 5eShowC# "ENS@IONING'" locacu@rsur fWchoosi r)## =te.dVsEnabl`vn e eX2@e[Ӏon#lH ("IdentifyPla@E",2, bGtD%)If 7 A(Ish ") Theq7E.g.!MmsdL Or?c WithAsA d 'E Abs(. Origin.X - .Endt .X) < 0.:0 1 = Trudj = f3Y`'iD5.YEoYY({JX  0Beep Apu1aU.@g?i m:Invaliu ori2rH7?  E/$ If/ 4d2l GejVal ue("Accept/Rej@>;dW; qQ2 1# Sa}"pED7 te?aR  '*** aggregZ / {N ;y'g u O|.r0@>rqt% X_1 |= fn=c(B!(-rtPcpletedSu%fully?N 2 'bK i0 BKш.i1_Q' if s request5= # ’qbD)0"d R?"[= xaxscl_Q0 ^IA2 ա=IFrom Units("0:04r") * + YCp@ elRefere.Globalוx (f+ 2q)* 1"{po )< /4ob= ~9-ORbA ?e?08y??:o@#6Y:8??V 7/B?1F% ˃Ҡ-1$ų  strD irection@ = "E"ElseptSt`art.Y + 0.001 * param.y`axsclI Nnd IfK CadInput Queue.Se ndKeyin "TX=" & (V2VxV)0 frmFPPDI M.dblDimensdOffSet%IsVertical bA''nit ializeControls Show vbModai'If  Result,vbOK Then @l; C%' WX'bEx"iAGTruT'EUnloadMW4 `8Not #w/ @(Q;l("a ve angle 90"tk W* . 7-(isPow erDraft( )# #SET PROMPT"?$ 7PLACEp TEX:h&8 "-a"M DataPopint ȗ0V"pNULLymo '*** @ ag gregate 7 _ ?* ge@t monutP or s e failed @Beep,@rwcstn[r,tMAIc Oxr _0 TextNodeFou*a S ?I Ap,plPra.kErJr"w:  SACS Des ign F / OldOoaom: Abnorm{EXIT;Ob ?+ ? Loo@ CommandКte. MessagespEnab $|7j' uPbe before el- sets cursback to 3.ҡDefa$SqSub h-R:o i Re port thaqp1perJ1C)s.Log "3Impl.RunHToMs gBoxCurren!    & *  ̙        x  ME    (  <  <    0   8 " X       2              8 0 & h V        0  $ P  x          .     >   P  X  `   h  p  x "                 R  J h * L F 8 R B             ( $ 8  `  & p   &   *      "   @  X   `  h  p   x  x p M *****************************************************************************  D Description: This function extends several lines the same distance. > User first defines how farto extend the lines byx T = either a key-in Distance or D-button end Point. ly l B Then the program prompts the user to identified line H to be extended. Each identified line must either be accept=3 J or rejected. If the lines is accepted, the user may accepted @ the line by locating the nest line to be extended.li J ************************************************************************** ( ] @ ] X ] x ]  ]  ]  ]   noecho F! >B  EXTEND LINES FB@  _  + Set default cursur for spotting operations not se (B@H  Lo   Get point or extend distance  5 ENTER EXTEND DISTANCE KEY-IN OR D-BTN (RESET TO EXIT) D @$ J ' r b r G x j l . H . F_   % Set locate cursur for choosing lines  Sh (B@> lled b   Locate a line to be extended   H  ' 6,,  LOCATE A LINE(RESET TO END) r  `%  . Fd  " ACCEPT/REJECT(ACCEPT ON NEXT LINE) r  `%  . F ok  r   If cancel-button   go to "LOCATE A LINE" again  H    ce . Hd `  , go to "Get point or extend distance" againset  x  k  d    Extending locate line H    l D   S  2 Extending line: in case a mouse-selected point  extend line distance F! >B   O Call Application.CadInputQueue.SendDataPoint(elPrevLine.AsLineElement.EndPoint) B F! >B   @ F! >B  t' nd  ) Extending line: in case a key-in value  extend line keyin F! >B   a DX F! >B @ or,, B F! >B  r$ n B F! >B  r rk 8 k 0 F  G x j 6  no more lines selected le F! L ght mo F. H 0 . elPrevLine will be extended on the next click% ' Bk  k     noecho F! >B    Should be called before exitlta to (B@ below | 0 (  EXTLINESImpl.Run B@ ig B@ f cello  K Description: This function returns either a point that is selected by mouse >B@@ D or a distance value is entered in the key-in input box.'  $ Parameters: strPrompt(in) - prompt (( F dDistance(out) - value is entered in the key-in input boxl ? pt (out) - a point that is selected by mouse e K Returns: In case of cancel button is pressed, the function returns true bel66W ]  ' J N( star N( PROM N( ! l ' D n FB@x ?? |  ~  F! >% z . toop t!  outer K T F '  operation canceled ' J |K T F )  operation canceled p ' J K T F +  a mouse-selected point ,!  t! ' N :z  ~K T F '  a key-in value Z ' " t!  `%  ' D:z  S  ' J n  i  x ' Attribut e VB_Nam e = "EXT LINESImp l" Opti on Explicit@Priva rModule '*I O Descri : This funcexte nds seve ral lines the s distance .F User first defhow farto *#($by ei2r a key-in D5 or D-t M Point@Then0program mpt^uN Didentif8iedlB beWed. Each  mu rWAaccep '-reject9If?[ ed,B'may % `AN by locating@gt2 .E Pub S ub Run()K;OrrhG@oTo hE  ACDim b Exit As BooleanGptFyv3dTou `PrevdIDo/ c%A$elL@$Elemel Call A pa.Cad InputQueue.SCom mand("noecho"%!ScBEND oƒ@ao !' Sebkault cursu n /spotAop@vAsd St``PtDefCor G pAk!W:e€ }c9= ,Value("ENTER ADISTANC E KEY-IN OR`xBTN (RESET TO IT)", 5, A$&@g|EAID"G#7= Nothd-b; g a 0bpe0pt1,C oohi _1  Dvo 3 a(" in3 Ke yin(CStr(.)zon7#?o; oo!ch 6E?? A,tP?2NIno more2Iqң>_Z.I96GO6 ^_ ' Owi 0n% ck/ xpt9C opSLo / 61;'ul4d 0c0Vbezfec$t EsTSS @ :Code s.Log.RundcRepor@MsgŲ BoxCurre nt End Sub ' Descript ion: Thi@s func8 returns either a point that Nsel ected by@ mouse  ofdista nce valu&e7 er 6in Je key- input box. FParam eters: strPromp t(in) -L p mdDi(pout) &%p $pt !e-"|R WIn cas0e of}l @button~pressed,}tru Pub lic FGe*tnV( A s String , ByRef  Do$e 6E Pq3d)B oolean :CDim msBgACadIAeM9@,ag%A " =0 Falpt.X0C@YJZGG+=  (AppAa.S8howCǃG Se2t-= /Qu0eue. .B3(msdETypeC`omman dDhataJ,J KeyinNReset)$ C T.9 : ' oper?đed dTB Q _  )! aC-b`U=A:.Exitd+8#$O T&,onIkFUnits(< @a EFh% ~.}"eMEAe  <  F   s        x  ME    (  <  <  < <    D E  `r 6p  % 8 ed t  % : d th  %    % <   %      L     N  Z ` \ D  "  h  p   x            ,            (   0 , P         *           0  8   @   H  h  p &    ,     *    0   8   P  h         ,     <   8   @  H  P   X " p                 x p H Desription: This function sets the same attribute(s) to several objects.-- T Active line style is changed to 3rd. If elements are fenced then changes rt o U style, color and weight of elements to active attributes. If elements are % > identified then only line style is changed to 3rd.  ] @ ] X ] x ]  ]  ]   % Active line stile is changed to 3-rd. (  lc=3 F! >B   noecho F! >B  F! ! . 6------ ' r r b  Change to EXISTING FB@   % Set locate cursur for choosing lines % De (B@> It op 6!  lock H  If Fence is selected------  Process your fence? r `%  ' 8 r  /cfncsy F! >B  en  8 F! >B  (A@d ' r k  /pfencb F! >B  d  If Fence is not selected P  Locate an element to be changed <    Identify element r 8 `%  .  d Accept/Reject r 8 `%  .  pardek   Changing element r <    del  /celels F! >B  igin f : F! >B  r : F! >B  trUnitk @   G x j 1  no more element selectpart r . < . + elElement will be changed on the next click tion 8' :k  k    echo F! >B    Should be called before exit be 0, (B@ | P H  EXSTINGImpl.Run B@ he B@ has bo    Attribut e VB_Nam e = "EXI STINGImp l" Opti on Explicit@Priva rModule 'Desri\: Thi@s funczs ets the sa(s) to sever al objects. J  A C@ve lin ?tyle Zchanged>3rd . If elemen hare fenchen* +s VsJ, color an d weightl o$ Na>Ys5+id Bifi!>only^ Pub Sub Run() %O rrNGoTo hE  Dim bExi t As Boolean fnc F ptPoLin3drevelEXGelP@U j'rir- s C@all Apa.CadInp utQueue. SendComm@n("lc=3"DM noechoESet AM=C,ignF@,.HTH C-c= Fals@Do Wh:Notk CCI8Show4 |"CBE@'" *loccursur f@@2osing@ DSt LtLB C orCg@.IsDef md xeIa '`bosmcteGEK= on.GeMValue ("Proces0s yoa!S?",c"7% ` %p=D/csy%= LDatab(Ef= PAEIf/pbo5n`O=s6'cB@%aNbe D2 }Is 5hNTU'&CSHą("IͣyeB, _. c  nt("Accept/Reͷ P5 ~%'v߁!Ѯ'ZA ;) D^ls^:Uj/a/  Z@h]4'f'pV'no mo l`}ooYF%n=ˠ*'.wi`k3 next c@~k. .k C LoopS sso'gpuld wbepee e s!dtartbaulttfSS  :qCode`s.Log.8RunTnҎSRe portToMsgBoxkraQ     "  H        x  ME    (  <  <  < <  p D @   iR `  ----iT  i  ure i  rt oi  i    % 8 (   % X cel  % x tion  %     %    % `r ( ` % `  `  `" pard`$ `&    "       X   h J D   . 0 2 ` 8  8  8  H @   8  8  8  B 8   8  8  >   8 Z @ Z  P  N P      :  X  "4  `  ,    <  <  > P >  (  &    6 @ $ x 6  8        (  @  X   p  x     "     @    H 0 P       ,     "   @ , H   x      ,    "   8 " @  h   .  ,            (  0  8  H  X  p              (  @  X  `   h $ p      *         @    P   h                      :    ` & p                  (         ( 0  @   H  8 `         $       *   8   @   H 8 `                        0 @ @        &             x p Q -------------------------------------------------------------------------------- Description: D This procedure places cell and deletes a part of the line % = depending on input received from the command menu. Parameters: % ( strCellName(in) cell name , nOption(in) option can be 2 1 -change color 2 -change level 1 -pardel line B -do not rotate for vert. line 2 2 -change color 2 -change level 1 -pardel line ; -rotate for vert. line ND SEC 2 3 -change color 2 -change level 8 -do not pardel line G S strUnitsFrom(in) delta to the left/below of origin for partial delete r T strUnitsTo(in) delta to the right/above of origin for partial deleteet to J nHor(in) horizontal rotation of cell can be 0,90,-90 H nVert(in) vertical rotation of cell can be 0,90,-90, Returns:  Misc:EREN 3 The procedure has been ported from E1LPC.UCM %  Q --------------------------------------------------------------------------------            ] D   (  selected line element (bus) > ] D   ( cell object Deta] D@  ( , point chosen by user where to place the cell ] D`  ( , point where to start deleting a part of line ] D  ( - point where to finish deleting a part of line ] D  ( - point chosen by user where to place free cell  ] D  (  outer looping condition ] D  (  right mouse click flagti] D  (  goto start flag ] D  ( % flag indicating if to place free cell >] D   (  angle of chosen line SEC] D8  ( & delta to the left/below of cell origin@] DP  ( ' delta to the right/above of cell origin    no echo   NOECHO >B@@ 3 C  active scaleNCE FI  AS=1 >B@@ SECTIOA  Place Cell R A@  DT r b  start here '  T   b  get rid of GOTOs upda ((  scri  ac= R >B@ ) Identify line or RESET to place free cell  `%  '   x  ' exit this inner loop and enter next one k x  locate any design element  (!  (%  . LL   bel66W'  x  $ exit inner loop and start outer loopPROMk  ! l ( : bus line??? & "):"'  x  $ exit inner loop and start outer loopB@xk  Accept/Reject  `B   '  x  $ exit inner loop and start outer loopFB@k   ! *  5 ,! 5 .!   :0yE> !   vertical line  Z ' "5 ,! 5 .!   :0yE> e     horizontal line 4W ' "d p PLCCEL: Invalid line orientation FB@0 fe' r x # exit inner loop and exit outer loop Scalk  q  $  ' $ $  ' & " K T !  (  !  (  !  $ ( di !  & ( B@ ' " Z K T !  (  !  (  !  $ ( iz !  & (   Z ' " M "  FERE !  (  !  (  !  $ ( mo !  & (  ' "k  n   Place the cell on right point R  F%  . nputQu   yin ("  Error during cell placement FB@0  Iden' r x k 9 set cell's level and symbology from selected line element !  /  Sect ! 2 / 2 !  (  T   nt   rotation is required " h ' " "    "A  k k   F! B@L 3 Application.ActiveModelReference.AddElement objCell P B@N  just repeats UCMs functionality  >  delete partialC@ C@ C@ C@ q  A@4 " objBus.Redraw msdDrawingModeNormal'  x     pfre:  b  ac= R >B@ " Enter cell origin or Reset to exit r `%  '  r x X k P  Place the cell on right point R  F%  .     Error during cell placement FB@0 x k  F! B@L 2 set cell's level and symbology from ActiveSettings ^!  /  ^! 2 / 2 ^!  (  B@ P B@N   echo  ECHO >B@@  ((   : Should be called before exit - sets cursor back to normal (B@ | h `   Report that box drawing failed  ((  E1LPCImpl.Run B@ B@ o z Attribut e VB_Nam e = "E1L PCImpl" Option ExplicitA@Priva Module ' -L ' @Descri:  This procedur e places cell and delet  a part o f the lin 'Epen ding tin put rece ived froBmcomm*menu.CPar! tersJst rC A(in)4In `nocan b T% 1-ch ange col a'"g.riduGOxTOsa @t e.MessagesEnabliNFac='14 xQ= Qon.GetQVal@ue("Id,ifyD pRESET!SQ@", O`X O+ db(,jnHor$m$ )$ 1`|$73 $?$ U"*<> nV?)3))m 08\A"v_]2O P$ U}k'bv the cell a`ht pakS"ebjC= Create D3Name, ), AB Is Nothing4B±dur!"pP``/ 2 's's@ levelbcs ymbology f@] sWek h.Lr= [ЁStyl?d"[.C rPU  ;p2;?c'rotis required-Mod 36g밙zk `0"sP 4Ca@-RUAb@|Z() <*9? ?}!+Active elR@eferen sA|ddd3qa0 '? 4 .R edraw msdDp 3qNormal'just`p0?s UCMs fun on tyя dInputQue .Sen dCommq"d!P1te pial;DatarEZA aRe<q [#AllView:s'p1oodeo bRe 78NIL' `pfre:W|hiAUvqCa8Rac=" & )!]]c Qon.@V alue("En_Yк@ b to ", bYaZQ ZP?9 n n! 8U 6nncnnj AiЏnn3 p |OJOJ0; o ? @ A B C D E F G H J K L M N O P Q R S T U V W Y Z [ \ ] ^ _ ` a b c d e f g h k l m n o p q r s t u v w x y z { | } ~       '  <        x  ME        P  B  F! ^! . ing th F! ^! . ty por  / Set default cursor for the spotting operations "m (B@H getE1   Terminate any active commands  NULL >B@@ Eleme (( ve Bus r  2 PLACING FENCE ARROUND SECTION NEED TO BE ENLARGED  place fence block >B@   Get lower left cornerUse  Section Detail FB@    Identify section first point r `%  ' *ontent   Get upper right corner nt r * >B@  Identify opposite corner r `%  ' ,ec r , >B@  bExit = True , Cak 0 k (  ' Change in case name don't meet to place Qu] ` *!  ,!  gy" *! ' wyer ,!  *(   ,( e pak  *!  ,!  !  *! ' !  ,!  *(   ,( X k P  : ATTACHING REFERENCE FILE TO SIMULATE THE ENLARGED SECTION r ! ' % $     @ CadInputQueue.SendKeyin ("SET PROMPT Enter section detail No >")n  Enter section detail No > FB@x d p  Enter section detail No > FB@x k @  Section Detail FB@   | ~  F! >% z .  !   !  |  ' r d !    $  $ l  * Ca' r d ! ' e syk k x k p r  ATTACH REFERENCE  Default "DT   ","DT    " *  >B@@ normal , >B@ >B@   active level=level 5 >B@@ ertifi  active color 0 >B@@  active weight 1 >B@@ 4W 2 PLACING CIRCLE AROUND SECTION NEED TO BE ENLARGED  place circle center >B@@  * ? ,$  >B@ perati , >B@   F! ^(   F! ^(  3 CLIPPING THE REFERENCE FILE TO THE DESIRED SECTION  reference clip boundary DT  >B@ tR , >B@ , >B@ >B@ bel62W  update >B@@ scri , >B@ 0 SCALING THE REFERENCE FILE TO THE DESIRED SCALE6W % READING THE SCALE FROM THE TEXT NODE  '   (   $   fedtD ! '  k H .   NULL >B@@ bel66W$   Labe  S CadInputQueue.SendKeyin ("SET PROMPT Enter section scale (" & dDefaultScale & "):") WW  Enter section scale (   ): FB@x edtDd x  Enter section scale (   ): FB@x  k 8  Section Detail FB@    | ~  F! >% z .  !   !  |  ' r d  !   WW '  !    $  $ l  e l74W' r d p ! X' k X k P r  reference scale absolute DT  >B@  tcb->refScale.master   A@ ,!  *!     *!  ,! $  >B@ >B@  reference display off DT  >B@ k h r   CALCULATING THE TEXT SIZE  active txsize=  Mb`?   >B@@  5 MOVING THE REFERENCE FILE TO THE DESIRED DESTINATION  reference move DT  >B@ ,!  *!     *!  ,! $  >B@ $    B CadInputQueue.SendKeyin ("SET PROMPT Identify destination point>")  Identify destination point> FB@x d  Identify destination point> FB@x k  Section Detail FB@   Identify destination point r `%  '   >B@ k 8 r  - WRITTING THE DETAILED SECTION NO. AN D SCALE  active txj cb >B@ DETAIL -  SCALE(1:   )    F%  .   F! B@L P B@N  / DRAWING A LINE FROM THE SECTION TO BE ENLARGED ,!  *!     '  ,'  !   !   ! $  '    F% J .   F! B@L P B@N '  !   !  ! $  '    F% J .   F! B@L P B@N active txj lb >B@ SEE DETAIL -    F%  .   F! B@L P B@N  - PLACING CIRCLE AROUND SECTION TO BE ENLARGED  place circle center >B@@ * ? ,$  >B@ , >B@  NULL >B@@  reference display on DT  >B@  update >B@@ k  If Not isPowerDraft() Then * CadInputQueue.SendKeyin ("SET PROMPT")  End If k (   restore settings  F! ^(   F! ^(    If Not isPowerDraft() Then  * CadInputQueue.SendKeyin ("SET PROMPT")   End If  ((   : Should be called before exit - sets cursor back to normal (B@ |    restore settings  F! ^(   F! ^(    If Not isPowerDraft() Then  * CadInputQueue.SendKeyin ("SET PROMPT")   End If  ((    Report that function failed  DETAILImpl.Run B@ B@ o   ȶ Attribut e VB_Nam e = "DET AILImpl" Opti on Explicit@Priva rModuleR' -L ' Descri : Generenlarg ed view of a secin the drawing andGannot#it accHord lyParters?@ReturnMisc O|Pub Sub Run() rro r GoTo hE Dim bEx ]As Boolean @Break  o bjMessageCadInputtA' s ave previousUtt G @A@ZveTextStylB LevelC' ^tsp0fenc@8ptLowLeftAPoint3@rG@UpRighUS?DAPineStarL(EnddLengthDo p/GstrDGNFileۀ"S ngKetail NoARFlo`gicalpARWCSTN s dDefaultS 6z A"d2@?WT dr=G.XamW= R-: Y: Y#Ytv.Ybn`?  i' ATTACHBREFEBRBBFILEAAS@IMULAT HACG G/ |vG`Z򉠤ignw.Fult' DisPqEDraft() '.CV("SET P ROMPT En`Bd"G> >jD -KPrompt "OilC E&t_3tP_Ѿ \VryVBr zg %iS!r(msdType4], |^ResetY }7.B, Or1$ Ӵ #A Nb@ /P Asc(Mid( T1, 1))  vbEscapea2  6+p=Yb !1=K? 1d?C ?2B "SQ "3G G" &mB& " ""DT%u("",o""" *؃o D /& a"OА=l5 c adInputQ ueue.Sen dKeyin " active c olor 0"   Cwei`ght 1 l ' PLACING CIRCLE AROUND S ECTION N EED TO B E ENLARGED$plac ircl enterDataPoint 3 polate( ptLowLef t, 0.5, ptUpRp)H+ Appl ication.ASettin gs.TextSty h= obj &#Level !' CLIPPiTHE REFERENCE FIlgADESIR@knKϊCommand "referenklip bo undary D T" & str DetailNo]Y ! Reset"upd@ Ӈ ' SC,AL$c@ EREADqROM 8TEXT N ODmKdDefaultScabQ1param.r0@LrqtGekIf fnR@WCSTN()tBplete dSuccefu lly ThenmxaxsclELIfk@j!hMessage@Noth`lF;NULL:+ isPow erDraft( )4' ("SET P`3PT E! se on s"/(!d !& "8):"L%ɊSh owPrompt< " B Else+  08+S&l6@2XB(msd!%Type , E3@E`$Q>.  `RL  OrWE gbExit` Trul8_QP Len( Q;0-2 d%BZ*A Asc(Midn, 1 R)vbE/pe2A  / CDbl E :d GAS '1sc@absolute/s /CExprO Value "tcb->px!.mas, E/ ? wuFFXYZ(PT0.X +04.X`) / 2QY(.ZM|d2   dis@y off;_ > L{PAL`CULATyxS|IZx!!8&t@xsize=b(E{*002 ' MOVOIP ON mo?^&&&&& 4O~! ~t֊~Idify dLes` pQ>}r o} _Q 5oQ #| pt%= Q0Ԑ{BHN("? 5 ", Y1Fd''o&{ /A/A O` ' WRIT@DE TAO. AN 2 txj cba" Set objText Element = Applic ation.Create|1(N othing, "DETAIL - " & st rDetailN o "SCALE(1:fetCP s.LogImpl.RunB  r b  Change Element to Active BusA@    dealing with the fence ! .  !   ( does the user want to use current fence?  Use Current Fence  `B     , does the user want to change fence contents? # Change FENCE contents to Active Bus A@    is [s]he really sure?  Accept/Reject  `B    let's roll  , CadInputQueue.SendKeyin "fence change level"  ) CadInputQueue.SendKeyin "fence symbology"  0 Tom Sawyer's best business idea - fence painting ! .  !  ! A  h k ` k X k P b H * check if the user is fed up with the macro  Identify Element  `%  '   ' r x  and wave her good-bye k   locate any design element  (!  (%  .       does [s]he insist? Accept/Reject  `B   x  enter the outer loop% k    well, [s]he was warned...  & CadInputQueue.SendKeyin "change level"  * CadInputQueue.SendKeyin "change symbology" A   % (! B@N k X P H  : Should be called before exit - sets cursor back to normal  noecho F! >B  (B@   |     Report that box drawing failed CSLTCImpl.Run B@  B@ ^! o p Q -------------------------------------------------------------------------------- Description:  O This procedure changes the symbology and level of design element < passed as a parameter using current settings.  . Parameters: objElement - any design elementxt i Returns:  Misc:eld 3 The procedure has been ported from CSLTC.UCM x Q --------------------------------------------------------------------------------  `   to avoid exceptions fy pla !  nt for ^ 5  ( /PAC5  ( B 5  ( Enteq  B@ `% k  |     Report that box drawing failed F ! CSLTCImpl.ChangeLevelAndSymbology B@ B@ saves o X P ޶ Attribut e VB_Nam e = "CSL TCImpl" Option ExplicitA@Priva M odule 0 ' -L SDePscri:  This pr ocedure changes E1L bus type for lines.CPar tersRReturnMisc3The/has bee n ported@ from .UCM,πPub Sub Ru`n() D@im obj E l Aleme nt'selec\design A JFen|ce @Gf e Cont@s "Enu`merat@c@' c pntE. Point3d'pA@|os dby userbExiI?Booleanor looping#diaHReseVright mo " clk fla.gCOrr AGoTo captchECC'to repla@ invok'tsfunc)ality@ VBA tmCadInp utQueue. SendKeyi@n "mdl;m mand getE1lBus ~a Call GETq iBUS# "A*pa!. Co ("noecho"dVDo Wh ile Not 3 Show[by AA@vj!a ?" 'let's roll2 fD&Sleve '\symbologynm'T@Sawyer@b$esfuss i] -7pa 3^̲='['Z 3; .MoveNexM BL1AndS(.-W K EPKIf{= qHTruq ' check if"D"=+f~up EmacrokL= ==Id@ifyUM,P,>Fm= oK@ '^waSh er good-by\'loie any ?3 tU#StY.L"D\(',gastView," _NQNobTtIs!dhq/O! 'dY#GinsistF FntWF{!) Y ' bw[$'well, wwarned..PW Gu_KoKW_?X? .RedrawLO1 3' ku4ldc0`,͎dC0P rt ault ! a1 ' RepHa1_ox Q/fad$Co96g.Rune3#ToMsgBoxW ܟB2 Tܱ2&'HDd + ofNI'ö pass02a p5߀1P} t *է-OPo[>Co 3%0 Cx([ ByRef ob jElement As P)  On E rror GoTo catch<t 'to av oid exce@ptions2I .IsGrap hical ThenFkWit h ActiveSettingF.Levepl = C &i neWeight+ 0Col v+End OFRewrite' IfExit Sub:' Repo rt that box draw failed(Codes. Log "CSL TCImpl.C hangeAn dSymbcgy"3ToMsgBoxCurr ~B +(   "(  ʙ        x  ME       P  B   G  FT=61 F! >B   LC=0 F! >B   Text Just=CC6  /TXJS7 F! >B   noecho F! >B  Place Cell R  FB@    AC= R F! >B   " b   R l n p r X Z " tA b   C  \ F! ^( `   Should be called before exit &  echo F! >B   (B@ ' 6,,| H @  BUBLDRVRImpl.Run B@ B@ grid o   _  ] p   Check if form is already open ****  f!  4 <k  !   . fk    f  atesce . fFB@ n FB@x ' R j fB@ R  Reset  ) C' r d  R  ion ' dx  k  R$ l    S' r d  RX ' dD x  k  k  k  r i   ] 0 t  t p  b to t  Enter text or RESET to ignore r$ d ' t r r$ v ' t x  k t' ni H   Place fence block  /PFENCB F! >B  . * z F! >B   a | F! >B  .bor,,] x p r r$ n ' tpl]  r r t $  '   2 Reduce text size as required in 2-charactera steps]       '  ]  ]  $ V   d  ' :X $ T   d  ' < < F! ^! (  : F! ^! (      WT=0 F! >B  d (  WT=1 F! >B  k  ]  |!  z!     (   |!  z!     (   ]  ] 0 ] P t   F%  .   ~ (   ( 8  (    (   = If text is entered, place the data field with the given text   B   F! B@L x P B@N  /NULL F! >B  o     p  ]  ]  ]  ] 8 ' r  , Ask to specify placement point for the cell.  /PACELL F! >B    Enter cell origin r `%  '  r ' " |  k  ] P R  F%  .    ? increments Graphic Group number and saves it to the design file  (  t   Lets scale to a defined scale ] p ]   '   (   %   !   !    !      Prevent scaling of 0   !  !  !  B@ k H k @ k 8  F! B@L  P B@N nX  FB@  n CHANGE LEVEL F! >B    F! >B    F! >B   CHANGE COLOR F! >B   F! >B  @  F! >B   FB  k 8 ]  ]  ]  ! ! !    ! ! !    '  ! ! !    ! ! !    '   ! ! !  ! ! !     ' ]  ]  ]     l      shift the second field down `A      ' @  d l   1 two fields, the first field has to be shifted up      ' @ B       '  d h   single fields, no shifts ' @ ' k 0 k (   z(  @    z(    |(  @    |(     z |    p r$     X Z$   r ! A x r G y j   /PFENCB F! >B  o    Attribut e VB_Nam e = "BUB LDRVRImp l" Opti on Explicit@Priva rModuleD Pub H sText As S ng V g_Height Factors(4)%Integer &Width% 'Descri: Pur pose Pla ce bubbl e cells with one or two data fields EPar y ters : 1. C n  2. Num@ber of! (1,2) 3 & hange level/col@Do {ive: Yes, 0:No4. Max ng^(in @chars)>1st editBō=52ndm Sub Run(8strBBp, nFMAHl, bC9LA9Boo0lean 0Len1J n2 × al isFPPFalseK HcOrrQG@oTo hE  ADim bExxitBD=F B'SeOefault pƀCnDef.FpirstB=+N S`econd = 2CIC)tWIDTH scaling &f g_J1)) M90274e3a56r`t= 48cHEIGHT|F}8+"7*akl pED dActivAng [DoI= ApAa*.be Ft`/s.?C  11CallJ CadIn putQueue .SendCom mand("LO CK GG ON"_FT=6F1C=0'bJust=CC?-/TXJS7noechoC%,ShowD$ ("ýb " + &..AC=CDo Whi GNotdGb3~B@J Ȧk&2, _g i NoÔH`  ,c Loop W 03'uld b up,e fore e`W#*--)St.P rtp YS j`:`Cod@es.Log;.xRunpBccR eportToM sgBoxCurrenErEFunC GetSValueq Promp, ByRef"lbs Dos A !gffrmTxp1 'Check (if mp a lready openGqResupNcI .VisiThsAIfJ.n<> 0 k t = 1hPRy|tR! X Is_ Zew ]C`B #Я"11 ".G vbal{ et" Dz0aTruDgb@ E0K?3 K) " 3y'? /5q Asc( 27   / C`24OQ & 9qQ]] ?"d_@W(xY:AѲA p*5AC$ H1) <@ 1 Or :>N T g5= k(<"E @CRE SET to ign@^"tedq!AGSp (kpc (S v  .$%[Sy(ptLef^pPoint3d, ptRBottom/A/er, d!Sxize3_`UlGGrou"DdB' fen!lxockOuOuEu/@PFENCB?cD ataPoint (ptLeftT@op) C all Appl ication. CadInput Queue.SendDRightBottomDim str Text As String4, = GetWi thMaxLen(n, nDef , bExit\n gth\Integer]= IIf(;+K 4() )'Reduce tX size as required in 2-ch aractera1leps7tidxScaleF orI = (R + 1) / 2C%(dWidmD ouble He?1  0g_ Hs(@) *4 dAfS910~0DBA ctiveSett s.tyle.dCCCF= :If ET >= 5 ThenCdComma nd("WT=0b"Els^p1Fnd IfC#CAptCe@Š3d.X aLpt׀+ .XHF YO Y I YD "elEle>maJA4'regM~EntryXReg mMZa@|x`>  =A reate( 1(Noth@D,Ef,$, . GraphicGrouplG"`.Justif msBh*7 =eJ'StartPosi5 1C' <is :ed lahe d ' fi eld w t`g cnc®GtAdM( SdM odelReference.e:F ' raw a# /aNormal h Og /NULLa^ "E ^SubPriv`=  P!BCellNhame!GSbÀF9A$NuIdCh angeLeves Boolean1AǺ2_xi B Y FirstJjSecondOB͢FOpEal isFPP sD`GFa:#OriginAʂ#$H.# S= R # 'Ask to specify prBp fn,c.##0PACE##Apty= qrV@alue(" 0 A NSy_am.zX!1 'PrM ntPX of Ę%q 2A03$r C q. 0gAcg  gkgyS howMessa ge (Cb(baK0͛QGrCHANGE LEVERm1 N~2Kո=T=O/?,OOO@ COLORu??j  ResetDisPgyU(Q)aFdcXCYm yZQu"G= .R1.Low@ .H`0daYao.bd `¿gh.Y - 4Q PDim dY As D oubleTe@xtSizepi Field2In`tegern For @= 1 To n\NumS@~If#>#h en' sh ift the second f1sdow * = dCe rY - dHeight CellQuater +/ 88Els}=O Z Q' twoLs,VfirstUhas to b afed up s!_Ui_G#%= (/ 7) * 6 ? `ingle7nods\0H%% EyIf ptLeftTop.X }X}; Y F"/ 2I RABottomKcQ DH  JCall `Place(!F), pt, _dIIf( , nMaxLe$n1F2) Dezf FaTCSblbdE , b Exit, elElem@n.Gr aphicGroxup)'' i T|   N %App lication .CadInpu tQueue.S endComma nd("/PFENCB"  F Sub +       9T        x  ME    (  <  <   B@`: eall`<  `> `@ ****`B owin H ****  % Dh 1la   %          "        (  0  8   @   H  `  h  p  x                      (   0  8  P   X  p                >        @  2 P    6          0    0  8   @  ` ( p     (  0   8  @  `   p                       (  8  H   X   p          0     (   H . `                 0   8  H  X  h   x 0         .    H X   x         @          ( & 0  X  x    x p  ` ] @ ] X ] p ]  ]   Input values R A ]  ]  ]  ]    Grid dimensions] ( ] @ ] X ] p   Box and grid size]  ]  ]  ]    Current drawing position ]  ]   ]  ] 0 '   Line element erat] P  noecho F! >B  GRID OF BOXES FB@  lue ' r ' " ' $ _ P $  Get number of rows nceled $ ENTER NUMBER OF ROWS (RESET TO EXIT) r `% l ' &tak    Get number of columnsolor r $    ENTER NUMBER OF COLUMNS r `% l ' (------k p  / Set default cursor for the spotting operations le (B@H ond el   Get lower left corner r  IDENTIFY LOWER LEFT CORNER " `%  ' * ' $ k   Get upper right corner di r "     &  & & & 6 IDENTIFY UPPER RIGHT CORNER OR KEY-IN BOX WIDTH,HEIGHT $ ; Invalid data input. Type Width,Height in the key-in window. $  ' ,B@  $ G x j eck  r r   Calculate box size     ,!  *!   & ' 8 ,!  *!   ( ' 6,,d H ,! ' 80",, ,! ' 6( k    New grid size**** 6 ( ' :e 8 & ' <FD *! ' .**** *! ' 4**** . : ' 0a 4 < ' 2LL  Draw Columns Atta   Set initial coordinatesce 2 ,( FB@ . ,( | . *( F!  ( !  ) Create a line in the application context * , ! F% J . Dra  Save the line to the file D ! F! B@L ** ' Redraw the line, so it becomes visible on P DB@N **  Move to the next position ,!  6 ,(  *!  6 *(    Draw rows  ) Set initial coordinates for rows drawing 0 ,( !  4 ,(  . *( r 4 *(  a  & .bor,, ) Create a line in the application context * , ! F% J . D  Save the line to the file D ! F! B@L ' Redraw the line, so it becomes visible P DB@N  Move to the next position ,!  8 ,(  *!  8 *(  P k H  : Should be called before exit - sets cursor back to normal  echo F! >B  (B@  |     Report that box drawing failed  BOXGRIDImpl.Run B@ B@ o p h ~ Attribut e VB_Nam e = "BOX GRIDImpl " Optio n Explicit@Priva Module @ Pub D Sub Run() T nrror GoTo hE Dim bGoOn As BooleanExit12UiInt0eger' Input va0lues OnRows Col ptLowLef^Point3d(ptUpRi gh' Gr id dimensFd*Do d( tOp_ Bottom Box and g"sizAWidthx|HeE7  #C urrent d rawing p8osiAAcdX#YMG bBfBe‚TypeMsdCadCC = m Data ' Line eleu@Ѕnnm EI C@all Apa<."Queue .SendComm k("noec8ho" A Sh$ow " OF ES@ bbn= FalsD>B1@m2k Do A If Not 2 The{aa ]et number oxf r m!o= !on.Get$wVt("ENTER NUMB  ROWS (R ESET TO EXIT)", \0,"! E`[If 'colu\mnpA( Or)0nBCOLUMNS_IS )def ault cur sf` the sp }afoperg"HhDBSt@It~Dcm@ I 0 (low@6l!corn%##o>pF'"dd:ID:IF Y LOW:LE FT CORNER" 18AQ}7?p ɣ@Activee lRefe ce.Addd r 0' ReQ, so Hbeco mes visib5 .B!NormaflK-MonextUk! *UF" /`N /.. QQ7 t@SV9?0"WY2= +2kG/2R!/2/2%))C/2/2/2 /2 /2<ɱ .Applica tion.Act iveModel Referenc e.AddEle ment mLi ne  ' Redraw the l <, s o it bec omes visXibl j.rmsdD AingyNormal d rMove tos next posi (ptUpR ight.Y = + dBox HeLowLefN ? End If ' Should callefore ex - sets c ursor baTckinC   CadInpu tQueue.S endComma nd("echo ")< StattartDefpault E"Sub hE`rror:up(ortXa sox Ayh fai@2 A Cs.Lo g "BOXGR IDImpl.RHun"N ReToMsg `Cur1t N  ,  5   ;        x  ME    (  B@@  set parseall off >B@@ b   $   e1l K T F J ********************* The following is E1L section *********************** rf=e1l:e1la '   NULL >B@@ %  Attach Border Form FB@  Accept/Reject FB@x | ~   F! >% z .  ! !   !  |  ' r d   attach  " 04.bor,,el1,"Aramco form 2615",,,, ' k  ild K T F J ********************* The following is ILD section *********************** rf=ild:ildb ' %  NULL >B@@   Attach Border Form FB@  Accept/Reject FB@x | ~   F! >% z .  !   !  |  ' r d p   attach  " 04.bor,,ild,"Aramco form 7460",,,, ' k (  pfd K T F J ********************* The following is PFD section *********************** rf=pfd:pfda '   NULL >B@@  Attach Border Form FB@  Accept/Reject FB@x | ~   F! >% z .  !   !  |  ' r d    attach  " 04.bor,,pfd,"Aramco form 2615",,,, ' k   pid K T F J ********************* The following is PID section *********************** rf=pid:pida '   NULL >B@@  Attach Border Form FB@  Accept/Reject FB@x | ~   F! >% z .  !   !  |  ' r d   attach  " 05.bor,,pid,"Aramco form 5994",,,, ' k H  vod K T F J ********************* The following is VOD section *********************** rf=vod:voda ' A@  NULL >B@@   Attach Border Form FB@  Accept/Reject FB@x * De | ~   F! >% z . ment !   !  |  ' r d    attach  " 04.bor,,vod,"Aramco form 2615",,,, ' k   fpp K T J ********************* The following is fpp section *********************** rf=fpp:fppa '   NULL >B@@ ser cl  Attach Border Form FB@  Accept/Reject FB@x F | ~   F! >% z . . t !   !  |  ' r d    attach !  " 04.bor,,fpp,"Aramco form 2615",,,, ' k h S F ' r n P r   attach****  REFERENCE DETACH b >B@ >B@ escrip  >B@@ >B@ ts str  reference locate off b >B@@ locale  reference snap on b >B@@ en  fpp b  0 SCALING THE REFERENCE FILE TO THE DESIRED SCALEns  % READING THE SCALE FROM THE TEXT NODE ****   '   ( **** $   **** ! '   k   reference scale absolute b >B@@  tcb->refScale.master A@ h $  >B@ ****k @ k 8 >B@ ******$   *** SET PROMPT >B@@ < k  (B@ from |     restore settings $   (fro SET PROMPT >B@@ systemk   (( on)   Report that function failedt[in]  ATTBORImpl.Run B@ ed B@ o   ٴ Attribut e VB_Nam e = "ATT BORImpl" Option Explicit@Priva Module ` ' -L SD escri: This funcattac h border reference fi'>Par ters = strPr ctCode [in]Z p  n( one of e1l, pid, fp p, ilpf vod)-/xPub Sub Run( XAs Sng @O rror GoTo hE  Dim bExit Boolean objM@essageCadInputC @RefFRC ommandLi7E  pXRWPCSTNB\sd DefaultScalBDo8@A* Queue .SendKey in "noecho@ V set !seall nf Selec t Case Mid T, 1, ^3 S "~":'* ollowing E1L s@s͒ ** Yrf=!: aD4"!VBNULL Apa.Shows@BgForFm< gmpt c cept/RejlS@1K= GetO(msBd%Type, BBData Point.ReGB(;'If .A  OrthAmE5 Cq`= Tru^Els,!' D!uE+ "04.,,el1,""A`co f`= 2615"", L8End Ifg"g"?b]/bxILD?be " b:` bKK(?b?bfmi?b ?b?b+e?b?b11e4d1 111"Qjv=~k 1@$17460111b10= 1PF1\߻?_S1p:0 ?b>u1JZ?bh ?b1o?b:1(j<1uV>_1(?b1 OO_`i?b11ĕwThe?b?b 11%"11@$?b?bq11id10 1PI11ߩS0:0 11R11#__?b_11t?b2%1^11$1 k!1111 11 11w1115S@$15994?b111|- 1VO1o111p:0 1F dInputQu eue.Send Keyin "NULL"  Applicat ion.Show Command "Attach Border FormrPrompt pccept/Reject 3 Set objM essage = ~Ca Get!(msdType,  DataPoint Reset) IfN.?9Sc 6 Or$Then8bExit1TrueEls' a͏$strRefFilLinAY+ "04.b or,,vod, ""Aramco fz 2615X"", pE IfCase "Hfpp '* @ llowin g is @ s@ ** :9P"rf= : a"K?e?r ??? \bbbuta bb$( bbebHb#b!w:V|!Sel_# aNot ('3~ o[+"R EFERENCE DETACH 0" & g ductCodA? #rq re ference lo e off_snap o  / K%A ' SCALING THE G.FILE TODESPIRED"EIREADEE FROMbTEXT0 NODGdD efaultScal!1Gpa.r0 rqt`t2 fnRWCSTN() mpletedSu |fully.}xaxsc~l'/1( absolut ef0SCExpr@!@cValutcb->.master",  . 3dFXYZ(0, ! #9X/>isPowe rDraft()o7("SET PP"PT"D C$@Stat txart"SrS ub hErr$orK' torepytt`zs?S  sEnabled*g' R eport that funca fa dr N s.LogTTBORI..RundHToMsgBoxCurHt                                                                                                       L  Y )  ʉ  ( j GetModuleFileNameA       x  ME     P  % ` `  @  (        H   <  ` 2 h F l  X  ` l x   B                (  H   h  p   x         B       "    8  @  H   P 6 X   2  l   @ ` ` V      l 8   B X            (  0  8  H  $ P  x               4    (   @  P   `  h   $          "   8   @  H  P   `  h  p    x 0  *  B  , ( 8 X P B       &  H & P  x      N  R   ` : h  $ N B  ( . 0 . `   N  B F H  > 0   $  N 8 B                        0  @  H   P : `       :        $   @  H F h              N   @ & X   B  >  :   P N ` N  "        J   h  p         2       B  (  0   8   @  P   h                    x p     6 Function gets an integer value from the Key-in windowR A , strPrompt - a prompt string to be shown @ nMinValue - minimum value to test the entered value against e bExit - [in/out] Sets to True by the function to signal that user has canceled the operation X  Return value - e Integer value on success, bExit set to True if there was an error or user has canceled the action  ] @ ' l ' r _  n FB@x | ~  F! >% z . t t!   t!  |  ' r d  t! $  t! X' l l p   x P d H # Input value should be greater than pX  ! A@ Rk d  Invalid data input ! A@ B Dk k r i / Function gets a point value of the mouse click T , strPrompt - a prompt string to be shown e bExit - [in/out] Sets to True by the function to signal that user has canceled the operation  bUseKeyIn - [in] Y strErrorMessage - [in] Error message if count of argument from keyin is less then need O eInputType - [out]CadInputQueue.GetInput.InputType : keyin, point or reset?  Return value - e Point3d value on success, bExit set to True if there was an error or user has canceled the action X     > Invalid data input. Type X,Y coordinates in the key-in window. ` ] h ]  ]  ]  ' r _  n FB@x  |   ~ F! >% z . tdy od  |   F! >% z . tk X t! '  t!   t!  |  ' r t!  ~ e . Test if user entered X,Y in the key-in window t!   , $  '     A@ d $  $  +  .  $  $   +  x" or $  $   $  $   $  (  >  $  ( $ x  d   Invalid data input ! A@ @ k  k  d  t! '  x  k  r i  * Description: This function selects element $ Parameteters: strPrompt(in) - prompt < bExit(out) =True, if user clicks cancel button` & ptTouch(out) touch point 1 Returns: Element - that is selected by mouse I Nothing - if user clicks on the drawing where is no element  ]  n FB@x |   F! >% z . t t!    t!  |   ' r r t!  t!  F! (%  .  t! ' z p k h i ` G ***********************************************************************  Description: K Converts string to string represenation, depending of locale settings  4 Arguments: strValue[in] the value to be converted  Returns: converted string  H ************************************************************************    . ?X   $  $  '    , ?X   $  $  ' i h G ***********************************************************************  Description: < Converts value from master and subunit value to double ? (from Microstation coordinate system to VB representtion) 8 Arguments: strUnit[in] the value to be converted * format: 0:0.4 or :0.4 or 0,4  Return value - double value H ************************************************************************ @ ] D  % ] D   ] D  % ] D   ] D     -  '    - $  '    : '     '  z k    4 input numerical value format: 0,5 or 0.5 $  X' d H    4 if leading zero is omitted format: :0.3 or :0,3  ' d      $  $  X'  k     $  $  X'       F! !   F! !   F! !  '  k H '        '  k  i  G ***********************************************************************  Description: rotate an element by angle < Arguments: objElem[in/out] the element to be rotated 8 pntFixed [in] the point of rotation 3 nAngle[in] angle(in degree)  Misc: H objElem.Rewrite must be called affer if the element already exist H ************************************************************************  ]  ]   C Create a rotation matrix for rotating with the Z direction fixed. ]  (  (   (      $  '   $  '   + Apply the transform to rotate the element  B@ o ( ] h '  ]   $ b '   $  '  $  '  ]   draft.exe '   '  k 0 i ( V Attribut e VB_Nam e = "Com mon" Op tion Priva ModuleXExplic@it DD eclare FuncvGetlFileLib "kernel 32" Alia@s _  "2A" (ByVal hK As Long, lp]n S AnSize0)# 'ge ts an in teger va lue from the Key -in wind ow  st$rPpt ]- a p ing to be shownnMinb+ - minimum4 Ptest6eAred again s'2bExi6  ![in/o`ut] S^ !Tr .by"f sign thaPt us ohc`ancel8opperaAl*C+Return!- IGsucc ess, C&seɀ0o !if! w Verrorv S a@ub@ OG_}FZ(@BoopleanBDßD@im msgAC adInputM@7ag@\C D qCs= 0CCB= Fals Do3ApZ.S? DF3G @uB#=  &Queue.C")(msdETypeand,'  inNRe 7)'If. " Or The`e w$aE'Ef&`I sNumericg.B)0 !o3>C`5G  > gu/bqI;%s>$J "+luDldgrer`g`f" + C () " !"b8D C"`orityElEnd If-@id data@M  Loo p While Not !%c! po D'o mo c kG!CRc5- 㿫ǩ bUseXIn` ] `7%DcR b m c ount arg c`key`0is l@an needc ey!ǧ3X?: ",[rB?C?bP P3k?b?b?b_j ?bbmy@_eC T`, cqbvO\,9P/ wS03 ?m5. VX,Y coordin`@s 7.?wF Mk`[etot:DoT(arrC ( lonPospWiquZs$so!sC{bb&[t <._0actteD`Q?u2^k' X_ _ j__0Q%_ 1Y! x&=[7 c_"p Z ' TU8U7!+e16Stdž, 8","h@ UB [d(u) < 1O  xD%4:=r; o&(0&) @%DoeF`Units& l 11)} E(Po2 8`.X 85+Y)1 R?:_tte`i ]:= : .point   Exit DoEnd IfptTouch t 'ReturnDEleS D`that d`ed by mo 9ÎM hingI on the drawwhere)noPube `  SC( ByVal As Str &,Boolean,, r P3d)%CuCDim msgACad InputMessageI App&aAu.ShowGiG# Set= Queue.Get(msdETypeCommand, 0Data0NRe0set)C = @g. Lq Or^ #IfG@eE=Jj@?6State.Loct]6g.View, DEr=AVMB *? !_i}FaConver|yA]toD!repr`6naH , dependof l # :t s  Argupà `ue[in]ivalueB be ced&yf@a ? vtrToSystemD twbmwD=`IReplac e()B, ". ", Mid$(C(0.5), 2, 1) ` ,x )?(#/ WI=f ma+r subun`׆Ado ľ(Micros@p`EorN q s5aHVB mStS@)'KPU? "PmP fo rmat: 0:0.4 or 0,4 C cV c- C )?!kV@YDbFs& * cCW   SenColo0nPos$jIn teger7dM?BCp0adSub/"Mea 05P8 = o9"@ "G=z ^:U3e= "0ThYfA0#q ` `AC`W <= 0l'i n Wric(5 v,,5Q, G7d= CDbl(OMtrqJElsԆQJ =, 1< !'!leBaczeroomitt 5 163 6,3w !' y^pY Y, -Z!abS.d;+ (* AлveMode0lRef.U@ORsPerG: + _+1 { s) /_s9  ce StorЪ!8 io3`3e?&@_7{Q? * (-1q [X?  ry@roA`q5Ła8nglpslobjl/] AٔCqU p`ntFix6p {p 0r,n~A1 y@r pgreeQMisc: 0$ .Re write musallaf+Ai alrBy exisP'/ԟ,L RAb Z( gu@, sr$%O*nB Max[ 3 1E@ltransT PS@ Create a rotatio n matrix forng with the Z direcfixed.  Dim A xis As Point3d0(@.X = 0YU Z 1RM = 3dFromV yorAnd%Angle(c, Pi * n / 180) SEltrhans dT mO[(Ff\( B`, pnt(' Apply.* toe elementAPobjE.@ J End SubV Public Fun isPowerD@raft()Boolean+lRet Long  }Fal sefileNameS}z`* 256 B= GetModuleFD (0, }E, FAC =x Le@-G  Cpase( J *po–Integer= In .!, "dJ.exe"JIf  > 0 TheOcA-ITruIfIfeAd   p L  B3    $ & ShellExecuteA       x  ME  ,  $ (     <,  <0  < 4  <8  < <  <  <  <  <   <  < , <0 <4 <8 << <   + @   i ` R A i ` i ` i  H i" i$  @(L *0  % .P   % 2p   % 6  % :   % >   % @   FX   J     iL  Px     iR   iT 8  iV X  iX  \   `     ib  vate fX   j`     iR   il   in    ip   ir 8  it   x   |       `            i   i   `   i   i   i   i   i   i    i @   i `  i   i   i   i     `          iR  iT  i @  i `  i  i        `            `            `        (     %    % P 8   %  x   %   %    $ % &@   .   0   2   `4  :X  +B   @D  <  `R l+6   `V 臒@X `@Z h )    7   H$      0   8   @   H   P   X "  `  h   x "     "     "     "      "       ( "  0  8   H " P " `    "        "        "        "        "       ( "  0  8   P "d 6 X  `j     "        "  (  0   @ "  H  P   ` "4  h  "      "        "        "        "       0 "  8  @   P "  X  `   p "  x      "        "        "        "          "  8  $ @  h  p                            "      (  0   8  @  H  P  $ X                     (      (   @  `  f h                (  0   8 "  @  H   X 6 ` 2  6  "   $   8  @  P   X  h  p   x         6 ( 6 "  X    ` 6 h , 6 "       * 0    ` "  h  p @ x J       V L x X B   (  0 $ P   x         V T  X h "               (  0   8   @ B  H  P  X  `  h           x     $  t ]    A C ]@ ] 8 ]@X ]@x ]@ ]@  BB D S . m o  HB D o ` X L NB D o @  R T V X ZB D $o  x ^B D ( o  b dB D o  hB D P o X 2 R l n p r t vB D  o p ` zB D  o P  ~B D  o 0  B D o    B D  o  ` B D o     B D  o  ,             $  (  -  2    ,                                B D Ro  B D To  B D Vo ` B D Xo            R T     B D  o H  B D o (  B D o   B D o  ` 6B  o   6B   o   6B  o   2B   o h ` B D  o H  B D  o (  B D  o   B D  o   Title Block Automation `   Check if form is already open    :!  k x !   . :k X  P :   . : :(    :B@ k  o     Dim fTBA As New frmTBA` ]  ]   ]   ] ` ]  ]    Check if form is already open  x >!   k ` !   . >k 8  0 >     " Load and parse the Index.Cfg file     B@     %   Data Verified OKA@  d  Data mismatch detected. $  & Clik OK to "Fix" or Cancel to "Ignore" $    . >  >( "  >( $  >(   >B@ k  k  k  o    ( (B@* o  0 ------------------------------------------------ , Description: It opens AutoSacsVersion dialog 0 ------------------------------------------------ @   Check if form is already open   .!  k  !   . .k    .   . .  .B@ k H o @ 0 ------------------------------------------------ " Description: It opens Release Note 0 ------------------------------------------------  o  0 ------------------------------------------------ % Description: It opens TitleBlock Help 0 ------------------------------------------------  ]   6  tbv ' 4  open  help.doc 8 4 (A@ o   A@< Vba load 6  TitleBlockVerification.mvba  >B@@ Vba load 6 & Microstation Aramco Tools\BatchTB.mvba >B@@ . * o  P -------------------------------------------------------------------------------- F Description: It add refernce of TB_Validation.mvba in ARAMCO_SACS.mvba R ----------------------------------------------------------------------------------X ]  D F! H! J! L D! $ N TB_Validation  ' B z x k p D ' B z P i H P -------------------------------------------------------------------------------- M Description: It checks for refernce of TB_Validation.mvba in ARAMCO_SACS.mvba R ---------------------------------------------------------------------------------- P0 B  ]  6  TB_Validation.mvba ' R R F! H! J! LB@T k | P o  ] H ] ` ] x WScript.Shell $ \ . Z  SYSTEM Z% ^ . X SACSV8i_DIR $ X ' 6 . Zi ( w Attribut e VB_Nam e = "SAC S" Opti on Expli cit Priva Dec lare FuncHShellExecLib "32.dll" Alias&JA" _ (ByVal h wnd As L ong, lp`Operab S File2GPT?Par ters (Dir@ectorynShowCmdR7*P)U Const SW_SHOW5m_o anClo"sUcls Dim frmV O-v$!LINESnD, LeftÅ Righ$σ$ , F,P_GRA PB^ATTBOR(ProductCodhICIH+;BOXpGRID;dBUBLDRV"1 FieldNumH?, bChangeLevelBoolean@+MaxLen1:n2XISTINzGEDiEbNzGEN/+S ELECTBU{}w.9*Ol HGEc2DRAW)?7!r1.1_SCLOUBAKA okENGLI okMRjo`' Tit!Bloc ~utom8TBA Sh 0.Set f M = Nothing8JGoTo 0&q IsD e dew frm8A?.VerifyABFalse S how vbModeless PSub Public  2Validate'DimxA V F adData APPDATA7 AppIndexes() INDE XINFOPlantPLANTSizesSIZEBorderBORD|ERHLؗ'}#a?BA ' Load a parse the e.Cfg filǗ .A Aa, es, l, D`?GBNHelBph.Com@eTs(, adG,  ),q MsgBox "LBbied OK"' Eca ~ (mismat ch detec ted." + Chr(10)  "Clik t o ""Fix"" CancelIgnore""",nOKC)7vbOK|=}" ~E.!%b=$ )`|ationDxara +<Tru@ 2e)ae MendLinGmWSt . rtPrimitivHw c  '- * 'De scrip(: ItϠutoS(acs@%s , dialo? ,jSACS$ a- rm `2?f J@g' J!" R3 33vD 6)ps( ! !!Rxa U`3!!PmR?,_ _ T TitleBlo0!ZjQV,AeDir{trUU=dstall!@+ "tbv]S hellExec ute 0, " @W"pp.docXNullSR,kP0dW_SH OWo OnProj0`m 1' W%Refere_ CadInp utQueue.SpIKeyin @"Vba lau" & & ")ificrY.mv R  KQ $ Tahoma    $    #   Frame11y $   , #    Frame21y  $   F #    Frame31y a$ $   P #    Frame41y W) $   T #    Frame51y =) (  ` 8   btnProcesse. S; $   a 4  btnExity S; $   c #   Frame7tyW) ,   { #   edtDescription1 W)  $   #   Frame9tyW) a$ $   #   Frame10y= W) $   #    Frame11yW) W) $   #    Frame13y y0 $   #    Frame14y y0 $   #    Frame15y y0 $   #    Frame16yn8 y0 $   #    Frame17y=) y0 $   #    Frame18yG y0     VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmACf   J % o  d f F  C o m p O b j   D p f   <  o  g i 4   C o m p O b j   2 p f   *  o  j l "   C o m p O b j    p f    ! o  m o   C o m p O b j    p f     o  p r    C o m p O b j    p f     o  s u    C o m p O b j    p f    1 o  v x    C o m p O b j    p f    5 o  y {    C o m p O b j    p f    A o  | ~    C o m p O b j    p f     o    p  C o m p O b j    p f     o      C o m p O b j    p f    o     C o m p O b j    p f   ~ o   {  C o m p O b j   y p f   u o   r  C o m p O b j   p p f   i  o   c d  C o m p O b j   a p f   I  o   , ,  C o m p O b j   * p SE1L Caption = "E1L Active Bus" ClientHeight = 1275 ClientLeft = 30 ClientTop = 285 ClientWidth = 2760 StartUpPosition = 1 'CenterOwner TypeInfoVer = 226 End   i* WJO Microsoft Forms 2.0 Form  Embedded Object Forms.Form.1 9q  (  OK  {  t   (  E1L Bus  {  t   A H, ,  4  $   d }   R  KQ DB Tahoma  |    b (  OKz  (   c 2 ,   Label1  $   d ,   Voltage q  VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmFPPDIM Caption = "Accept/Reject/Change" ClientHeight = 2370 ClientLeft = 45 ClientTop = 330 ClientWidth = 2910 StartUpPosition = 1 'CenterOwner TypeInfoVer = 25 End   i* WJO Microsoft Forms 2.0 Form  Embedded Object Forms.Form.1 9q  ( Dimension:i    5   Tahoma  ( lblDimensiong   5   Tahoma  (  Accept q {  u   Tahoma  (  Reject q {  u   Tahoma ( H  @  }  J R  KQ DB Tahoma  m (    2 <  Label1  ,   2 <   lblDimensionq $    #    Frame1 O (   7 8   btnOk1 g ,  ? 8   btnCancelion g     VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmSACSversion Caption = "Saudi Aramco CADD Standards" ClientHeight = 2715 ClientLeft = 45 Clif   & o   #  C o m p O b j   ! p                          " $ % ' ( ) + - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` b d e f g h j k l m n o q s t v w x z | }   entTop = 330 ClientWidth = 5490 StartUpPosition = 1 'CenterOwner TypeInfoVer = 6 End   i* WJO Microsoft Forms 2.0 Form  Embedded Object Forms.Form.1 9q  ( Copyright Saudi Aramco, 2012. All rights reserved. No portion of this software or article may be reproduced, by any process or technique, without the express written consent of Saudi Aramco. 5%   5  " Tahoma ((  Saudi Aramco CADD Standards (SACS) contains seed files and aramco reference borders for PID, COMM, FPP, VOD, E1L, ISO, EDT, CIV, PPL, ARC, HVA, UTI, GEN and ILD engineering drawings. For information on these standards, please contact Engineering Knowledge & Resources Division.{b$ E  5  " Tahoma 0 (  Saudi Aramco Auto-SACS Version      @ "Tahoma ( H   @  } %  R  KQ DB Tahoma  o (    2  Label1 g (    2 H   Label2 " ,   2 T   lbl_Version       VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} frmTxt Caption = "Text Form" ClientHeight = 1500 ClientLeft = 45 ClientTop = 330 ClientWidth = 6630 StartUpPosition = 1 'CenterOwner TypeInfoVer = 8 End   i* WJO Microsoft Forms 2.0 Form  Embedded Object Forms.Form.1 9q   H,+* {  5  " Tahoma  (  Reseta {  u  " Tahoma  (  OKho {  u  " Tahoma $     } - V R  KQ DB Tahoma  o (   4  txtString e   $    8   btnReset!  $    4   btnOKsetS    n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q 0 F       { 0 {Vertical  5   Tahoma 4 F      { 0 rtHorizontalon  5   Tahoma < H      } 0 q PlacementionR  KQ DB Arial d o ,    P  opPlacementVer  ,    T   opPlacementHor  O       n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q  (  Prefix:  ,  5   Tahoma:  ( Drawing No:a ,  5   Tahoma:  ( Sheet No:o:a ,  5   Tahoma:  (  Rev. No: ,  5   Tahomao:  A H,  ,  5   Tahomao:   H,  ,  5   Tahomao:   H,  ,  5   Tahomao:   H,  ,  5   Tahomao:  (  Index:o:W ,  5   Tahomao:  A H,  ,  5   Tahomao:  A H, E ,  5   Tahomao:  (  Type:ao: s  5   Tahomao:  (  Size:ao: s  5   Tahomao:   H, z ,  5   Tahomao:  ( Title Line 1:  ,  5   Tahomao:  I H,  X& ,  5   Tahomao:  ( Title Line 2:  ,  5   Tahomao:   H,# X& ,  5   Tahomao:  (  Jo/Ewoo: ,  5   Tahomao:   H, h ,  5   Tahomao:   H( W ,  5   Tahomao:  (  Scale:o: r  5   Tahomao:   H,  ,  5   Tahomao:  (  Date" s  5   Tahomao: $ (  Revision Description ,  5   Tahomao:   H, ,  5   Tahomao:   H, 2 ,  5   Tahomao:  ( DCC Numbere g r  5   Tahomao:  (  Formato:q ,  5   Tahomao:  A H, q ,  5   Tahomao:  A H, ,  5   Tahomao:  ,   Bordero:   5   Tahomao: @     7 } ' & Drawing Details R  KQ DB Tahoma  ` (    2 8   Label1o: (   2 <   Label2o:< (   2 <   Label3o:x (   2 8   Label4o:  ,  8  cmbOfficeCode , (   8   edtDrawingNo< , (   8   edtSheetNoNox , ,   8   edtRevisionNo  (    2 8   Label9o: $    8   cmbType:I , $    8   cmbSize:! , (    2 8   Label10:~ (    2 8   Label11:" $   8   edtIndex , (   ! 2 @   Label12x h (  " <  cmbTitle1onN (   # 2 @   Label13x  (  $ 8  edtTitle2onN x (   % 2 8   Label14x ] $   & 8  edtJoEwo  $   ) 8   edtScale"  (   * 2 8   Label15e" ] (  8   edtRevDatenN<  (   2 4   Label61e<  (   2 D   Label62e1  0   8   edtRevDescription onx  (  8  edtDCCNumber  (   2 <   Label63e ] (   2 8   Label76e ] (  8  cmbFormatber  (  8   cmbBorderberI  (   2 <   Label78eI        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q  ( Plant No:ail ,  5   Tahoma8e  ( Location:ail ,  5   Tahoma8e  A H,  ,  5   Tahoma8e   H,  ,  5   Tahoma8e $ (  Plant Description:n  ,  5   Tahoma8e   H,# X& ,  5   Tahoma8e @  D   > } ' Plant Details R  KQ DB Tahoma  a (   - 2 <  Label16e (   . 2 <   Label17eh (  1 8   cmbPlantNo , (  2 8   edtLocation h , (   5 2 D   Label20e  ,   : 8   edtDescriptionv        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q 4 F      0 Restrictede.  5   Tahoma 4 F      0 Confidential  5   Tahoma H  N    H } ' # Information Sensitivity R  KQ DB Tahoma d o ,  M T  optRestricted  ,   N T   optConfidential        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q , F       0 Yes  5   Tahoma , F       0 s Nos  5   Tahoma D  R    J } n i Emergency Drawing R  KQ DB Tahoma T o $                                                                                                              Q L  optEDYes $   R L   optEDNos        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q 0 F       0 tERequired  5   Tahoma 4 F      0 quNot Required  5   Tahoma D  V    L }   Key Drawing Review R  KQ DB Tahoma X o (  U P  optKDRYesred $   V T   optKDRNo        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q  (  Prefix:    5   Tahoma:  ( Drawing No:a   5   Tahoma:  ( Sheet No:o:a   5   Tahoma:  (  Rev. No:   5   Tahomao:  A H,  ,  7  @  Tahomao:   H,  ,  7  @  Tahomao:   H,  ,  7  @  Tahomao:   H,  ,  7  @  Tahomao:  (  Index:o:   5   Tahomao:  A H,  ,  7  @  Tahomao:  A H,  ,  7  @  Tahomao:  (  Type:ao: s  5   Tahomao:  (  Size:ao: s  5   Tahomao:   H, z ,  7  @  Tahomao:  ( Title Line 1: :   5   Tahomao:  I H,  X& ,  7  @  Tahomao:  ( Title Line 2: I   5   Tahomao:   H,# X& ,  7  @  Tahomao:  (  Jo/Ewoo:   5   Tahomao:   H, h ,  7  @  Tahomao:   H( W ,  7  @  Tahomao:  (  Scale:o:O r  5   Tahomao:   H, 1 ,  7  @  Tahomao:  ( DCC Number 2 r  5   Tahomao:   H, d ,  7  @  Tahomao: $ (  Revision Description s  5   Tahomao:   H,  ,  7  @  Tahomao:  (  Date" s  5   Tahomao:  (  Formato:X r  5   Tahomao:  A H, q ,  7  @  Tahomao: @    M } ' & Drawing Details R  KQ DB Tahoma <  (   d 2 8  Label23: (   e 2 <   Label24:< (   f 2 <   Label25:1 (   g 2 8   Label26:  ,   h <   cmbOfficeCode1 , ,  i <   edtDrawingNo11 < , (  j <   edtSheetNo1ox , ,   k <   edtRevisionNo1  (   l 2 8   Label27: $   m <  cmbType1I , $   n <  cmbSize1" , (   o 2 8  Label281~ (   p 2 8  Label291" (  q <  edtIndex1onN , (   r 2 @   Label301 h (  s @   cmbTitle11nN (   t 2 @   Label311  (  u <   edtTitle21nN x (   v 2 8   Label321 ] (  w <   edtJoEwo11nN  (  x <   edtScale11nN"  (   y 2 8   Label331" ] ,  <   edtDCCNumber11  (   2 <   TextDC31 ] 0   <   edtRevDescription1onx  (   2 D   Label741x  (  <   edtRevDate1r<  (   2 4   Label751<  (   2 8   Label771 ] (  <   cmbFormat11r        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q  ( Plant No:ail   5   Tahoma71  ( Location:ail   5   Tahoma71  A H, D ,  7  @  Tahoma71   H,  ,  7  @  Tahoma71 $ (  Plant Description:n    5   Tahoma71   H,# X& ,  7  @  Tahoma71 @   A } ' Plant Details R  KQ DB Tahoma  a (   | 2 <  Label341 (   } 2 <   Label351! (  ~ <   cmbPlantNo1i , (   <   edtLocation1! , (   2 D   Label361  0   <   edtPlantDescription1        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q ( G@ ,    &  0 tK  7  @  Tahoma ( G@ ,      0 tK  7  @  Tahoma  ( Restrictede.   5   Tahoma  ( Confidential   5   Tahoma H    N } ' # Information Sensitivity R  KQ DB Tahoma o ,   L  optRestricted1  ,   L   optConfidential1 (   2 <   Label39o (   2 <   Label40o       n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q ( G@ ,      0 be  7  @  Tahoma ( G@ ,      0 be  7  @  Tahoma  (  Required   5   Tahomaed  ( Not required   5   Tahomaed D    P }  i Key Drawing Review R  KQ DB Tahoma o (  L  optKDRYes1ed (  L   optKDRNo11ed  (   2 8   Label43o (   2 <   Label44o        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q ( G@ ,      0 be  7  @  Tahoma ( G@ ,      0 be  7  @  Tahoma  (  Yeso   5   Tahoma  (  NohoW   5   Tahoma D    N } o i Emergency Drawing R  KQ DB Tahoma o (  L  optEDYes1  $   L   optEDNo1  (   2 4   Label411 (   2 4   Label421        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q   H, W ,  5   Tahoma  (  Engo s  5   Tahoma   H,  ,  5   Tahoma  (  Date" s  5   Tahoma   H,  ,  5   Tahoma   H, W ,  5   Tahoma  (  Cert. byW s  5   Tahomaby  (  Date" s  5   Tahomaby @    Z } x Design Agency l1R  KQ DB Tahoma d  $   8  edtDAEng , (   2 4   Label48g (  8   edtDADateon1 , (                            ! # $ % & ' ( ) + , - . / 0 1 3 5 6 7 8 9 : ; = > ? @ A B C E G H I K L M N 2 4   Label49g (  8   edtDACDaten1  ,   8   edtDACertifiedv  (   2 8   Label52g  (   2 4   Label53g        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q   H, W ,  5   Tahoma3g  (  Agency3gW s  5   Tahoma3g   H,  ,  5   Tahoma3g  (  Date" s  5   Tahoma3g   H,  ,  5   Tahoma3g   H, W ,  5   Tahoma3g  (  Oper.a3g s  5   Tahoma3g  (  Date" s  5   Tahoma3g D     b } x Rev. for key Drw R  KQ DB Tahoma h  (  8  edtRDAgencyi , (   2 8   Label54g (  8   edtDRDatecyi , (   2 4   Label55g (  8   edtDROpDatei  ,   8   edtRDOperations  (   2 8   Label56g  (   2 4   Label57g        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q   H,  ,  5   Tahoma7g  (  Byho s  5   Tahoma7g   H,  ,  5   Tahoma7g  (  Date s  5   Tahoma7g 8     ` } h Other57gR  KQ DB Tahoma o $   8  edtOBy21 , (   2 4   Label581 $   8   edtODate  (   2 4   Label60e        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q   H, W ,  7  @  Tahoma7g  (  Agency7g s  5   Tahoma7g   H,  ,  7  @  Tahoma7g  (  Date" s  5   Tahoma7g   H,  ,  7  @  Tahoma7g   H, W ,  7  @  Tahoma7g  (  Oper.a7gW s  5   Tahoma7g  (  Date" s  5   Tahoma7g D    c } x Rev. for key Drw R  KQ DB Tahoma h  (  <  edtRDAgency1 , (   2 8   Label64g (  <   edtDRDate1y1 , (   2 4   Label65g (  <   edtDROpDate1  ,   <   edtRDOperations1  (   2 8   Label66g  (   2 4   Label67g        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q   H, W ,  7  @  Tahoma7g  (  Engo s  5   Tahoma7g   H,  ,  7  @  Tahoma7g  (  Date" s  5   Tahoma7g   H,  ,  7  @  Tahoma7g   H, W ,  7  @  Tahoma7g  (  Cert. by s  5   Tahomaby  (  Date" s  5   Tahomaby @   ^ } x Design Agency R  KQ DB Tahoma h  (  <  edtDAEng1ati , (   2 4   Label68y (  <   edtDADate1ti , (   2 4   Label69y (  <   edtDACDate1i  ,   <   edtDACertified11  (   2 8   Label70y  (   2 4   Label71y        n` ` Microsoft Forms 2.0 Frame  Embedded Object  Forms.Frame.1 9q   H,  ,  7  @  Tahoma1y  (  Byho s  5   Tahoma1y   H,  ,  7  @  Tahoma1y  (  Date s  5   Tahoma1y 8    b } h Other71yR  KQ DB Tahoma o $   <  edtOBy1e , (   2 4   Label72e (  <   edtODate1 e  (   2 4   Label73e      DIVIDEImpl L D I V I D E I m p l LINEBRKImpl L I N E B R K I m p l MIRCELImpl M I R C E L I m p l MLTCPYImpl M L T C P Y I m p l PLCCELImpl P L C C E L I m p l BAKALImpl B A K A L I m p l CLOUDImpl C L O U D I m p l METERImpl M E T E R I m p l ENGLIImpl E N G L I I m p l RWCSTNImpl R W C S T N I m p l SETSHOWImpl S E T S H O W I m p l SETUPImpl S E T U P I m p l TAGCUTImpl T A G C U T I m p l VESSHATCImpl V E S S H A T C I m p l cadUtils c a d U t i l s TBACfg T B A C f g TBA                                                                -             Helpers T B A H e l p e r s SACSMenu S A C S M e n u Module1 M o d u l e 1 ErrorCodes E r r o r C o d e s frmTBA f r m T B A GENImpl G E N I m p l ACSE1LImpl A C S E 1 L I m p l ACSLINEImpl A C S L I N E I m p l cMendLine c M e n d L i n e clsOpenClose c l s O p e n C l o s e frmACSE1L f r m A C S E 1 L frmFPPDIM f r m F P P D I M frmSACSversion f r m S A C S v e r s i o n frmTxt f r m T x t 6 @  ,  *2 HB1 7 B,( + dCommonGdC@Qm m no2 C) …X (  A TTBORImplG  T (B O`I p 6l +269;!BOXGRIDX GD ٌ2 o`@-2 9TqaBUBLDRVd$`QU` (L DVBm $2 /@")-1 #CShLTCc%L̀7C$2 20$!CDE0TAILaHD EALH+cH1{"<ܵ"PE1LP"EL PߧG"""oYH@ EXISTING"@E X!S`#I NZs#s& s CEXTLINES T N>SX E X I S T I N G I m p l  P S 2  E X T L I N E S I m p l   ! 3 F P P D I M I m p l  > D  # F P P I N I T I m p l    N _ _ S R P _ c    - G E N I m p l   4 9 A C S E 1 L I m p l    < _ _ S R P _ 9  \ V   S E T S H O W I m p l   G < " c% S E T U P I m p l  M b  ? T A G C U T I m p l  J ;  g V E S S H A T C I m p l   A  ;3 c a d U t i l s  [   T B A C f g   ^ a s ʓ _ _ S R P _ f  Y   * _ _ S R P _ e     T B A H e l p e r s     _ _ S R P _ b  Z _   _ _ S R P _ a    ? S A C S M e n u   f K  V B F r a m e    # C o m m o n   U 8 A T T B O R I m p l  E B ! B O X G R I D I m p l   X C                                   ! " # % & ' ) * + , - . / 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m o p q r s t u v w x y z { | } ~   B U B L D R V R I m p l   8 C S L T C I m p l  c H p  D E T A I L I m p l  ] S 8 E 1 L P C I m p l   ; / M I R C E L I m p l  : F  G M L T C P Y I m p l    G P L C C E L I m p l   I O  L) B A K A L I m p l   L t e( C L O U D I m p l   c : M E T E R I m p l    E N G L I I m p l   ? S  R W C S T N I m p l   5 ; M o d u l e 1  9   E r r o r C o d e s    / f r m T B A   h 1 _ _ S R P _ d  ` W B hH                              ! " # $ % & ' ( ) * + , . / 0 o 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n p q r s t u v w x y z { | } ~   F P P S E T I m p l     G R A D E I m p l  N Q  } L D I V I D E I m p l  R @   L I N E B R K I m p l                                                                        O                                             f   & o   #  C o m p O b j   ! p _ _ S R P _ 8     A C S L I N E I m p l     _ _ S R P _ 7   n \ _ _ S R P _ 6   \ i c M e n d L i n e    :H c l s O p e n C l o s e   0 _ _ S R P _ 5   (  _ _ S R P _ 4   $ f r m A C S E 1 L   3 f r m F P P D I M   f r m S A C S v e r s i o n    _ _ S R P _ 3   J _ _ S R P _ 2   g f r m T x t    _ V B A _ P R O J E C T   1 z d i r   1 _ _ S R P _ 0    = _ _ S R P _ 1           ! ARAMCO SACS for MicroStation V8.1  hwnd  lpOperation  lpFile  lpParameters  lpDirectory  nShowCmd  nParam  strCellName  nOption  strLeft  strRight  strProductCode  nFieldNum  bChangeLevel  nMaxLen1  nMaxLen2  isFPP  nParameter  dTextSize  cellName  FieldNum  OnLine  Orientation  TextSizeWrk  FixedSize  MaxLen1  OffsetX1  OffsetY1  MaxLen2  OffsetX2  OffsetY2  strUnitsFrom  strUnitsTo  nHor  nVert  i     I     fileName  A (    ) 8     H    IPrimitiveCommandEvents  wPath  patternEdPP  edP  filePos  cell  cellScale  patternType  elemDescr  modelRef  DrawMode  point   X    View  Keyin  Point1  point2  szInfo  arrIndexes  arrPlants  arrBorders  str  StrLine  hFile  arrX  arrItems  strName  strNumber  adData  . h    db  nLength  . x    dSize  ptElement  dScale  dOldScale  strText  /    eraseOnly  adAppData  Sizes  bPreload  strNewBorder  strBorder  0    0    2    2    3   a; A    bVerify D    KeyAscii I     cmb J      Cancel  pStr  pFind  pNths  c. om.Xck!/@ME1L+   0* pH  d  ARAMCO_S@ACS !@  for Mi croStati on V8.1@ BL R A M C O S C f o r M i c o t a "t o n V 8 . 1  Eh =   %QT %<9s@tdole>s ]d wl e  h %^*\G {00020430- C  0046}#2. 0#0#C:\W indows\S ysWOW64\22.tlb#O LE AutomG 0  M SForms>  xFm s$ 3 ED4 52EE1-E0 8F-101A-8 -02608C4D0BB4E FM20.DLL#soft : ^ Objec t Library/ ; "1 @:@@00}#:K*m     *  *   '  '   %  %   $  $        "  "                         ' *\CD:\SaudiAramcoV8i\TB_Validation.mvbarU   ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~k     #L-WMj=y     , a  y 8 ) a Q i  1 I i        1 I i y       ! A a     ! Y      9  Y            1  Q  q            1  Q  q          )  I  i   a  ' x  i) ) ) ) !* Y* * * * 9+ i+ + & 9' a' '  a '   Y- - - 1. i. . . !/ A/ i/ / / ' + 1# Q# # #       ! a !Z - B B C !C IC yC C C D 1D YD D D E QE E E E !F YF F F F )G YG G G H 9H yH H H I 9I ! YI I I J 9J aJ J J J )K A  Y a V A A y    q a  ) q  q a  T  A    y A   q  A a  ) q  9 Y    a  I          a  Q  ! 9  a     oD2N    ARAMCO_SACS  SACS  Common  ATTBORImpl  BOXGRIDImpl  BUBLDRVRImpl  CSLTCImpl  DETAILImpl  E1LPCImpl  EXISTINGImpl  EXTLINESImpl  FPPDIMImpl  FPPINITImpl  FPPSETImpl  GRADEImpl  LDIVIDEImpl  LINEBRKImpl  MIRCELImpl  MLTCPYImpl  PLCCELImpl  BAKALImpl  CLOUDImpl  METERImpl  ENGLIImpl  RWCSTNImpl  METER  SETSHOWImpl  SETUPImpl  TAGCUTImpl  VESSHATCImpl  cadUtils  TBACfg  TBAHelpers  SACSMenu  Module1  ErrorCodes  frmTBA  GENImpl  ACSE1LImpl  ACSLINEImpl  cMendLine  clsOpenClose  frmACSE1L  frmFPPDIM  frmSACSversion  frmTxt     A B H R V G K L N X D    F / C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL  VBA        ENGLI 9K\靯[ Y D:\Program Files (x86)\Bentley\MicroStation V8i (SELECTseries)\MicroStation\\ustation.exe  MicroStationDGN   1  0  0 F  C:\Windows\SysWOW64\stdole2.tlb  stdole q  @  .E .`M   C:\Windows\SysWOW64\FM20.DLL  MSForms Q Q  y P     sL&N 4 D:\Users\ajmihk0c\AppData\Local\Temp\VBE\MSForms.exd  CLOUD  BAKAL 1 Q  Y `     ShellExecute Shell32.dll   ShellExecuteA  p   LINEBRK  LDIVIDE  MIRCEL  PLCCEL  GRADE  ATTBOR  BOXGRID  BUBLDRVR  CSLTC  DETAIL  EXTLINES  FPPDIM  FPPINIT  FPPSET  TAGCUT  VESSHATC  SETSHOW  MLTCPY  E1LPC  SETUP  EXISTING  GEN  SELECTE1LBUS  GETE1LBUS  DRAWE1LBUS  DRAWSACSLine  TBAShow  TBAValidate  MendLine  SACSVersion  ReleaseNotes  TBHelp  OnProjectLoad  TestValidationReference  LoadValidationReference  InstallDir $ $              +=h8 +3q qkInK  *=h8 +3q  U"I#Uf^" !=h8 +3q  Class Pgv3 +3o  VBInternal      ^l>5 PM  hooks  Class_Initialize  hooks_OnDesignFileClosed   hooks_OnDesignFileOpened   H  8  8   [EZD( :Gddi@e'ImY x8E6hD. T+LRV 4L:'Ia? ȏ[qJ e  UserForm koEKLKa{  F3Dynamic      "- ?@  Label1 !-6S ` i     Label2  lbl_Version  UserForm_Activate L  msh%~HL n  M CA N  PM  Label12  IPrimitiveCommandEvents 0 mdlElementTemplate_activateElementTemplateByPath  stdmdlbltin.dll  1 mdlElementTemplate_activateElementTemplateByPath      mdlModelRef_getActive  mdlModelRef_getActive      mdlPattern_linear  mdlPattern_linear   @   mdlElmdscr_display  mdlElmdscr_display   Label11   `   mdlElmdscr_add  mdlElmdscr_add      InitializeTables  IPrimitiveCommandEvents_Start  CreateNewSegment {zJ߰`l V        DrawLine ! IPrimitiveCommandEvents_DataPoint VӶGGΗCf  IPrimitiveCommandEvents_Dynamics  IPrimitiveCommandEvents_Keyin  IPrimitiveCommandEvents_Reset  IPrimitiveCommandEvents_Cleanup  ApplyConfiguration  PlaceText  ConfigurePatternJ ((4 <  @  h  |    ̳   e    ̳   e   ̳ $   e       e     X   f     p   e   $ $  jMfD bODDZ%  dateFromStr  ReplaceBorderFile  VerifyBorder  FindBorderName [KC\  p p   8  D       `  x  D    |  |  $ $    ,               ,        0 0    <   !  i  (Zs 2 . 0 O b A% 0 0    <   !  i  LZs 2 . 0 O b % 0 0    <   !  i  Zs 2 . 0 O b %    <  < ,  4    GetBorderIndexByNameOrCreate  AddStringUnique  GetPlantIndexByName  UnScrambler    GetTextsData +    < ! i Z؅tvڃ<.. !  i n Z6QQ ! i Z̳ ̳ $ !̳ i Z$ ̳ ̳ ̳  !$ i Z̳ $ ̳ & & & & &   LoadIndexCfg  ProcessIndexSection  ProcessPlantSection  ProcessSizeSection  ProcessSingleSection  GetItemIndexByName  GetItemIndexByNameOrCreate  GetTypeIndexByName  GetTypeIndexByNameOrCreate  GetSizeIndexByName  GetSizeIndexByNameOrCreate  GetBorderIndexByName  CompareTexts) & ,                $  (  ,  0  4  8  <  @  D  H  L  P  T  X  \  `  d  h  l  p  t  x  |          GetApplicationElementData  SetApplicationElementData  ReadDataBlockString *O䰢 PM  WriteDataBlockString  GetElementInfo  GetTextByPosition ԸED/#O  FindAllTextsByPositions  ReplaceText  GetTextValue  GetCellByPosition  0;E< PM  GetCellValue  ReplaceCell #PJJ#aY ,{D\X L #LUV% `D2IK.hf ҋB `  edtScale 2ҋB `  cmbBorder  cmbPlantNo  edtDescription  edtLocation  cmbSize  edtIndex  cmbType  cmbTitle1 {lF WJO  btnProcess  cmbOfficeCode RҋB `  optRestricted  optEDNo  optKDRNo ?F `  Frame1  edtDrawingNo  edtSheetNo  edtRevisionNo  edtTitle2  edtJoEwo   optConfidential  optEDYes  optKDRYes  edtRevDate  edtRevDescription  edtDCCNumber  edtDAEng  edtDADate  edtDACertified  edtDACDate  edtRDAgency  edtDRDate  edtRDOperations  edtDROpDate  edtOBy  edtODate  cmbFormat  cmbOfficeCode1  edtDrawingNo1  edtSheetNo1  edtRevisionNo1  edtIndex1  cmbType1  cmbSize1  cmbTitle11  edtTitle21  edtJoEwo1  edtScale1  cmbPlantNo1  Label10  edtLocation1  edtPlantDescription1  optRestricted1  optConfidential1  optEDYes1  optEDNo1  optKDRYes1  optKDRNo1  edtRevDate1  edtRevDescription1  edtDCCNumber1  edtDAEng1  edtDADate1  edtDACertified1  edtDACDate1  edtRDAgency1  edtDRDate1  edtRDOperations1  edtDROpDate1  edtODate1  edtOBy1  cmbFormat1 &_V&kEV,i_D 9;      Label3  Label4  Label9  Label13  Label14  Label15  Frame2  Label16  Label17  Label20  Frame3  Frame4  Frame5  btnExit  Frame7  Label23  Label24  Label25  Label26  Label27  Label28  Label29  Label30  Label31  Label32  Label33  edtDescription1  Label34  Label35  Label36  Frame9  Frame10  Frame11  Label39  Label40  Label41  Label42  Label43  Label44  Frame13  Label48  Label49  Label52  Label53  Frame14  Label54  Label55  Label56  Label57  Frame15  Label58  Label60  Label61  Label62  Label63  Frame16  Label64  Label65  Label66  Label67  Frame17  Label68  Label69  Label70  Label71  Frame18  Label72  Label73  TextDC  Label74  Label75  Label76  Label77  Label78  TextData  ApplicationDara  Verify  btnExit_Click  btnProcess_Click  cmbPlantNo_Click  cmbType_Click  cmbSize_Click   cmbBorder_Click  edtIndex_Change  edtIndex_KeyPress p#  t  edtDrawingNo_KeyPress  edtSheetNo_KeyPress  edtRevisionNo_KeyPress  edtRevDate_KeyPress  edtRevDescription_KeyPress  edtTitle2_KeyPress  edtJoEwo_KeyPress  edtDCCNumber_KeyPress  edtScale_KeyPress  edtLocation_KeyPress  edtDescription_KeyPress  edtDAEng_KeyPress  edtDADate_KeyPress  edtDACertified_KeyPress  edtDACDate_KeyPress  edtRDAgency_KeyPress   edtDRDate_KeyPress  edtRDOperations_KeyPress  edtDROpDate_KeyPress  edtOBy_KeyPress  edtODate_KeyPress  cmbTitle1_KeyPress  ToUpperCase  InitializeControls  FillExtraControls  SelectComboValByName 3ҋB `  VerifyData  WriteAppElement  WriteTexts  AddLeadingZero  edtJoEwo_Exit q#  t  edtDCCNumber_Exit  fFindNthOccur $ T B _ V a l i d a t i o n . m v b a   A c t i v e V B P r o j e c t  1   4  8 ! i  Z   < ! i  Z @ ! i (Z   @ D i Z   ( ` i lZ    i `Z    Y& $ A% ( , ,   V b a l o a d  6 T i t l e B l o c k V e r i f i c a t i o n . m v b a  kX|B)/hQ Z? FDIU|  QN yN  Nx  L M i c r o s t a t i o n A r a m c o T o o l s \ B a t c h T B . m v b a  QN    R e f e r e n c e s    A d d F r o m F i l e   N a m e   T B _ V a l i d a t i o n   VBE6.DLL P     W S c r i p t . S h e l l  S Y S T E M   E n v i r o n m e n t   S A C S V 8 i _ D I R P    eM,\j0  !MKIGY $EUG9cHZ TٵAB'B 3Xp$K,{} "+VJDKi) 0 0    <   !  i  ,T  \ZW  J ((4 <  @  h  |     e      e     e         {  e   T  tatu n{   f      e   $ $  D0FAUh< 2Q^~O p p   8  D       `      |  |  0 0    <   !  i  (Z  \ZA% 0 0    <   !  i  dV  \ZS +    < ! i `Z 4  !4  i Z Dmini !n i Z *#lp $ !  i Zxtlp  !  i Z $  ( & & & & &  T NM  \KA1   4  8 ! i   tmi< ! i 4 Z++ XXmi@ !mi i(Z a o D i  Ȓ  )   c pD{ ` i TZ   o i Z  c X $ A% qX , ,  l I @ ̙  !FPPDIMs $FPp6IЋ$ )INITFCIBe?HH1B+9? ? SE$ S77 B6\  A4GRADEEqZAE$Oj6o_hLDIVIוYI I_Q ? 4 6BRK#5B cK2 5 a&EpfR f2? #MPIRCEZM`RQE?,5#5  TgkPY,MPTP Y_n_l PLCPCv! -Ƣ5BAKA5B@K0 1$e5f'5o_ #sCLOUqC@O UP5Fqofsop:+OsMETE$qMOEʗqfsob`}sENGLI#+qE|Qfsou " 1  PZ   ` , " 0m!0 (E+ R WCSTNImplG  W C S T N I m p l * R2R A &H/q 5SETSHOW E :S RO  ,2 ,IIIR IUPHHU P 2 Cd{C>CT`AGCUTDT A GU oG CjQ O#m͍ Q# AVESSHATC#AjS@H%T%$ L2 O&$I Q&!cadUtilsG A a d U t i@s2MO ـ0FQ TBACfgG" =T BCC f gG2NOdw=e Q‡BAHelper C!H ep |r +C/%r^%a+SACSMenu/"SS M n u/e/mo)/ (k /Mo dule1G ) o@?ue 1 2)Err@orCode$/ET r o` CBe_&/'#/1_!Kfrm@ONfm !; 'N //="@* ,A*GEa.G c. o暠m.Xc@ME1LgAS@1 L'#/1raױA1!` LxINE҃ AN?דo Y3qaic8dLineGbic8"d i n@9 Ojko-9| NclsOpenClos_c9s O Inpl2s qSKbop5e `H=$ | P3!1EpCLC_fo řvFPPDIMyFpP D},MwcyiP8FRQYvdionG[uZvPdin` ?[2_ [_ $=!_ L4xtNxP~NxtN_9_ +_ X 0  % z    L  3  ʺ+        x  ME  (  SP  S  S  S   0 { 2 1 1 5 4 am        * \ G { 0 0 0 2 0 4 E F - 0 0 0 0 - 0 0 0 0 - C 0 0 0 - 0 0 0 0 0 0 0 0 0 0 4 6 } # 4 . 0 # 9 # C : \ P R O G R A ~ 2 \ C O M M O N ~ 1 \ M I C R O S ~ 1 \ V B A \ V B A 6 \ V B E 6 . D L L # V i s u a l B a s i c F o r A p p l i c a t i o n s j* \ G { C F 9 F 9 7 B F - 3 9 F 2 - 4 B 8 E - 8 3 5 C - 8 B E 9 E 9 9 D A F 5 B } # 8 . 0 # 0 # D : \ P r o g r a m F i l e s ( x 8 6 ) \ B e n t l e y \ M i c r o S t a t i o n V 8 i ( S E L E C T s e r i e s ) \ M i c r o S t a t i o n \ \ u s t a t i o n . e x e # B e n t l e y M i c r o S t a t i o n D G N 8 . 9 O b j e c t L i b r a r y * \ G { 0 0 0 2 0 4 3 0 - 0 0 0 0 - 0 0 0 0 - C 0 0 0 - 0 0 0 0 0 0 0 0 0 0 4 6 } # 2 . 0 # 0 # C : \ W i n d o w s \ S y s W O W 6 4 \ s t d o l e 2 . t l b # O L E A u t o m a t i o n * \ G { 0 D 4 5 2 E E 1 - E 0 8 F - 1 0 1 A - 8 5 2 E - 0 2 6 0 8 C 4 D 0 B B 4 } # 2 . 0 # 0 # C : \ W i n d o w s \ S y s W O W 6 4 \ F M 2 0 . D L L # M i c r o s o f t F o r m s 2 . 0 O b j e c t L i b r a r y  * \ G { 9 1 4 C 7 3 0 A - A 3 9 7 - 4 E 2 6 - A C A F - 8 2 F 2 8 0 1 4 F B C 8 } # 2 . 0 # 0 # D : \ U s e r s \ a j m i h k 0 c \ A p p D a t a \ L o c a l \ T e m p \ V B E \ M S F o r m s . e x d # M i c r o s o f t F o r m s 2 . 0 O b j e c t L i b r a r y  .E .`M N * \ C D : \ S a u d i A r a m c o V 8 i \ T B _ V a l i d a t i o n . m v b a * * \ C T B _ V a l i d a t i o n . m v b a 4)Q ,           B A R A M C O S A C S f o r M i c r o S t a t i o n V 8 . 1 %Q   $ " * % '   + )   ( &  ! #       ,  S A C S  2 M 5 1 e 1 2 5 0 c  S A C S     x ` 0  7  C o m m o n  1 b 5 1 e 1 2 5 0 c ^ C o m m o n  C)  A T T B O R I m p l  1 c 5 1 e 1 2 5 0 c b A T T B O R I m p l ; 0   B O X G R I D I m p l  1 d 5 1 e 1 2 5 0 c f B O X G R I D I m p l 9T H   B U B L D R V R I m p l  1 e 5 1 e 1 2 5 0 c t B U B L D R V R I m p l ` (  C S L T C I m p l  1 f 5 1 e 1 2 5 0 c x C S L T C I m p l  x   D E T A I L I m p l  1 g 5 1 e 1 2 5 0 c | D E T A I L I m p l <  '  E 1 L P C I m p l  1 h 5 1 e 1 2 5 0 c  E 1 L P C I m p l H  "  E X I S T I N G I m p l  1 i 5 1 e 1 2 5 0 c  E X I S T I N G I m p l s   E X T L I N E S I m p l  1 j 5 1 e 1 2 5 0 c  E X T L I N E S I m p l ̙  @  F P P D I M I m p l  1 k 5 1 e 1 2 5 0 c  F P P D I M I m p l )    F P P I N I T I m p l  1 l 5 1 e 1 2 5 0 c  F P P I N I T I m p l  +9  F P P S E T I m p l  1 m 5 1 e 1 2 5 0 c  F P P S E T I m p l \    G R A D E I m p l  1 n 5 1 e 1 2 5 0 c \ G R A D E I m p l h 8   L D I V I D E I m p l  1 o 5 1 e 1 2 5 0 c F L D I V I D E I m p l P   L I N E B R K I m p l  1 p 5 1 e 1 2 5 0 c @ L I N E B R K I m p l h 2  M I R C E L I m p l  1 q 5 1 e 1 2 5 0 c L M I R C E L I m p l T   M L T C P Y I m p l  1 r 5 1 e 1 2 5 0 c  M L T C P Y I m p l     P L C C E L I m p l  1 s 5 1 e 1 2 5 0 c X P L C C E L I m p l Ƣ    B A K A L I m p l  1 t 5 1 e 1 2 5 0 c  B A K A L I m p l #   C L O U D I m p l  1 u 5 1 e 1 2 5 0 c  C L O U D I m p l O    M E T E R I m p l  1 v 5 1 e 1 2 5 0 c  M E T E R I m p l   b  E N G L I I m p l  1 w 5 1 e 1 2 5 0 c  E N G L I I m p l m  Z  R W C S T N I m p l  1 x 5 1 e 1 2 5 0 c  R W C S T N I m p l q ( /  S E T S H O W I m p l  1 y 5 1 e 1 2 5 0 c  S E T S H O W I m p l @   S E T U P I m p l  1 z 5 1 e 1 2 5 0 c  S E T U P I m p l > X {  T A G C U T I m p l  2 0 5 1 e 1 2 5 0 c  T A G C U T I m p l p H  V E S S H A T C I m p l  2 1 5 1 e 1 2 5 0 c  V E S S H A T C I m p l  $   c a d U t i l s  2 2 5 1 e 1 2 5 0 c " c a d U t i l s   T B A C f g  2 S 5 1 e 1 2 5 0 c  T B A C f g e  w   T B A H e l p e r s  2 T 5 1 e 1 2 5 0 c  T B A H e l p e r s ^    %   S A C S M e n u  2 9 5 1 e 1 2 5 0 c  S A C S M e n u (   M o d u l e 1  2 : 5 1 e 1 2 5 0 c  M o d u l e 1    E r r o r C o d e s  2 ; 5 1 e 1 2 5 0 c  E r r o r C o d e s  $  f r m T B A  2 R 5 1 e 1 2 5 0 c ; f r m T B A    0 /   G E N I m p l  2 < 5 1 e 1 2 5 0 c  G E N I m p l X H    A C S E 1 L I m p l  2 Q 5 1 e 1 2 5 0 c 7 A C S E 1 L I m p l A ` a/   A C S L I N E I m p l  2 P 5 1 e 1 2 5 0 c 3 A C S L I N E I m p l x   c M e n d L i n e  2 A 5 1 e 1 2 5 0 c + c M e n d L i n e |  -9   c l s O p e n C l o s e  2 N 5 1 e 1 2 5 0 c + c l s O p e n C l o s e |     f r m A C S E 1 L  2 D 5 1 e 1 2 5 0 c ]  f r m A C S E 1 L ř    f r m F P P D I M  2 E 5 1 e 1 2 5 0 c k f r m F P P D I M F     f r m S A C S v e r s i o n  2 O 5 1 e 1 2 5 0 c / f r m S A C S v e r s i o n =!   f r m T x t  2 H 5 1 e 1 2 5 0 c g f r m T x t +  9  (   X    `   H  ( 0  8   `  P         x x  @     [HJ966L, w6Ή%BܛN  cOOx@  rJUBgP$_ =`J}Iu@ ^[ M"k =(a\CU^ҥ A;k ܏ j?Gy L+ IT6 ~c~AvŎ50 'n8HD1FF ەdCB t  _7@GDjZ }ˋSON? e)ŽI oZ cJyD #LzCGRi gRR%E~i=q R/Mr-6  p|sYOGP  SfKN& z :n`MB0S =cIHFFǃa CM~EDdj QET$}) X B6G* strRefFileCommandLine param (! RWCSTNParams dDefaultScale4 ShowCommand7 SendCommandc SendResetB r0^  rqtGetScale| ( fnRWCSTN/   rtCompletedSuccefully xaxsclQ  SetCExpressionValueU SendDataPoint8  Point3dFromXYZ#2  StartDefaultCommand  MessagesEnabled ErrorCodes (! Logd (! ReportToMsgBoxCurrent bGoOn bExit1 bExit2¤ nRowso nColsV ptLowLeftj} ptUpRight, dLeftl` dRight dtOp dBottomo dBoxWidthU dBoxHeight dWidth dHeight dX] dY\ bPoint mLine# LineElementD  SetDefaultCursor  CreateLineElement2 AddElement}  Redraw  msdDrawingModeNormalD ( sText  g_HeightFactorsf g_WidthFactorsN nDefLenFirstField nDefLenSecondField! dActivAngle  ActiveSettings  AngleA PlaceBubl GetStringValuewe fTextO  frmTxtM%  vbModalt  Asc!u GetStringWithMaxLenY nMaxLen nDefLenL\ strText  Space  PlaceTextField]] ptLeftTop ptRightBottoms lGGroup* nLength&  IIfz idxScaleFactorω TextStyle(  Height| ptCenter elElement# TextElement1 reg  DataEntryRegion+ md  CreateTextElement17 GraphicGroupS Justificatione2 % msdDataEntryRegionJustificationCenter  LengthY StartPosition+  AddDataEntryRegionm ptOriginPoint CellElementw  CreateCellElement34  UpdateGraphicGroupNumber RWCSTNImpl yaxscl/? zaxscl  ScaleAlloN  ResetDisplaySetV dCenterX~ dCenterY~ dHeightCellQuaterM  Range   Lows  Highz iField) objDesEl objFenceŸ  FenceL eFenceContents  ElementEnumeratorz< pntElement bReset. catchError  ActiveDesignFileM IsDefined}T GetContentsO0  MoveNextL! ChangeLevelAndSymbology  Currente  LastViewK objElement9T IsGraphical  Level LineWeightG  Color2F  Rewrite'I bBreak4 objActiveTextStyleT objActiveLevel ptSection ptLineStart ptLineEnd dLineLengthc strDGNFileName] strDetailNo1 strRFlogicalNameS dScalei objTextElementog objLineElementj dTempَ  FullNameО vbKeyEscape=Y  Point3dInterpolateC  Matrix3dIdentity- objBusO! objCell, pntToPlace pntStartToDel pntFinishToDel@l pntToFreeCellB bReStart bPlaceFreeCell\ nOrientation. dBefore dAfter(  msdElementTypeLineJ AsLineElementh  OriginF  EndPointy ShowError LineStylew  RedrawAllViews fnc% ptPoint` ptPrevPoint= elPrevElement  SetLocateCursor ptDistanceG ptPrevTouch| dDistancebX elLineS elPrevLine1 ( GetDistanceValue IsLineElement pt^ bIsVerticalj ptMonument ptStart strDirection rwcstnResult` ( RWCSTNResultType. dOffSet; nActAngb  msdElementTypeLineStringD  Beep   rqtGetMonumentXY i0] i1] GlobalOriginw frmFPPDIMO dblDimension IsVertical   rtMonumentNotInits   rtTextNodeNotFound>   rtScaleNotInitn3 bReInit dPrevScaleXV dPrevScaleYS ptPoint2p ptActiveScalem  vbNo%  vbYesNo  vbDefaultButton2   rtAbnormalExit   rqtIncludeCSTNo  rqtSetScalet i2]   rqtSetMonumentXY Point3dZero8I eEnumerator2 objSC%   ElementScanCriteria  ExcludeNonGraphical  ScanD  IsLockedٌ rotatione txt lvll  Levels ptBeginPoint ptEndPoint+H bExitSub dMinAllowedDistance dDistanceBetweenSets dDistanceOfLine, dDistanceX dDistanceY dSqrX  dSqrY  nNumOfSectionsD dAngl#  CosO  Sin  Sqr( PlaceSinglCell: strShowString nSegments1 ptBeginޡ ptEnde ptFromn ptTo1 ptTo2 dCoordinateY dLenghtSegment  EnableAccuSnapI elCell strKeyInCommandx` IsCellElement AsCellElement؛ bDoCopy bBreakFence6\ nCopies ptSrcF ptDstEa ptOffseth ptUpLeft ptLowRight  Undefine"- ShowStatus  Point3dSubtracti Point3dAddc  TextLine eSubElementsH objSubElw< bToSetq objLevel0O objLineStyleF lLineWeight lColor* objTextStyle bIsBold] bIsItalic bIsUnderlined% dTextNodeLSo strCommand strStatus0 strFontx IsTextElement\ AsTextElementU  IsTextNodeElementD  AsTextNodeElement y  GetSubElements LineSpacing  IsBoldl`  IsItalic IsUnderlined fontU  ID] strProduct  ptMenuOrigin ptMenuUpLeft lngResultQ CommandResult  msdCommandResultSuccess  # msdCommandResultCellLibraryNotFound'  msdCommandResultNoCellLibrary, g_TextFields` MAX_LEND TextSizeWrkUnits IsFixedSizev bFree PlaceFixedCell' PlaceFreeCellr objMsg[ bResume| ChangeSymbology@ ptCellOrigin3 objTextj region mtrxz MaxLend DEFAULT_LENGTH* MIN_DISTANCE_BETWEEN_POINTS[ DISTANCE_ALONG_X_Y_AXIS_POINTS dMinXY dStep  ptFirstW< ptSecond nSlashesC bGroundLineOnTop  cadUtilsz ( ReportErrorToPromptd  vbCrLf  Right   Trim@ ( IsSupportedMode" ( IsDGNMode-  msdDesignFileFormatV88 ( CheckDGNMode (! ReportToMsgBox  (! errNotDGNFormat ( GetDefaultLevelName Error_Handler4 FindByNumbero (! ReRaise strNumber— strDescriptiond strLocation strReserved1G strReserved4 G strReserved3G strKey strBorder arrDescriptionV  (! SIZEINFO_BORD strNameZ arrBordersn (! TYPEINFO] arrSizes  arrTypes (! ELEMINFO dSizeu lLevel} lWeight  lJustify dRotationf bTextFoundU AX CZ D[ E\ szInfoL arrIndexesW arrPlantsN  strPathl StrLine hFile# arrStrings7* ( UnScramblerz  EOF ProcessIndexSectionG ProcessPlantSectionM ProcessSizeSection nIndex' nType՗ nBorder GetItemIndexByNameOrCreate GetTypeIndexByNameOrCreate/t GetSizeIndexByNameOrCreate GetBorderIndexByNameOrCreate< AddStringUnique8 ProcessSingleSection (! errTBAInvalidIndexCfg arrXD  Val ( GetItemIndexByName- arrItemsX} nNewIndexI ( GetTypeIndexByNamew ( GetSizeIndexByName ( GetBorderIndexByName ( GetPlantIndexByNameM) ByteArr~ Index ( PRECISION APP_ELEMENT_ID# strSignatureQ strReview strEmergencyw strClassifiedG strTypeAh strPlantNo; strIndexA strCode% strSizec strDrwNo strSheetNom strRevision: strHowMuch strTitleLine1fV strTitleLine2gV strPlantDesc' strReserved0G strReserved2G strJoz` strDAEnggd strDAEngDate>V strDACertڧ strDACertDate strRDConst; strRDDate,< strDROp strRDOpDate6 strOtherBy strOtherDate strDrawingFormat= strDateD strRevisionDescq strDCCNumber1 strRevision1G strRevision2H ( GetApplicationElementDataM ee] ae\  ApplicationElement+> db\ DataBlock arr u  ControlElementCachex  msdElementTypeMicroStation  Subtype^` # msdElementSubtypeApplicationElementX ApplicationID  GetApplicationData: offset ( ReadDataBlockString ( SetApplicationElementData ( WriteDataBlockString  Size  CreateApplicationElementk  SetApplicationData bt\ bContinueAdding5  CopyByte nLene, ( GetElementInfo4 ( GetTextByPosition ptElement2 dOldScaleh elText޺ elInfoi  GraphicalElementCache  msdElementTypeTextnd ( FindAllTextsByPositions: ( ReplaceText!/ RemoveElementG  FontsG  Rotate ( GetTextValue\ ( GetCellByPosition  msdElementTypeCellHeaderz ( GetCellValue ( ReplaceCell  eraseOnlyr ( GetTextsDatah bPreload) ( dateFromStr21 hErrf DateSerialU ( ReplaceBorderFilen strNewBorderRp strAttachmentNamet objAttachment| Attachment^6 pt3D ( VerifyBorder  Attachments_  Count0v AsAttachment" AttachName  Removeϱ  Addr ScaleFactor?Q (! errReplacingBorderG strErrord\ ( FindBorderName:  SACSMenu< ( AutoSacsVersion ( OpenTBHelp  Module1b ( PRODUCT_SELECT_ID ( SACS_VERSION_LONG ( SACS_VERSIONTAG_SHORT bEnableLogging sLogFileName sVersiono sProjectNameR ErrorBaseV vbObjectError  (! errNoError (! errNoActiveModelRef (! errRegistryKeyNotFound (! errNodeNotFound (! errCfgNotLoaded& (! errXMLParseError (! errDuplicateLevelInCfg (! errRegisteringCtls SYSTEMTIME1 wYear1 wMonthp! wDayOfWeekc wDay~. wHour wMinute_ wSecondq_ wMilliseconds GetCurrentProcessId GetLocalTime} lpSystemTime where֍ Description  SourceG logLine GetLogLine Skip_Logވ fnA]  HelpFile HelpContext/O (! FormatErrorMessageForDisplay vbCritical+} Code Message (! ReportToPromptCurrent  vbTabc9 ctime%  Version OfficeCodesh mCaptiona mIndexes mPlantsR mBorders!  mSizes\ mScale6 madData[ madAppData`+ mbVerify6% bVerifyX; btnExit_Clicko btnProcess_Click ErrorHandlerO  SetShowMessage8o VerifyData9 edtScale WriteAppElement( WriteTexts  cmbBorder N cmbPlantNo_Clickt cmbPlantNop  List* ListIndexQ edtDescription5 edtLocation cmbType_Click'L bClear$ cmbSize   Clear edtIndexK cmbTypeb  AddItem  cmbTitle10 cmbSize_Click btnProcessj  Enabled۪ cmbBorder_Clickq edtIndex_ChangeF SelectComboValByName ListCount6 edtIndex_KeyPresscf KeyAscii# ReturnInteger ToUpperCase edtDrawingNo_KeyPress edtSheetNo_KeyPress edtRevisionNo_KeyPress edtRevDate_KeyPresse edtRevDescription_KeyPress edtTitle2_KeyPressx edtJoEwo_KeyPress edtDCCNumber_KeyPresse edtScale_KeyPress edtLocation_KeyPressڔ edtDescription_KeyPressg edtDAEng_KeyPress^ edtDADate_KeyPresss edtDACertified_KeyPressu= edtDACDate_KeyPress edtRDAgency_KeyPress edtDRDate_KeyPress  edtRDOperations_KeyPress edtDROpDate_KeyPressV edtOBy_KeyPressH edtODate_KeyPress cmbTitle1_KeyPressW UserForm_ActivateZs  Captionx cmbOfficeCodeP optRestricted !  ValueK optEDNoB optKDRNo# InitializeControlsz{ Frame1 FillExtraControlsX edtDrawingNo edtSheetNo edtRevisionNo edtTitle2K edtJoEwo optConfidentialT_ optEDYesf optKDRYes[ edtRevDate edtRevDescription  edtDCCNumberF edtDAEng edtDADate edtDACertified edtDACDate edtRDAgencyb  edtDRDate ~ edtRDOperationss edtDROpDate  edtOBy] edtODate - cmbFormats cmbOfficeCode1% edtDrawingNo1L8 edtSheetNo1 edtRevisionNo1 edtIndex1[ cmbType1  cmbSize17 cmbTitle11^ edtTitle21Ks edtJoEwo1v edtScale1 cmbPlantNo1 edtLocation1 edtPlantDescription1+ optRestricted1* optConfidential1IP optEDYes1^ optEDNo1G optKDRYes1h optKDRNo1< edtRevDate1 edtRevDescription1o] edtDCCNumber1  edtDAEng1 edtDADate1 edtDACertified1 edtDACDate1 edtRDAgency1@ edtDRDate1> edtRDOperations1 edtDROpDate1f edtOBy1r edtODate1 cmbFormat1Z  cmb~  ComboBox\ lInstrPos dtDAQ dtDAC dtDRb dtDROp bVal$ ReturnBooleane  VerifyDrawingNoA  SetFocus VerifySheetNo VerifyDigits]& AddLeadingZero vbQuestion  VerifyRevisionNo VerifyIndex) VerifyEwo} edtJoEwo_ExitH  VerifyDateFormat  VerifyInitials VerifyDCCeu edtDCCNumber_Exit! strCellPath  AttachCellLibraryF Cancel InstrCount| fFindNthOccurn lSegment vbTextCompare Q pStr~ pFindث pNth strHoldq strFindiX intHold!1 intSayހ intKeepK ne ptTempB  IPrimitiveCommandEvents2W StatesB) stateWaitingN stateDrawingd` State mActiveBusf mCommandG mEleTemplatek InitializeTables frmACSE1LKp mActiveBusLine[ ApplyConfigurationQ sLevelw objStylep aEleTemplatebc  ElementTemplatePathg Class_Initializen IPrimitiveCommandEvents_Start_ !IPrimitiveCommandEvents_DataPointĮ StartDynamicsG ModifyVertexTO IPrimitiveCommandEvents_Dynamics DrawMode2  MsdDrawingMode3 IPrimitiveCommandEvents_KeyinT IPrimitiveCommandEvents_Resets IPrimitiveCommandEvents_Cleanup  ErrorHander _ mdlModelRef_getActiveDM bCont' mTextEl mPatternG mActiveLineIDl mStartPoint mPatternCell0 mSavedAxisLock mSavedAxisAngle8 mLineIDk mOrient; mType mText mdlPattern_linear] patternEdPP edPg filePos- cell cellScaleL patternTypeŧ mdlElmdscr_display elemDescr modelRef;@ mdlElmdscr_addo  KeyinArguments1 asArguments nID5 AxisAngle  AngleLockEnabledt7 CreateNewSegment}  CurrentGraphicGroupP Class  msdElementClassLinearPatterned DrawLinevN  Vertex ConfigurePatternv PlaceTextLA  AxisLockEnabledFa  PatternCellName msdTextJustificationCenterCenter>  Findn  msdFontTypeMicroStation  Point1 point2 textPos textRotation Matrix3dFromAxisAndRotationAngle@   NodeLineSpacing?  Move>y msElementDescrP dblScale PatternScale  MdlElementDescrP}  MdlLib  mdlElmdscr_freeAll mdlVec_distance point1PKr point2Ppr mdlMinDist_betweenElmsI distance' edP1  edP2  closestPoint: inputTolerance mdlElement_rewrite4 newElem] oldElem` mdlLine_create pElementOutZ pElementIn  points #mdlIntersect_allBetweenExtendedElms isPnt1+ isPnt2+ isPntSize  rotMatrixz tolerance{y idPnt1P idPnt2Pǿ mdlIntersect_allBetweenElms, mdlVec_computeNormal unitVectorPM targetP baseP mdlVec_angleXYd. pVector? FirstEle SecondEle~/ nPoints} RestartCommand= ele  IsLinear3 line1 line2 minPnt1l minPnt2l minCloseS minDist  retVal; HasSameAngle` IsParallel1 ConnectLines^ extLine1 extLine2 idPnt1 idPnt2 PtsIA PtsIB cnt+ lineA lineB oPH1  PropertyHandlerK oPH2  CreatePropertyHandler AngleStrAR AngleStrBS SegmentA. SegmentB. VerticesCount`  CacheE  ModelReferenceEi  Is3Dr GetAngleR oPH accessString HandleError;  SelectByAccessStringo?  GetDisplayString0 IdPt18I IdPt29I PTsI Diffc StartPoint oE1  oEl hooks./ hooks_OnDesignFileClosed hooks_OnDesignFileOpened! OK_ClickR  Voltage  Hide9z ModalResult btnCancel_Clicke  vbCancel' btnOK_Click"  opPlacementVerH lblDimension  opPlacementHor lbl_VersionE txtStringM btnReset_Click  InitializeN   OnDesignFileClosedC   OnDesignFileOpenedE UserFormN Label1, Label2,   Activate|   Start  DataPointg   Dynamics  Reset>   Cleanup Label3, Label4, Label9, Label10@ Label11A Label12B Label13C Label14D Label15E Frame2 Label16F Label17G Label20e Frame3 Frame4 Frame5 btnExitv Frame7 Label23h Label24i Label25j Label26k Label27l Label28m Label29n Label30 Label31 Label32 Label33 edtDescription1k Label34 Label35 Label36 Frame9 Frame10 Frame11 Label39 Label40 Label41 Label42 Label43 Label44 Frame13 Label48 Label49 Label52 Label53 Frame14 Label54 Label55 Label56 Label57 Frame15 Label58 Label60 Label61 Label62 Label63 Frame16 Label64 Label65 Label66 Label67  Frame17 Label68 Label69 Label70 Label71 Frame18 Label72  Label73! TextDCu Label74" Label75# Label76$ Label77% Label78&   Click   Change   KeyPressq _B_var_UCasea TB_ValidationՄ X Y _ ] ] c a +&  g Y #  u ` y  }        !  ] ( .  _     *  ,    0    6  : # A    ;  < g+ B  C  D  F +' H /* M 3% O 7$ Q ;" S A U   l  G X  ^ k) M ^  \     [ d   UaD@V$XF            @                $@ @@        @   ( $  @         @BD               3 0 5 - C 0 C 3 - 4 6 C B - A F 8 0 - 2 D 2 9 2 5 7 5 E 3 7 9 } { D 2 5 0 E C A 5 - 7 3 9 A - 4 1 6 7 - 9 0 E 5 - 7 4 E 0 6 9 D 5 3 C 2 A }    @          %    % @     @  %Q    "        ( "  0  8  H   X h  ! d' P A@r o P @  Reset ' P A@r o  B Attribut e VB_Nam e = "frm@Txt" Bast0{211 54305-C0 C3-46CB- AF80-2D2 92575E37 9}{D250E CA5-739A -4167-90E 4E069D@53C2A} G lobalSpacoFalse CreatablPredec$la Id Tru BExpose0TemplateDeriv CustomiziD P  " Sub btnO K_Click( ) sText NtxtS1 ng. Un@load M ZEnd) 'Reset()" 3 &rU   L  $   `   n  rU           R   S y   4 A 9  i  0 `     8 ) Y  Q      < ) Y        @ ) Y       `   0     4 X            N     =!   H $EUG9cHZx8E6hD.T+LRV TٵAB'B     x TٵAB'B$EUG9cHZ ME   P  SP  S  S  S 6" < < <   0 { 8 3 B D B 6 7 8 - D 9 C F - 4 5 3 8 - A 7 3 6 - F 4 8 8 6 8 4 4 E A 2 E } { E 9 2 B 5 4 A 6 - 9 1 0 6 - 4 C 1 C - A E 9 2 - 5 2 5 6 1 2 0 8 F 5 D F }   v `      p  h @  %  p  %    % .    %    @ p L    %Q $ * \ R f f f f * 2 O 5 1 e 1 2 5 0 c  4  8  <  @   "  4    @ P  , Saudi Aramco Auto-SACS Version V6.0 SACS 6.0'  o 8 0 G Attribut e VB_Nam e = "frm SACSvers@ion" Bas0{83B DB678-D9 CF-4538- A736-F48 86844EA2 E}{E92B5 4A6-9106-4C1C-A & -5256120@8F5DF} dG lobalSpacoFalse CreatablPredec$la Id Tru BExpose0TemplateDeriv CustomiziD P ! % Sub User Form_Activ () lbl_V Saudi Ar amco Auto- V6.0   End.:   L    F        x  ME  (  SP  S  S  S   0 { 1 7 0 5 4 1 9 8 - 1 9 6 C - 4 F C F - B 1 8 6 - 2 2 7 0 5 5 F 2 F D 7 3 } { 7 3 2 C 1 0 A 3 - 1 0 E B - 4 9 3 C - B 4 E B - A 0 1 F A 9 3 8 C 4 9 B }  (  jl  hl        8  0   % ` 8  % j   jn h H       H h  8  %Q  "         "     0   @ "  H  P  `  h  p  x     "            ] h ]  ]  H ( B@ o 8  ! ~ ' n d  ' n k  ( l , B@ 3 o X  lX ( x n  ( ~  d  ( ~ h k 0k  o  Attribut e VB_Nam e = "frm FPPDIM" " Bas0{ 17054198 -196C-4F CF-B186-22 05F2FD 73}{732C 10A3-10E B-493C-B4 A01FA938C49B} d@GlobalSpacoFalse CreatablPredeHcla Id Tru BExpose0Templ ateDerivCustomizD Pub lic Moda lResult As Integer IsVerticalBoolean dblDimensionDo * f1P N R Su b btnCan cel_C9k() Me.a ?= vbHidEndPOKKIf op,Pl g@%t..V alue The@- 5= _ErA a#If0OK/\AD Initiali zeControlsElT.CaptV= CStr([P@ Fd  @    L    ř        x  ME  (  SP  S  S  S   0 { E F 3 C 1 4 A 6 - 9 6 9 4 - 4 2 5 9 - 9 1 1 0 - F C A 3 8 F C F 6 7 F 9 } { 3 1 9 B C F 7 C - 8 B 5 2 - 4 9 7 A - 9 A 7 0 - 7 A 3 A C E 8 6 0 D D 4 }  ( X   X   v       %    % j^       X  %Q    $      "      0   8  @ "  `   h  x           8  P  h     ,         x ]   !   ' ^ ------A@ o @  Form initialization X ! @   380K B 0  ure s  230K B 0   '  115K B 0  tants  69K B 0   '  34.5K B 0  ne d  13.8K B 0   4.16K B 0  F -  2.4K B 0  ------  480 B 0  ------  200 B 0  --@  120 B 0  F -  CIRCUIT B 0  --k `   ^  ^  G  ' ^ j ^  (  find o   . Attribut e VB_Nam e = "frm ACSE1L" " Bas0{ EF3C14A6 -9694-42 59-9110- FCA38FCF 67F9}{31 9BCF7C-8 B52-497A -9A70-7A 3ACE860DD4} dGlobalSpaco False Cr@eatablPredecla DId Tru BE`xpose0T emplateDerivCus tomizD  Option A 4licit Pub mAct +BusLine As Inte8ger8< Sub OK_C k()  =                                                                                                                              Voltag e.ListIndex + 1HidyEnd$,' Form initialZO PUsezr _(@!If Count@W0 ThenA)Call Add Item("380K"1W 23a H11569 34.13.8`4.16 2.4)!80 L0 12 CIRCUITE!GIfG5@?O@< 1 OrmY> 12A _BVDT X=- -[Yomatically gerU   H  $   ` $ (    `     ( 9   ` !    n  sion tag ]$  08.11 0 . rU   @      R  R  @  4 i        < I   q    `  `  A      O      E  y  0 0  ( 0 p   0    8    4   <   < 1      | 8      |   D eM,\j0 *=h8 +3q  !MKIGY     x !MKIGYeM,\j0 ME   P  S  S  S  hD 6" < < <   N 0 { F C F B 3 D 2 A - A 0 F A - 1 0 6 8 - A 7 3 8 - 0 8 0 0 2 B 3 3 7 1 B 5 }    % " 8 (  @ j p ` xJ $      `       i ----   `       i  X 0  % 0 p      % H     0 0  0   H  4    ` %Q  * \ R 1 * # b 4 $ * \ R f f f f * 2 N 5 1 e 1 2 5 0 c  4   <       L  < X  L "         L  "  h    p L x "   @  @    P L X  x F ---------------------------------------------------------------------d 5 Setup this class as a DGN open/close event handler e ne]@ ngx F ---------------------------------------------------------------------% 0 D. X o F ---------------------------------------------------------------------@ p o F ---------------------------------------------------------------------bort  : CadInputQueue.SendKeyin "attach colortable " InstallDir &  attach colortable 4  stds\dta\sacolor.tbl <B@> o  F ---------------------------------------------------------------------X P  Attribut e VB_Nam e = "cls OpenClose" Bas0{FCFB3 D2A-A0FA -1068-A7 38-08002 B3371B5} |GlobalSpacFalse dCreatablPredecla Id 1CExp Te mplateDeriveCus tomiz EOp tion 0li cit ' -A $ Setup this pss a  DGHN o/c event ha ndler P b f WithE s hooks A pp SaY . VarH elpIDQ-1?3DB%Sub C lass_Ini tialize(p) ;D*= A *End s##ubAC_ OnDesignFiled(ByVal f %@OSngD+ /%#%Ae%' CadInput Queue.Se ndKeyin "attach color" InstallDpir &a&  "stds\@dta\sa .xtbl~% ! Pub {@ Sub AK()-@'Chec k if for m is alrrU   4  ( Y p   $ A H p D  t p       1    I  i  ( 0  p  D  (   '9  |  T X mdlVec_distance X8  mdlMinDist_betweenElms Xd $ mdlElement_rewrite X P mdlLine_create X x mdlIntersect_allBetweenExtendedElms X mdlIntersect_allBetweenElms X mdlVec_computeNormal  XD  mdlVec_angleXY       x  ME 0  , $  (     S  S  S  <  <  ( \ % @ H  % B h z  % `D  \`F  z J     )N  $\  % )P ( 0 {   % )P X z   % )R x  z  % )T  z  % i  z V     % X 8     % `Z  \ x z   % ,H  - -   )\  $ % )^    $ % i   ` H \ ( % d h   ( % @h z `j  . @l `n  ,x       )z 0 8  ( % i|  X  i . `T z ,L      )\     % )^    F   % ) @ H    % ) h p   F  % i         %  `  12  .   %  0   % B. ` "0  P ` h  X 8      p 8  `           8       %  %Q    H  H   H  H  0 H$  @ H$  X  H  p H  x        ( &      "  0  8  @   P "  X  `   h   x       J        (   8   @  H  4 X             $           (   8  @  4 P                      "      "   4    8 "  @   H "  P   X  `  h "  x     "     :  0   H  P : h :  ,       @  H > h B             4        (  0  8  H   h                   :  N   P  X 2 p 4  ,  6  6 H     > B      (  8  @ X H (  p       : P  8  @ 2 X 4     >  B  X  `  h  p      @ @   0  & H  & p    "   "                (  8  @  H  P   X : ` B      0  < 8  x       >  B         0  8  @  X  h   p   x      :  4      2 ( 4 ` 6  6       0  8 > X B                       (  H  X  p  x      $                            h     %       %       Private newID As DLongx ]@8 ` er " Private aPoints(0 To 2) As Point3d  Private aEle(0 To 2) As Element ]@   Private oldID As DLong] p ' 2 &B@( Co  ] @ 2   . 0 A@$  AA@4 | ` k X  D Find the element. Abort if LocateElement does not find an element  ' 2     &%  . .  ' .   A@4 |  . ! 8  e  ) The point did not select an line element. A@v A@4 | ` k X  ' 2 .  B@  Select the second element A@v s - |  k  2    '   &%  . 0 0  | 0 ! 8  e ) The point did not select an line element. A@v  A@4 | h k ` 0  B@ Accept\Reject A@v  ' 2 | ( k o  ` o   A@4  ' Keep it simple. Back out all the way.  o  X o   o   End Sub  &B@< Mend Line A@  Select the first elementA@v  o ( 4 ---------------------------------------------------- ( * Description : This function mend two lines Parameters: 3 line1[in] = first line element to mend 4 line [in] = second line element to mend % View [in] = Current view  Return value: true/false  Misc: It uses mdl api 8 -------------------------------------------------------- 8 ]  ] 0 ] P ] p ]  > @ D : ! < ! B h㈵>$  ' F F  ' $ z k : < $ H  : <  > @ $ J   : < > @ $ L  ' $d p ' $ k ` d X ' $ k H i @ 4 ---------------------------------------------------- H Description : This function check whether two lines are parallel are not Parameters: z + line1[in] = first line element z - line2 [in] = second line element \ % View [in] = Current view L.  0 idPnt1 [out]= line1 point to extend  0 idPnt2 [out]= line2 point to extendz  Return value: true/falsez  Misc: It uses mdl api z 8 --------------------------------------------------------  ]   ]   z ] H ] ` F ! '   cnt = mdlIntersect_allBetweenExtendedElms(PtsIA(0), PtsIB(0), 1, extLine1.MdlElementDescrP, extLine2.MdlElementDescrP, rotation, 0.0001, extLine1.AsLineElement.EndPoint, extLine2.AsLineElement.EndPoint) $ V  $ X   N ! P !  -C6? R T $  ' Z Z  Z. ' J d p ' J k ` i X 4 ----------------------------------------------------z I Description : This function check whether two lines has same angle or not Parameters: \c.  , line1 [in] = first line element z - line2 [in] = second line element z  Return value: true/falsez  Misc: It uses mdl api z 8 --------------------------------------------------------  ] 0 ] P \ $ f  . ` ^ $ f  . d ] p  z ]   \ Segments[ \ ! p     ]. ' l > & "Direction" Segments[ ^ ! p     ]. ' n > & "Direction" \ ! r ! t ! v ` l  ElevationAngle $ x  ' h d n  ElevationAngle $ x  ' j d ` ` l Direction  $ x  ' h \r.  d n Direction  $ x  ' j \s. k  h  j   ' H z k h j  \' H d ' H k i 4 ----------------------------------------------------\w.  ; Description : This function gives property value of element z \ Parameters:  ) oPH [out] = Property Handler 5 accessString [out] = angle property name  Return value: true/false  Misc: It uses mdl api 8 --------------------------------------------------------  ~  | z %   ' x d  ] x F z ! ' T z ! ' x k  z  ~  ' x i p 4 ---------------------------------------------------- - Description : This function connect two lines Parameters: + line1[in] = first line element - line2 [in] = second line element / idPnt1 [out]= close point to line2 0 idPnt2 [out]= lclose point to line1  Return value: true/false  Misc: It uses mdl api 8 --------------------------------------------------------  ]   ]  \ ! (! $  '  \ ! (! , +  d \ ! (! +  k ^ ! (! $  '  ^ ! (! ,  +  d ^ ! (!  +  k h ]  \ $   $  $ H . \ B@D ^ B@D B@J B@L ' L i  Attribut e VB_Nam e = "cMe ndLine" " Bas0{ FCFB3D2A -A0FA-10 68-A738- 08002B33 71B5} |GlobalSpacFalse d CreatablPredecl2a Id CExposeTem plateDerivCustomiz E &P   DC F unction mdlVec_d istan pLi@b "std b ltin.dll " _ (By Ref poin t1P As P3d, 2 b)Dou AMinD A_bet weenElms E1V"F9@/%/Val edBPBLong2'?cl ist inputTolerSBBAElement_rewri@new ")oldfilpePosE f%_ceZep0OutM%InI'F%BV3d&In tersect_allBGxtFe@ H dZisP`Za!@b@Size{@d aI#frotMax#i( tOIfdqi!qOdl)zq(((+.r((KD comzepNorm`srdIunit torQ3@target1b"eangleXYts$p߁-Yj a I bs Imit CommandEv {s '4ID! DKFirst , Se|co @〡DaBs(0 To 2)ffSs P S ub RePort! () @A n1= 0Stet.P rt MEnd _D(t'1 ?ByCViewaq $ Dim e< If8 2 Then!1 ő e, q;wExitS!If' p1 theA k. Abort i`f Locp4 does not fi an 0! Set? Д#, TrueQ Is Nothing 3 {[1Eࡠ6 .$Istar S howPrEt " didBs@ct `lPS   +q.1'AСve Modelpere.S$  !0z@%   ` A E= _ e _ [ Wo  6' 7 ocel 3p*Accept\Rej2k % oSU3g_Dynamics_SRLUS1TDraw1,qMsd > '&[os_et eb PPKeep PRsi1t. Back op20way.QUvtKeyin| S@ng0 /PmggCleanup H'vo? >_"pez7@9XCuprsor3 a/T ~"hp+91BfB Ƶ'-0 'De scriptio n : This funcme nd two l0ines X Pa rameters:  %1[i n] = first7 ele H`t to P5 5seco rH6View6Current v / Return value: t rue/falseMisc: It uses mdl api 1 F M L(ByVal1 As E, 2 k )Boolean1Dim minPnt* Point3d  BClosfeDilD0oublJret2@LongE=OMin_ betweenEPlms((,+2 A ,D.MdlDP2- , 0.0 1)# !If D"<>4 0e@J- b@F~Exi,t kCE IfCXHasSA`ngle(µ')  Not IsllelJ , q@12M &H+ConnectsMUBB5[gc  Es% '(?gkchec k whether are pǀ-not@ @ _T`#& >2xO            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 5 6 7 8 9 : ; < = ? @ A  C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f i j k l m n o p q r s t u v w x y z { | } ~              X mdlElementTemplate_activateElementTemplateByPath a X\ M n mdlModelRef_getActive X H mdlPattern_linear X d t mdlElmdscr_display X mdlElmdscr_add  0 3Xp$K,{}*=h8 +3q  "+VJDKi)     x "+VJDKi)3Xp$K,{}  R R    ME  8    , $ 0 (  S  S  S  `LJ  H L  0D  0    1   1  <     < 6" << <     x    N 0 { F C F B 3 D 2 A - A 0 F A - 1 0 6 8 - A 7 3 8 - 0 8 0 0 2 B 3 3 7 1 B 5 }  p +T` p @     iV + H H p  H  C C  % *J $   L `    4 % 0  ` % " @ X   @ @   %   X ' A  % " H P    @   `   e bu@ % b p  @ " ` @ 0  ---   e     h  ` ----  e   H    ----  e        'Pr  e          f      @ Q -  e   (  + h t p   t     i    fori   A@ i    Gi    i ( i  H i    p      i   i   iv  + h p H      i  Z  ` ,  N  P  ` (  * * '       `  ` j   ` 0  Q l   ` 4    ]  8  `  8   u  )0  A %    ` x < $ $   )   A % )v  ` % n X  `  @ # #  )( 0  olA % )P   $ % t   `  D    )    A % )   F  $ % )v   ` % z p  ` P H    i  | ` L     ~ ` P     ` P ` T  + +   H  F  ( %  h ` X  & & H  )   A, % )   F A, % )v ` %  F  , % @   0 % `   , %  ` \    n  )v  ` % `   `   F  (   % bN X C bP  C "R 4  @ b 8   @ "C < 8   @ b D    @ b ` H    @ b p h    @ b  l   @ "  | ( @ "  @ "   @ "V 8    @ "X @   @ bN  C bP  C  P  `  8 H  ` h  X P `  8     h p p h H           h 8 P 4 `  ; x %Q  * \ R 1 * # b a  * \ R 1 * # 1 2 0  * \ R 1 * # 1 4 1  * \ R 1 * $ 9  * \ R 1 * # 3 5  * \ R 1 * # 1 2 4  * \ R 1 * $ 9 $ * \ R f f f f * 2 P 5 1 e 1 2 5 0 c ( * \ R f f f f * 2 P 5 1 e 1 2 5 0 c \ 0     (      D   P H  X H . `      "    $      0   8  @ H  h   p   x   $                              (  0 8  X   `  h  p                 0            (   8  6 H      6    H   (   H     :   8 "  @   F H F  F  L  L p F  L  L X L  L  L H F  F  F ( L p L  F  F X F L F 8 F F F  F X L F L 8 L L L ( L x L L  L h L  L  L X L  L  L H L  L  L 8 L  L  L ( L x L  L  L h L  L  L X L  L  L H L  L  L 8 L  L  L ( L x L  L  T h T  Z  Z x T  T 0 V  L  L 0 L  L  F  F h L  L  F P F  L  F 0 F x F  F  F P F  F  F ( F p F L ! F P! F ! F ! L (" F x" L "     # T # D x# @ # 8 $ H 8$ H $ D $ D % D X% > % D % T (& @ & @ & 8 ' H 8' L ' < ' < ( D P( D ( @ ( D ) D h) D ) < ) @ 8* < x* D * \ + X `+ X + P , P `, P , L - D P- D - D - T (. T . \ . H 8/ 4 / @ / 8 / D 00 L x0 P 0 \ 1 X x1 P 1 T 2 8 x2 H 2 H 2 H @3 8 3 8 3 8 3 8 04 P h4 H 4 T 5 H X5 X 5 D 5 D @6 P 6 P 6 D (7 D p7 H 7 4 8 4 88 P p8 P 8 ` 9 ` p9 ` 9 \ 0: < : L : < ; < `; H ; X ; P @< @ < P < T = @ x= @ = 8 = L 0> L > < > < ? D P? @ ? < ?   @  @  (@  H@ "  P@  X@ $ `@  @  @  @  @  @  @ 2 @  A   A  A  A  @A   XA   `A  hA  pA  J xA  $ A  A   A   B   B < B  `B   pB  xB  B  B "  B  B  B  B  B  B  B   B  B : B  (C "  0C  8C   @C  XC  pC   C  C   C  C  C  C    C   C < D  @D   PD  XD @ `D  D "  D  D  @ D  D   E  (E   @E  XE  hE   pE  E  ( E   E   E  E   E   E  F   F  F V (F  F "  F 4 F   F  F   F   G  (G   0G   HG  `G   hG   xG   G  G  G  G  G   G   H  (H   0H   HH  `H   hH   xH   H  H  H  H   H  H L H  8I "  @I  HI   PI   `I   pI  I   I  I  V I  J  , 0J  `J ( pJ  D J   J  K  K    K   K @ (K  hK   xK  K : K  K "  K  K   K  K   L ( L   8L 0 PL  L    L   L @ L  L   L  L , L  (M "  0M  8M   PM  XM @ `M  M "  M  M   M  M  M    M   N < N  HN   XN  `N @ hN  N "  N  N   N  N  N  O  O  0O  8O  @O    HO   PO > XO  O   O  O ( O  O "  O F O  8P   @P  XP " xP  P 6 P  P 6 Q  8Q  PQ  pQ  Q  0 Q  Q  Q  Q  R  R  (R , 0R ( `R   R  R  R    R   R 2 R  S   (S  0S 6 8S " pS  S "  S  S  S  S  , S  S  T & T " HT  pT  xT  T & T " T  T   U  U  (U  HU   hU  xU   U  U  U  U  U   U   U ( U  V   V "  (V  0V  8V  @V   HV   `V  pV  xV    V ( V  V   V  V  V  W   W   W   (W 0 0W  `W   pW W  ' = Implements MicroStation spoecific asynchrnonous line drawing   '  ` Q ! Returns a pointer to a structure s h   '  Status constants for eventsarted  '   Line drawing not started yet A@N   In line drawing mode ] A@P   '  Current state of drawing  ' ]  ]   '  Active line, text, cell (TBD)  ' ]  ]  ]   '  Active line ID  ' ]   '  Starting point  ' ] `  '  Active Pattern Cell Name  ' ] H  '  Saved setting  ' ] p  '  Saved setting  ' ]   ' ) Bus Attributes - levels, weights, colors  ' ]  e  ]  e  ]  e  ]  e  ] e  $ Command names for line placement ]  e 8  ' 0 MDL functions wrappers to create linear pattern  ' H h   ' 4 Initializes static arrays - levels, weights, colors  ' h   +  F    +  F 0   +  F A  +  F   +  F    +  F 0   +  F A  +  F   +  F    +  F 0   +  F A  +  F   +  F    +  F 0   +  F A  airlin  +  F   +  F    +  F 0   +  F A  elelin  +  F   +  F    +  F 0   +  F A  +  F   +  F    +  F 0   +  F A  comlnk  +  F   +  F    +  F 0   +  F A  comcbl  +  F  +  F   +  F 0  +  F A  capil +  F  +  F   +  F 2  +  F D  matlin +  F  +  F   +  F 2  +  F D  comlnk +  F  +  F   +  F 2  +  F D +  F  +  F   +  F 2  +  F D +  F ol   +  F    +  F 2   +  F D  +  F dr   +  F    +  F 2   +  F D  airild  +  F r dr   +  F    +  F 2   +  F D  eleild  +  F    +  F    +  F 2   +  F D  +  F    +  F    +  F 2   +  F D  +  F n   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  capil  +  F    +  F    +  F 2   +  F D  +  F ar   +  F    +  F 2   +  F D  +  F us  +  F    +  F 2   +  F D  +  F ,  +  F    +  F 2   +  F D  +  F s  +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  000012  +  F SACS   +  F    +  F 2   +  F D  +  F   +  F    +  F 2   +  F D  matlin  +  F ' T   +  F    +  F 2   +  F D  01405a  +  F omma   +  F    +  F 2   +  F D  01405b  +  F nt   +  F    +  F 2   +  F D  01405c  +  F B@  +  F   +  F 2  +  F D  01405d +  F hen  ! +  F   ! +  F 2  ! +  F D  01407a ! +  F  " +  F   " +  F 2  " +  F D  01407b " +  F B  # +  F   # +  F 2  # +  F D  01407c # +  F  $ +  F   $ +  F 2  $ +  F D  01410a $ +  F t be  % +  F   % +  F 2  % +  F D  01410b % +  F B  & +  F   & +  F 2  & +  F D  01410c & +  F B  ' +  F   ' +  F 2  ' +  F D  01404a ' +  F  ( +  F   ( +  F 2  ( +  F D  01404b ( +  F  ) +  F   ) +  F 2  ) +  F D  01404c ) +  F  * +  F   * +  F 2  * +  F D  01404d * +  F  + +  F   + +  F 2  + +  F D  001400 + +  F  , +  F   , +  F 2  , +  F D  001403 , +  F  - +  F   - +  F 2  - +  F D  001412 - +  F  . +  F   . +  F 2  . +  F D  001411 . +  F  / +  F   / +  F 2  / +  F D  01403a / +  F  0 +  F   0 +  F 2  0 +  F D  01403c 0 +  F  1 +  F   1 +  F 2  1 +  F D  01403d 1 +  F  2 +  F   2 +  F 2  2 +  F D  01403e 2 +  F  3 +  F   3 +  F 2  3 +  F D  01403f 3 +  F  4 +  F   4 +  F 2  4 +  F D  01403g 4 +  F  5 +  F   5 +  F 2  5 +  F D  01403B 5 +  F  6 +  F   6 +  F 2  6 +  F D  01408c 6 +  F  7 +  F   7 +  F 2  7 +  F D  01408a 7 +  F  8 +  F   8 +  F 2  8 +  F D  01408b 8 +  F  9 +  F   9 +  F 2  9 +  F D  01406r 9 +  F  : +  F   : +  F 2  : +  F D  01406i : +  F  ; +  F   ; +  F 2  ; +  F D  01410d ; +  F  < +  F   < +  F 2  < +  F D  01410e < +  F  = +  F   = +  F 2  = +  F D  001413 = +  F  > +  F   > +  F 2  > +  F D  01406p > +  F  ? +  F   ? +  F 2  ? +  F D  01406q ? +  F  @ +  F   @ +  F 2  @ +  F D  01406m @ +  F  A +  F   A +  F 2  A +  F D  01406l A +  F 8 B +  F   B +  F 2  B +  F D  01406n B +  F  C +  F   C +  F 2  C +  F D MOLTEN SULFUR C +  F  D +  F   D +  F 2  D +  F D SULFUR PRILLS D +  F  E +  F   E +  F 2  E +  F D  ETHANE (FUEL GRADE) E +  F  F +  F   F +  F 2  F +  F D  ETHANE (FEED STOCK) F +  F 1 G +  F   G +  F 2  G +  F D SOUR FEED GAS G +  F 2 H +  F   H +  F 2  H +  F D  SWEET FEED GAS H +  F 3 I +  F   I +  F 2  I +  F D  CONDENSATE FEED I +  F 5 J +  F   J +  F 2  J +  F D  C3+NGL J +  F 6 K +  F   K +  F 2  K +  F D  C2+NGL K +  F  L +  F  L +  F 3  L +  F E  000014 L +  F  M +  F  M +  F 3  M +  F E  000015 M +  F  N +  F  N +  F 3  N +  F E N +  F  O +  F  O +  F 3  O +  F E O +  F  P +  F  P +  F 3  P +  F E  cntro P +  F  Q +  F  Q +  F 3  Q +  F E  cntrrs Q +  F  R +  F  R +  F 3  R +  F E R +  F  S +  F  S +  F 3  S +  F E S +  F  T +  F  T +  F 3  T +  F E  000012 T +  F  U +  F   U +  F 2  U +  F D U +  F  V +  F  V +  F 3  V +  F E V +  F  W +  F  W +  F 3  W +  F E W +  F  X +  F  X +  F 3  X +  F E X +  F  Y +  F  Y +  F 3  Y +  F E Y +  F  Z +  F  Z +  F 3  Z +  F E Z +  F e [ +  F   [ +  F 2  [ +  F D [ +  F f \ +  F   \ +  F 2  \ +  F D \ +  F g ] +  F   ] +  F 2  ] +  F D ] +  F h ^ +  F   ^ +  F 2  ^ +  F D ^ +  F i _ +  F   _ +  F 2  _ +  F D  elelin _ +  F j ` +  F   ` +  F 2  ` +  F D ` +  F k a +  F   a +  F 2  a +  F D a +  F l b +  F   b +  F 2  b +  F D b +  F m c +  F   c +  F 2  c +  F D  capil c +  F n d +  F   d +  F 4  d +  F G d +  F } e +  F   e +  F 4  e +  F G  000012 e +  F + V   Instrument Leader Line  + V  F U  PID\Instrument Leader Line  + X  F Process Line  + V  F F M  PID\Process Line  + X  F Vessel line  + V  F J  PID\Vessel line  + X  F  Air Line  + V  F G PID\Air Line  + X  F  Electrical Line  + V  F N  PID\Electrical Line  + X  F  Steam Trace Line  + V  F O  PID\Steam Trace Line  + X  F Computer Link  + V  F L  PID\Computer Link  + X  F  Computer Cable  + V  F M  PID\Computer Cable  + X  F  Capillary Line + V  F M  PID\Capillary Line + X  F Match Line + V  F K  PID\Match Line + X  F Computer Link + V  F M  ILD\Computer Link + X  F  Instrument Leader Line + V  F V  ILD\Instrument Leader Line + X  F Process Line + V  F L  ILD\Process Line + X  F Vessel Line  + V  F K  ILD\Vessel Line  + X  F  Air Line  + V  F H ILD\Air Line  + X  F  Electrical Line  + V  F O  ILD\Electrical Line  + X  F  Electrical Line II  + V  F R  ILD\Electrical Line II  + X  F Cable Line  + V  F J  ILD\Cable Line  + X  F Panel Line  + V  F J  ILD\Panel Line  + X  F  Capillary Line  + V  F N  ILD\Capillary Line  + X  F  Equipment Line  + V  F N  ILD\Equipment Line  + X  F Ladder Line  + V  F K  ILD\Ladder Line  + X  F Panel #1 Line  + V  F M  EIL\Panel #1 Line  + X  F Panel #2 Line  + V  F M  EIL\Panel #2 Line  + X  F Panel #3 Line  + V  F M  EIL\Panel #3 Line  + X  F Fence Line  + V  F J  VOD\Fence Line  + X  F Vessel Line  + V  F K  VOD\Vessel Line  + X  F Match Line  + V  F J  VOD\Match Line  + X  F Arabian Heavy  + V  F M  VOD\Arabian Heavy  + X  F  Arab. Heavy Safaniya Sweet  + V  F Z  VOD\Arab. Heavy Safaniya Sweet  + X  F  Arab. Heavy Manifa Sour  + V  F W  VOD\Arab. Heavy Manifa Sour  + X  F  Arab. Heavy Manifa Sweet + V  F X  VOD\Arab. Heavy Manifa Sweet + X  F  Arab. Light Naphtha ! + V  F S  VOD\Arab. Light Naphtha ! + X  F  Arab. Whole Naphtha " + V  F S  VOD\Arab. Whole Naphtha " + X  F  Arab. Heavy Naphtha # + V  F S  VOD\Arab. Heavy Naphtha # + X  F  Diesel (Local Use) $ + V  F R  VOD\Diesel (Local Use) $ + X  F  Diesel (Black) % + V  F N  VOD\Diesel (Black) % + X  F  Diesel (White) & + V  F N  VOD\Diesel (White) & + X  F  Arabian Medium ' + V  F N  VOD\Arabian Medium ' + X  F  Arabian Medium (Sour) ( + V  F U  VOD\Arabian Medium (Sour) ( + X  F  Arabian Medium (Sweet) ) + V  F V  VOD\Arabian Medium (Sweet) ) + X  F  Arabian Medium (Pressure) * + V  F Y  VOD\Arabian Medium (Pressure) * + X  F  Off Service Pipe + + V  F P  VOD\Off Service Pipe + + X  F  Crude , + V  F E VOD\Crude , + X  F Slops System - + V  F L  VOD\Slops System - + X  F  Asphalt . + V  F G VOD\Asphalt . + X  F Arabian Light / + V  F M  VOD\Arabian Light / + X  F  Arabian Light Sour 0 + V  F R  VOD\Arabian Light Sour 0 + X  F  Arabian Light Sweet 1 + V  F S  VOD\Arabian Light Sweet 1 + X  F  Arabian Light Berri Sweet 2 + V  F Y  VOD\Arabian Light Berri Sweet 2 + X  F  Arabian Light Iraq Basra 3 + V  F X  VOD\Arabian Light Iraq Basra 3 + X  F  Arabian Extra Light 4 + V  F S  VOD\Arabian Extra Light 4 + X  F  Arabian Light Pressure 5 + V  F V  VOD\Arabian Light Pressure 5 + X  F  Gasoline 6 + V  F H VOD\Gasoline 6 + X  F  Premium Gasoline 7 + V  F P  VOD\Premium Gasoline 7 + X  F  Regular Gasoline 8 + V  F P  VOD\Regular Gasoline 8 + X  F  Natural Gasoline 9 + V  F P  VOD\Natural Gasoline 9 + X  F  Fuel Gas : + V  F H VOD\Fuel Gas : + X  F  Fuel Oil ; + V  F H VOD\Fuel Oil ; + X  F  Jet Fuel < + V  F H VOD\Jet Fuel < + X  F  Kerosene = + V  F H VOD\Kerosene = + X  F  Butane Refrigeration > + V  F T  VOD\Butane Refrigeration > + X  F  Butane Pressure ? + V  F O  VOD\Butane Pressure ? + X  F  Propane Refrigeration @ + V  F U  VOD\Propane Refrigeration @ + X  F  Propane Pressure A + V  F P  VOD\Propane Pressure A + X  F  Liquefied Petroleum Gas B + V  F W  VOD\Liquefied Petroleum Gas B + X  F MOLTEN SULFUR C + V  F M  VOD\MOLTEN SULFUR C + X  F SULFUR PRILLS D + V  F M  VOD\SULFUR PRILLS D + X  F  ETHANE (FUEL GRADE) E + V  F S  VOD\ETHANE (FUEL GRADE) E + X  F  ETHANE (FEED STOCK) F + V  F S  VOD\ETHANE (FEED STOCK) F + X  F SOUR FEED GAS G + V  F M  VOD\SOUR FEED GAS G + X  F  SWEET FEED GAS H + V  F N  VOD\SWEET FEED GAS H + X  F  CONDENSATE FEED I + V  F O  VOD\CONDENSATE FEED I + X  F  C3+NGL J + V  F F VOD\C3+NGL J + X  F  C2+NGL K + V  F F VOD\C2+NGL K + X  F  Aboveground Pipeline L + V  F T  FPP\Aboveground Pipeline L + X  F  Underground Pipeline M + V  F T  FPP\Underground Pipeline M + X  F  Building / Equipment Line I N + V  F [  FPP\Building / Equipment Line I N + X  F  Building / Equipment Line II O + V  F \ FPP\Building / Equipment Line II O + X  F  Bldg / Equipment Centerline P + V  F [  FPP\Bldg / Equipment Centerline P + X  F  Roads / Streets Centerline Q + V  F Z  FPP\Roads / Streets Centerline Q + X  F Trail Line R + V  F J  FPP\Trail Line R + X  F  Sidewalks & Walls S + V  F Q  FPP\Sidewalks & Walls S + X  F Fence Line T + V  F J  FPP\Fence Line T + X  F Grid Line U + V  F I FPP\Grid Line U + X  F  Guard Tower Line V + V  F P  FPP\Guard Tower Line V + X  F  Transmission Tower Line W + V  F W  FPP\Transmission Tower Line W + X  F  Call Out Leader Line X + V  F T  FPP\Call Out Leader Line X + X  F Parking Line Y + V  F L  FPP\Parking Line Y + X  F  Roads / Streets Line Z + V  F T  FPP\Roads / Streets Line Z + X  F  Instrument Leader Line [ + V  F V  DEF\Instrument Leader Line [ + X  F Process Line \ + V  F L  DEF\Process Line \ + X  F Vessel Line ] + V  F K  DEF\Vessel Line ] + X  F  Air Line ^ + V  F H DEF\Air Line ^ + X  F  Electrical Line I _ + V  F Q  DEF\Electrical Line I _ + X  F  Electrical Line II ` + V  F R  DEF\Electrical Line II ` + X  F Cable Line a + V  F J  DEF\Cable Line a + X  F Panel Line b + V  F J  DEF\Panel Line b + X  F  Capillary Line c + V  F N  DEF\Capillary Line c + X  F Ladder Line d + V  F M  DEF\Ladder Line d + X  F Fence Line e + V  F K  DEF\Fence Line e + X  F o ?  '  Start drawing the line  '  ?   Get ID from key-in arguments  ]  $  ' ]   X' d 0? ~  Error: Invalid SACS line code B@| k > ] 8 '  $   ' y > k > >     G ~  Error: Invalid SACS line code B@| j   Set the chosen configuration A ` ! D! &B@( | = = . SACS:ACSLineImpl.IPrimitiveCommandEvents_Start B@ B@ o =  '  Kinda constructor  ' P N ' R ' . B . ' A Z o =  ' 4 Called back by MicroStation before stating acommand  '  <  Save context ! D! \! ' ! D! \! ' $ V   A@  Define Start point A@v  ' ! &B@p k < | < < . SACS:ACSLineImpl.IPrimitiveCommandEvents_Start B@ B@ o ;  ' : Creates new segment of line with specified starting point  '  '  : Create and initally configure line and associated objects ! D% H . B  Patterned $    ! D! B(  B( k :  With text $    $    ! D%  . ! D! B(  B!  ( k : A@`   Start tracing P ' R o 9  ' O Draws line so it direction always is from bottom to top and from left to right  ' 8   !  !   !  !    Vertical line !  !  BB@r    BB@r  d 8  BB@r   BB@r  k 8 $  !   B%  (  !   B%  (  k @8 d 88   Horizontal line !  !  BB@r    BB@r  d 7  BB@r   BB@r  k 7 $  !   B%  (  !   B%  (  k @7 k 87 v BB@L o 7  ' F Called back by MicroStation when user specifies (enters) a data point  '  6 R N  A@   Define End point A@v ! &B@p R P  e  NA@   O Permanently store line segment (and associated objects) between points A and B B ! D! B@J  % Draw the line and associated objects N BB@L   $    G NA  j   $    G  B%   B%  NA  j   Create next segment A@  k 4 | 4 4 2 SACS:ACSLineImpl.IPrimitiveCommandEvents_DataPoint B@ B@ o 4  ' 3 Called back by MicroStation for rubberband drawing  ' X 4 R P   v A@    Pattern   $    G v A  j   Associated Text   $    G  v A  j k x3 | p3 h3 1 SACS:ACSLineImpl.IPrimitiveCommandEvents_Dynamics B@ B@ o 3  ' & Called back by MicroStation. Not used  '   Not used... o 2  ' : Called back by MicroStation when resent is issued by user  ' p H2 ! D! \(   Restart ! D! &B@( | 2 1 . SACS:ACSLineImpl.IPrimitiveCommandEvents_Reset B@ B@ o 1  ' 9 Called back by MicroStation when line drawing is stopped  '  @1   Restore context ! D! \( ! D! \( ! D! \(  N ' R . Bk 0 | 0 0 0 SACS:ACSLineImpl.IPrimitiveCommandEvents_Cleanup B@ B@ o P0  ' " Activates specified configuration  '   ? Set Microstation active parameters to those of active bus line /   Set axis lock $  ! D! \( ! D!    ! D! \( $ X  $ z $ T  ~ " Error: Element Template not found! B@| k /  0 If the line has pattern, set pattern parameters $    $  ! D! \( ! D! \! ' k p.  * If the line has text, set text parameters $       ! D! \!  (   (  ! (  (  ] 0  font061 ! D! ! F%  .       G  ! ( j  ! !  ! (   ! !  ! (  k 0- | (- - # SACS:ACSLineImpl.ApplyConfiguration B@ B@ o ,  ' 0 Place text to the appropriate place on the line  NB: line must be orthogonal  ' P P, ]  ] ( !  !   !  !     Vertical line     $  ' !  ! D! \! ! (  !  !     (  d +   Horizontal line  $  ' !  ! D! \! ! (  !  !     (  k + ] H !  ! *!  (  !  ! *!  (  !  ! *!  (  (   B@  v  B@L v N ! D! B@J ! DB@ k (* | * *  SACS:ACSLineImpl.PlaceText B@ B@ o ) h ) ]  ]  ! D! \! '   ' k ) B! ' $ z A@  v A@  v N A@  ! DB@ k ( ! B@  | ( ( ! SACS:ACSLineImpl.ConfigurePattern B@ B@ o ( ( ~ Attribut e VB_Nam e = "ACS LINEImpl" Bas 0{FCFB3D 2A-A0FA- 1068-A73 8-08002B3371B5} |@GlobalSpacFalse dCreatablPredecla Id C@ExposeTe ateDerivCustomiz E'' ' ement s MicroS tation s poecific asynchr nonous l ine drawing!P = A De Func!mdlEl-S4_a v  By Path Lib "std bl tin.dll" (ByVal wAs LonHg)  ?M odelRef_getAe ' Retu rns a po inter to struc@y0 Op8glicit R"I@%mitdCommandEvXA ]Y@Sconsta_for e 5Enum AA es '0` not rt@ye! teWa iA zrnn mFCB DatEnd *C8urr@/ofyDi'd*bContBoopleanb, text, c ell (TBD)mLzDDT ElCBdD@6nAE8 ID  IDI`>ger'rQgA(PDC hDGN.3d.%C( d;B@Sa8#' Sa|setAxisLocka.>Ang `Doubl\cUB Us - l Uls, weight colorS&7ID(1 To 101uOri J"Type2 @%%n(0 #a n s aoplDINE 2MDL f s wrappeTrscaeBoar pataSE|@_6 0EdPP!?^, edNfilePos-p?aSqScaE7?-Sub mdscr_dtis 0yuD@DeM^}M`uF)kadd; ieu!In0XalizesStrray_4\4 GT|s( Q,o[S R7)p73:m6QTru~eS54"": 2b014R 35 R 46 R  22"air`65d7jRl72i"!o(6d8jRlcQn79 R 2y "comlnk8c20j?Rl2iacblm9d1jRl2i"capi^10de/b|"mat(1k= 201 c "c/ne:2:bB4 1B2@ ;cMJO301K;1bMBJOs301;1bM;ild]&13@;cO;(1S401 T"0 127-W - ׊WB+82!EV +B"matlin+9+B"01405a306nCb4027Bcۀ8Bd4030J "B 7o-g@ I$D3M J "C o-bh@ $E M J "C o-"i@ +3M J "A 10""i@ Z3M J "C "i@ ZM J "C "i4049+DM J "A 04"4q5OL ߃I #C "4i@OM bJ "C "4i@ $OM bJ "C q4i@ OM bJ "@0 }4i@ OM bJ 34O4bBk44Oc1^ 4407 w4bBb3-4lbB'4lbB'587;DcCe54P "cf4"5bBg4O5boBB4409 bB8"54 bB~-54 bBZ54410`c6r4Z5bBi4;D~5bB1086810;DcC864P ;DcCUŮ`64412kwcQ 06p64dcq4bBm4bBl4415bB644081: mOr ient(67) = TruePTypeP3Dex"MOLTE N SULFUR": Lin@eID(684082p,  a"Z PRI(LLSa9a12~7 a a a" ETHANE ( FUEL GRAHDE)370383 3 33E ED STOCK313453 3 3"SOUR$ F2GA72060MJB@"SWEET3 e7B "CONDENSXATEd49?1B"C3+NGL550B("C26505D 7FalnsCTC"r0 14-4-B"c 5n Bq` Fn "" o D߮  " 8Bu ?+C  #"cPntro 8k506+CN J "B rsn "k509!8n !!i !  "c g510dX8  "CM2 g` Kd8o n10˪8n  Bf@L6?  " e51L8  " e l^RZ^9614%c]SY_r2701+ 9b, CJbO"3@Q9bMBJO1@{%9bMBJO1@V9bMBJO1@}9bMB;c"@elelin;91c  1@%bMBJGO1702[9bMBJO1@P9bMB@"capil105tT $. [q703 t5Y ,\ÿY mCommand( ""V:Instrum Leader ="R? mE leTemplate(CPID\\=Process__ <?V el 05eCAAio cC" ctrical |cDSteamaceU$/F.put+ka<H6Cabl/$?I (8) = "P ID\Compu ter Cabl@e": m Xmand(9 Capillary Lin # mEleTemplate P u10vMatchr ":4sJtN11s sk79&IL( s2: Instrument Lead{1* ?,C3!Processx1?4V elM5BAir76 ctrica}8M7Q II#  C,z>1#  #PanHN # 2C? j ckEquipC?JG- Lad  -":#1Hk EIL\: 2  c3  ÉFenc>e/, VOD\D^^  ^ f2C CArabi an HeavyW+! |3HA.3 Sa faniya Sweet///%SEMfourcFoO3snniQ_ 3#HL ight Naphthak?#glHWhole#lI13#lJDies(LoAUse)Oo+O_3KBlackgP}KUWhit?o{P}QMedium{/Q|47QXS (S HD&m4PBoooTo wPy Pressure)": & mEl eTemplat e(42) = "VOD\Ara bian Med ium ( mCommand(43hOff Service Pipe7O S {4{Crud_8p"8$252S lops Systemn%6'969Asphalt77M7C|Ligh M8O Sour:CD9wee> L 50P Berri| S!  1Iraq Basra2'J5 i mÐEExtra R'"/ -c%b E!?''5 CGa`solin_ +Gg m #m! Dk'o mÔ Regular ?}Ǟo mCNaturalOl-Go mcFue?Kk-gIOil gN 6MJet 1 tCFKerose?2z 6JcDButane Refrigeration?{Iq=SD5B!GI.SDProp?Ir]uJS yJ=sE Liquefie d Petrole0K?+Jem!I":SFM OLTEN SULFUR1 ?a6 ]sF PRILLS___QGK ]GETH ANE (FUEL GRADEGLo`7LEED STOCK$1o7ISOUR FGA?N }ISWxEEToJ7N}CICONDENSATE&7N.HC3+NGL?-T}SGC2? KC2 +NGL":  mComma nd(76) = "Aboveg round Pi peline":# mEleTe@mplateFXPP\ 7UnderFSWA8ABuild ing / Eq uipment L I7-E/H9H8I$$80$ldKHCI|er:$M$1AB$Roads mStreets ?$(8C$Y#2#`Trail8/CI3Si dewalks & Walls/  4FenceLj8$ ` 5 Grid   c Guard Tower n m ?nsmission_,/ǢV -×CJ Ouea?!G mPark\kg l9cm jd !@ mcInstr~ucѿ/SDxEF\ }HProcess/=HV eT+!3HAi>9sH`ctrica_;AO]9H(e I9cHCablc/{qFPan$3FC apillary3_;3|D10CKLad5Z Rjq.10Dy{/,SI  ESub '' ' Start drawqathe APublic  DRAWSACSM()Q !On Error GoTo "Hler' Get ID f rom key-@in argYs#If Len(@KeyinA) > 0 ThenCDim as&() As` r GSpllitn pLongA= C InBElse@.Raise errInvalid rameter, , "b4:   c0ode"1If7 S iApegQamActivFe = 0F%pi LB(m) U+t(ia;= iExit W Nex>tS ! r _"rrar?. (-chosen nfigurat3ApplyCo 9 Micro StationD GN.Applicp.Comma$ndte. rt Primitiv e Me Exit SubA rrorH Zl er: E$Codes.L og "SACS: LineIm0pl.IiEvents_j"D ReportTo PromptCuLrr - ynd  ''  Kin da constructor lvate+ Cl@ass_Inealize()6<= s eWa ng bCon t = Fals }oSet mf Nothi @TextEl mAcD 0. Call GTa0blesmed back by before]D ac~ EBOno GoToDwC,C' Sa Zt;m dAxisAngle 9٘C@Lt -Ls. Lo<=OA EnSdCCCShowĜ (mD( g) C ("Def   pointF" If T rue ThenCАG#¢݀Dynamic@ E If9\ve_p_p' Cre@ms ne@w segm u of l'wit h specifi`Y@mra?)PuB PNewS(. AsnAP13d2!%m5P1'e iqyfigu@jaoci d object$2a ~^C#Ele#2(, HPatterneD[ PmTypvelY2Q. GraphicGroup )' «@ msd"ar)ZWE33鈴_3CB31H3*,cV, Matr@ix3dId ]ity5, ,M7 ')w,!ym.W ^tart tracZrJ2sDrawS=' s@so `dir4` always is f} bottom to Fp29blefo rightB&AA, ByhVal MЉDN.Msd !`'Abs(H:.Y -3 .Y) >, _VXX):*'VepPc Ff.WL <.# ifyex< 0jDF@) 1,fElQ, Î. 0;X<)AOri4}L u% (1).XQGX/ 2 Z'Horiz[puXa*k??@negOf  ID+.&wY|Y/ wpGzhRedH < PBIߴ w users ( )ers ) a data8HcD02H/J/J"JVi𓟎.qDIUS )371 ݱQr>!}wOKg7 Y5Q( OZ\Norm al ' Penly a2-(ϟ)0tweens Aj>B߆ʁ)lRefece.A>dV t thet 0  eNormal   If mT ype(mAct iveLineI D) = 2 T`hen _C all Conf igurePat tern(msd DrawingMtod)p3nPlaceText(m.Ve rtex(1), 2 H ' Create n 0 segmentNewBS poiE nd If Exit SubrrorHandler:E Cs.Log "SACS: mpl.IPrimiCommEvCs_DataP9"$Rep ortToPromptCurr\CJC '' ed back by Micr oStation for rubberb dq[C@$vF  'ynamics(E AsDGN./3d, ByVal View  MwĘOn X GoT~o_MC=es?eDCAAAez, #C ' 'Dsociey2&' qa¡ parame s to tDho@of bxus q/sG2e/LCa@' l?"C/&/&/&%&Ori0&&V/ Pi / 2O#1dlEleaTe@P_ I|By0h(cPptr(m )) <> 0 -0.Rai0err InvalidPA, , "R:N d  nofound!%'`j-C '`e has, t p ķSTCellN'mciDnm.m.m ?V o/$3 ApQ2 El IsG.Level  ev "jWeighR1QStyle.Just E〰ejC07erS Col= P!1 HDimntfojG =DesignFi` FPs.Find? (&1061"# ;!R=  Width@3pCn0RVlRefece.UORsPer@Uni}[HNt~O ModelRef erence.U ORsPerSu bUnit End If, Exit | $rrorHander:R"C s.Log "SACS: Lin eImpl.Ap plyConfi guration"9Report ToMsgBoxxCur v  ''  Pla ce text to the a ppropriate ponl 2NB:  must be hhogonal *Priv 4/T /(Point1 As 3d, p 2 ByVal Dr aw MicroStsDGN.MsdingB)|On E pGoToDimqPos6 Ro19atrix3dIf Absc.Y -A_.Y) >XX) ThenA' Vertic 9SA ` = MD Fro mAxisAndEAngle(2 , Pi / 2D@8.X =Y1- MP@  .ActiveSHett Ts.AjStyle.N ASpac0*vY GC+HC % Else' Ho@rizont??, 0=$g+==W=X =@=j}!3PoffsetOb6E+!HmA1 El.Origixn.X(0-j YZ 5Z`SZ era=fEOMovGRedx ~(y 6 ie@myNormCfXAAddElementE##A1 Upd Grap hicGroupNumberE߷deշB;iEePattern( Wms$*DescrPXLongPdblSe!DoublD#@ ؑ  H 0H1%7?## = ma.MLdldl_!aar m, I" StrPtr(uCell),  ElmBd_disPwy dl-_get[,6rS 58PL75maddF2plc?22S PLib.8freeAllx6A-2/7PCP \  ` 8 $ A  ` < 0 8   ` @   !  4   @   ` D ,   !    4   (   ` H  9  $ A ` L $ $  ` P ( $  ` T     y  n  rU       aV  V  @  x i     Z  y     ` ` ` ` ` ` ` ` ` ` ` `   I   I   W     W    W   0 p   0    0    0    0   ( 0 `  ( 0  ( 0 0  ( 0   ( 0 H  ( 0   ( 0              x                rU    ,   h    4, A  h    4(  h  Q  #$   `  $   `  $ A  `  $   `  $   `  $ r  V  [/  ʱA  H X mdlElementTemplate_activateElementTemplateByPath  D0FAUh<*=h8 +3q  2Q^~O     x 2Q^~OD0FAUh<  R R    ME  ,    $   S  S  S  `LJ  H L  0D  <0    1  1  6" <0 <4 <8 << <       x  N 0 { F C F B 3 D 2 A - A 0 F A - 1 0 6 8 - A 7 3 8 - 0 8 0 0 2 B 3 3 7 1 B 5 }  h +Tp p @  & &  iV  % *J |  `   L (    ( %  ` %   , co  % "X ` h   @ 8      x  h 'Ex   P  Z  ` 4  & & +    ` (    Q    ` ,  ( ( _  ` 8 @d aliz` evel`b   ` BUSL d  + X   % `f  230K    ` 0     j `  ` 8  l   ` <    n 0  `  @  % %  )    A % )( + X  % t   ` p D     )    A % )  E1L  % )v  V Bu`$ % z H  ` ( H    i  + |  ` L   ~  ` P   ` ` T      0   % bN ` C bP  C "R  4 @ "C 8   @ bT  <    @ "V D 0   @ bN P C bP  C 0   ` H    0  `   ( p     h    P H           h   h    X  L "  %Q  * \ R 1 * # b a  * \ R 1 * # 1 2 0  * \ R 1 * $ 9  * \ R 1 * # 1 2 4  * \ R 1 * # 3 5 $ * \ R f f f f * 2 Q 5 1 e 1 2 5 0 c ( * \ R f f f f * 2 Q 5 1 e 1 2 5 0 c \ 0  x   h      D   P   X H  `   h  p " x    $            8   @  H . P                 0     6    8  H : P   "    "  "  "  "  $ @ $ h $  "  "  "  " 0 & X               0  P  p               6  N X P      "      0  @  P   X  ` J h L  L  L X (    "                  .  P   8 p                      @   H < P      J L . p  "          <  (   8  @  H  ` "  h  p  x      :  "         0   8 < @     L  "        *   H   h              <      8  P  @ `             @      (  0 : 8  x "        2               >   X   h  p , x   "          @    "  (  0   8  H    `   h < p        @    "       (  0    8   @ > H        (    "   F    (   0 6 P         0         ' = Implements MicroStation spoecific asynchrnonous line drawing  '   h  '  Status constants for eventsH  '   Line drawing not started yet ( A@N   In line drawing mode  A@P   '  Current state of drawing  ' ]   ' ' Active line (line element being drawn) -  ' ]   ' Active bus ------  ' ]   ' ) Bus Attributes - levels, weights, colors  ' ]   # Command names for line placementno]   ' 4 Initializes static arrays - levels, weights, colors   ' p  BUSLINE\BUSLINE_380K  + X   fit  BUSLINE\BUSLINE_230K  + X   BUSLINE\BUSLINE_115K  + X  on="  BUSLINE\BUSLINE_69K  + X  <B@  BUSLINE\BUSLINE_34.5K  + X  n  BUSLINE\BUSLINE_13.8K  + X  B@  BUSLINE\BUSLINE_4.16K  + X  set  BUSLINE\BUSLINE_2.4K  + X  <B@  BUSLINE\BUSLINE_480 + X    BUSLINE\BUSLINE_200 + X   BUSLINE\BUSLINE_120 + X   BUSLINE\BUSLINE_CIRCUIT + X  + V  E1L 380KV Bus  + V  E1L 230KV Bus  + V  E1L 115KV Bus  + V  E1L 69KV Bus  + V   E1L 34.5kV Bus  + V   E1L 13.8KV Bus  + V   E1L 4.16KV Bus  + V  E1L 2.4KV Bus  + V  E1L 480V Bus + V  E1L 208V Bus + V  E1L 120V Bus + V  E1L Circuit + V  o   ' / Displays a dialog box with bus line parameters H This function is called from getE1lbus (Check of Existence of Bus Line) I or using E1L Product toolbar, 4th group, "Set Bus Volt" button to select  active bus line.  '  T \ ( ^ h \ B@ \ ! ^ ' T A ` o  ' C This function verifies if any of voltage of bus lines is selected. E If it is not selected the systems asks to select voltage of bus line  F (look above Selecting Voltage of Bus Line) and only after that allows E place cells or draw bus line. It is called before placing cells from " E1L product or drawing bus lines.  '   ] 0 ] H ` ] x ]  ]  ]   ' If no bus is select it, display prompt    T  G A  j  1 Check that active template selection is not lost ! D! \! h ' f '   X X f $ X    '  y  k       G A  j |   - SACS:DRAWE1LBUS.IPrimitiveCommandEvents_Start B@ x  B@ T o X  '  Start drawing bus line D This function is called by pressing E1L Product toolbar, 4th group, E "Place Bus Line" button to draw bus line' Starts drawing a line with ' settings provided via Configure method  '  H A  ! D! &B@( |   - SACS:DRAWE1LBUS.IPrimitiveCommandEvents_Start B@ B@ , % o   '  Kinda constructor  '   N ' R . B ' T A Z o h  ' 4 Called back by MicroStation before stating acommand  ' `  T $ V   A@ ` p  Define Start point A@v |   - SACS:ACSE1LImpl.IPrimitiveCommandEvents_Start B@ B@ o h  ' F Called back by MicroStation when user specifies (enters) a data point  '   R N   # Create and initally configure line f    ! D% H . B   Start tracing P ' R ! &B@p  Define End point A@v R P  e   BB@r    6 Permanently store line segment between points A and B B ! D! B@J   Draw the line N BB@L  : Create next segment like current one and continue tracing B   ! D% H . Bk 8 | 0 ( 1 SACS:ACSE1LImpl.IPrimitiveCommandEvents_DataPoint B@ B@ proceso   ' 3 Called back by MicroStation for rubberband drawing   ' 0 p R P  ----  , Dynamically trace between PointA and PointB D   BB@r  / v  BB@L k  |   0 SACS:ACSE1LImpl.IPrimitiveCommandEvents_Dynamics B@ B@ c: o   ' & Called back by MicroStation. Not used----  '   Not used... o (  ' : Called back by MicroStation when resent is issued by user  ' H   Restart* ! D! &B@( | - SACS:ACSE1LImpl.IPrimitiveCommandEvents_Reset B@  B@ o 8  ' 9 Called back by MicroStation when line drawing is stopped  '  N ' R . B| / SACS:ACSE1LImpl.IPrimitiveCommandEvents_Cleanup B@  B@ % \ o `  ' " Activates specified configuration  '   ? Set Microstation active parameters to those of active bus line T $ X  $ z $ T  ~ " Error: Element Template not found! B@| --k p | h ` " SACS:ACSEL1Impl.ApplyConfiguration B@ B@ : o    Attribut e VB_Nam e = "ACS E1LImpl"D Bas0 {FCFB3D2 A-A0FA-1 068-A738 -08002B3@371B5} |G lobalSpacFalse dCreatablPredecdla Id CE xposeTe ateDerivCustomiz E'' ' ements MicroSt ation sp oecific asynchrn onous li ne drawi ng! Op Ulicit L PFJ Dn FuncmdlLEl7\_a v  ByPath Lib "std bltin. dll" (By Val wAs Long)  4I"mit GCommand$Ev: .' ;5constaAAfor e H!2EnumB esh ' 'B not rtaye A teW^a AKA@\n Q Xmod F DVEnd *CurNr@/ofaDi'B5*9AAY*e(pea bfe@rBn)C m~LyATf"DbuBHB B S Integer s - l Y ls, weight color l(0 To 12xSLngR ns 7"pl@rAZOM0 GIn4a`lizesB,a_rrayEDSub Tms(*Ka Fm1)BUSLINE\ _380K@a 233r (115r 469E534.s 613.8 7P4.1682.49 80.410s 09129CIRCUITEFFae` 3@GV mM AERFADRDA C2CC!AkrAab@r@a??r#?a=/nd(b804R08/!/!Circui>t?\AFDispJEa dia log box wi0o`UZpar MteRQ Thi@Nt callf from getE1l(Check aExisten W1]1^2 nusa_APr oduct to olbar, 40group, "Set$ VoPlt" tt(o scc@n' -{e.3dPu b QSELECTpKPfrm.mfcg= /Show vbModalT17gd= ?us1C ApplyConfigurr, {vfiaif anyqbvage s& 3ed! If itQr@the syPmspks@ _P' (look above S?bq$ d only af0#@ that Po wAu Rq cells!G I %bete3a& !#p$#p$%s GEOn ErrGop} Hl2Q NiUlW2, lC11alsLqS҂bXFoupB.eanobjStyq# ah{a= f!-p ,0>> mpġ1".p`hen _CR+ 4 ' #?t% (los* =DGN.2ticb2.6@0g|s.eq 3d t= 4 F ipLBA()Uؓ ʑ~i0@ Trud RtA (@IfNex0=Not $Tl Fx@oP Q/.:3/C s.L@`"SpQ:DRAWS.5_ r%f8ReportTo@]p&?À0/Ybrt?;=of0DKby9+esococa"PQc4cGsaopqset"'3vidvia 5\e meth od ߵ '' Publ ic Sub D RAWE1LBU@S() O n Error GoTo(Han0dler| Call GETv& MicroSta tionDGN.App .CoLmm :e. r tPrimiti ve Me Exit ~ s:ZCode s.Log "SACS:.IMhEvents_i"CRepor tToPromp`tCurr @I8mpl_wh en user specifies (ers) a data8UcD PAE(F As{ނ3d, ByVal View $+~:If [ T> ' Cre!e@ i`dyifigu@Rl< czb !hElem`)2(h,C) $IJtrac&oADraw$YDynam|ics a (j[GElse--$+-.Modi fyVertex 1'' Per`&ly aa0 seg)@t we Vs A =7B2`elRefe@ce.xAdd4cG ''  the B!.Red1 mLsdd A NolC dNnextl ike c o` tinue AhyC JQd0g Qa?If_or-__oo oM} e rubberb2q/ey2/LՃ/L/L@!LeN!!NN.M#OOr 8A߬8P,@2N%e4 4 53.P <-C0(eD $C2o$CSqMd$E -$$.Q!rd/p##Key8in(m !Str0(T'V...  -2{res is su^yr|O O C Rt'oo_' @tartGp_WE0  g "i$Estop4pe! Cleanup A^PZ xpsFdV@qxyCon2' ( t@ paramDet to{ose ofbp?|(VVVmddlETep _aр |ByPath(?Ptr(mJ) <> 0[ R.Rai@ errInvdP% , , ")"T: 4  notpund!5N} ! er7y7L1_O E M sgBox        X        x  ME   (  < < < <  p B N N  H X  %     ` %Q 0   Y     X   h , D    X  X x "   >        @  `   x                0   H  h                   8  P  p                 0  P  p                  @  X   p                    "   (  H   X h x p Q -------------------------------------------------------------------------------- Description: % ; turn only view no. 1 P = ; tile screen, fit view, compress, file design  Parameters:! 5 ; Returns: Q Misc: Used in stds/gen.sbm side bar menu. Has been ported from VIEW1.UCM Q --------------------------------------------------------------------------------   7 Temporary point for supplying to SendDataPoint routine ] @   Turn only view no 1 view off all <B@> view on 1 <B@>  Tile screen   window tile <B@>  Fit view  fit all <B@> H  <B@   Turn on levels 1-63 on="Level *" <B@> H  <B@   Turn dimension data on set dim on <B@> H  <B@ r   Turn dynamics on set dyna on <B@> H  <B@   Turn enter data off set ed off <B@> H  <B@   Turn Fill on set fill on <B@>  H  <B@    Turn grids off set grid of <B@> & H  <B@ 4    Turn Level Symbology on  set lvlsymb on <B@> H  <B@    Turn line weights on  set weight on <B@> ---- H  <B@ ipti   Turn patterns on set pat on <B@> H  <B@ P  Turn text on set text on <B@> H  <B@   Save view setup by name x  sv=x <B@>  H  <B@   ref snap on all <B@>  File design  file <B@>    Update  up both <B@>  |      Report that function failed dic GENImpl.Run B@ (  B@ o  Attribut e VB_Nam e = "GEN Impl" O ption Ex@plicit@Priva Mod ule ' -L SDescTri: ; turn on ly view no. 1'ile Jeen, fit., compress @designParters; Re4Misc:CUsed i n stds/g en.sbm s ide bar menu. Has b< port from V IEW1.UCM#7OPub S ub Run() Y' TemBary Fint for sup plying t o SendDataPoroutin xADim ptA As 3dcc CadInput@Queue.Ke "moff al n 1@ DTxC window t  Fą+GOK,@TI levels 1-63on=""L *""/-O8VJ Bdisdata hset ` dDdynamics_BUY-en y ff? `t R?:Filvlf# gxrid*@9a of?:RSymbologylvls l weighztI"A?Ipat Jn_a]textW $++Savet0up by ;e x\sv=x_^I`zWILa ref snapb' [H{t 6e UpAmtothOrrpsGoTpo hE Ex0d@wC 0!' Re! tDhawunc•fNahttCo.Log.Run4ToMsgBoxCurrN1End   `  $ A `  ,  `   i  ,  `   i  ,  `   i  , I `   i  ,   ` $  i  ,   ` (  i  ,   ` ,  i  , I  ` 0  i  ,   ` 4  i  ,   ` 8  i  ,   ` <  i  , I  ` @  i  ,   ` D  i  ,   ` H  i  ,   ` L  i  , I  ` P  i  ,   ` T  i  ,   ` X  i  ,   ` \  i  , I  ` `  i  ,   ` d  i  ,   ` h  i  , ` l  i  4 I ! `p  i  &$ " ` t $ # ` x , $ ` |   44 I % `   q  =  0( & ` #, ' `    4, ( `    4, I ) `   00, * `     , + `     8 , ` !  9  Q  0&& n  !){OȊKta        ʣ   rU    - -   Y 10 Y0 Y #    0  0      `    0  1      `     0  91      `I    0  Y1      `Q    0  1      `    0  1      `    0  1      ` `I     0  1      `    0  1     `   2  92 0 0 0   `     0  Y2       2  2       2  2 " " "    2  2 & & &    3   13       0  I3     `    0  q3     `    0  3     `Q    0  3      `    0  3      `* `Q    2  4       2  14 ! ! !    2  Q4 % % %    0  q4      `    0  4      `    0  4      `+ `    0  4 t t t   `    0  5 w w w   `    0  )5      `    0  Q5      `Q    0  q5      `    0  5      `    0  5      `    0  5      `Q    0  5      `    0  6      `   $ 0  16      ( 0  Q6 8 8 8   , 0  y6 9 9 9   0 0  6 : : :   4 0  6 ; ; ;   8 0  6 A A A   < 0  7 = = =   @ 0  )7 > > >   D 0  I7 C C C   H 0  i7 E E E   L 0  7 G G G   P 0  7 H H H   T 0  7 N N N   X 0  8 O O O   \ 0  18 Q Q Q   ` 2  i8 T T T   d 2  8 U U U   h 2  8 \ \ \   l 2  8 ] ] ]   p 2  9 X X X   t 2  !9 Y Y Y   x 0  A9      | 0  a9       0  9       0  9       0  9       0  9       0  !:       0  A:       0  i:       0  :       0  :       ) Y  Q       ) Y         0  :       0  ;       0  ;       A 1  i  0" `    ) Y  ;       ) Y  ;       ) Y  ;       ) Y  7       ) Y         ) Y         ) Y  <       ) Y  !<       ) Y  9<       3   Q<       ) Y  i<       ) Y  <       ) Y  <       3   <       3   <       3   < $ $ $   2  < 1 1 1   `    3   = 3 3 3    ) Y  )= 4 4 4    ) Y  A= 5 5 5    ) Y  Y= 6 6 6    ) Y  q= 7 7 7    ) Y  = < < <    ) Y  = ? ? ?    ) Y  = @ @ @    ) Y  = B B B   $ ) Y  = D D D   ( ) Y  > F F F   , ) Y  > I I I   0 3   1> K K K   4 ) Y  Y> L L L   8 ) Y  q> M M M   < ) Y  > P P P   @ 3   > S S S   D 3   > W W W   H 3   > [ [ [   L ) Y  > h h h   P ) Y  ? i i i   T ) Y  ? j j j   X ) Y  1? k k k   \ ) Y  I? l l l   ` ) Y  a? m m m   d 3   y? q q q   h ) Y  ? v v v   l ) Y  ? x x x   p ) Y  ?      t ) Y  ?      x 3   ?      | ) Y  @       ) Y  !@       ) Y  9@       ) Y  Q@       3   i@       ) Y  @       ) Y  @       ) Y  @       ) Y  @       ) Y  @       3   @       ) Y  A       ) Y  )A       ) Y  AA       ) Y  YA       3   qA       ) Y  A       ) Y  A       ) Y  A       ) Y  A       3   A       ) Y  B       ) Y  B       ) Y  1B       ) Y  IB       ) Y  aB       ) Y  yB       ) Y  B       ) Y  B    -  W     W    W    _    _    _    _    _    _  _  _ 0    0    0 P   0    0    0 P   0    0    0    0 H   0 (   0    0    0 `   0   0 0   0   0   0 h   0   0 8   0   0    0 p   0   0 @   0    0    0 x   0    0 H   0    0    0   0    0 `   0    0 X  0    0 P   0    0   0 (   0    0 X                                                                      !  "  #  $  %  &  '  (  )  *  +  , w                                                                                                                            \      !  " ) ) -     T NM ,{D\XL #LUV% \KA     x \KAT NM ME  H  4 , $ 8 0 @  SP  S  S  S               P  `  $ $ P  H  %    `  " " t  `r ` $   `  9 9  `  ` ( d` icat` A@ ` to  A@ et new s  $ % ! d`&  TO 4   `  : :  ` Q -` ----` ----` ----` ipti` `f x ch  P    % ns: : H  `  5 5   ` ----` ----`  ` %  `N ` mbob` % `f or` ols @ dic  " ( d(  < ( `  4 4 >  `  C`r rmat` " `  \ --------   ( % ---- B  ` h    r  )E  hand , % J  `     v  )E  ---- , % L ` ` 8    z  )E X 0  , % N `    ~  )E  , % P 0  `  $     )E ( %  , % R  ` p (     )E x  , % T  ` ,     )E &  , % V h  ` @ 0     )E ` B@*  , % X  ` 4     )E 8  , % Z 8  `  8     )E 0 D , % \  ` x <     )E  , % ^   ` @     )E ---- , % ` p  ` H D     )E h   , % b  ` H     )E   , % d @  `  L     )E 8  , % f   `  P     )E    , % h   `  T     )E   , % j x  ` P X     )E p f bo , % l   `  \     )E   , % n H  `  `     )E @  , % p   `  d     )E   , % r   `  h     )E   , % t  ` X l     )E x  , % ,H  ! `   p!     )E    , % i v ` " ` t" , ,   `   # ` x# u u     % `N `  X $ ` 0 |$ Y Y   )P  A % >  % `  %     )    0 % iT  ` ` , P & ` P &   i  `T `  ` @ @ @ @ `0  H  4 %   ' `  ' T T   )  A %   ( `  ( ` `   )  A % `(  h P  8 % `z `  , ( ) `   ) u  iT   i   * ` h *   ~  )-   4 % `.  `2  & X + `  +     )-   4 % `.  `2  ,0 , `   , , ,   i6   i8    i:    i `<  `>  `@  `B  `D  `F       %     % b0 ( H b 4   @ " <   @ " @   @ " D    @ b X    @ " ` @   @ b   @    0  8 P  H  P h X   0  @ p    H      P      (  ( X ` X     ` x    8 :@  - -     X      fS H %Q ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 4 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 0 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 1 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 6 ( * \ R f f f f * 2 T 5 1 e 1 2 5 0 c \ 0  * \ R 3 * # d  * \ R 3 * # 6 3  * \ R 3 * # e $ * \ R f f f f * 2 T 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 R 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 S 5 1 e 1 2 5 0 c ߗ                   0      "  &                !  %        t  w                   $ 8 ( 9 , : 0 ; 4 A 8 = < > @ C D E H G L H P N T O X Q \ T ` U d \ h ] l X p Y t  x  |                                                            $  1  3  4  5  6  7  <  ?  @  B  D $ F ( I , K 0 L 4 M 8 P < S @ W D [ H h L i P j T k X l \ m ` q d v h x l  p  t  x  |                                                         (            8   @   H   P   X   `   h   p   x "     "     "     X   * 8  h          X  "       (   X 0   .             X  "  x    4          8  $ 0  X   h                        X   x 6             X  "  p  x                     (  @  H  h  x                X   @ 4 X            X  "  8  @  H  P  X  `  h  p   x           0  @   `  p                    (   0  8  X  h  x      X  ( 4 @  x     X "   (  0  8  @  H  P  X  `   h           (  8   X * h   &           4   P  , `   h    0  @  H   P   X  `  h   p X x   6     8  @  P X  h X p "                           @  P   `  p                 0 * @  p 4    0       (  0   @  H   P  X  `   h X p   4     0  8  H P  ` X h "                       @  `  p                  "      0  8  @  `  p                *   " 0  X X h   8     (  0  @ H  X X ` "        "        "        "       0 "  8  @   P "  X  `   p "  x      "        "        "        "        "       0 "  8  @   P "  X  `   p "  x      "        "        "        "        "       0 "  8  @   P "  X  `   p "  x      B   (             X   ` ( x            X  "  H  P   X  ( h "   "            8  P  p   x          >       ( & @  h    p X x  .  !  0!  8!  H! P!  `! X h! "  !  !  !  !  !   !  !  !  "  "  0"  @"   H"  `"   x"  "  "   "  "  "   "  "   #   # 8 (#  `#  h#  x#   #  #   #  #  #   #  #  $  $  $  0$   8$  H$  X$  h$  x$  $   $  $  $  $  $  $   $  %  %  (%   8%  H%  X%  h%   x%  %  %  %   %  %   %  %  &   &  0&  H&  P&  h&  $ p&  &  & " &  &   '  '  '   '   ' ( ('  P'   `' X h'  ' 8 '  (  ((  0(  @( H(  X( X `( "  (  (   (   (  (  (   )  )  ()   8)  H)   X)  h) 8 x)  )  )  )   )  )  )   *  *  *  0*  @*  P*   X*  h*  x*  *  *  *   *  *  *  *  *  +   +  (+  8+  H+   X+  h+  x+  +   +  +  +  +   +  +   +  ,  (,  0,  H,   P,   X, & `,  ,   , X ,  , @ -  P- 8 h- : -  -  - -  . X . "  h.  p.  x.   .   .  .   .   .  .  .   .   . X /  X/ P p/  /  /  /  / /  0 X 0 B  h0  p0  x0  0  0  0  0   0    0  0  0  1  1   1  (1  @1   P1 H h1  1  1   1  1  1  1  1   2  2  02  @2  H2     P2  `2  x2  2  2    2  2 , 2  2  3  3   3  (3  @3  P3  X3  `3  p3  x3  3 0 3  3  3  3   3  4  4  4   (4  @4  P4  X4   `4  x4  4  4   4  4  4  4   4  4  4  5    5  5  85  P5  h5  5   5 z 5   86 X P6 N 6 B 6  @7  H7 " P7 Z x7  7  7  7  " 7 R 8  x8  8  8  " 8 X 8  9  (9  09  " 89 T `9  9  9  9    9  9  :  :   :  (:  8:  @:   H:  `:  p:  x:   :  :  :  :   :  :  :  :    :  ;  ;  ;    (;  H;  X;  h;  p;   x;  < ; 6 ; <  0<  P<   `<   h<   p<  x<  <   < X <  = @ 0=  p= . =  =  =  = =  = X = "  H>  P>  X>  p>   >  >  >   >  >  >   >  >   ?  ?   ?  0?  @?   P?  `?  p?  x?  ?   ?  ?  ?  ?  ?   ?  ?  ?  ?  @   @  @  0@   @@  P@  `@  p@   @  @  @  @   @  @   @  @  A  A  0A   8A  XA   hA   pA $ xA  A   A X A  B . (B  XB . pB  B  B  B B  B X B "  0C  8C   @C  HC  PC  XC  `C   xC  C  C  C  C  C  C  C  C  D  D  (D  T 0D  D & D  D  D  D  D  E   E  0E , HE  xE . E  E  E , E  F . F  8F   @F , XF  F . F  F   F  F  F  G  G  @G  HG  " hG $ G $ G $ G " H $ 0H $ XH B H " H " H   I $ (I * PI & I * I ( I . J & 0J * XJ & J ( J , J " K * 0K ( `K , K . K   K   K  K  L   (L B  0L  8L  HL  XL  hL  xL  L   L "  L  L  L  L   L  L   L   L  M  M  8M  HM " hM  M  M  M  M   M  M  M  N $ N  HN  PN  `N   hN   pN  xN  N   N "  N  N  N  N  N  N   N  O   O  O  O  8O  ( HO   pO R O * O  P   P  (P  0P  8P   HP B  PP H hP H P  P 2 Q 0 HQ > xQ 4 Q D Q 0 8R 8 hR : R  R $ R 2 S H XS   S   S   S  S   S  S  S  S  S  S  T  T  T   0T   8T  @T   HT   `T   pT   T   T  T  T   T T x ] ABHRVGKLNXD   Module variables ] 0 ]  ] X ]  ]  ]  ]  ]  ]    ' m h  ' m P P  '  m 8 Q -------------------------------------------------------------------------------- Description: @ $ 'Exit' button handler % Parameters:  Returns:  Misc: Q --------------------------------------------------------------------------------  A@r  o  Q -------------------------------------------------------------------------------- Description:  ' 'Process' button handler '' Parameters:larati Returns:  Misc:ing Q --------------------------------------------------------------------------------  x  - It will enable logging for validation routine erro  A@  ] 0    Get the new texts  ! d$   0.000 $   ,  . $   ( d   Write to Application element A@  hor: A   Write to screen strings'' A@     Set new scale  ! d$  ' !    TODOAV!   ! d A@`  k  |   B@ nd theo  Q -------------------------------------------------------------------------------- Description:  0 PlantNo combobox changing handler Parameters:  Returns:  Misc:  Q -------------------------------------------------------------------------------- P ]  ]   !   %   ' r r   Update the comboboxes2 S  r %  ' it    or  Set the controls $  ! B ( dic $  ! D " ( dd  Clear the controls  Er ( d " ( d ''k p d h   Clear the controls format ( dsage " ( d Ak o  Q -------------------------------------------------------------------------------- Description: - Type combobox changing handler Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------  ]   ]  ] 0 ] H ] ` ] x ]    Clear the controls ( B@* ' & , ! d'  . ! d'       Update the comboboxes    $  %  '     z $  ! \  %  '       Fill the Size combobox   $  % \ ! Z'     $  ! T ( B@0   d  ' & k  d  ' & k  d  ' & k  &   Clear the combobox list 2 B@* ( B@*  B@* d p   Try to set back the texts ( (  k 8 o 0 Q -------------------------------------------------------------------------------- Description:  - Size combobox changing handler Parameters:  Returns:  Misc: Q --------------------------------------------------------------------------------  ]  ] ( ] @ ] X ] p ]  ]  ]    Clear the controls  B@*  , ! d'  . ! d'  ( ! d'        Update the comboboxes    $  %  '     $  ! \  %  '      $  % \ ! Z  %  ' f  f   f  $  % \ % Z ! V'      $  ! N  B@0   (   - Check the border name (can not be DOC or XLS)  6 ( 8   % Test if border starts with XLS or DOC  ! d         ! d   $  $ L  DOC    ! d   $  $ L  XLS      Disable the process button 6 ( 8 k  k  k  k  k  k  o  Q -------------------------------------------------------------------------------- Description: / Border combobox changing handler Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------  ] 8 ] P ] h ]  ]  ]  ]  ]  ]  ]    Clear the controls 2 B@* 2 ( d , ! d'  . ! d'  ( ! d'   ! d' N      Update the comboboxes    $  %  '     $  ! \  %  '      $  % \ ! Z  %  ' f f   f  $  % \ % Z ! V N %  '      f  $  % \ % Z % V ! P'     $  2 B@0  2 (  k k k k k o Q -------------------------------------------------------------------------------- Description: - Index editbox changing handler Parameters: Returns:  Misc: Q -------------------------------------------------------------------------------- H ]  ]  ]  ]  ]  . ! d'  , ! d' r r   Update the comboboxes  r  $  %  '      Refill Type combo . B@* $  ! \' \   \ $ \ ! T . B@0   . A@>  . ! d  . ! @  . (  k  d   Clear the combobox list . B@* ( B@* k x d p   Clear the combobox list . B@* ( B@* k ( o  # Private Sub optInstallation_Click()  edtDwg.Enabled = False  edtSheet.Enabled = False  End Sub Q -------------------------------------------------------------------------------- Description: 1 To upper case conversion functions Parameters: Returns:  Misc: Q -------------------------------------------------------------------------------- ( D $ H  ' D o (  D $ H  ' D o   D $ H  ' D o  ` D $ H  ' D o   D $ H  ' D o  0 D $ H  ' D o   D $ H  ' D o h  D $ H  ' D o H h D $ H  ' D o (  D $ H  ' D o  8 D $ H  ' D o   D $ H  ' D o   D $ H  ' D o  p D $ H  ' D o   D $ H  ' D o h @ D $ H  ' D o H  D $ H  ' D o (  D $ H  ' D o  x D $ H  ' D o   D $ H  ' D o  H D $ H  ' D o   D $ H  ' D o   D $ H  ' D o h  D  a $ j  D  z $ j   D $  $ L $ j ' H d  D ' H k  i  Q -------------------------------------------------------------------------------- Description: " Form initialization Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------  ] H ?'   " Load and parse the Index.Cfg file     %  ( x   Prefill the Plants combobox    $  ! @  B@0    Fill the office codes       $  z B@0    Select the first item z (   | ( ~  ( ~  ( ~  8 Get the application element and initialize the controls A@     Resize the form !   !   (  k  o  Q -------------------------------------------------------------------------------- Description: ( Initializes form controls Parameters: Returns:  Misc: Q -------------------------------------------------------------------------------- ` 0 ]  ]  ]   '  A@  d    Get application data A@  k    Fill the data z ! A@>  !  ( d !  ( d !  ( d !  , ( d . ! A@>  ( ! A@>  !  2 ( d !  ( d !  ( d ! $  ! $   0.000 $   ,  . $   ( dd  !   ( dk   Set scale ! $  '   ! A@>  ! D " ( d !  ( d !   1 K T  | ( ~  2 K T  ( ~ n  !   1 K T  ( ~  2 K T  ( ~ n p !   1 K T  ( ~  0 K T  ( ~ n    Initialize new controls !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d B@*  VECTOR B@0   HYBRID B@0  !   VECTOR  VECTOR ( d d   HYBRID ( d k    Set the border combobox text $  ' N   ! @    %   $ L N$ L    (  y  k   |    frmTba.InitializeControls B@ B@> o  Q -------------------------------------------------------------------------------- Description: 2 Fills right-side controls with data Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------  8 !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d ! $  ! $   0.000 $   ,  . $  ( dd H !  ( dk 0 !  ( d ! D ( d !  ( d !   1 K T  ( ~  2 K T  ( ~ n  !   1 K T  ( ~  2 K T  ( ~ n P !   1 K T  ( ~  0 K T  ( ~ n    Initialize new controls !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !  ( d !   VECTOR  VECTOR ( d d   HYBRID ( d k  |    frmTba.FillExtraControls B@ B@> o ` Q -------------------------------------------------------------------------------- Description: : Sets the combobox selection by string value Parameters: 1 cmb [in] - combobox control 3 strName [in] - Text to search for Returns:  Misc: Q -------------------------------------------------------------------------------- X ]  ]    '   ! @   %   T ' y ( k    (  o  Q -------------------------------------------------------------------------------- Description: J Verifies if user has entered the correct values in the form Parameters: Returns:  Misc: Q --------------------------------------------------------------------------------   ] p ]  ]  ]       ] 0 '    Drawing Number ! d z ! d$   B@ z  k   Sheet No ! d$    ! d$   ! d    Do you want to set sheet as ! d$       $    ! d$   ( d k 0 k ( k  B@ z  k    Revision number ! d$    B@ z k   Index , ! d$    , B@ z p k h  Verify type . ! d   Please select Drawing Type B@4 . B@ z k  Jo / Ewo ! d$    B@ z d  A@  k   Scale  ! d$    Please enter the correct Scale B@4  B@ z  k  ! d$   B@ z k ! d$   B@ z k ! d$   B@ z p k h ! d$   B@ z 8 k 0 ! d$   B@ z k   Check the dates ! d$ Z ' ! d$ Z '  ! d$ Z '  ! d$ Z '  ! d$ Z ' 0   Check the date chain    ! d$ *  * ! d$ *  * ! d$ *  * ! d$ *  * ! d$ * ' T  T  ** '  R If first date is empty or there is an empty date in the middle (date length is 8) T  $   *  T  ****   T       / Empty dates are not allowed in the dates chain. B@4 z  k    ! d$ *   H "Const. agency/date" must be the same or later than "Certified by/date". B@4 B@ z  k   ! d$ *   @ "Certified by/date" must be the same or later than "Engg./date". B@4 B@ z p k h   ! d$ *   F "Operations/date" must be the same or later than "Const. agency/date". B@4 B@ z  k  0  ! d$ *   A "Other/date" must be the same or later than "Const. agency/date". B@4 B@ z 0 k ( ! d$ "   B@ z  k  ! d$ "   B@ z  k  ! d$ "   B@ z  k  ! d$ "   B@ z P k H ! d$ "   B@ z  k  ! d$   B@ z  k  ! d ! d$ $    A@&  B@ z  k  , ! d . ! d ( ! d ' T  5 If Not VerifyFormatType(cmbFormat) Then Exit Function 0 If Not VerifyFormatType(cmbFormat.Text) Then  cmbFormat.SetFocus  Exit Function End If'  z    frmTba.VerifyData B@  ErrorCodes.ReRaise i @ Q -------------------------------------------------------------------------------- Description: 9 Writes the data to the application element Parameters: ' adData [in, out] - text data Returns:  Misc: Q -------------------------------------------------------------------------------- P    Fill the data z ! d (  ! d (  ! d (  ! d (  , ! d (  . ! d (  ( ! d (  2 ! d (  ! d (  ! d (   ! d (   ! d (  " ! d ( D ! d (  | ! ~  1 (  d  2 (  k p ! ~  1 (  d H  2 (  k 0 ! ~  1 (  d   0 (  k ? ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d (  ! d  VECTOR  VECTOR (  d >  HYBRID (  k >   Set application data A@ | > >  frmTba.WriteAppElement B@ B@> o H> Q -------------------------------------------------------------------------------- Description: ( Writes the modified texts Parameters: ' adData [in, out] - text data Returns:  Misc: Q --------------------------------------------------------------------------------  < ]   ] 8 ] x ]  ! $  '  !   A K T ! l'   B K T !  '   C K T ! n'   D K T ! p'   E K T ! r'  n ;  M Try to obtain the SACSV8i_DIR environment variable and get the cell lib path 4   C:\SaudiAramcoV8i\tbv\tba.cel ' z d 8; 4 tbv\tba.cel ' z k ;   Attach cell library z DB@*   Set cells !   1    emg !   _EMG  A@R d :   emg !   _EMG  A@R k H: !   1    res !   _RES  A@R d 9   res !   _RES  A@R k 9 !   2    con !   _CON  A@R d p9   con !   _CON  A@R k 89  Write texts !   1    r  x  A@B d 8   r  A@B k 8   jo !   A@B   type !   A@B   ddesc !   A@B   gdesc !   A@B   pdesc !   A@B   loc ! D  A@B   plant !   A@B   index !   A@B   drawing !  !   - !   A@B   sht !   A@B   rev !   A@B  New texts   Da_eng !   A@B  Da_eng_date !   A@B   Da_cert !   A@B  Da_cert_date !   A@B  Rfkd_const !   A@B   Rfkd_const_date !   A@B   Rfkd_op !   A@B  Rfkd_op_date !   A@B   Other_by !   A@B  Other_date !   A@B  DrawingFormat !   A@B   Date !   A@B  RevisionDesc !   A@B  DCCNumber !   A@B   RevisionNumber !   A@B   RevisionNumber2 !   A@B | 4 4  frmTba.WriteTexts B@ B@> o 3  T    00 T ' T T   e  0 T ' Tk 3 T'  i p3 ( A@  ! d$   ! d  ! d ( dd 3 ]  ! d  - $  ' . . ! d  - $  ' . .   ! d  -  $ 0  ' . ]  F ! d . $  ' 2 ! d 2  ( d d P2 ! d ( dk 82 d 02 ! d  - $  ' . .  ! d  - 4 ' . ! d ! d . $   ( d d 1 ! d ( dk 1 k 1 k 1 k 1  A@  o h1  A@  ] ( ! d$   ! d  - $  ' . .   ' . d 0  ' . k 0 ! d  - . $ 0  ' . . ] @ F ! d .  $  ' 2 2   2   * Do you want to set DCC sequence number as 2 $       $    ! d  . $  2 $    ( d k / k / k / k /  A@  o /  $ $ X B ------------------------------------------------------------------ A Purpose: Return location of nth occurence of item in a string.  Coded by: Nitin , Arguments: pStr: The string to be searched. * pFind: The item to search for. 7 pNth: The occurence of the item in string. . Input: From the debug (immediate) window: > x = "The quick brown fox jumped over the lazy dog" ) 1) ? fFindNthOccur(x, " ", 3) 2 2) ? left(x, fFindNthOccur(x, " ", 3)) 3 3) ? mid(x, fFindNthOccur(x, " ", 3)+1)  Output: 1) 16  2) The quick brown + 3) fox jumped over the lazy dog B ------------------------------------------------------------------]  ] 0 ] H ] D` ] x ] D 6 ' < 8 ' > : ' @ ' D ' F F @ b < >  ' 0 x + d +  < > ' B D B ' D F  ' F < B >  $  ' < D ' 0 k P+ H+ i @+ 8+ _ Attribut e VB_Nam e = "frm@TBA" Bast0{2C1 FD5D0-E5 17-447B- 97A8-AFC 95C588CA E}{8A004 CB6-80EF -4C23-AA 55-F301F 55625D3} GlobalSpacoFalse CreatablPredecla Id Tru BExpo se0Temp lateDerivCustom$izD Op tion HlicitCons t Office Codes As$ SngAB HRVGKLNXD ' ModuvariF s Dim mCa- Ind@exes()+I NDEXINFOAPlantPLANTBorderBORDDERHSiz*IdZEca ' !Dou mA8'adDq APPDATAD adApp$bV@dfy Bo oleanAPr operty Let TextB() m =  End " faiDara-d2(4*E= D*8' -? *IDescriG:&g 'Exit' t WhandlerP#met D!ReturnsMisce?) Puv Sub btnI_C`7k(*Unload MA>=Bc !?)a )@Ocess?*a ?*?".**O`rror @GoTo EAHEBaFA+ 'It will enA¥loggifA validl routin3! SetShowM`#age 1# A$x@&If cjqThea ' Gthe npew tehdtS.@Rece(For mat(Val(J), "0.0H00"!,".F"L Writo ȇ elemen@ E#' & @seen ss*B s >mG 'TODOAV$bFi _cmb R, 7If D1;M#`Bq$2p.ortToM sgBoxCurr 0 -;UppAe Q;e/ D = Cfg.'> bBya(ms,2 X:0> -1 ' 2ntrol_0A]C()>.XLocOnP%EBUq ' Crn t>" yP );J Eq D{>/>>Type> >>> ~> O>iN -1 Then >T' Fill the Size comboboFx) m = (jHs@For i B o UBound( T cmb#.Add Item (i).t.NexBt Elseb Clear CTru End If    5ӄ' *ge0 lis9@ITitle1. .OBorder ,' Try t o set batcktWtLw@#B T0C7S ub ' -? JDesc ription:EF changing dler ParatersAR eturnMisc/K P rivatub S_Click"($bDimeAs Intega!`.StrC/db~S"PC   C2 nu) BORDERI8NFO# [ntroldK !S = edt.T~=a)!k"b!h`oLen(Ņ )`0 A A msUpd7se(d$*= TB , Leftf, 1) d Ը4  ?cg{?nd*p!*a!$BAa@N`rr NH7E ֩aGXOC YV] !'Che\b_ nO (can nop^e DOC zXLS_R btnProce ss.Enabled _tD  'Test if starts with Q:'!@ := 36 (R Comp(UCase(Mid(7, 3)), "") 0) Or _?u uE 'D,is"xp butto FaX{ [ = q Sc!yw1 3:  σi| n0σpem!SDP-km$f߈_rr(R9)PADE3""sS &$mPa@ܯA OS 0P' x0 篊z6?OOQ oop gOrB nf#" ByName(m Indexes(n@).arrTyp -1 pThenR< y 4= 8(lDe scriptiorFor i : M o UBound( CgpcmbT itle1.Ad@dItem (iNext|'ListÀI0 End If  Sub ' -? Jh:WA editbox changingB dler PtartAR@eturnsM8isc/K Private H edm_C)De(ĂDimAs IntegA-W6AT Str 6m@/A)TYPEINFOCC= @.!;g=&xLeTn(D)`y0Ly' Upda!the@ combo`6esc A= TB ACfg.Getgb<,, Left , 1)k!C' Refill !C!eCleaHAe *@qv+2h %B .`- SelectC/Val*e=_ KD;EB)a AC`t0?8EElse)' 2 H l`P8@.LI_el P '"opstalla_Clhicka'a"`D wg.Enablded0Fa"$Sheet QUZ%q To upper ca2s?nv YPw funca`@' ZZZ ZA _KeyPresPs(By2 AsciiSMS3OB?{O;;cmbTi0tle1yFuncaKJzcz }I{ {If'|>=c("a")L Aŋ <z ThenC``(U"Chr)DElseUe IfA8' - ?( ' Descrizp*:g A initializzParametersa!MiscE_?C)User_A CA(.Dim i M>C,mScale61# ' Load a?parse t he Index .Cfg filD8Me.Cab&`TBA.Ab (mSizes, m""PlantABord '7% lBC comboboxC#= 1`_ UBound(m#D 6rbNo.AddItem  (i).strN umberC Ne xt# ' FilCoffice1@desLen(OBCo  #fMid, 0i, 1SelectB!first ip S List`0 optRepicPted.~uqTruEDqKDR`' GeS applic0 mentR#2#cont(rolIe4eCzHNot m bVerify F' @ %3C(Width FQ91. + 2 * $Left + 4cFړ/F9A/F5 gs f 0'U' FFF FFOn E rror GoT8o h 1HadyaHAPPDAFCN@9ByNe z>, cKFS Araw;T Mp0DrwNo SheetotrRevis ytr&bH.obCm V`y4peT ale S rLine1"22JoEwoJ3s`*IsfLc(HowMuch6)M`S!yURe@place(@gmat(p!?), "0.000" ," ."4e,# kQQ+' S_s # Q CS y$s Loe?UroS s i5l assifiedS""1"Q`rv v2Gfidry  3  Select Case ad Data.str Emergenc8y  "1"DToptED Yes.Valu e = True% h2hNofEn?r&CS Class?BSCoQ`Re*icted113"ϧ0`nfPGn QrsS ? 1 t b1:_ _ Q =/ t? 4 ϲaO 1O Q߲߲vq$r瑰*p '=HEnrD1rrR_ b (o`x2&E?r_ RhrDt`tPOr"s c[7RZF,U_"XYzOOώ -( ' De scription:< Set s the co mbobox selecZ by string valuexPa rametersKcmb [in ]`-Tcontrol `N Q7 - Text to arch for5ReturnuMisc@) Pri vate Sub SCValByV(tAs Box,c "S) Dim i Intege e nIn8dex = -1For&= 0 To .ListCou`nt - D IfF(i) ='Then FiExit GEnd If>NhCC"4= C Q iOnVerif ies if u ser has "e@bredrr ÷ nBm? A!GFun3yData()GBoolea:On Err DGoChb3aPl!cSlIn PosLongGVdtDA, C R Op |Op@aKbfMSIms.#(*cUFals rawaNumbi]Not No(Ve.,bO fficeCodreb) Kb`Focus!b1b#' Sheet Nof`bDigits@Len/<> 3b `Msg@ ("Do you wa¯t s`f" & Ad dLead/Zer+ , vbYesNo Or@Quesȡ6@ .`? d* I0m< c' Revis nQ%>O(` _ Y 'RY2r" / o`0   ': typ=+cmbT0mjjL;CportTo3+ 0, $"P PseT D? "!%_ _ _ ' Jo / Ew=ZP1Jo ?0Y EO _TS `GcalqIsR@pc S `ssZsX 3lS 'dAcat DA , True[i2_kZ]Ccd qD~ACR*2D3OpTO#c'S ' Check".dt`iFrom (qCU!#R|0= R6dtd chait%= 6imm + "*"P TrW1)G+_MV n. S׫=h In1Pa**"'%fir$stb impty prean eBic middle (2length8J(Leftb(, 1A'`1P"* ")( < `nQ:)P7> 0MYJ portToMs gBox 0, "Empty d ates are not all owed in thepchai@n."  E xit Function,End If If dtDR < AC A :Tri(m(eD r.T ext) <> "" TheF` ErrorCod es.Re"" Const. agency/ Bmust be same or Jl gr an dC@ertifimb iLSetFocusdHw yguy yACy^ yEngg.uD$:;ROpCxR xOp;OperaswPx&y= NiF ormatANRevl, True)@OiOCC^CCNumHberb, ` JPoEwoU!D_bValC  ._Rstr =Index + cmbTypeSizݩ's(0  ~' t"aX /H aQ k9 ,hb:(L og "frmTxba.R eRaise qǎ ' - 1DescripAo@ 10 Wria4a toapplicr elemeDntPar tHersad[ in, out] - tpqaReturn MiscA  Priv@ Sub "AppEs ( As APPDATA)On R GoTo c' FillP c. 3!p#p(Office *S DrwNo;rawingN?Sheet x JisC Z>>M70 @#8AitleLine1 1?u0T2P 2;JSHo wMuchSc alK trPl|ans Lo$22S b8#H9S `PoptRePicted2.`^ueliClass= "1ElF 1 }2`AֱIELDY Emerҋ lcy Ԛ#K lib p@?c I@allDir`("E">= "C:\SaudiA@gco\tbv` |a. k +< "%Attach l!raryC.aYLibAA[C  4@gKEmer"a1Replace!  L, "emg",S @_EMG ], ma#[k" rXv ,@uDbD& Class@7? "res3RES ҁ 3?ze ?leߟ S 2~con qCON "? ? q( ']j~*ReviewO* qaE*r "xo o e t: "jop5Jo, 1 "tytpeT ?r*X9dcitleLine1OOBgOE2OOBpNPla G? "lo L>os//Jp0nt;*NO"inde$WI?d:Q`@'O-"jDrw shSheetrev{Z 17s0ɯc'< N`9dDa_en[cDAEng_н1RQ˟cerkDAC //)s%"Rfkd_PTs R/ / " g_ RD  `P Dopz 'opRDS_byBByOOH#bµ laceText arrX, " DrawingF ormat", adData.str d, dSc@ale, m D Repate &zRev isionDesc E 'CCNumber J&;K%2r&Ex it Sub hError: Codes.L og "frmTba.Writs"ReRaise EndC@ Privk Functa A@ddLead@Zero( As Str@)@If Len ) = 1 ThenC= "0`0" & CElse 2 ,If(@A51 6N edt@JoEwo_AS( ByVal Cancel4MSA s.Return Boolean) SetSh owMessage 0 1Verify(.) 4@ D@-"" M B/9 ARG D im InCCount6Integerh= UBd(Split -")&!B > 0?A ! l = 3 fFind NthOccur0, 3` )lSegme( `: f= Mid T >@ p hj  9T9bSFA In/(1,x8vbnCompare.r p`&k._:2c ?2b@z22!e1^^SuboQoQkQOQa GG<SS7LI'&B=IP %2/3 zGz_" ,HZ* 2 IyIdt2H + 1K2q|UG) /=, D)?_{6/[<98ublic{$#pStrǑ9` , _7)q{? pppsaD<='-  ' Purpose:A locaof nth o|# item in a0.1ad by@Niti ' Argu{s: Q:Q#4 p)be )arched"R, for `{ the InputAFrom ad ebug (immedi) (dow'h x,"quick@ brown x jumped overlaz`y dog 1P) ? k%xH  a2lef|t( ?31J3]Am`?v+G'0 Out` 16?a fo' VHold3f[5cint2QpSay 4Keep~nv>=b-% q 2u= pNth intKeep = 0xnHX Do While n <Hold` If InStr(str., Find) ThenT Zf2 Occur Exit Do-Else9 Say 2m1g p -+ A$n + 1 b13Midi>+ Len p) l;End IfLoop   Functio  f J & $   L h GetCurrentProcessId h< GetLocalTime       x   R R ME (   (  @ < < <  h  ␔p H P L ʐ L ʐ L ʐ L ʐ L ʐ L ʐ@ L ʐ8 L ( L H| L l er  h  h  h  h  h(  h@   hX  h +      (  )   %  X ' '   i  `  ` ` ` `  >0  p  4    i   i   0   p     i    i   +H       i    ir   `  +      i    i   $ i   `     % ␐H K ␒ H ␖( H ʐ~x L ʐ L ʐ L ʐ6 L ʐ|L 0     p (  H 0 p 8  p P x   @  H       p   H  8 + ` %Q ( * \ R f f f f * 2 ; 5 1 e 1 2 5 0 c \ 0 1   R   h p           F    `  x            $          8   P   h          L  (   8  @  H  P  X  `  h  p  x    H   (        \   0  8  P $ X  "                         *   8  P  h  p  x                             0 $ 8 ` "  p 2 x     8    $  0 "  @ * H   x  8    $   "   "    8 @ 2 P   $   "   4       ( 0 2 @  x $ "  4      " (  P * X (   $  B   (  H   `   h             B     (  H  P p p f   H  X  p 0  *   ,  & 0 * X 2  6           0  ''' L A module which holds all constant error codes and error reporting functions  Author: Rimantas Benentis  '''  X  Option Private Module 08]D    ]D H  ]D  8.1.1.11 ]D ARAMCO SACS p ? Base of all errors. Each module should have its own error space ]D   ( ]$ P  General errors ]$  ]$   x ]$    ]$    8 In XML file  ]$    ]$    ]$    T ]$    ]$     Custom errors ]$  d @ ]$  e 8  ''' ` E Declaration is needed to get current PID and for getting system time  ''' M' ^  ^  ^  ^  ^  ^ ( ^ @ ^ X p x p   '''  Logs current error ` V Parameters: where - a string representing source of an error (module + function name)  Raises: Nothing  Author: Audrius Pundzevicius %  '''   ] x ]  ]  ! '  ! '  the ! '  ]    $  '    $ Append the error message to log file    ----   We got a file name]  '       V  k X P  H [   (   (   (   o   '''   Reraises current error  Author: Audrius Pundzevicius  ''' r  !  !  !  !  !  B@| o H  '''   2 Shows the message box with formated error message  Author: Audrius Pundzevicius ' ~  '''  0 !  ! $    Error A@ o  '''  2 Shows the message box with formated error message  Author: Audrius Pundzevicius   ''' do p  $    Error A@ n ero   ''' N + Shows the formated error message in promt 7  Author: Audrius Pundzevicius  '''  2   - Reporting to prompt is cadSpecific operation  !  ! $  "B@$ o   '''  % + Shows the formated error message in prompt  Author: Audrius Pundzevicius %  ''' 0  - Reporting to prompt is cadSpecific operation   $  "B@$ o   '''  Formats message for displayx $ Parameters: code - Code of an error% n wr ! msg - Error message  Returns: Formated String  Author: Audrius Pundzevicius  ''' R  " The string should look like this:   [Err code] Message] 0   Format error code    Do nothing X  e  [   ]  ' d (  [ $    ]  ' k   r ' i  H ]  $   '  <  PID ]   A  ; Local Time %       !   0000$    /  !   00$    /  !   00$     '        !   00$    :  !   00$    :  !   00$   '      Do nothing    e @ Error number    [  $    ]   ' d 8    [    ]   '  2 k     '  <  Error description A    '  < Error source    '  =  TDO CAD version T  D!   '  <  CAD Application name 2  D!   '  <  CAD application version   '  < Project name ' i _ Attribut e VB_Nam e = "Err orCodes" '  A module w hich hol ds all c onstant el  n andreporti ng functi Z utho@r: Rim >a s BenentLis tOp. Explicit Priva BM C bEnableLoggxA Z@oolean FPalse 0s File SXVersc 8.1 1  FsProject-ARAMCO SACS3'Base of`s. Eas hould ha ve its ownspacj)= vbObB + 1000ub W M$NoC= 'Gdral@fP InvalidPar ter@X NNAve nelRefI %O Registry KeyNotFou =  2$deT 3  'In XML f~OCfg Loaded *4O  A,se& 5 Du LevelI6n  6 #DGNFormatL &7O NerCtls 8A'Custom;TBAwYearvIntegerMonthDayOfWeekRHou9 in@SedMillissE _a'##'e F$ GetC&ces sId Lib "kernel3 2" () Long%SubALocalT*nxlpSb.&,){k:sf7B=@ s: ere - a |E `Xresas)cKá(+ e n`@?' Ra ' dh $A Audrius P@zev uF (wh cEDim numbZ(!KDescriCFS,D .h  C?  !logLine>S[C=32(,{@9 ,QOn3X GoTo `Skip_'Appe*the E m(age 0=@VqIfzLen(y) > 0 Then'We got#[b AfnJ7q`= Free~O ZPV 0#f7 , 4Clo'0|A;If }e:;v Debug.s&e$" ]"9(=9""1 /;04er4< ' 4nd4R` Re}b9(#Q # ,  x Help tex@ ? P Shows ('box wi^ds }bI)@q $ ToMsgBox7WC zporFMs0Dis0ry(%7 ),@CritiX,Tp Q0bQR(16aP, SBF__W _sGin pprom`'!tmpua2G̀Mapt c adSpecific op48Utils.aorTo"e"g#0" !u<pr5/ !2o! P =%%AN3svjy d:P jcPԉa\5 pmsg `r \FReturn H#3 QOHOHTOUF p: EѲ g) As String ' The s should look like this: [Err cod e] Message0 Dim8 @' For mat erroCHIf C U h= 0nD0o no Eltse/>/=@ "[" &V& "] "T>/ Hex(D) nd If3corDi`splayb+&( ms EFu nctio m Private  GetLog Line(numberLong@, desc,8 srrepsultX =5CurrentProc@qId(;vbTab\ 0'PIDCwtimeYSTEMTIMECalBl1calT (1@;me)J'Lzo  )&.wYearP, "0 "i/8" _MonthmDay E*Hou*:'*inuteHSecond?EC@D$<= &HF bs,'b cA%N`su!oc:]w"Cv  bxNyo Bn& ripC{ Av j sFcĪP V8ers@'T DO CAD vc( Applica.Na {f'! H n@_ n.B as`pjectF0 '竀   k                          ! # $ % & ' ( ) + , - . / 0 1 3 5 6 7 8 9 : ; = > ? @ A B C E G H I K L M N P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e g h i j k l m n o p q r s t u v w x y z { | } ~        x  ME   @  ꐎH H p H ꐊp H ꐌ H `  H   ( %Q   d   p   x             ( ^ This file was automatically generated from product information file for Auto-SACS 6.0 (SACS )-- ]$  AutoSACSH Auto  Full version tag ------ ]$ 08.11.00.22 p  Short version tag ]$  08.11  ,  Attribut e VB_Nam e = "Mod ule1" '  This f ile was automati cally ge nerated from pr t ct inforJonr  A r -SACS 6.(0 ()cPu blic Con st PRODUCT_SELE ID As S  ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m o p q ] t u v w x y z { | } ~        x  ME   (  <. < < <  ( h +8 @     i ` i i  i i  i"  8 8 x   % x     .        `2 esen&8 L ,0       8   %Q    .   H$      0 6 8 2 p 6 "  $      (   0  @  H   P   X  h  x      6  (  6  " 0   8 6 @ , x 6  "       *    8 H x     $  ]   ] 8 0 ------------------------------------------------ , Description: It opens AutoSacsVersion dialog 0 ------------------------------------------------8   Check if form is already open  ,!  k !   . ,k  ,  ~ . ,  ,B@ k p o h 0 ------------------------------------------------ " Description: It opens Release Note 0 ------------------------------------------------x o  0 ------------------------------------------------ % Description: It opens TitleBlock Help 0 ------------------------------------------------ ]  4  tbv ' 2  open  help.doc 6 2 &A@ o  Attribut e VB_Nam e = "SAC SMenu" Option E xplicit @ Priva D eclare FuncDShel lExecLib "32.dl l" Alias&JA" _  (ByVal hwnd As Long, lpOperab S File2PT?Para ters (D irectorynShowCmdR*P)U Const SW_SHOW 5 Dim frmV <v'-, 'Descri: It open mutoSacs7dialog 0Pub {@ Sub AK()-@'Chec k if for m is already#CuO rror Resbu@Nex AI FF.VisibqThenCEIfC@ Err .number `<> 0 SetI[= Notxhin@@A'G`oTo 0mIsKewA Jx . vb Modeless' A ^mTR aseA1e"A*es@F nP@XTitleBlo`KHelp_ P W`nTB! DWr`~~0f= IyallA@+ "tbv ʛ0, "n" Ap.doc`vbNullSD ,Agh& rU    , `   4,  `   44  `     =  &8  `       0=  &4 !  ` 9  q  t 0T I  ` 9  q  )  A  a  y    t 0+4 ++4 q  ` 9  a  t +@   ` 9  q   a  y  t 00++8   ` 9  q  a  t 0+T  ` 9  q  A  a  y        t 04 ++8  ` 9  q  a  t 0+H 9 ` 9  q    a  y    t 00++L a `      )   444D  `      444(   `   0,   ` I  a  0+(   ` q  0$ )  `   , n  rU  ~|      0    0    0    0   0    0 P   0   0 H   0  0   0   0    0 @   0   0 H   0    0    0                                         rU     P  `         4t t t D   `   !      0&t t 8   `   f R     ^         x   R0 R  ME  0   $      @  <  <  0  ^    0  0       M` Q - B  `   B B   )  X   F @ % tingiT  rmatir   i  0  ! i6  ! 8h    % `` x 4 !   % `  +J  `   * *   )8 H      @ % ! iT h  A@ i     8  ai  % `` !  4 !   % ` 2 +L ` 8 0 A A -  )p    rite new X @ % ion iT   ! )4   2 A % i    ! i6   i    !   % P 2   % p  B  % : !   % ` 2 +P `     n  )( 8  ise s read u  @ % icatiT X  , Ifi   700  ! "  % 4 A@   % R@ `  ' '   )0 @   B@&   @ % iT `  ----iP   ----i    ----i6   iT   s a li   xt f  % `` 48 a Un  % V `  i i   )   om A % )   - sA % )   ns: A % iX   tring `  h ---- --------P   % ----`T --- +H `      )   A % )   (A % )@  A % +Z  `    0  iT  ipti `  `   $ $ 9  ib   i   0 ` ] `T te `d db  bloc  6   f - s $ % j R  % +l  ` (    ]  iN  ----` --- `T H `~  ' `d ~    $ j   + `     x  ` ----`d ----  ----  escriptih  ꐶ E ˜X B   H   0   @      H  P     x      0   0  X    %Q  * \ R 1 * # 1 6 5 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 5  * \ R 1 * $ 9  * \ R 1 * # 1 4 1  * \ R 1 * # 1 5 1 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 6 $ * \ R f f f f * 2 T 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 S 5 1 e 1 2 5 0 c ( * \ R f f f f * 2 T 5 1 e 1 2 5 0 c \ 0 @          0  P * `          <         (  0  8  @  H  P  X : ` (          N   8  @  H  P  X  `  h  p  x                  X    J 0   F         X  B  h  p  x                      (    @   P  `                   0   H < `               8  P  h    "       L   @  H  `  x               8  P  h                    X  P B h  F    (  8 X @ B        (   (   8  H  X   `  h   p  x             (  * @   p             0  H   `                (  @  X  p       ,  J  2 P                     0  @   H X P   L  4   H > ` <    0    0 X 8 B                                (  0   8 X @   N      6  > X <         X  "  `  h  p  x           $              X   p <      D  4 0  h  p P     X  B  @  H   P   `  x              X    < (  h  p D  4  0   8  @ > P    X  B              (  0   8   P  `  h  : p     &      0  @   X $ h  @             &   (  H  h   p * x      X    R 0     D      4  @  P X X "            !  (!  8!   @!  X!  h!   !   !   !   !  ! H !  ("  @"  P"  X"  `"   h"  p"  x" @ "  "  "  "  "   " 0 #  0#   @# X H#  # \ #  $  $ D 8$ 4 $ : $  $  % > % P%  `% X h% B,  %   %  %  %  %   &   &  (&  0&   8& $ P&   x&  &  &  &  &   &  &  '   '  @' & H'  p'   x'  '  '  '  '   (  (( 4 0(  h( 4 p( 4 (  (  (  )  )    ) X ()  ) < )  )  ) D ) 4 @* 4 x*  *  * > * +  + X + B  x+   +  +  +   +  V +  ,   ,   (,  8,  @,   H,  X,  p,  x, $ ,   ,  ,  ,  ,   , X ,  H- < `-  -  - D - 4 .  @.  H. > X. .  . X . B /   /  /   (/  0/  8/  @/   H/   `/  p/  x/   /  /   /  /  /   0 $ 0  @ 80  x0 4 0  0  0  1  1  1  1 . (1  X1  h1  p1   x1  1  1 " 1  1  1  1   2 * 2  82   H2 X P2  2 R 2  3  3 H 83 8 3 8 3  3  3 6 4 @4  P4 X X4 B  4   4  4   4  4  4   5  (5  85   @5 X H5  5 Z 5  6  6 H 86 8 6 D 6  7  7  7 7  07 X 87 B4 " 7   7  7  7   7 $ 7   8  8  @8  P8  h8   p8  8  8  8  8  8  9  9    9 X (9  9 R 9  9 6 : F @:  :  : :  : X : B ;  ;  (;  0;   8;  H;  X;  h;  x;  ;  ;  ;  ;  ;  ;  ;  ;  <   <  <  0<  8<  @<  " H<  p<  x<  <  " <  <   <  <  =  =  =  , (=  X=  h=  p=  =  , =  = , =  =  >  >  >   (>  H>  h>   > 0 > 4 >  ? P ?  p?  ?   ?  ?  ?  ?  @   0@  P@   p@ & @ " @ & @ $ A * 0A " `A & A " A $ A ( B  (B & HB $ pB  ( B * B   B X B  PC ^ hC  C 6 C F D  `D : pD D  D X D B  E  (E   0E  @E  0 XE  E  E  E  E  E  E   E  pP xG  H  H  H   H B  H   H J H  HI   PI  XI   hI "  pI  xI   I  I  I  I  I  I   I 4 I  I  J   J  8J  XJ   pJ  xJ   J  J  * J Z J  (K L @K  K  K  K  K   K * K \ K   XL B  `L  hL  pL  xL  L  L   L   L  L   L   L   M  M   M  (M   8M   @M  XM  `M   hM  pM  xM   M B  M  M  M  M   M  M  M   M   N   (N  8N   HN  PN   `N   hN  pN  xN   N N x ]$ -C6? ] X  Const APP_ELEMENT_ID = 102  TODOAV # General application data structure 0 ^ H ^ ` ^ x ^  ^  ^  ^   5 The following 3 items are in the s_drawing_no member ^  ^  ^   ^ 8 ^ P ^ h ^  ^  ^  ^   3 The following 3 items are in the superceeed member : C^    1 - yes, 0 - inst removed^  ^  ^ ( ^ @  H The following elements are present only in a new version of App Element w^ X ^ p ^  ^  ^  ^  ^  ^   ^  ^ 0 ^ H ^ ` ^ x ^  ^  ^  p @ Q -------------------------------------------------------------------------------- Description:  D Function gets and parses the Application data element 2 Parameters: or a ? adData [in, out] - application data structure Returns:  Misc: Q --------------------------------------------------------------------------------  ] @ ] ` ]  ]  ]    Set the default values  1.000 (   VECTOR (   '  ! ! .  ! b ! ! l  ! !    ! .  !     We found our element ! .  (    $  (    $  (    $  (    $  (    $  (    $  (    $  (   $  ' T  5 The following 3 items are in the s_drawing_no member T  $  (  T   $  (   T  $ ( (    $  (    $  (    $  (   2 $  (   2 $  (   2 $  (    $  (   2 $  ' T 2 superceeed  2 $  ( D   $  (   E Old format does not have the foolowing fields but it is not an error and   New fields ~$   2 $  (   $  (  f  2 $  (   $  ( G  2 $  ( ~  $  ( AN  2 $  ( s  $  ( W  2 $  (   $  ( x_   $  ( ~  $  (   2 $  ( xt   $  (  s'  x @ k 8 k 0 ( z   '  i  Q -------------------------------------------------------------------------------- Description: Q - ; Function writes the Application data element ------ Parameters:cripti ? adData [in, out] - application data structure he Returns:  Misc:5 Q --------------------------------------------------------------------------------  ] X ] x ]    Find the existing element ! ! . format ! b the In ! ! l  ! !    ! .  !   ! . --x  d  . k  k  x (  !    A@  !    A@   !    A@  e !    A@  | !    A@  op !    A@  !    A@  r !  !  !   A@   !    A@   !    A@  ai !    A@  l !   2 A@  e !   2 A@  " !   2 A@  xS !    A@  x.   2 A@   ! D  2 A@  L !    A@    Write new data fieldsion !   2 A@  !   A@  G !   2 A@  n !   A@  v !   2 A@  ' !   A@  S !   2 A@  ra !   A@  % !   2 A@   !   A@  B !    A@  ar !   A@  v !   2 A@  $ !    A@  A  & Application element size must be even.  C Otherwise incorrect size is read using GetApplicationData function.  , If 701 bytes are written, only 700 are read. ! "      A@  k @   Create a new element    $ $ .   B@J d   B@& B@ k  i  Q -------------------------------------------------------------------------------- Description: F Function reads a line of non-Unicode text from file and . converts it ti a Unicode string Parameters: 8 db [in, out] - Data block to read from 6 nLength [in] - string length to read Returns: ) A converted Unicode string  Misc: Q --------------------------------------------------------------------------------  ] @ ] X ] p ' * '    ~ ( B@, (  ' * k *  ($  '  k i Q -------------------------------------------------------------------------------- Description: H Sub writes a line of non-Unicode text to a data block and Parameters: 0 str [in] - string to write 8 db [in, out] - Data block to read from 6 nLength [in] - string length to read Returns:  Misc: Q --------------------------------------------------------------------------------  ] 0 ] H ] ` ] x T ' .   ~  . T   $  $ j  B@, d   B@, k   o  Q -------------------------------------------------------------------------------- Description: 6 Function finds the element info by name Parameters: = arrX [in] - array of text positions info - strName - Element name Returns: I Element info index in the array on success, -1 on failuure  Misc: Q --------------------------------------------------------------------------------  ] 8   ' 0   $  ! T T ' 0y ` k X P i H Q -------------------------------------------------------------------------------- Description: 6 Function finds a text by given position Parameters: = arrX [in] - array of text positions info - strName - Element name * dSize [in, out] - Text size Returns: 7 TextElement on success, Nothing on error  Misc: Q -------------------------------------------------------------------------------- P  . 2]  ]  ]  ]   T$ 0 '      z  k   4 Calculate text coordinates based upon the old scale $  ! < 6 4(  $  ! > 6 4(  $  ! `  D! !  ' ` ! <! .  ! b ! ! l > ! . 8  Check if the element matches 8! *!  4!    8! *!  4!     8. 2 x  k  k     Calculate new element position $  ! <  4(  $  ! >  4(  z    TBAHelpers.GetTextByPosition B@ B@> i @ Q -------------------------------------------------------------------------------- Description: L Function finds all text and saves them to the ELEMINFO fields Parameters: = arrX [in] - array of text positions info Returns: . True on success, False on error  Misc: Q --------------------------------------------------------------------------------  @ ]  ]  ]  ]   ] 0   Reset the "Found" field   $  ( j  ! <! .  ! b ! ! l > ! . 8 8! *! ' < 8! *! ' >   $  ! j < $  ! <    > $  ! >     8! d $  ( r  $  ( jy  k  k   k    9 We've searched for all texts, so set them all to "Found"    $  ( j  |    " TBAHelpers.FindAllTextsByPositions B@ B@> o  Q -------------------------------------------------------------------------------- Description: U Function finds a text by given position and replaces it with a new one Parameters: = arrX [in] - array of text positions info - strName [in] - Element name 4 strText [in] - Text to be replaces Returns: 7 TextElement on success, Nothing on error  Misc: Q --------------------------------------------------------------------------------         H ] P ] p ]  ]   T$ 0 '      z  k    Find the element  T ` 4  6$ 2 . 8 8     Remove the text element 8(  8 D! B@D k ( r   Add new element r 4  D%  . 8   The font might not exist    font061 D! % F 8! (    ` 8! (  ( * dScale ` 8! (  ' * dScale $  ! f 8! (  $  !  8(  $  ! d 8(    Level might not exist    Level $  ! bX D! %  8/     . We also need to rotate (we convert to radians) 8! * $  ! h   8B@H  8(  8 D! B@J N 8B@L k  i  Q -------------------------------------------------------------------------------- Description: 6 Function finds a text by given position Parameters: = arrX [in] - array of text positions info - strName [in] - Element name . dScale [in] - Current scale Returns: 7 TextElement text on success, "" on error  Misc: Q --------------------------------------------------------------------------------      ]  ]  ]  ' J  P Optimization for Report: if the text has been found, do not search for it again ]   T$ 0 '      z  k  $  ! j $  ! r' J d    Find the element  T ` 4  $ 2 . 8 8   8! d' J k  k  i  Q -------------------------------------------------------------------------------- Description: 6 Function finds a cell by given position Parameters: = arrX [in] - array of text positions info - strName - Element name Returns: 7 CellElement on success, Nothing on error  Misc: Q --------------------------------------------------------------------------------   . L] 8 ] X ] x ]   T$ 0 '      z  k  $  ! < 6 4(  $  ! > 6 4(  ! <! .  ! b ! ! l N ! .   Check if the element matches ! *!  4!    ! *!  4!        . Name supplied lets test that name also matches $ L ! $ L    Ok this is correct cell . L x  k  d   ' name not supplied test only coordinates . L x  k  k  k x p   Calculate new cell position $  ! <  4(  $  ! >  4(  z    TBAHelpers.GetCellByPosition B@ B@> i Q -------------------------------------------------------------------------------- Description: L Function finds a cell by given position and returns it's name Parameters: A arrX [in] - array of text positions info 1 strName [in] - Element name 2 dScale [in] - Current scale Returns: 0 Cell Name on success, "" on error  Misc: Q --------------------------------------------------------------------------------      ] x ]  ' P   Find the element  T 4  $ L .     ! ' P k i Q -------------------------------------------------------------------------------- Description: S Function finds a cell by given position and repleces it with new one Parameters: A arrX [in] - array of text positions info 1 strName [in] - Element name = strCellName [in] - Cell name to be replaces Returns:  Misc: Q --------------------------------------------------------------------------------            ]  ]  ]     Find the element  T 4  6 P$ L .       Remove the text element (   D! B@D k  P T     Add new element P 4 D%  .  4    B@  (   D! B@J N B@L k  i  Q -------------------------------------------------------------------------------- Description: K Function get texts and cells from the text and cell elements Parameters: / adData [in, out] - Real texts ? adAppData [in] - application data structure Returns:  Misc: Q -------------------------------------------------------------------------------- @ ]   ] 8 ] x !   A K T ! l'   B K T !  '   C K T ! n'   D K T ! p'   E K T ! r'  S  ! l'  n  ! $  ! $  '  d  ' k    Preload texts if necessary X  A@@ k p   We also set the string value   0.000 $  (    r $ J  x   1 (  d   0 (  k    emg $ P !   _EMG   1 (  d   2 (  k x   res $ P !   _RES   1 (    con $ P !   _CON  e  2 (  d  (  k    type $ J (    plant $ J (    index $ J (    drawing $ J ' T    T   G T  $  ( j    T   G T   $  ( j T    J We take to the end as the number may exceed 6 chars and it becomes invalid T  $  (  k p   sht $ J (    rev $ J (    ddesc $ J (    gdesc $ J (    pdesc $ J (    loc $ J ( D   jo $ J (    Da_eng $ J (   Da_eng_date $ J (    Da_cert $ J (   Da_cert_date $ J (   Rfkd_const $ J (    Rfkd_const_date $ J (    Rfkd_op $ J (   Rfkd_op_date $ J (    Other_by $ J (   Other_date $ J (   DrawingFormat $ J (    Date $ J (   RevisionDesc $ J (   DCCNumber $ J (    RevisionNumber $ J (    RevisionNumber2 $ J (  i = Q -------------------------------------------------------------------------------- Description: W Function gets texts from application and text elements and compares them Parameters: / adData [in, out] - Real texts ? adAppData [in, out] - application data structure Returns: 4 True, if texts match, otherwise false  Misc: Q --------------------------------------------------------------------------------  '  A@    A@V  ) Find which revision number does not match !  !   !  ( k @: !  !   !  ( k : <      !  )  1  9  A  I  Q  Y  a  i  q  y  !  !  !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   ! D ! D  !  !   4   ! ) 1 9 A I Q Y a i !  !  !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   !  !   '  k (7 k 7 i 7 H \7 T  $ ( $  T  $  $  T   $  $  $ ^ ' Z z 6 \6 ' Z i 6  \6 ] ( ] @ ] X ] p ]  ]  b$ l   - Correct border not found - Detach old border  '   D! ! n! p b  D! % n ! r! t' d d  $ ( $ L  .BOR  D! ! nB@v d 5   '  k p5 h5  # Get the new location of the border D! ! h!   D! !  D! ! h!   D! !  $  ' j   Attach a new file  BORDERS: b 6 b b j $  D! ! n% x . f  f( z DB@2 k H4 | @4 \84  TBAHelpers.ReplaceBorderFile B@ ! |  TBAHelpers.ReplaceBorderFile  Error replacing border " b  " B@| o 3  ] H ] ` ] x ]  ]  ' l N    D! ! n! p  D! % n ! r! t' d d  : $  '    $  ' d d 2 $  ' d k 2 d$ L N$ L  ' l y 2 k 2 2 k 2 i x2  ]   ] 8 ] P '    D! ! n! p  D! % n ! r! t' d d  $ ( $ L  .BOR d  : $  '    $  '  d 1 $  '  k 1 y 1 k 1 1 i x1 p1  Attribut e VB_Nam e = "TBA Helpers" Option Explici t Pub , Const PRECISION As Do 40.0001XJAPP_ELEMENT_ID 22559 '102  TODOAV General apadata s tructureAType pDATA #`Signa&S ngReview Emergency Classified As 4PlantNoIndex ' The followin g 3 item s are in t s_dra_no memberkCodBSiz DrwO&SheeS.OsA;HowMuch;Titl@eLine12CPDescR eserved0!RuceesQE* ' 1 - yes, 0 iremo oL Q13M*@LlocTJM6e@lementÈpr Dnt onlya nvkof App E#DAE@MoDa qCer2tpDARDNTRD ROp RDOp4OdDim e±Enuatoa3 Gdb! Block! " 8rr( S'Setdefau lt valuevs .P]1o~D*4`VECTORtKQ = Fal>s0}Aq = "AP'veMmlRefer ze.DtrolTCac he.Scfo While.MqPZNex1 I"fqCurt.{= msdMicroStY .e Subt!94?!} w a =(  ae.& \Q' Wu our &9u 1 %|= ;1d@b.offs#= 0g"w=`< s2,S2(db, 6)Q`m 1 7 ///dtr4'Res 3 U  F?59 @cD= Left(9, = Mid2q"c3Pigh) 'GwR"g.IHD5&/&0??ne2o r?w8o//{!U0_V$ A? 's!ooo`P 20)  ' Old format d oes not have the `olowing fields `but i Nan errorOn E2 Go0To h}NewZadDat a.strDAE! = ReBl@ockStr (db, 5 >)%e !1!Cec! a_?) PubF SH(DAs APPDATARDim0 ee NEnumerata/TcC!dbAѡV˃ ' Fi`S1exist0* = A`PveModel Reference.trol$ Cache.Scan Do While .Mov`eNext#! I"fCur@ t.Typmsd MicroStibo Ae@S8ubtm4 TheD 1  a=(  ae.ID @ _ELEMENT_ _`= :!kDPE<9 f NothYFQ ]Gdb.offseAx0cS W:5#S C+SiHgna!6, 6OOHa^ew1SrE/g 'yO  Classid__U' 3 rPlapntNo//%Ipndex rC7 +ze Drw9#rShee/ `Z/ % zo?5HowMuch#5 rTitleLine1T)_)`W)f2oe  al__6Reserved0S- 8" " rL^oCJt)2:=' b n0rw3oo?; :eS1/6ϸ-DAqŏȟofǯ?8 D0??8cCokhBdR5t~r2 3 7$$rF9 teDataBl ockString ad.st rDCCNumb er, db, 25 'Applica tion ele ment siz e must be even.X Otherwis e incorrecXis re ad uswGetV funccIIf 701 bytes a re writt en, only= 0T2 1db.SMod 2 = 1 The6nW!""y1End IFf' C 5te a new aQF0<V t-Asc(Mid, i, 1)),Dv 0X6@va$6Q 5 F]f`inds p֝info nPq5arrX5b-rayzzposia~0x 'NF- ?rb ex an su ccess, -1 failuura' 6s--t I5((qINFO,1I68n2s. 2-t%2jo UBoundRagr i)ݲ=V 3ix`Wg)1Q'15 q  1aӥby gi E,1111C15.1 dBg- TQ 3%ޖ20errorA?2o2n % ByPC22ng k3Do `e, pt@P@oint3dacaPxdOldSK78 On E GoTo h -N 8C3S Qqeeo EnumeratlA 1D2CnIndpP C nI ndex = G etElemen tInfo(ar rX, strN0ame)If -1 Then0Exit Functio,End IfD ' Calcul ate text coordin s based upon th e old sc(ale:p.X ().dX * dOldS.Y.YdSi 0 Th enr' Add new IQSe^ CreateQ1(N othing, !j, pt, Matrix3dIdXity)1E'K fo imight no>xistOn Error Resume N.KStyle.&= DesignFiF 8s("061"L6GoTo 038He]= d Size ' *1calN)Width X Justifarr X(nIndex().lCy)CorlN= K B LineW3 G G'Level oG.\n n " + CStrv( +)auˆ2W4e o to rot (w e convert Aadian6swR DOrigin, 0B *d"`} / 180 FPi HTru?' }drʆ d Redraw msdD zaNormalKFuno@ ' - ?(Ca ucrip!:g  fin@ds a t by g@n p8osi! aPa rametersP !3 [in] -aeay of e s info 7!`N F- -ndSa' - Curt s'aReturn(on success, "" eᥡMiscAa?0?A) Pub f1GetValueCr) As ELEMINFO, _\( ")?`zP>d) Do=e c[ Dimdb+ &APoint3d !Z""' O-miz pmport: i`'hehas been un0d, dI rsearchRit agai} aA Integery= T*I@-?R|MsF-1lExBObqFo J4' F0@ t@eSʌByPAk{:%9_' `e$Is D  W q W<;1W1 5 WcellW?WO W[WCW%WSC ZSuS YS! *(LT0IUR=H3BfK`,OlS,Honal WrKH Khҹ,6^ PCS WeqJEnнratoKlA K24fTKP &M PP PP; C F.X0MdX1YYCNe?0Grap h l$Cach e.P"co Wh ee.MևNp.Typq0AHeaderO = a ' C0heck5q] m4at s Abhs(e.÷-'.X) < P RECISION And /YHY+[e 3   'Nam e suppli ed lets test that npalso matchesIf UCas@e(cell)D ="elC &.a(ThenA'DOk uis correct P1Set GetaByPosit8ion zt7Ex it DoEnd If Else'notonly coordina1b`^ Loop &' Calcul* ne2w^ pDUpt Element.XYarrX(n Index).d X * dScalDI Y Y C!B4Funcp hError:Codes.L og "TBAHelpers.N" ReRain=G ' -? JDescri6p1/' f@inds aYby givenF[ a returnt'sBAPart?d [in]- A@ay of@{xft @ nf`stru- $?% #?+- CuxnbB'Rp x "xsucc ess, "" ea@Miscaa7?) Public 4K@Value(a+( ) As ELE MINFO, _M!E)`Str8ing>) Do=e c[ Dim ß!*6s!Point3d/ i w"Dj' F`V e M$=&, , , ) N Is h' +,b%?D;Q??d reple_B with±on "hr@+U+i@F. 0&C @C to be a !@ =_--=~RPQ == %-A4= )A/ ADdOl? JZOkal erpO BooleaF@e$: 37HHdSizeqNwII/H/Hll/H (H%Ju,/ItU/Id ' RemoverRteve QdJIsLock0,= AcaB.A veM lReference.#T $ OqTLen(') > 0 A(BV)U' A= 1e _ sCod!Left, 1;$rl2xa MijdC24'@take to%"e`pasBnu mber may exce@6 0char`it becomen idDrwB5&4!<Shee,`ZbSIZEINFO) Boolea$߉@?F Q0H%Elev wa h ,#S 'Q which pis ion numb er does not match If StrComp( adAppDat a.strRevis , ad & 1) <> 0 pThenN =x1End If 1292AD cewb A__ ~Emergpency  C lassified  Type V PlantNo  IndexM  CodN'V SizN qV DrwO3Whee@S ȍAVTitleLpine1H_2V2 VB;DescvLocatz(b6JNL GigpDAEngm pBHCert{?tS":RDCons| 1RDDROp7a OA,RDOtherB?.Dr awingForQQqcj{CCNCLrDlA21 ~are TextsTrVerif yBorder = FalseIf<> "" ThenF i 91 T o Applic ation.Ac tiveMode lReference.s.CoxuntHL =)(i).As!7 4 dS at(D, ":"&) UBbd( ) > 0mo(1 /Eb 0 nd If-CaseO9) @6UC})3LTru +Exit E$NexEFuno Pub  Find'vAiAIntegerԌe @M"" C$(a;la c!Y!B?Righ2`4)C".BOR̀&!hAb hF?n/5hA9h & \X[ Z   !    0&t 4   `   !    0&48 !   `   !  9  0&t 4 I   ` Q  q  t 04 q   ` Q  q  t 04    ` Q  q  t 04    ` Q  q  t 04   ` Q  q  t 04   ` Q  q  t 04 9  ` Q  q  t 04 a  ` Q  q  t 00   ` Q    p 04    ` Q    t 0(    `   0  $ A% W S X & qX n  rU  ~|        0    0    0 x  0  0 X  0   0 h   0 h   0 (   0 (   0    0    0    0    0    0 X                                                                                                                                                                  Z    w   e         x   R R    R R  R( R    R R    R R    Rx R < <  R R    ME      P  @  @  @R  @X  @   @ ^  @  6        h@0  hBH    hD`    hFx  hH    hJ    (    hL  ( hN     ' (P    ] D     R @    hTX  0 (V   ensions p @ % ---- X    hT  ----(Z     tching  @ %   x     hT8  nt w(\  h d L  x P @ % '  ^     h<  ns th>    E dBh`    ! DhT    . hb    h   ; Rhd8 $ $  N V8hfP ( (  ror hhh , ,   ' hr 4 4  2 hj8 8  or a     (l  4 < k  @ %  ''( 0     <  @ % (np   ` < H @ % (p  <  @ % (r   <  @ % + ` 0  Q Q J   )tP X  A % )v    x @ % )x     @ % )V     @ % `z `| `~                   0   P   p    x  `   7 7   i|    i~ 0  z )vh x  l\ z  P @ % x\)V     @ %   .a)   ` ` \`f z ` >   X   `  * *   i|  ؄\i~  )x0  z \>   @ % z p  X  ` >    X  `      i|   w\i~ 0  L)tP  z A %   `  3 3   i|  i~  ش)  z \ @ % P \  z 8  ` \h` 0z    +h  `     M  ) 0     @ % iT  - ` +h  `     e  )   @ %  iT  z ` -   (   H +(  `        )      @ % z iT  z ` +(  ` h       )   -     @ % - iT   ` -       + ` h      )   orde  '   @ % @iT  ` ( L+ ` (      )` p  ---- -------- H @ % ----iT  ` Fun      + ` (      )` p  hFi - fil H @ % iT  ts [` ith + `       )  0  ---- --------  @ % ----iT  ` $   h     `  ! !   )  (   '     iT  rror` ` BAIn  x +X  `      6  )    '   @ % @i@  ( @` + `    * * J  i|  H  0  --------  ` ----h   X    x X x    h (  (  ( P    % 0     X     #  %Q $ * \ R f f f f * 2 S 5 1 e 1 2 5 0 c ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 0 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 1 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 2 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 3 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 4 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 5 ( * \ R f f f f * 2 S 5 1 e 1 2 5 0 c \ 6 J 0   t     4    H  P  X  `  h  p  x                2           @ * H   x        @                        0 (  X   ` . h                 X   ( B @   R  V  J P   N     X  B  p  x             $             0  H  ` : x   $            (  0  " @  h  x   h       , (  X  h                0 & 8  `   x  .                 "  H   X X `  F   < 0 : p V      0 X 8 "               (   @  H   P  $ h , j & 0   X , `   *  "  *  , 0 , ` 6   P  < 8   x     0              X   x F    <  : 0 J p        X  "  H  P  X   `  p                     , 0 j ` &         ( X @               X   0 D H   <  :  R (        X  "      0   @  X   h                   T   X   ` X h   L   ( < @ :  V  :   X  h p   X  "              0  @  P  p                    l  &                8  P  p                 (   0 X 8   H    <  6 H  H  X B  H!  P!  X!   h!  !   !   !  !  !   ! X !  " V 0" 4 "  " < " 6 #  P# : `# #  # X # B  $  $   $  8$  H$  `$  p$  $   $   $   $ X $  % H 0%  x% < % 6 %  & H & `&  p& X x& B  &  &  &   &  '   '   ('  0'  8'   @' X H'  ' V ' 4 (  H( < `( 6 (  ( : ( ()  8) X @) B  )  )   )  )  )  ) : )  8*  X*   `*   x*   * X *  * H *  @+ < X+ 6 +  + H + (,  8, X @, B  ,  ,  ,   ,  ,   ,   ,  ,  -   - X -  h- V - 4 -  . < (. 6 h.  . : . .  / X / B  `/  h/   p/  /  /  /  /  /   /   0   0 X 0  h0 H 0  0 < 0 6 1  X1 H h1 1  1 X 1 B  2  (2  02   @2  X2   p2   x2  2  2   2 X 2  2 V 3 4 `3  3 < 3 6 3  (4 : 84 x4  4 X 4 B  4  4   4  5  5  85  H5  h5   p5   5   5 X 5  5 > 6  H6 > `6 : 6  6 H 6 87  H7 X P7 "  7  7  7   7  7   7  7  8   8  8  2 08  h8  x8  8   8   8  8 X 8  9 H (9  p9 < 9 : 9  : H : `:  p: X x: B  :  :  :   :  ;   ;   (;  0;  8;   @; X H; R ;  ;  < * <  @< ( H< X p< B  <  <  <  <   <  =  4 =  $ P=  4 x=  $ =   =  =  =  =   > > x p - Structure contains the TBA plant information fit ^  ^ 0 ^ H ^ ` ^ x ^  p x  ^  ^  ^  p P ( ^ @ ^ X p 0 , Contains information about the Indexes Type  ^  ^    arrDescription() As Stringp $ Contains information about an index, ^   ^ 8 p h : Contains information about a position of a single elementx ^  ^  ^  ^  ^  ^  ^   ^ 8 ^ P ^ h  " Saved Text for further processing^  p  ( Contains size information for all sizes%  ^  ^  ^ 0 ^ p ^  p 0 Q -------------------------------------------------------------------------------- Description: ; Function loads and parses the Index.Cfg file Parameters: K szInfo [in, out] - information about the text positions O arrIndexes [in, out] - array with information about the Indexes D arrPlants [in, out] - array with plants information Returns: H Returns the form header that it reads from Index.Cfg file  Misc: Q --------------------------------------------------------------------------------   ] 0 ] H ] ` ] x ' ~   Initial array initialization v  x  V  t l ( t   H t n h t p  t r   3 Try to obtain the SACSV8i_DIR environment variable 4   C:\SaudiAramcoV8i\index.cfg ' z d  4 index.cfg ' zk  Open file ' ~ z ~    Get the version information ~ | |$  ' | |  ~ $  '     $  $    $ (  TITLE BLOCKS -  $   $    $  '  ~ | ' . |$  ' |  & Read the file and process all records  ~$   b  |  $   [   Section found, Gr |  |  $  e = DWG INDEX K T  " Le | ~ v VA@ ig  PLANT NUMBER INDEXK T ashes | ~ xA@ om NW  END K T x  S   Should be a "x_SIZE" section ro | ~ tA@  > Can  d x ( Read next line to find the next section ~ | 1st in |$  ' |h k   ~V  z    ~  ce b ~V  k   TBACFg.LoadIndexCfg B@ 1st in B@> with i  Q -------------------------------------------------------------------------------- Description:  ? Function processes the index section of the file  Parameters:ulate 5 strLine [in, out] - last read line rner 3 hFile [in] - file handler | O arrIndexes [in, out] - array with information about the Indexes Returns:  Misc: ex Q --------------------------------------------------------------------------------  ]  ]  ]  ] ( ] @ ~$   b pe   Read the next line | ~ | he rig |$  ' |op |  $   [  Section end the rx  d  |  ~ $  '  Z    $      % Do not raise error just skip the line  d Err.Raise errTBAInvalidIndexCfg, "TBAHelpers.ProcessIndexSection", "Invalid Index.cfg file format !" [  Index section: Line skipped. e d   & Get the Index's position in the arrayw th v $  $  '   # Get the Type position in the array   13 $ v ! \  $  $  '  , ca  # Get the Size position in the array  $ v % \ ! Z  $  $  ' f  % Get the Border position in the array f  $ v % \ % Z ! V  $  $  '    Add size and description  I AddStringUnique arrIndexes(nIndex).arrTypes(nType).arrSize, arrStrings(3)  f  $ v % \ % Z % V ! P  $  A@  Add Border V  '  @V p $   $   $  $ V ( L  $  $ V ( Nk  k   o  Q -------------------------------------------------------------------------------- Description: ? Function processes the plant section of the file Parameters: 5 strLine [in, out] - last read line 3 hFile [in] - file handler D arrPlants [in, out] - array with plants information Returns:  Misc: Q -------------------------------------------------------------------------------- x ] @ ] x ~$   b   Read the next line ~ | |$  ' | |  $   [  Section end x  d  |$ *  |  ~ $  '     % Do not raise error just skip the line  d Err.Raise errTBAInvalidIndexCfg, "TBAHelpers.ProcessPlantSection", "Invalid Index.cfg file format !" [  Plant section: Line skipped. d x  '  @x $  $ x ( @  $  # $  $ x ( B T / Limit length to 35 chars as requested by ARAMCO  $  $ x ( Dk H k @ k 8 0 o ( Q -------------------------------------------------------------------------------- Description: > Function processes the size section of the file Parameters: 5 strLine [in, out] - last read line 3 hFile [in] - file handler K szInfo [in, out] - information about the text positions Returns:  Misc: Q --------------------------------------------------------------------------------  |   $  $ L  A K T | ~ t! lA@  B K T | ~ t!  A@  C K T | ~ t! nA@  D K T | ~ t! pA@  E K T | ~ t! rA@ S    TBAHelpers.ProcessSizeSection  Invalid Index.cfg file format ! B@| n  o  Q -------------------------------------------------------------------------------- Description: E Function processes the single size section of the file Parameters: 5 strLine [in, out] - last read line 3 hFile [in] - file handler O arrX [in, out] - information about the text positions for 4 a single size Returns:  Misc: Q -------------------------------------------------------------------------------- X ]  ] X ] p   Read the [x_DATA] section ~ | |$  ' | ~$   b   Read the next line ~ | |$  ' | |  $   [  Section end x 8 d 0 |  ~ $  '       Just skip the line  e Err.Raise errTBAInvalidIndexCfg, "TBAHelpers.ProcessSingleSection", "Invalid Index.cfg file format !" [  Size section: Line skipped. d P   '  @ $  $  $  ( <  $  $  $  ( >  $  $  $  ( `  $  $  ( T  $  $  $  ( b  $  $  $  (   $  $  $  ( d  $  $  $  ( f  $  $  $  ( h $  ( r $  ( jk k o Q -------------------------------------------------------------------------------- Description: B Function gets an index of the array element by name Parameters:  5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ] P   '    $  ! T T ' y X k P H i @ Q -------------------------------------------------------------------------------- Description: O Function gets an index of the array element by name or creates a . new element with the given name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: 4 Index of the text in array on success  Misc: Q -------------------------------------------------------------------------------- h ]   T$  '        '  @ @ $  @\ ` k h T $  ( T ' i @ Q -------------------------------------------------------------------------------- Description: B Function gets an index of the array element by name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: B Index of the text in array on success, -1 otherwise  Misc: Q -------------------------------------------------------------------------------- h ]    '    $  ! T T ' y  k   i  Q -------------------------------------------------------------------------------- Description: O Function gets an index of the array element by name or creates a . new element with the given name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: 4 Index of the text in array on success  Misc: Q -------------------------------------------------------------------------------- ( ]   T$  '        '  @   4 ReDim Preserve arrItems(nNewIndex).arrDescription(0) $  @Z  k  T $  ( T ' i x Q -------------------------------------------------------------------------------- Description: B Function gets an index of the array element by name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: B Index of the text in array on success, -1 otherwise  Misc: Q -------------------------------------------------------------------------------- ( ]    '    $  ! T T ' y  k   i  Q -------------------------------------------------------------------------------- Description: O Function gets an index of the array element by name or creates a . new element with the given name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: 4 Index of the text in array on success  Misc: Q --------------------------------------------------------------------------------  ]   T$  '        '  @  $  @V  k  T $  ( T ' i  Q -------------------------------------------------------------------------------- Description: B Function gets an index of the array element by name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ]    '    $  ! N T ' y k x p i h Q -------------------------------------------------------------------------------- Description: O Function gets an index of the array element by name or creates a . new element with the given name Parameters: 5 arrItems [in, out] - array of items 0 strName [in] - item name Returns: 4 Index of the text in array on success  Misc: Q --------------------------------------------------------------------------------  ] P  T$  '        '  @  $  @P  k T $  ( N ' i h Q -------------------------------------------------------------------------------- Description: 8 Function adds a unique string to an array Parameters: 7 arrItems [in, out] - array of strings 4 str [in] - string to add Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ] H ] `   $  T |  k     '  @   , title 1 should not be longer than 30 symbols T  T  $  ' T k h T +  o P Q -------------------------------------------------------------------------------- Description: B Function gets an index of plant in the plants array Parameters: 6 arrItems [in, out] - array of plants 3 strNumber [in] - plant number Returns: B Index of the text in array on success, -1 otherwise  Misc: Q --------------------------------------------------------------------------------  ] @   '    $  ! @ @ ' y  k   i  R ---------------------------------------------------------------------------------- L Description: This function unscarmble(Scaramble data) using ROT47 algoritham Parameter: # [in]:unscarembled data " return: unscarmbled data in string R ----------------------------------------------------------------------------------X ]  ]  |'    $   $   ! $ j  $   O $ j   $  /    +  $   P $ j  $   ~ $ j   e $  /    +  k  k   ' i    Attribut e VB_Nam e = "TBA Cfg" Op tion Exp licit@Priva Modu le ' Structur e contains the plant i@nforma  Pub Ty pe PLANTINFO strNumber AsUingDescri1Loc^8Reserved14 3 End\| dBORDERdKey*Bor"doarro()!9SIZE8_=߇䌏.;s, V1 4' CoHl aboutBtInd0exesD@?TYP#!SizeD!/'AZ*an *INDEX h¼J(G5Ia posiof a sle el0emen MEL$EMG$dXA}DoՁdYNO AP}lLevel  LolColoBWeight Justif"XGdRotl)q>Tex" @  5`a@o ` fur@r proXces#Cb!F ouk 2Boolean .sHʼn A all-K>L A#`+/BjCDE- ?(!:E!g Func"Plo ads a*pa\rs wx. fi!' Par!Gters szI [in, ] -/'t?=%`sO |( - ay with 2 PsJ* Ms Re@nQ$B Km he"atha`t rs from )Misc(A :?)&[& 0[pzz orCodes. Log "TBACFg XadIn dexCfg" D ErrR eRaise End Func tion ' -L SDescripd: proce sses theD i se Doffil ' ParametersPstrL ine [in, out]5- last read l DhF.'P- : h@andlerarr [8- ay with e forma abHe(ReturneMisckPriv ate Sub P\"SZ(SOAs ing, CF Integer,A7/() NDEXINFOBordf@BORDER)Dims {nBBTypeSSizTC$N Do Wh~ Not EOF(;D+' Rnextď Input #B~,NA 7 = UnSc b ZHIf LeftE, 1) = "[" The'' l e ndG AExit DoEl}Ae S.s Spli"~"h!UBound( ) <> 5 Or@n(0)0PA 'Do n% -rA e ju@sskip"csai ' .▁@InvaliƜ,Help@O.0[" d K.cffg{s !DDebug intl "R:#?p8ed.l/. ' Get's posi"in+\ay9b=Item"ByNOrCteA0esp;1 i n!r(c).@4)LL Byߢ!(3Ċ"cz(nA  2 ' `Add sR0m 7y_"'c$Uniquey_|*(3Qes#-o(nZ1_ ?S SPs) + 1RenPreservU/2<.0Key`Ssp= 4 O r#f2If LoopäSub?b5D Tpla[' }2_6 P svz sQϣϣ ϣsR ϣ1ϣţPLANTe. '4d8'Н,n 25 w5 Trim6"o#WB@?ϟ?1 x< 2_#P rߞߞAܞ(ߞߞ"i "e_crc7c#cx arrPla nts(nInd ex).strN umber =  tStrings(0)  Description Left(1), 35)M'Limit length to  char s as req uested b y ARAMCOa(Loca}2dEnd If - Loop Sub ' -L ):CFuncop rocesses the siz% e of file Param`eters ~L ine [in, out]- last@bad l!hF@A  '-  handlerO szInfo  - i@rmmab!0 text pos iGoLbL() `LELEMhLDim"P33dQ0Type' Regm[x_DATA] sWWInput #=B ,Jp"= UnSc0pb0i%VAUDo WhlNot EOF(WXnhp/+qooqIf 2``"[" T8hen# q1 ' ^endEx|DoGOK@sA Splitg"~"p UBound؜) <> 8  'JuᰃskipR|@ 'SSAS+SSDebugXint "|5% : a ped.w\cOn2[@X ) + 1Re0Preservze13Xŷ6).dX Valɴ01 [Y_K_`d= 2 * @0P% (3$N lLev4el 4lColoʜ 5@WeightO6G-ify7ÿdRotu< .8@TG= "|).bF:P FaLqEgo߅Q 5 getnF 4%ay pme =Yxj j)-1 Khr + x 7RePreservQÈ&x. KTypes(0IrCO(G OC o3 }?I=Q}B}e} uemsuq uuu, orwiseAw052MBl2TYPEl r/pppOp1(q ppp pFpupmep2H5r@yp5ppa5pph&p_5m[ffZ p!rp\fxp pw=pm pxp'pMsp0prrSizotSot YDotexot/?%B'a 8 BBBAot8>O>sOO>inN?otot--?ot!& ot=IZbt_BORDV8<_?&Q?OtO?H8ObO3 tttt1?1 escription: ' Funch ge ts an in dex of t he array element by name or create `newbwithgiven=0Par G0ters sIt ems [in, out]- iwstrN 61- .<@Return;Ia{text9n successa:Misc[-L Priv GetSizeOBypOrC(() As SIZEINF O_BORD,  tring Integer  AGDim nN|ew> J=. " ) IfH= -1 ThenUBound) + 1G Re)PreservBB(FDA .LBord(0DEndx IfCCV.S=EV i =B Ev De*~ vv_*vvuv,OorwiseA?xz5 xublic? x#NHx]Cw!vERwv\biA~u`P[ O-diUF`i0 To oCiwf`i)a_C oE6yi Epxit oN d3=@dac  lllqqaO6qqh.qRo5esqq~6σ+a 1/me>q7qq1=:qm qGk76q]tq1q qBS d1 ;inqq--g { = Lheft!,  -ȸs<'!/| 5 Ԟpla0! P>A O >="c("!" ; OZ= ((L+ 47) Mod 127A(h ElseP~))-Hl n "*1HA? /rr )              x  ME    $x @     ir > ` ` +,  ` s er+.  +2P    +8   ` r x P  0   P   %Q 0   Q  F   P  h . p      &  "  $    (   @  P > `        *      6  P B  `  h   p         $    B                  B   ` B  h  p  x    (            &   B  0  8  @   H  h   p   x *         ' ? Implements MicroStation specific commands that do not fit into  any other module ' Updated: Rimantas Benetis (2003.05.19)  ' P H  '  Writes error message to prompt  '    Replace new lines with space ] `  r & '   b   Replace r   $    r r   $ (  ' r  r & '  @ r$ * ' r  Error  :  r  B@ o   ''' / Returns true if current work mode is supported L  ''' t x ]  $ . '  Vess ' ,i p  '  Returns true if DGN work modeE dB  '  ! D! ! 0 ' . d  ' . k i  ' ; Returns true if in DGN V8 mode. Reports an error otherwise  '  . ' 2   Report an error also B@F 6  Not a valid DGN file ! B@4 d 0 ' 2 k i   ''' T Returns the default level name.il  ''' ustalP : ]  D! ! % < ! ' np ' 8z  :  cadUtils.GetDefaultLevelName B@ Queue. B@> ("lc=0i 8 0 : Attribut e VB_Nam e = "cad Utils" '' Impl ements M icroStat ion spec ific com mands th at do no t fit intoany o ther module &,Upd ated: Ri ?tas Ben etis (20 03.05.19&) ) OpsEx plicit !Priv D MX-' Writes erro u essage to promp >Pub & Su b Report"EToP(B yVal msg As SngQ F 'l ace new lin5with Dim posLong != In'(1,., vbCrLf-,o While > 0 < Q= LPeft( ,- 1) & " &gh Len) - 'a'Loop CTxrimCD GN.ShowM`"Y"&:',T""d C e*rvo@qy End Sub  xCReturnrue if curr work s sdupved }Func”IsS@e()AlBoo0lean3Arresult vs;CCCC C5E"6) 6 591 O1F)IfcJ .Apy.A veDesignFN.Forjm y=SdV`8 The#RIET 1#Elsg|mFaFA:If! in `f @e.$!;s an}wiA| Check <4f N`GK(C!bt` aa "ZC odes.ToMsgBox #@-, "a validf! ,1@g,,hhe defa]level n.N)GetzDLȃgiOn  Go$ToC_Hler&kIfkZV" s.FindBy Number(0).a@8p)yEx GQb:GD7Log'.p 5GReRa"T1  8     $  ʮ  H X mdlElementTemplate_activateElementTemplateByPath       x  ME    (  <   B  `p L ` @L @L  ` ` H  % h  % `, `. `0 `2 `8 `: `Z  ` `  B` F ;   % `    `  h %Q  0     H     "      8   H  `   p .   4    (   8  P  `   p                        8   H  `  p    x    L        8  X 6 `        :    "    8  @ : H :  :  :   $ H  6 p     6  "  >    P X  x ,       0        ( 0 8  h  p                  (  @  P  X  `  p  x   2    (  :  < 0 D p 4 F 4 8 P p   $     . . P . 8      (  H  h  x 6 6 6 6 (  `       0  ( H  h .          2  2 0 2 h 2           8  X  h 4 p *  *  *   8  H  h  x       0      @ . X                         0 0 8  h       .      0   8  @   H   @ P         &          x  h `   Controlling flags ] D  h   Looping variable ] D P   Distances  ( Const DISTANCE_BETWEEN_SLASHES = "0:0.4"; ]  0:0.6  Requ]  0:0.5657 ame  . Dim dBetweenSlashes As Double ' not useds as] D   egiste] D  none**  Input points ] D0   ] DP     Vessel dimensions ] Dp  ------] D  ------] D  ------] D  ------] D  ----- ] D  cripti   Hatching ] D    ] D    ground line position 0%] D0    Line element ] DH  M'   Vessel Cross Hatch DB@   Calculate distances  E dBetweenSlashes = Common.GetDoubleFromUnits(DISTANCE_BETWEEN_SLASHES)  ^%  '   ^%  '    get tangent points _  / Set default cursor for the spotting operations &B@F ' p   Get first corner $ LOCATE TANGENT POINT (RESET TO EXIT) p ^%  '   p  koniec filmu: karaul ustal! x  k  4 Application.CadInputQueue.SendKeyin ("co=1") ts) 4 Application.CadInputQueue.SendKeyin ("lc=0") % 4 Application.CadInputQueue.SendKeyin ("lv=1") 4 Application.CadInputQueue.SendKeyin ("wt=0") OTHER\VESSEL$ z $ T  ~ " Error: Element Template not found! B@| k P  0 Get second corner (defines the vessel's ground)  (RST FOR NEW Points) DB@  ' ENTER SECOND DIAGONAL DP TO CLOSE SHAPE p ^%  '  p  go to next 2 points input d  & check eligable distance between points !  !   ' 8 8  " Increase X distance between points DB@ d !  !   ' : :  " Increase Y distance between points DB@ d   do all the stuff here   calculate coordinates   hor  !  !   ! ' , d  ! ' , k  , 8 ' .   vert !  !  ! ' 2 '  d  ! ' 2 '  k  2 : ' 0  , Ground line has always ordinate = ptSecond.Y  " Let's hatch the vessel figure with  3 45 degree slashes //../ spreading from NW to SE and  5 135 degree backslashes \\..\ spreading from SW to NE.  > Calculate the distance between left upper corner of the figure  - and 1st intersection with 45 degree diagonal.  @ The same is the distance between left lower corner of the figure  . and 1st intersection with 135 degree diagonal.  I The aim of all this rush is to create the hatching with central symmetry. 8 :    '  8 :       ' Z   45    ( calculate starting point: v  ( from the left upper corner |  ( down to the left lower one |  1 then to the right along the bottom +--------> , (  0 Z   (  !  2   exceedes bottom border , 2 !  (  2 (  k   0 calculate finishing point >-------+  0 from the left upper corner |  0 to the right along the top |  0 then down to the right lower corner v , Z   (  0 (  !  .   exceedes right border 0 !  .  (  . (  k   ) Create a line in the application context   ! D% H . B   Save the line to the file B ! D! B@J  ' Redraw the line, so it becomes visible N BB@L    135    , calculate starting point: ^  , from the left lower corner |  , to the right along the bottom |  , then up to the left upper one >-------+ , Z   (  2 (  !  .   exceedes right border 2 !  .  (  . (  k   - calculate finishing point +-------->  $ from the left lower corner |  $ up to the left upper one |  $ then to the right along the top ^ , (  2 Z   (  !  0   exceedes right border , !  0  (  0 (  k 0  ) Create a line in the application context   ! D% H . B   Save the line to the file B ! D! B@J  ' Redraw the line, so it becomes visible N BB@L   Ground line , (  . (   0 (  0 (  d 2 (  2 (  k  ) Create a line in the application context   ! D% H . B   more solid than hatching  B(    Save the line to the file B ! D! B@J  ' Redraw the line, so it becomes visible N BB@L k k k p  : Should be called before exit - sets cursor back to normal &B@ | X P   Report that box drawing failed  VESSHATCImpl.Run B@ B@ o - Attribut e VB_Nam e = "VES SHATCImp l" Opti on Expli cit Priva Declare FuncD mdlEleme0ntTe v F_a 2X .ByPat h Lib "std 8bltin .dll" (B@yVal w"A s Long) ModulHe ub Sub Run(0) 'C ontrolli ng flagsDim bEx it0Boolean 'LoopvariaVb5 iI@nteger Distance3?st DIST ANCE_BET WEEN_SLASHES0:0<.4 . VMIN_POINT 6 ALON G_X_Y_AXIS_5657'bdBetw eenSlashLes[DoSe@' not usedC8 MinXY StepC 'Inp ut pointHbptFir@>@cP3ptS`econdV essel di sHdLefyD8 4Righ tO4Fr omUnits(pDvda9xe 2{gBmg+lo#/' AGdefaul@t curs 1f` the sp`YAoperB/h!0St +.DcCB = Fa|ls!a )- f}cornI"ue("LOCATE ` GENT ( RESET TO EXIT)",'# IfdTheda 'konieclmu:0 kar #ta\l!g!DH)EQIf 'a IVCadBQueue%ndKey in ("co=1"lc=0 lv tO wt ; `{4=~@u~(St rPtr("OTHER\qEL" )) <> 0 O A.RaisE rrInvalidPmeter , , "BC: T kfM!DA  H M)sCfS)L (P20Ps 1ve's S%J2 us "(RST FOR NEWr B,s)H &m.al. .ER SECOND AGO@NAL DP.C LOSE PE. g /'go to nextd 2B iyE*<'check9_ig!v bzGd3p= Abs($>.X - 5.XQp D<< V_"atIncrea $~X/ Ç!dy Y Y a  : ? < Y? ? $ 'do all,stuff herZuq 'c6tcoordin@_`ho$Y `</?= R.X)yG_AWd= + C)!'ver@ӗ Y YvdYn= Trueq y ddWS4O1's bhas-ways *F Ra_Q'Let_h(aguwith45 degre //.|./0J5` |NWYp]`13backs\\..\SNE. 'Calcu late the distanc e betwee n left u pper corn offig@ure  ' and 1st intersec tion wit h 45 degreagonal.CT same islow E13Maim 1all OQrushUo crehatching~centra l symmet ry}nSla shes = I nt((dWid+ dHeig ht) / dStep)dOf0fSet  - (*D2S'45For i0 To g A'cƤ@rRtOpo:˚vfrom |down toGÚone! Ԇrh alo bott(+- >#ptF@irst.XQdL@ Y tOp @w~-v * iIf Y < dB# rn'exceed@Tborder ZD-#BEIfOfiniswPg >6+X Pj ǚICQHtopJ?R[ mptSecondR7$ 9ᑻM&U)S > dRbjSSR O$ @i'(= >S CCa li iapplica1tex&tw AmL= MicroStDGN.A.!Elemk2(Not0,U9 CO#' SavӅ2 Ufil߃F .AveMo delReferBe.Addd  ' Redraws]p, so it comKvisib .TmsdD0j NormalN`oWcq' u1 ug u^oLBp G'$ 8q o'uup:z6z/Z g`KL_ rBϿges uX L Lu Y(/L- L Luu](i#v'o#ͪ'o,2Ey4;aϜ [/v ysYQ'A_s?'?'= #'t0'bK7' '/s /s/s/s/s/s/s/s /s?%/s/s/s-su Element mLine  ' Redraw the l , so it becomes visiblB.msdD i ngModeNormal|Next i'Gr0ound!pt First.X = dLeftS nndRighIf b: OnTop Th\en+@Y@tOpBEls 7BottomK8Y E@YIfS' Create "ab inap plication cont@w SeĤ@HMicroStB DGN.:A.C]D2(Noth@, = Q)*more lid@)an hatc ,WeA(1USaveB> to fiUʙ:ActivelRefe rence.Add_wO"Fq''LokWh ( = bExir ' Should calTle!fa ox ! Sh fad"Cs.Log " VESSHATC Impl.Run" ToMsgBoxCur A@ A%                                ! # $ % & ' ( ) * + , - . / 0 1 2 3 4 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R T U V W X Y Z [ ^ _ ` a b  d e f g h i j k l m n o p q r u v w x y z { | } ~       H         x  ME        P  Oni `  locki   i   i    h lei   i   i   z i @  > Cei `  F ; i  on-`x +:H`p F ; `    +@ 0  i P 6-i  p  1:Yi  7-i  of 1i  s noi ompl    % ( > Ma  % H D fi  % h 11 % ` ts)   ;  %  ion  % `p will` G ; ` ly i` lin`n T dt+   J J  i  i    ; i   ----i   ----i      i   2  X set % x    %  s  % `p  ` sca`  `   v` @ R R  )` h    % i    uli    i     i     i|    ip    x@   % z` s  %  FT=6 %  B@>  %  CC   %     % `r heck`~ ` MDL `8 . `: $ +l     i noecip   ll @L AC= `r A +b P     il p   ip   r ma % R 0 T h ( L @  (  `  h     (   P %Q # 1               (   8  @  P N X  , 8 <  , ` B  B  4  L X L  :  @ 8 H x H  H  H P   J  N  P @ &    N  "d 6     H  h  x      $          &   H  X  h  x                 (  @   H  `  x        8  6   H  , P        8   (  H * `          > 0 @  `   h  p   x  0 H       @   P  h   x         B4    ,  0 < P                 2   X 8 x (            0   8  @  " H  p                   ,    H  " P  x   ,            ,    8  @  `  p     .          .   P  ` , h   ,        $      ( * 8  h   p  F x   *          (  0 . 8  h P p 0            * (  X   `  h  p                        (  @  `  h  x                    0  8  P  `  p  x            B4       <    8  H  X   h   x       (      $    8  X * h        F    *    8   P  `            "             *   H   P  X  `   p  x          $      (  0  @  P   X ( `       "< "              (  8  H  X  h  x  &  &  ,  &  & 0 , X          *      8  X  `  h  p          8            , , P          " ! " (!  P!  p!  !  !  ! D !  !  "   " $ 8" `"  p"  "   "  "  "   " B  "   "  "   " 0 #  H#   P#   `#  h#  p#  x#    #  B  #   #   #  #  # ( #  #   $  $   $  0$   8$  @$  P$   X$  `$  h$   p$ $ x p h ]@  D  ]@  D  ]@ ]  (  G ;----------------------------------------------------------------------  ; Note: c & ; Requires: 1-----> Cell name (C0) j m 2 ; 2-----> Number of data fields (R0) 5 ; 3-----> On-line/free cell option (R1) lock % ; 0: on-line < ; 1: free with level & color change3 lett < ; 2: free W/O level & color change z - ; 4-----> Cell orientation (R2) $ F ; for on-line cells 0:Fixed, +:Horiz, -:Vert fp F ; for free cells 0:Fixed, non-zero:ActAngp 3 ; 5-----> Text size in WRK units (C1) DB@ : ; 6-----> Fixed text size (0:No, 1:Yes) (R3) B ; 7-----> Max length (in chars) of 1st ED field (R4) A ; 8,9---> X/Y offset (in WRK units) of 1st ED field B ; 10----> Max length (in chars) of 2nd ED field (R5) A ; 11,12-> X/Y offset (in WRK units) of 2nd ED field  ; C ; NOTE: This revision is a copy of revision 0. It will not work etup G ; properly in Microstation 95 at line 307 unless the TEXT dt J ; EDITOR STYLE in workspace/preference/text is set to KEY-IN  ; not Dialog Box.  ; G ;---------------------------------------------------------------------- go ,             $  (  -  2   =s   active settings to save el] D      work flow control flags ] D   ] D      Set text WIDTH scaling factorsA@ Z  + T ol J  + T  8  + T 0  + T   Set text HEIGHT scaling factors ^  + R 0 T  + R  J  + R 1 H  + R ul     br    +  K T $    +  $    +        +  $    +  $    +  k    perform key-ins lock GG on <B@>  FT=61 <B@>  LC=0 <B@>   Text Justified CC  /TXJS7 D! <B     % E1L product ? - check/get active bus A  ) former ...KEY 'MDL COMMAND getE1lBus'... k  \! ^' x $  Save current active angle    \( ^ , Set angle k H  noecho D! <B  Place Cell  DB   AC=  D! <B  A  Activate required cell   let's handle the error D! &!    Cell  not found DB@. ' p k `  main loop p b    place fixed cell '   1 in case of changing the orientation on the fly %(   #  # # #  #     $  $  ' pd  '  k    place free cell   "  " "  "  "    $       $  ' pk     restore x D! \( ^  9 Should be called before exit - sets cursor back to normal  echo D! <B  &B@ |  x  TAGCUTImpl.Run B@ B@ o @       ] D  (  response object ] D  (  selected line element (bus) ] D0  ( cell object ] DP  ( , point chosen by user where to place the cell ] Dp  ] D  ] D  ] D  ] D  ] D  ] D  ] D(  _  '   , Ask to specify placement point for the cell.  /PACELL D! <B  ) Identify line or RESET to place free cell DB@v  < z  ~ D! <% x .  !   ! '  !  ~ !  z  e  goto free cell '  z d  Must be a data point DB@. resume loop '  k h  b  locate any design element  &!  &%  .     Line not found DB@. '  x  $ exit inner loop and start outer loop k  ! l & : bus line???  Line not found DB@. '  x  $ exit inner loop and start outer loop k ( Accept/Reject  ^B   '  x  $ exit inner loop and start outer loop k   check bus orientation  ! ( 5 *! 5 ,!   vertical line ' n  ' adjust the abscissa of the chosen point 5 *!  ( 5 *! 5 ,!  e   horizontal line ' n  ' adjust the ordinate of the chosen point 5 *!  ( d  Not a horizontal/vertical line DB@. '  x # exit inner loop and exit outer loop k ( q  Place the cell on right point   D%  .     Error during cell placement DB@. z k ? increments Graphic Group number and saves it to the design file  (  # saves new object to the design file  D! B@J N B@L x  ( do not place anything here between Loops   J Decide rotation angle depending on required placement and line orientation   n      n   Z ' d ' k    ! *     !  pA v p y k    Change symbology \!  /  \!  (   Rotate cell     A  k N B@L B@   Partial delete   calculate coordinates n !  (  ! ! !  (  !  (  ! ! !  ( d @ ! ! !  (  !  (  ! ! !  (  !  ( k    perform command   <  delete partialC@  C@ C@ C@ q  A@2 '  i h          @ ] D@  (  response object ] D`  ( cell object ] D  ( , point chosen by user where to place the cell ] D  ] D  ] D  ] D  _  '   /PACELL D! <B   Enter cell origin DB@v  < z  ~ D! <% x .  !   ! '   Place the cell on right point   D%  .     Error during cell placement DB@. '  z X k P ? increments Graphic Group number and saves it to the design file  (  # saves new object to the design file  D! B@J N B@L !  ~ !  z  e  goto end '  z ` d X  Must be a data point DB@. resume loop '  k      ! *     !  pA v p y  k      Change symbology \!  /  \!  ( k @  Rotate cell   $  required rotation   rotate   A  k  N B@L B@ A@2 '   ! DP - 26/06/2012 - Clear the fence  /PFENCB D! <B  i P               ] D(  ] DH  ] Dh  ] D  ] D  ] D  ] D  ] D  ] D  ] D0  ] DH    calculate LT corner coordinates !    $   x(  !    $     x(    calculate RB corner coordinates !    $   z(  !    $     z(    Place fence block  /PFENCB D! <B  x D! <B  z D! <B   $ DP:18/06/2012 - Avoided fence window  NULL D! <B    $  p$ l ' r p ' ~d r ' ~ k x   ' d `  1 Reduce text size as required in 2-character steps ~     '   T T ' @{ k  k  $ T    $ T  ' 8 P  100 $ R    $ T  ' : P  100 : D! \! (  8 D! \! (  ~    WT=0 D! <B  d   WT=1 D! <B  k  z!  x!     (  z!  x!     (  r   D%  .  | (   (  ~ (   (   = If text is entered, place the data field with the given text  B   D! B@J  Rotate text   %  required rotation   rotate   A  k p B@ N B@L  NULL D! <B  o 0  % ` ]   ]  r  r   b  Enter text or RESET to ignore p$ b ' r p $ t ' r x  k   r' li x    ]  ' b_ P l DB@v  5 z | ~ D! <% x . r r!  ~ r!  z  ' p d  r! $ j   ' p d  r! X ' b x  k  k  p i   ] Attribut e VB_Nam e = "TAG CUTImpl" Optio n Explicit @Priva Module,Base 1 @g_H eightFac tors(4) As Integer 'Width &'TextF ields() Const M@AX_LEN 2 ' ;-B $ Note: Requir es: 11> @Cell n(dC0 K';2Number of data fd (R3 On-line/@free c5o1(R16;0:< o^1: Bwith l evel & c olor cha\ngx42Wh/O 4D7No@rientaB(tR2\5f%5Cs 0:Fixe@d, +:H z, -:Ver-FU@4n@ zero:ActhAngO5D0 size in WRK units (CRg6D + t(0:N o, 1:Yes*)3A7MaxYng@k( hr 1EDE 48,9> X/Y Qfset &)S p$10!> 2nd 511,x12- NOTE:PThis revis!e`aVpyA0. It wito ork properly8MicrosR@95 at Ap 307;less the TEXT0 EDITOR@ STYLE w space/preferen@"?/to KEPY-IN n D ialog Box.!a / = ub` Sub pRun(bSng, _ K%`hOnL_HG lSlWrkU"lzIs"l!Boolean `XLen1Zf!eX7#OYalg@2] XxY_p+9 S 'zive p)ting.o sav` Dim dPleY|Do#'a. flow8ntrol agscbExitPp=FmB'S@J3WIDTH sca8g fsICg_J1) 90p2743560= 48G HEIGHT_ -c r 8“ G q= 71 RreAg_q3$;, e 1g1c 2 GetFrom8()Ao_odYeI f E 2 ThensN2 _,   a_ YEnd InfA 'd m key-int0 CadInput Queue.Se ndKey |"lock GG𚑷`FT=61COLC=04' Justi d CC Ca q,Ap.Co mmand("/TXJS7"Cs^< 2 'E1L uduc@t ? -`e0ck/g` 0L)Q8= Om`nge "noechoSho2wPl " +~ooE AC= ':r3dS 'let's @dPAerro`K'Spe. R esult <> msd:Suc^cBqE "R"A&found21 Cj= Trum'ma ;loopCDo Whi } s G$=>$'pfx 1 br= Fal`0 c`B_zR1f`%(2 bExit = PlaceFix edCell(c Name, _  bFre&XFieldNum%Orient ation%2Ge tDoubleF romUnits (TextSizPeWrk)%KIs)Else Tru End IfIf Then 'p f ŋـ1,``H`$m(OnL ine <> 2)ImRcLoopXC'restorDqApplic .ActiveS ettings.Angle|dShould be calle%Af  eA- sets cur sor back to normTalC C adInputQ ueue.Sen dCommand("echo"7 S @ tartDefaultCCSub hError:aCodes.L og "TAGC UTImpl.Run"Repo rtToMsgBoxCurrt _B Pri vate Fun (onmByVal]! As Str,_> EByRei Boole>a߅ALaIntegercg dœCd)h0%Dim obj8 (N Message bponse!ect*Bus&pElem@ 'sel  alar(busdWo * 'npnO Poi0nt3d 'p! dsen b y user w0hereoth`u Gn#{BB ma_Del`DjFinishTom' N6A#bResum`0# ;etiB\nIsVertN ZTos 15 = Fap'As2Mspecify "P .oOoOeO/PACELLO' S XwPppt "Id(a' WRESET&vM]q&0=XX n!rY(msd2Ty$peV, |DataB"=Q? 4<. o1 0j H5=.p )Oru/  'goPrb@ bnf #Bq "Mustq|a d "x"QQ9l&Q1 2Do Whiy No`P{ 'loe any Pzign T{,QY= dLU(,lastView, %Gq sIs h@zO3a9nPfound,F '8inn]ad s outDMaV .3,O2 2 'k 1E???$@ "oG o o9ortoTo RX#on.MJue("Accept/Rej|", et!s 22=r%g  'che0og0WithJ..A^sAd @#.gin.X0V. 2 oUe 'vuv$Oqx@adjAJuabsci ofvho1[  ? ToPlace. X = .Ori gin.X ElseIfYEndPoi nt.Y Thenh'hori zontal lineJIsVertic $= Fa lMadjus t the ordinat f chosen p=pntYw!ApplStion.Sh owError "Not a u,/vgz"%bR esumeTruExit Do'einn er loop and outDŽ 4 If With 'Uell on htQWSet objC = GCregElement3(c@ @Name, c,: ?)K Is Whingԙd1fdurA p"dZFuncv"MPK'incr7s Graphicoup 0numbeAisaves rtoBU design f,il}=.DGr= UpdR N"newAd\ec ʜNA@v eModelRe ferenAdd7e,[nAn= 90 / M|FiField1 T|'ByCoN d 'Chang e symbology(.Level` \ t`TsEC r/'# 'RIe !#$3<`<,CjAbZE-+D&) # enwritdc'PaI@al`0le' xculF co~ov6 + \StToDel„?]{Qx .Low.xFinish1 1,High4 / f { q `'perfVmm@fa} Cad InputQueI.SNCo "p^p pc (qbData❑z_ let3 ,AllViewt&sS bIrF􅗒 {ePriv+ 3ree!(ByV0/A;q@ As St, _a? SQIntegerob/VDoubleYBooleanTSuTm$s  Dim_Msg ' Messa Y 'responspbj B{'AZ6 s "*3dS by user ws' Si  m2]yU Zo !5e R?9>( "/PACELL"HxPrompt "E-rRmqAu G.hGetG(E Type,ayF/*BO  rG8 l@X . 1 ~LWOo'=/.  40tRKt1ӠBӥp  Applic ation.Sh owError "0during cell pl acement",  P6FreeCR= TrueJExit 0Func AML tWh  KCFiFieldX1 To  G Ca DText(uOrigin, , d Size, IsFixed ݍ,lΰ, bUn) m_or eyN Change Symbology, ' s A S`MELeve.l%a tYs.'C rI#'Roty"#`(( <> 0aa Equired rA?c 9C DwAboutZ:, pPntTo">,@li%73 {writAllViews# r'DP - 2 6/06/2012Clear¦>fa#oQu`eue.S~( "/PFENCBr"  軡Priv2Sub s"aptAY3` As PAy3d,| _ap dn Integerk Doubl@l{ pBoo$`un MelGC?%Byȣ~dL' Dim ptLezfQp d,iR ightBott\omp?qCp,erd!~@*%1 T2reg 6fqDataEntr@ mtrx Matrix3TgAstrS0ngwnLength0#7 idxScalepFact]>dxWidh1$gdHe)'cula1LT corncoor8din@<.X@P2 + g_a"es(5d2)0=.wY}Y l, 3z / 2y RB 8% X_Qt, +gp    t H 2O blocksOtOO.3(64;P2(]:18]Avoid@m#window?RC]NULL]6= Get6WithMax@6(O)\1)y ߉ U:= MAX_LENG4u\ې?= 1 'Avuce tsЙ as re$ in 2-charPC0 UBpound@rGIs~)ҋ 1 o|rsdotN= ({) *:i g_ ( 100 QbcR$ Wp'VilQStyle.DY= 4  ?pS3S >=< 5l=_6("WT=0U6.__X1V crXG"D Bottom.X + ptLef tTop.X) @/ 2 p tCenter. Y = (ptRPightY YjnSet ob jText pAp plicatio n.Create!0Elem \1( Nothing, str, v, mtrx)SO.Graphi@cGroup \lFG #regdJ`ustifr #m sdDataEntryR" !6 @Length n StartPXosih1' If tyis edelace the d A field wi . givenC!Call.tAd [(pAct %Model Referenc>e )2'RotbH/nOri.k <> 08 Th@( 'r equired ^rZ'e2D!AboutZ(Dryll@`gin, D8Ed ! C @ue("merK or RE SET to ignore",$=! OAN Szpi(+hb%Do'GLoop#5C#>@=±9msg!9CWMesxsaga1 ""$ aShow?#a+!= 7g@Bi( p%TyLpejsdK|ey~?bo ResetI ."@ 1!\"'"U= Tru/qEls! [Asc"g.)27  ! .=C Oh K eBV 3Bz;P6W2   4  = u  >        x  ME    (  p                      *   2 @  x    F  D  N H >    $     @  P `  ,          .          @   X  p     0                   0  @  H   X  h  .     *     $   ( @ 0  p                x p  ] D@  ------] DX  ------] Dp  ------] D  ------] D  ----- ] D  cripti   Saudi Aramco Product setup DB@ Reset to exit DB@v  DB@ DB@.  noecho <B@>  set parseall off <B@> lock GG on <B@> lock grid on <B@>  lock unit on <B@> node  echo <B@> ' p ' _ X  NULL <B@>  Enter product 3 letter code DB@v  Reset to exit DB@  < z | ~ D! <% x .  !  | !   $  $  '    pid K  e1l K  ild K  def K  vod K  fpp K T x H S @  product not found DB@. n  d  ' p k  p p  loading   product DB@ M'  + attach cell lib, ucm index and color table.  rc=mnu:samenu.cel <B@>   attach command menu  @ Since ustn does not wait for its commands to complete collecting  = input before continueing to next command. It was necessary to ) m  H force it to wait by using get LL and UR corners of the menus via UCM get(f  7 rather than allow attach menu command to prompt for it.  Saudi Aramco Setup DB@  am=u   cm,cm  <B@> 0 in   handle possible error widt D! &! '    ACS9  Get point for menu origin  point for menu origin p ^%  '  p   good-byeded 0  point upper right corner p ^%  ' SH p   good-bye d    Attach cursor button menu am=sacb,cb <B@>   attach cell lib   vod   pid '  k h  rc=   :    .cel <B@>  color table A@  ct=dta:sacolor.tbl <B@> k k k k DB@v G DB@ ce  K T %  0 DB@.  K T 1  12   an  Could not find the cell library DB@. K T +  54 8  No cell library is attached DB@. S  Error number: X  DB@. n   : Should be called before exit - sets cursor back to normal &B@ | x p  VESSHATCImpl.Run B@ B@ o 8 0  Attribut e VB_Nam e = "SET UPImpl" Option ExplicitA@Priva M odule  Pub D Su b Run()  Dim strPr Zct. As S ng"bExi# "Boolean#objMessageFCad`Input+p nuOrigin- OPoint3d #UpLef=lngResulMLo\%Orror GoTo hE )Apa.S howCommand audi Aramco setupZAmpt "Het to e  Status "RF*SQue ue.SendKeyO"noechoDV @. pa rseall off lock GG onb grid un H5C@C= FalsG@`= 0C DoVCNULL5 rEnter pD3 letcodeXwASH= ,Get"h(msBd%TypeT, BB, _G ? + ĆIfz .a  8TheĄ (= @LCase(|(3 3)Se|le a" pid", "e$1l ildefvofpy bIb EfP IyHnot found(HA>E e`Tr&uD`eIfLo op While N@ # 7l3-Yloadi@ng " && h 'attach ce@ lib, ucm index Acoltable. `rc= mnu:snu. menuHSince u stn doesR 1waf@its cs`p@~elN` H biA be !n`tinue$@nextB. It wa` ecry` @@YBby gBLLURrners[ the  s via UCM (ra"r`an ^ow Au 1k  itH _qQqLu3b< "am=u#cm,cmH'hP!`+possi@! ez$^ *e. 0K`O'P/b_I 'V pa9r o"'gaʋ= on."Value("`G8qAQ T upper h*% !2 ?   & Fc2Burs8t?Pa*K/&'&sacb,cb%Uq Q=J_Q:k"c6 hq_[ P4:/lR'HY? 4 ct=dtaY".tba9  = mIu$AX?@Gb}`DSucA[ ' +QICpLibraryPxFq<12g"Could"kfPtR`u/NoP54_ic$ No|Q isd~e)> n@umber:rCLng(VR9l' 1bwmedw - P | Da̱xormalabP rtDefaqCSS iP S:dAiC!s.Lo0VE@SSHATCq.RucRep ortToMsg BoxCurre&n  "ub      ~  ʫ        x  ME        P  <  <  <  <  <  <0  < <  8 B  X z  % x   %  Thi  %  ght, % ` for`     % ( e (h  % ` ` d te x node  % ` M ` t no` s ar` mete` eter` ns: ` 5     ( %Q  0       X   h X ` V 8 T       <  X ` "    (  ,  2  $ P & x :  0  6  6 H 0  &  &  .  , 0  ` "  &  8  .  . 8 $ h                 <   (  8  X  `  p  x         f   (  0  H  P  `  h  x     *                (  @  H  X  `  p              *  > @       @              ( 2 0  h  p       &         (  8  H  X 8 h             8  @  `  @ p     &       ( 8 x p Q -------------------------------------------------------------------------------- Description: ' t R This procedure displays the weight, level, line style and color for Z any accepted design element, and the font and text scale (height and width) P for any accepted text element and text node, and line spacing for M for text node. Chosen attributes are set as active parameters.  Parameters: Returns:  Misc: 5 The procedure has been ported from SETSHOW.UCM Q --------------------------------------------------------------------------------  ] D@  0  selected design element ] D`  0  enumerator for sub-elements ] D  0 " text sub-elements of the text node ] D  0  point chosen by user.7V] D  0  right mouse click flag ] D  0 ) user's intention to set active parameters ] D  0 Level (former R2 in SETSHOW.UCM)] D  0 % line style (former R1 in SETSHOW.UCM) m] D0  0 & line weight (former R0 in SETSHOW.UCM)S9] DH  0 color (former R3 in SETSHOW.UCM)] D`  0  text style, including 0 -font (former R4 in SETSHOW.UCM)10 0 ' -text height (former I0 in SETSHOW.UCM) AC 0 & -text width (former I1 in SETSHOW.UCM)ACS9] D  0  text style, Bold] D  0  text style, Italic202110] D  0  text style, Underline S9] D  0 ' line spacing (former I2 in SETSHOW.UCM) ] D  0  string to show in command area ] D  0  string to show in status area .1] D  0  string to show font h b `  noecho D! <B  '   Setshow A@ A@ ram.r0 Identify Element (Reset to Exit)   ^%  . ----  G x j ---- Accept/Reject  ^B       U    any design element 5 . Params 5 0.  ! 5 ' 5 '         LV= !   , WT=  X   , LC=  ! X   , CO=  X  '  '   text element& zaxs5  5 ! .  k   text node 5  5 ! . = !    $ get attributes from 1st line, if any= rqtS ! ! . all fn    ) ! .  k  k  5 ! '  yax  , LS= X  '  k     ale '  ! ' TN(p ! ' @ ! ' m.xa    , BOLD ' " k H   , ITALIC ' k    , UNDERLINE ' am.ik    , FT=  ! ! X   ' = 2.3  "  TH= ! X   , TW=  ! X   ' (pk x q p A@ / Retu A@ rdinat - Data point to set (Reset for another Element)  ^B   '  x  k  k  k     + set active parameters without using key-ins ------ \ = ------ = 0------ 9  9  5 ( --- check the type of design element !  !  reg ! 5 /  used ! 5 (  ! 5 (  5 (  --- 5 ( ---- 5 ( ---- !  ?  1 LineSpacing reported as read-only property in VBA   So, use key-in  LS= X  <B@> -rek  k  q   Active parameter setA@ d   No parameter setA@. E k   Setshow Completed A@ -lo A@v tempor  : Should be called before exit - sets cursor back to normal &B@ sent b| 8 0   Report that box drawing failed al  SETSHOWImpl.Run B@ B@ o   [ Attribut e VB_Nam e = "SET SHOWImpl " Optio n Explicit@Priva Module " ' -L ' Descri: Thi s proced ure disp lays the weight,@ level i ne style and col@or for*a ny accep ted desi gn elemen&.font$text sc2a+(h9 width).80/node ,l[pacingW). Chosen as a se W  ctive parters.(PXReturnsMisc ]T V[has Dbe porKfrom D.UCMK Pub@ Sub Run( Yń ADim obj@ElEAs EpE's^czG6es GEnumerat  'eAdsub-}us%A @T &'t ofǂFzpnt  Point3dI'pA cby use_a&xbReDc BooleanFD'rk mo c@1k flagbToSM q's @`kto UTg ;Lz ` '(@14 R2 ISFdELlSbA F WCq 1 l WwCa ox ' Õ  0 C F 3W *P_i fRa , cxlud3 '-F4S? ''-bd% I(? . B4I8?bIsBolo 43i)!\@Ita_#UnderL@wd 2N iLSpDoPXe V ,sj&7vZstrCommayRSP^2'pBhow"6ctma pStxatuZ r orF~S  -S S Q% Orr@cGo To catchE S Do Whi Tru#  Call( Apaa!.C adInputQ ueue.Sendt("noe _"xr^= FalZsS " \s P"i^Cv= on lecui("Idi!^fyfx(f Exit)", S L, l( If it DoqG "GetpValue("AҜp/Rej NotVIs h)WithF!'q륏tm= . k /!Yj3kg OA@8Q= LV=" &Œ .& _S8 WTC@A(] ) L.C1.ber= pCOx#9GH29Ýġ_ '.IsaW&)4"3| A].EXIf ! 1b 1=   8.p1kZXDV";?RtElsKAErr`5"No_ ^"0@s_Ypl`EdA Prompt "S$' u be c]0beZ(e eS-A s cursbaa: o normalAtartDefault#SRXSubQca(tch :' R@at bo@x drawAPf`ailed$Cs.Log " SETSHOWImpl.RunT rSCToMsgBoxCurr0   n " R V .  q        x   R R R0 R RH R ME        P  @ X  @   @  <  <  <  <  <  @  L \X0 H   H      `   ( x  % h   h h  senth   hd  ' hf  ' h + P x a a   )p   %  % `   %   %    %  ite   % 0 CSTN  % P   %  cale  .. etc fp  L j  C jr C jt0 C jpX C jC j C j C jb C j  C jC j p C jr C jt C jp C jC j8 C j` C jb C j C jC   H 8 H     p   ` 0  true         H    %Q ( * \ R f f f f * 1 x 5 1 e 1 2 5 0 c \ 0 ( * \ R f f f f * 1 x 5 1 e 1 2 5 0 c \ 1 ( * \ R f f f f * 1 x 5 1 e 1 2 5 0 c \ 2 ~ 0        ,  @   `  h  p  x     ,          2    8  @  H  P  X  `  h  p   x X    L  L @ N  H  J (  x 2  R  X  6 h 6  6  6  6 H 6  6    .  " ( " P  x &    H  X  h  x    (  "      2   X  x        4 8  X F x  *     ( $ @  h  : $  :  X X $ 4 L  F ` : D L 0  F < F  L X J  L  J H B    <  < ( F h D  @  B 8 F  :  @   H D P H  D  H ( X p B               (  0 0  `  h   p   x  *                  0   8   P  0 `                  0  8  @   H  P   X . `    B  4      0   P  `  x                   $     B ( " p          $   &   " (  $ P  $ x                        "   8  P  `  p     x p ] SACS920211SACS920211SACS92021101 ****  Function completion code  '   ' r  ' t  ' p c ' h & Request type sent by calling function 0  '   '   ' b  '   '  + name of params as name of registers in ucm none**H ^ ` ^  ^  ^  ^  ^  ^  p Q -------------------------------------------------------------------------------- Description:  E Read Write Cadd Standards Text Node (RWCSTN) is called inch E by other ucms to read scale,monument axis ... etc from T o G the CADD Standard text node which is a text node written A in the FPP seed file of a known text strings size. C The following is the text node prior to modification , SACS920211SACS920211SACS92021101 id ' L SACS920211SACS920211SACS92021102 scale (x y z 1[if init succefull]) R SACS920211SACS920211SACS92021103 xy for mnmt (x y z 1[if init succefull]) / SACS920211SACS920211SACS92021104 spare / SACS920211SACS920211SACS92021105 spare / SACS920211SACS920211SACS92021106 spare / SACS920211SACS920211SACS92021107 spare / SACS920211SACS920211SACS92021108 spare / SACS920211SACS920211SACS92021109 spare / SACS920211SACS920211SACS92021110 spare ( Lines 2 and 3 after init. will be:  1.1 1.2 1.3 1  2.1 2.2 2.3 1 Parameters: param [in/out] Returns: A param.r0 (rtCompletedSuccefully=0 if succeeded) Q --------------------------------------------------------------------------------  Use:  Dim param As RWCSTNParams ! // Include(create) CSTN in file  param.r0 = rqtIncludeCSTN  Call fnRWCSTN(param) , // Store xaxscl & yaxscl & zaxscl in CSTN  param.xaxscl = 1.1  param.yaxscl = 1.2  param.zaxscl = 1.3  param.r0 = rqtSetScale  Call fnRWCSTN(param) . // Return scale in xaxscl & yaxscl & zaxscl  param.r0 = rqtGetScale  Call fnRWCSTN(param) @ MsgBox param.xaxscl & " " & param.yaxscl & " " & param.zaxscl # // Store x,y monument coordinate  param.i0 = 2.2  param.i1 = 2.3  param.i2 = 2.3  param.r0 = rqtSetMonumentXY  Call fnRWCSTN(param) 3 // Return x,y coordinate of monument in i0,i1,i2  param.r0 = rqtGetMonumentXY  Call fnRWCSTN(param) 4 MsgBox param.i0 & " " & param.i1 & " " & param.i2 Q --------------------------------------------------------------------------------  Misc: comment from rwcstm.ucm . register used for E -------- -------------------------------------- ? r0 r0 is used for several functions 4 -request code > -return completion code E -locally use temporary storage ? Request type sent by calling ucm 6 value meaning ? ----- ------------------------ F 1 Return scale in xaxscl & yaxscl D 2 Store xaxscl & yaxscl in CSTN E 3 Return x,y coordinate in i0,i1 D 4 Store x,y monument coordinate ; 5 Include CSTN in file 5 Return completion code 6 value meaning ? ----- ------------------------ = 0 completed successfully : 1 Text node not found < 2 Scale not initialized ? 3 Monument not initialized 4 99 Abnormal exit 9 r1 loop counter ( local use ) = i0 X coordinate of monument point A received/returned for write/read = i1 Y coordinate of monument point A received/returned for write/read Q --------------------------------------------------------------------------------  ( ]    Was CSTN found? ]  #  function result ]  ]  ]   ) save previous setting during create CSTN ]  ] 8 ] X '   # lookup CSTN Element (in TextNodes) B@  B@  %  .  '  ! b ! .   %   G ' j  !    !   ) Return scale in xaxscl & yaxscl & zaxscl K T F  %   $  '      $   1  $  X (   $  X (   $  X (  d t' k d t' k  ' Store xaxscl & yaxscl & zaxscl in CSTN K T F !    !    !   1  ,   . Return x,y coordinate of monument in i0,i1,i2 bK T F  %   $  '      $   1  $  X ( d  $  X ( f  $  X (  d 8 p' k ( d  p' k    Store x,y monument coordinate K T F ! d   ! f   !   1  ,    Include(create) CSTN in file K T F D! \! .  D! \! .   active level=Level 63 <B@>  active line space=:.001 <B@>  active txsize=:.001 <B@>  include fpp:sacstn.txt <B@>  point absolute=-:1,-:1 <B@>  D! \(   D! \( n 8 d 0 r' k   (  ! '  z     Report that function failed  fnRWCSTN B@ B@  (  ! '  i x p  Attribut e VB_Nam e = "RWC STNImpl" Option Explicit@Priva Module Const t_ELEMENT_IDSACS92021101 e ' FHunckco zeE d [Pub | Enum ResultTyp " rtC4ed SuccefulDly {0 T extNodeNotFound B1Scal I(nit 2 Mo 8ent 3 AbnormalEx99 E *P' Reque t Q s " by 3ling ft lmqtGetQ NqZqtS XMyZXY X 4eq6clude+n@ 5M2nAof params as Eregi sters inp ucm3/jPCB 0 Aspx axsclDo@{uyRzRiBIi1i2IAl;Yl-? JDescri:A Read WriCadd S tandardsJ  (C) ised otherAas Pto rs,"mă ax@.. . etc fr*ok'# ` CHADD tf n g whicha`ten/# B FPP_ed@ file Ha@ knownCsngs size.oThe followf! Apriormodifica!o $i)2B* (x y z 1[if@_ se])1103 xy r mnmt |4eo uga;<5?06?,7?,8?,9?+10,6Lines 2 p 3 afB<. will bex1.1 1d.2` 3 ್j2e22.be `" [in /out]ARe turns.r0 (=0 T"TededTg1 Us DimbVKu`'@ // InRg(cJte) gPCB2Ra = rJjICafn( StorHe xb& d&~ c=`DsqpvsqPvw y3 m  E  偟Np%@MsgBox." " &DfI,y ecoordinS30y= /:1P0:2?xCrn x w g i0,i1,i:?'j& '@ ?4Misc: гm~ rwcstm.™!*P & 9 uszor 5  Pi }uveralVs -rdcoo`U3Monumen?t 99!Abnor mal exit[rq6loop cqter ( lo_ use )iXordinate of m_ppoin?r eceived/@return@mf or writeՀaNi0Y ե Func tion fnR WCSTN(param As Ps)Res ultType On ErrJGoTo h VCDim bFABoole an 'Was ? r Cq 'f*  objEleB-ANN ΄ eEr|at+ SCNew `jnCBria# ' save p revious setting dur creR/!" A.veaStyuLevel!arrValues(4StAA*= rtCS/ᒤa'ookup 3d (itn *srS C.ExcludeAll!BsC InB msdd E  SetR )4= C$M@9l Referencte.0( K=` FalsAR`D`o Whi* .MoveN !A@ =.Cur !a If .ALine(1) =%_EL EMENT_ID Then^= TruL  #` Or o.r0 rqt'0 Select Ca%c'' Rb s 9 xaxscl & yzg `Get-le:G M Split2(#2), "< "4a UB() >= 3b& (3a-"1"tC!D 3Dbl' (0)!gn1oC2o DU*#W H:RNo@ sEnd IfE/// D ' S Se _#d%A*#5m# O4@42�*C* %F<1" /x,y/zuBc i0,i1,i280\XY0sW0t0300 0s0 4 00O0o)S$1,0t$2// _*t */+o5_t_/0 0 $co%?#/?# //rM0-Y.0i2S// 'c()|@.f q f-` ypP_caq.QsR/H5 Ìovefh% CadInputQueupendHKeyP "a l!=63 A| space=:.00txs ֯ i fpp:s acstn.txt OA ab solute=-:1,0 Aөx;`<W"o{)da6s@::xo2Ò2ÿ#U  hError: ' Re port tha t functi on failedCodes .Log "fnRWCSTN"<ToMsgBo xCurrentJparam.r 0 = rtAb normalExiS ) End F      T  ʄm        x  ME   (  < < < <   B I I  ` z `  x  % `    %Q 0   S     L  B ` 8 :   L 8 "                        >    X  p                         J    p  x  D  :        (  8  H   X   h  x           H            @   X  . p                           0 @ x p E ********************************************************************* < Description: Toggle between meter and mm working units setup 2 If the file is set to FT,set it to IN 3 If the file is set to IN, set it to FT ******  Parameters: none** E *********************************************************************  h ] @ ] X ] p  noecho D! <B@  (  D! !  D! !  '  D! \! ' _     7 English system activated; for inches imput only kabayan " $  (  (   ( T o  (  s s  (   D! (   (  (   (   (   (   D! (  ; ENGLISH SYSTEM ACTIVATED; for INCHES(in) input only Kabayan DB v o d x k   D! !      D! !     '     4 English system activated;for feet imput only kabayanle  ft ( fo (   ( Firs  (  t to  ( xit  D! (   in (  ( ' h  ( Pick  (  . '  ( Pick  D! (  9 ENGLISH SYSTEM ACTIVATED; for FEET(FT) input only Kabayan DB v x  k  D! !     '   gu=10 D! <B   gr=10 D! <B   1 MU--> 1 in, grid ref is 10 cm DB v x X k P x H @  /file D! <B   echo D! <B@  |    ENGLIImpl.Run B@  B@ \( o   q Attribut e VB_Nam e = "ENG LIImpl" Option ExplicitA@Priva M odule  '*A GDescriw: To ggle bet ween met er and m m workin g units setup > If the f i Ci# to FT, - it IN#IN,1FTPar Hs: non E Pub S ub Run() kO rro r GoTo hE Dim dUAs Do GG Griu MeasurementCCApAaA.Ca dInputQu eue.SendCommAd("noecho"*= Active@elReferenc@ubB.PerMasSA *UORs 7 IA +d:Sett s. I@>= u$" #?$?$'?$?$u.?$shdcd4#Call*eShowPr ompt(CSH SYSTEM ACTIVATEDRINCHES(in) iazcSKcSx+a Ex)cEIf'`fp(Notww`1) Or _G (#O A *bx)xhxAxfeetxx"ftSw3048Kw# u.wS)_\ \; 5N"in/k ] NpN`nAN ;dqN`)/n[;;;;beFEET(FT;an;; ;; 66;66 ("gu=10 /;# rS1 MU--> 1 Q, g` ref 10 cmOQ0Gy LooAC1 /1  rp4 C:Codes.Log.@98Repo rtToMsgBoxCur0`q5                                ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o q r s t u v w x y z { | } ~        \          x  ME   (  < < < <  p B $ $  X **** %      ` %Q 0   -     L  6 ` <  L "  @  H   P   h  p                          0  H   `  Z x                0 @ x p E ********************************************************************* / Description: CACS Working Units setup activate; 6 METER input shall be used; mm DIM displayreci  Parameters: none E ********************************************************************* %    noecho D! <B  ] @  M ( om (   (   (  YPE-  (   D! (   CM (   (  (   (  ****  ( ****  D! (   gu=.1 D! <B   gr=10 D! <B   /file D! <B  L CACS Working Units setup activate; METER input shall be used; mm DIM display DB v D  echo D! <B  |    METERImpl.Run B@ h B@  o ] Attribut e VB_Nam e = "MET ERImpl" Option ExplicitA@Priva M odule  '*A GDescriw: CA CS Worki ng Units setup act; 1  input s hall be used; mm DIM display 8Paryters: n oncb Pub Sub R@un() ROrror GoTo hE RCXApa.CadIeQue ue.SendC ommand("noecho",Dim u A s Measur`ementu@.Label Hu.UPer BaseDeno minat(= 10 NumerEmsd3HMeWE Sypstem @ ric @Aze@ elRefere@nce.Ma@r;%@u C9CM!9 8FA?9m*9 Q8)gu=.1ň*r=10KS /fileSh owPrompt("} ?{${Ujj Exitw4 t:DvCodes.Logh.|MhRepo rtToMsgB`oxCurWE ndc       ,  ʳ        x  ME    8     z  ʮO  H X mdlElementTemplate_activateElementTemplateByPath       x  ME    (  <  <  <0 <  X +T` @   iV B v v   nt.  %  reci %    % Z N  % \8 and  % ^p crea   X  % utom`p ch a ` YPE-  % b ters  % `d  `f  `h Dɬ`j  `l o m `l `n `p `< `> `r `t Z`v `x H a @ n t `   `  @ %Q  0     H     L  P h T T  R h   L  "  (  0  8  H  X  h  p                              (  0  8  @  H  P   X  p         $  6   (  " 0   X   p  x                       0   * P                0  P  p   8           (  @   X   V `   *    $   H  P  p                 <          (  H  `  x               0 x  h E ********************************************************************* z I Description: This function draws cloud. Cloud is joined as shape element. N This will prompt the user to pick a point anywhere on the screen, N as a start point and enter point at random, thus creating a cloudters L automation,and can be hatch afterwards.CLOUD is TYPE-6 pp A-17.  Parameters: none E ********************************************************************* 8 `  ] D  ] D   ] D  ]   ] D   ] @ ] D  ] D  ] D  &] D   ] D   ] D  *]   ] D8  ,] DP  xit ] h ]  ]  ]  ]  ]  ]  ]  D! \! . ` D! \! 0. b D! \! ' d D! \! ' f  noecho D! <B@  < OTHER\CLOUD $ z $ T  nge ~ " Error: Element Template not found! B@| k   First point(Reset to Exit)' l exit l p ^%  ' G p '   ' h  ' j  Pick up point no. ' l   Pick up point no. h ' l_ ( l p ^%  ' = p G x j <B !  !  ' n !  !  ' p< n n p p $  ' v v   "  not too small distance BAKA n v ' tB@ p v ' r v   ʡE? ' v r ? v ' > t ʡE? v ' <x !  < > Z(  Z!  \(  t ? v ' <h r ʡE? v ' > !  < > Z( rdin Z!  \(  \ j+ ^ 8 $ element for "create shape automatic"   Drawing =1 j  ' j  /parce D! <B   D! <B  ' *  Z D! <B  ' ,  D! <B  , .k !  !  !  !   T ( End Point coincides with the Begin Pointe  Reset to Finish.. DB@v  create shape automatic D! <B@   \ D! <B   Working....please wait DB@v ] (  j     $ ^ D! <B  p DB v x X k P h  ' h '  l h ' or Pick 1st pt. to close/Reset to Exit  ' l  k   DB   /nulcmd D! <B > ` D! \/  b D! \/ 0 d D! \(  f D! \(   echo D! <B  &B@ UCM Exited DB@v |   CLOUDImpl.Run B@ B@ o    Attribut e VB_Nam e = "CLO UDImpl" Option Explicit Priva Declare FuncDmdl ElementTe v F_a 2X . ByPath Lib "std 8 bltin.dl l" (ByVal w"As Long)  Module 0 '*A #Descri{: T his fqdr aws clouPd. C j oined as shape e5.% %wi ll promp t the us er to pi@ck a p%t anywhe  Heen, (8a start9d (#t random,5u\rea g 4Cb(utom@on, can be hatch afterwa0rds.‡A>TY PE-6 pp A-17 dDeltaX!Do`JT ECYRsSinrCosSqrxAng 4* #Set <= Apua.#@}s.??B$cBBCD C CadInp utQueue. SendComm("noecho"If ?%#(FPtr("@OTHER\")) <> 0 emF.RaisrrInvalidf, , r": [% td fbd!B nd IfG^!Firs$(Res?ơ)$c$pt= "on.Geo`ue(y , DNotT=U n>= 2= 1 ;Ppuptmno.$ " & (7Do qLptv]oalotd1 XThe!pY=G.HX -.XOtLaY .YMYSLE= P (E*J + Y 5Yo D!dsc0  'n"too HsmapdiЈncUA5 9s \/ dS= oTb / 2 / 0.866daB* 5 dX Yq~K0 d 9h Rp { D { u S%G nge `@  `B `D `F `H `J `L `N `P `R ` 0     @      %Q 0          \ 0 \ B   X \ p "                   (  0  8  @  H  P  X   `  x            T   0  @   H  P  h                         (   0 . 8  h $ x                        8  H   h   p  x      "                                  (  0  8  @  H  P  X  `  h   p   x                        (  8  @  P  `  h  x                  0  @  P  `  p    "                (  @   P  h            (  @  P  h           (  @  P  h            8  P  `  x           8  P  `  x        x p ]   ** U ************************************************************************************* ) Description: This function draws shapes U This will ask the user to enter the data required for structural steel % < shapes to be drawn to its correct dimensions.   Parameters : none V ************************************************************************************** @  ] D   ]  ] D   ] D  ] D  ]  ]   ] 8 ] P ] h ]  ]   noecho D! <B  D! !  D! !  '  F%u?'  '   Dept'  _ 8   '  " Enter dimensions in inches: Enter   /Reset to Exit p$ j '  p G x j   K T    '   thickness of web'   K T    '   width of flange '   K T    ' d  thickness of flange '   K T    ' al dx  n   p b  Pick anywhere/Reset to exit p$  ' > p G x j   working....please wait DB v # ac     A " D! ]  $ $ . DP D B@J = DB@L ! <B  DB  ^' p   echo D! <B   &B@ R  UCM Exited DB@v ell |   BAKALImpl.Run B@  B@  so P  ]  ]  ]  ]   ]  ] 0 ] H ] ` ] x ]  ]  ]  ]  ]  ]  ]   ] 8 ] P ] h ]  ]  ]  ]  ]    calculate coordinates to ' & &' B !  & ' &@ ' ( (' D !  ( ' ( AS=1 B   ' , ,' F    ' *ti *' H F H ' *  & * ' *! ' ,    ' . , . ' ,  ,' J ( , ' , !   ' .*!  F H ' 0' & 0 ' 0 Oe?  ' Lntal y):?  ' N h"lxz? L ' P h"lxz? N ' R * L ' 2 ( N ' 4 , N ' 6 0 L ' 8 * P ' : ( R ' < , R ' > '    fill the shape points array  +    '  & $  (  !  $  (    '  & $  (  ( $  (    '  2 $  (  ( $  (    '  : $  (  < $  (    '  * $  (  4 $  (    '  * $  (  6 $  (    '  : $  (  > $  (    '  2 $  (  , $  (    '  & $  (  , $  (    '  & $  (  . $  (    '  !  $  (  . $  (    '  !  $  (  , $  (    '  8 $  (  , $  (    '  0 P ' : : $  (  > $  (    '  0 $  (  6 $  (    '  0 $  (  4 $  (    '  : $  (  < $  (    '  8 $  (  ( $  (    '  !  $  (  ( $  (    '   +    '  o 8 0 ٶ Attribut e VB_Nam e = "BAK ALImpl" Option ExplicitA@Priva M odule Dim m_p tShape(2 0) As Po int3d>'*Q 'Descri: T his funcdraws s=s +  +wi ll ask t he user to ent data req uired fo r structural eelG+7#be Anits cor rect dimHens s. P ar8s : Xnon S*Pub Sub Run() DO@yrr7GoTo hECCw@wtartBu wAAoLineAqEle@9 Eb0ExitABo oleannCXoun I@ag er ^WhatEBgSngda0Do@:RQda123=n9nAN(dConstdUnOA5%.CaA pa.Cad InputQue@ue.Senm mand("no`echo"mD=J IA vee lReferenc ubB PerMas A *UORsE!!H*= 0.025475@pDeptDo !+ 1.= Get/Value("Bj in@ ches: c" +wG+ " /ResetasS", 80, bT+If;C e XSelyCase gaa AT= I* D9 bHa)thickn ess of web$+Aa B2`_ Mwidthflange1312 ̟iR) da3 `=End c>Loop# Do While NotG ʧX"dXP9 anywh v'Se@ S R Show Prompt(" working. p X+waitE 7 Fillr}Array(y , ,A 1A 2A 33GDelaaSp8$= CLre(d1(h=0 ,78:NNAd:dh  .ReygNADisplay (Trueh%S}!^Co^]DSt .P rtDefault_ ("UCM!ited ,\ ~:~ Codes.Log(.Run=8 ReportTo MsgBoxCu0n1ub2= #Gp203d#X{ z Xz yg4 &di{0(di4ym5oa6oa7oa8oma9oa1/ 1?sOsssosaAabbb"a1ss; iJ' calculP70ordin ıJm%=pOud io9R.X`A(@kY - *6pF!/ 8!i6R51 958a9J30573`]iP a7ta0A & C4 F͟ab a8W 538q1.x087 !0.67410 4 0.322611vD;i< a1g dicHq di51gQ !!a1F" d0+P(aS i! qS ' f{" bps aa|! m_ptSh ape(i) = `tartPo@int i Ti + 18 .X Bdi32fY 2 .YH=di4+H9. .H1sdi1I:5G10 "֡"4)X6g4WW? di7e" XC D.(9\12V%U38 - daCKEB Bdi81?Ti)DeY_w/K4 ?O*) 3En d Sub        Ƣ        x  ME      P  <  <  <  <  ]  ]  ]  )  flag: place free cell# ac D! \! ^' Z  noecho D! <B  Place Cell P DB   AC= P D! <B  Acce T ^%  ' ,B  V ^%  ' .! '  R     this is an fpp cell ]  ]   '   (   %   s  TS= !  D! <B   AS= !  D! <B  d   Drawing Not INITIALIZED DB . '  k  ' p k  _  p x  k   AC= P D! <B  CORN ) Identify line or Reset to place free cell  p$  . @ p '  x ( k   AS=1 D! <B  ; activ scale  activ angle pt2 D! <B    ! ( ! 5 *! 5 ,!  Z '  $ vertical line  5 ,!  ( 5 *! 5 ,!  e  ' 5 ,!  (  '  %  horizontal line d ( ' PLCCELL: ERROR Invalid Line Orientation DB . '  x  k  q   K T !  (  !  (  !  , (  !  . (  D! \( ^ Z K T !  , (  !  . (  !  (  !  (   % Application.ActiveSettings.Angle = 90  1 Application.ActiveSettings.Angle = 3.14159265 / 2  AA=90  D! <B@  n x  AC= P D! <B  P  D%  .     ERROR: unable to place cell DB . '  x  k  R     D! <B   null D! <B  d   delete partial D! <B   D! <B   D! <B  D! <B  ! l    ] ( . ,    '   K T !   (  !   (  Z K T !   (  !   (  n   /pfencb D! <B   D! <B   D! <B   lock fence clip D! <B   /dlfncc D! <B   D! <B   lock fence inside D! <B   /pfencb D! <B  k   /pacell D! <B   D! <B   null D! <B  k (   echo D! <B  Z D! \( ^ &B@F   ac= P D! <B  d  &B@ k  |    PLCCELImpl.Run B@ B@ o X @  ; Locate a point joint of the line and press enter to accept. ]  _  l DB@v z  ~ D! <% x . r r!  ~  r!  z   ' p p x  d  r!  r!  D! &%  .     ! l & r! ' 6 Accept/Reject p ^B  p x  k k k k i  Attribut e VB_Nam e = "PLC CELImpl" Option Explicit@Priva Module '*A GDescriu: Thi@s funcp laces ce ll and p artial dele a line pending on O input re cieved f rom the comm*menDu.Part ers: 1. 0strC;(in)-- n 12. n>--can b e: 1-PIDl6srleave as vtr!4 !no change symb5-8FPP s et scale by l to rwcstVB3HLeft=Delt e of origin Xfor n$4BRigh--C htMicc:eTFus -.xbas @ @ Pub@ Sub Run(Aȉ As Sn g,Integer,K @>) 3OrrNGoTo hECDim dA vAngA nOrien|ta΀" '@ ;@3choosenDKptT ouchPoint# 3d 'loc arBW h4 Stujav :Av s;zAPtEnd  !% objLAEle's@ctA' }`A'd;aDoC *d;-bExitABoo~ lebDrawaf ' flag: #fre1 HD`Apb7.bGeSett`s.HCa ICadIQuePue.S-C("noeH"U.PShowfP q" +IAC="1= @on.Get.FUnits!vaD38$0c 4 = Tru>If1= 5@ m 't!۠@fpp¯ oARWCSTN^am`EdDefaul|tS"`CIJ = 1G `lam.r0 rqt`BGP q.fn (Ub)Atpqwd Succefully 7!?$?$5$4TS&a xaxscl8!cp|("AElsq1+V ("8Not INITIALI8ZED.% FaK If>y"ssDo#TheAUrC?_?54H@B 5T= SRU("Id1fify"d~ ReЂX>L: ERROR In@valid a Ȕ? )?Q1 )B<*;Q  6 CaseeǝM0;qpt.q_oYo teb$X - ’X{?;P*l9KOY 1 Y XOj, oint.X  'Appli cation.A ctiveSet tings.An gle = 9033.14159265 / 2C zCadInpu tQueue.S endComma nd ("AA=P90")@E S`elect C0all "[ -C= " + strCellName3 obj ( reate Element3(! , ptTouchP, Tru +If,Is Noth ThencԎgSho wError(" ERROR: unab to place c f A%bDraw3FalseOExi0t Do \IfGG52 nO6p M14gDataO(IRf4Đ("nullJ >idte partia%7StPD9Ptj|Rese(ka;a.Ty p54VDim d`ta AsI>uSD a $= (dRightp@dLeft)4~ Case Lrin/Bpdpt-.Y U+ -d  -ov"ѫVXB X&b-_ete.pWAma f ("/pfencbdfe  h f ? lock @lip6`'dlfncc'4e y y("insideO 0;y~~"D a(h  u /ppq;`/.w7??Z?h Lo|ops(msd, |6bx7s .2qqs Or 0g8 8/by+w! ?-Db 1g.View_  (q8 u Q1,6pt#,=g.b !S_QPiP R1ue`ס)/Rej0"$0hiDo.;dC= #Z?                x  ME   (        0  @   P   p   *      .        0 @   `   h   p  x        D   (   8  X 0 `              D   0   H   P   X   `   x                     <    P ( h 8    :      8  @  P  h  x          ,     0    8 " @  h      x p Q -------------------------------------------------------------------------------- Description:  E Multiplies selected element several times in specified - direction at the same distance Parameters:-in MI Returns:  Misc:mirr Q --------------------------------------------------------------------------------  ] @ ] ` ] x ]  ]   # of copieslycomm]   for copy ]  ]  ]    corners of fence ] 8 ] X ] x  ' p  L MicroStation disables AccuSnap whenever a new command starts, so a command tal  4 should enable AccuSnap whenever it is appropriate. MIRR &B@ RTICAL p '    Terminate any active commands  NULL <B@> p b  . Do choose an element(change cursor behaviour)RESE  choose element <B@> .   MULTIPLE COPIES DB@ T &( DB@ / FENCE OR IDENTIFY ELEMENT (PRESS RESET TO EXIT) DB@v &B@ <% x .  !   &B@ COPY ELEMENT <B@> !  <B@ ! '  # accept an element by click anywhere '  RESET FOR NEW ELEMENT DB@v Accept/Reject  ^B   '  !  | e   If message.Keyin = "" Then '  _  '  if no fence ! !    select first corner  PLACE FENCE BLOCK <B@> . DEFINE FENCE BLOCK and DEFINE DIAGONAL CORNERS  ^%  '   <B@   select second corner   DEFINE DIAGONAL CORNER #2  ^%  '   G  <B@ j k H k @  select point in fence  - IDENTIFY POINT IN FENCE (RESET FOR NEW FENCE)  ^%  '   G ! B@ j k   FENCE COPY <B@   <B@ k p p   '    End If !  ~ !  z  e ' p k    Get number of copies   " KEYIN NO. OF COPIES(RESET TO EXIT) p ^% j '  p    ! get (an element/ a fence) offset ' XXX,YYY RESET FOR NEW ELEMENT/FENCE  DB@ '   DELTA X,Y; KEYIN OR CURSOR   ^%  '     $  '  k    do copy  $  '   b &B@  <B@  $  '    '  8 k 0 k (   & Set MicroStation back to normal state  &(  &B@ |     Report that function failed  MLTCPYImpl.Run B@ B@  &(  o P H ~ Attribut e VB_Nam e = "MLT CPYImpl" Option Explicit@Priva Module ` ' -L SDescri: Multi es selected ment veral tim in s pecified1Gdir tat@ the sd@istancn' Par tersCReturnaMisc Pub Sub Run()  Dim objM essage A s CadInput bExitBoolean BreakDoCopy Fe G' # of copitesn  IntegerC' for yA:ptSrc P`oint3 o@ptDsB5POff secornrA(f1UpLefLowRi,ghU,eBbTypBfMsdg%COrr #?BLOCK<yptn:p\DEFINE X@)d dDIAGONALJRNERS A3  w4e fseco@m?O CP ptF}O#/ #2f ?,Q!jioEIf{?FH q* _K5MAAIeePOINT IN#(;G$)0 D"p4Und4  F!Loop [ Odwf81Y!K  ,W#@#X 'O WxReO~r{AZ_NTru(n ' h numbe#ԤI>4ȔmKEY+NO. OF+, 0o?*E"F> 0H ' gГ(W/0B:)`+A~1us ( "XXX,YYY~/"8") bBr eak = False|ptOffset Com mon.GetP ointValu e("DELTA X,Y; K EYIN OR CURSOR", , True , , eInp@utTypeIf pmsdCaBd1Datay Then* 3dSubtract(, ptSrc?End If,' do copy ptDs6Add3.23Do Wh ile nCopies > 0-gandSta te.Enabl eAccuSnapQueue.SendU _1@61(E0=2- 1Loo -[W.C' SA MicroACi on back to norma8l sI MMe@ssagesOd rtDe`faultDC E0xit C hError: ' Report that fuHnct'fa xd Codes. Log "MLT CPYImpl.0Run" To MsgBoxCurrentC b6Q + E     %  T        x  ME    (  <  < < <   B @ 3 3   iJ  T\`p z  y or % ` L s ke  %    %Q 0   >     R  8 h ` T  ( X .  ,  "                 4 0  h  p  $   "     $     (   0  8  @ H 8 h   "      $     8  @  `  x          "             0   @   H  P  p     x p K Description: This function mirrors selected cells around its original point  1 (either vertically or horizontally). Y This function uses key-in MIRROR ORIGINAL VERTICAL to mirror cell vertically N and key-in MIRROR ORIGINAL HORIZONTAL to mirror cell horizontally " Parameters : nParam - Mirror type: ( nParam = 1 1-horizontally0. & nParam = 2 2-verticallycomm  ] ` ] x ]  &B@  % S  noecho D! <B   - Get Mirror type: 1-horizontally,2-vertically D J  K T F   MIRROR SELL HORIZONTAL DB@ tal  mirror original horizontal' % SELE  K T F L LI  MIRROR SELL VERTICAL DB@ ted  mirror original vertical' n ' p ]  p b   Locate a cell to be mirror  IDENTIFY CELL(RESET TO EXIT) p L ^%  .    ommand  ELEMENT NOT FOUND  DB@ cal lid !     Get mouse click for accepting  ACCEPT/REJECT p ^B  p   The Cell is mirroring  D! <B  ! ! * D! <B  ! ! * D! <B  D! <B  k 0 d (  ELEMENT NOT FOUND  DB@ k  k    echo D! <B  &B@ |    MIRCELImpl.Run B@ B@ o x p T Attribut e VB_Nam e = "MIR CELImpl" Option Explicit@Priva Module 'Descri^: This func|mi rrors se lected c ells aro und its original poin f'  (either verticaHlly 0 h 4zont). 3 uses ke y-in RO R ORIGIN AL VERTIC to TO6--aZ&H +ZONT' W (Par te : n - M type::= 1 t1-' ~2 2-Pub Sub Run( As Integer)  CO o GoT0o hECDi m bExit Boolean1GelCxEl8emet st rKeyInCo,mmARSngCCSt@.@ rtDefaultD ~ ApaA.CadIn putQueue .Send ("noecho"D7' Get[ TF,M/ Se Casel!B1@mB 'Show#ASELL ܊J焨Fǁ B#2e#(~be%&feE@e&C% F= Fa\ls !CpbIP A3d#Do W hile NotMA'Locfauwbe$xSoL+++M LoopS [b("[1*`ca9in kPRlCodes.Log).RunKHReport ToMsgBoxpCurrm  (  < < < <   B 0 0  6X ---- % `p ipti` vert` ng s`  Pa 0    %Q  0   7     L  V `  L "    (  0  8  @  H  P N X   $      ,   @  P  p  x     2  <            0 > 8  x <     >       8   X   p                          ( 8 x p E ********************************************************************* qual O Description: This function breaks the vertical lines by deleting segment of it.  Parametters: none E *********************************************************************   ] @ ] ` ] x ]  ]   H dLenghtSegment - The length (along the Y-coordinate) of deleting segment  0:0.2 ^%  '    Terminate any active commands0:1. &B@  '   noecho D! <B   % Set locate cursur for choosing lines ical &B@< S  VERTICAL BREAK DB@ ic ' p _  &B@ 45) d  + Select horizontal line or point in the view are d % SELECT HORIZONTAL LINE(RESET TO EXIT) p ^%  ' 6ted p x k 6! ' he l '   7 Call Application.CadInputQueue.SendDataPoint(ptPoint) le  b 5 Call Application.CadInputQueue.SendCommand("/DLPELE") @  Select vertical lineX ' SELECT VERTICAL LINE(RESET TO RESELECT)  ^%  ' 6Le   6(   /DLPELE D! <B  awing 6 D! <B     6(  noec 6 D! <B   DIVI X P  echo D! <B  Ge &B@F f segm &B@  KEY|    LINEBRKImpl.Run B@ B@   Geo   ҳ Attribut e VB_Nam e = "LIN EBRKImpl " Optio n Explicit@Priva Module ` '*A GD escriw: This funcbreaks the ver tical li nes by d eleting segment @of it. QPar tters`: non EPub Sub Run()  Orror GoTo hE Dim ptPDoiOAs 3d bExit  Boolean 3dCoor(din YDoK sF9dLenpghtS !'E-]e l th (alo U\Y-c)W\C+L= Commo n.GetCFr omUnits("0:0.2"M@' TermB1 any a@}ve candsCS@St:.@r tDefaultD all ApAa.CadI nputQueu e.SenLmm ("noecho!Set loc cursur fros"etLB C orC Show) ("VERT ICAL BRE AKE= FalsoorEAEnableAccuSnap! 'S@ct horizon*t 5pQinCjiewT7U Value("S ELECT HORIZONT ! (RESET T O EXIT)", " Distance may be horizontal, vertical or inclined. R For horizontal and inclined (less than 45) distances vertical strokes S are drawn. For vertical and inclined (more than 45) distances vertical a c h  strokes are drawn. @ The stroke consists of two connected line elements. Z The length of each element is half of a character height. The length of whole ' stroke is character height  ] @ @  Input value ] X ] p ]    Calculated value ]  ]    Length of each line ]    Point for drawing lines ]  ]  ] 8 ] X  noecho D! <B   DIVIDE DISTANCE DB@ ' p   Get number of segments  KEY-IN # OF DIVISIONS  p ^% j '  p   Get Begin point  SHOW BEGIN & END POINTS p ^%  '  k  p  Get End point  SHOW BEGIN & END POINTS p ^%  '  k 8 !  !    '  !  !    '  D! \! !    ' : !  (  !  ( ] x     !   (  !   (     !  : (  !  (  !  : (  !  ( d  !  (  !  : (  !  (  !  : (  k  ) Create a line in the application context   ! D% H . B   Save the line to the file B ! D! B@J  ' Redraw the line, so it becomes visible N BB@L   ! D% H . B   Save the line to the file B ! D! B@J  ' Redraw the line, so it becomes visible N BB@L @   Should be called before exit  echo D! <B  &B@ |    LDIVIDEImpl.Run B@ B@ o   q Attribut e VB_Nam e = "LDI VIDEImpl " Optio n Explicit@Priva Module 'Descri^: Thi@s func|d ivides d istance into spe cified n umber of equal lengh l' segmentsv. l DV Tjd ~_by po! sing rt and e  bsG th c 8draw .Strok _are n ^eparKO he0Xt7s0not2(. A v(ym@bologyjus for3J may be h orizonta l, verticinclinedF  J (lessJ@an 45)0sG2Mo B~ Pub@ Sub Run() Dim bEx it As Bo9anCCErrpGoTo h'Input` valu ^% nSk Integ er ptBe(ginaPi3d=iE i`*'Calculdd dvX Do`Y'LH1a7ydHB/" /gEsptpFromC To1622mL l! EK .# $Pl Apa.Cad"4Queue.SCommd("noech o"AShow  "# DISTANCE #G@= Fals-'xGetHB=b  on.DVaH(" KEY-IN # OF VISIONS ", 1,CU$C If N`#kWaBCM"!%Pb4eSHOW BEG& END POINTS $AUIf !n?N ?Bz#(b= (pt .X - D.X) / 1lY`dYhYp#*4 43=j(gSettp2s.TextS tyle./ 233 =  5 YS a5i1Feai 1 K'- 1S ;|+ 7Y>   "Abs(>@)0-ptC' s/ ) 2- 34O2.QElߥ? 1  1 To { * 5e: ' Cdrea [ vagS|t0*+ X= MicroStVDGN.VSZ2(IhP/,? q $DSa1 fi~?1 OG^5гel@RefereP.8AddDb ' Re!kQ, so becomvisib.TmsdDNormal 7//./ng+2///OA/ce/T///6e/-NV&'S`houldlbe e e0#?~?~5~~}+ tartDefaultS C:Co.Log .RunԁbSRepor KMsgBoxCur) Q9        ʽh        x  ME    (  <  <  < <  x B X X  X ]  % x H K  % `p 0000` ` ne    % ` ` ----` ----` ----` --- ` @ ` ` ` 8 `     i 8  GRAD)6X  AC=0 %        ` %Q  0   j     L  L `  L "      (  0  @  P  `  h  p                           0  P   p  x 8             B   0  8  H  ` ( h &  &            (  8  H  `  p  x     8               8   H   X  p    .  .     (  H  `  x                              (  H   X "  ` 0 h           x p E ********************************************************************* **** E Description: Place multiple instances of cell 000006 along two points  Parameters: none E ********************************************************************* amet  ] @ ] D`  ] D  ension] D  s (]  ]  ] D  : ]   ] D  2-s] 0 ] H ] ` ] x ]  ]   0:1.0 ^%  '   0:1.0 ^%  '   0:1.0 ^%  '   noecho D! <B@   GRADE PLACEMENT  DB@ AC=000006  D! <B@  _  D! \( ^ ! LOCATE START POINT(RESET TO EXIT) p ^%  '  p x 0 k ( '  '  ! LOCATE END POINT(RST TO NEW LINE)    ^%  ' ******   | ****  KeyIn input ******]  !  D! !  D! !  '  !  !  $   ( at !  !  $   ( Ind  !  !  '  !  !  '    ' or   ' sc   n CS   Make it horizontal !  ( d    Make it vertical% !  (   AA=90  D! <B@  aram.r  1 Application.ActiveSettings.Angle = 3.14159265 / 2 k  k  !  !  '  !  !  ' LI   '    '    $  ' ion   tion   Integer number of section    '        $  '        $  '        CELL PLACEMENT A  <B !   ( ax !   (   d x  SINGLE CELL ONLY A  mek P k H @  UCM EXIT DB@  GRADE  DB@v B D! \( ^  echo D! <B@  |  GRADEImpl.Run B@ B > B@  dimeo   ) strPrompt - a prompt string to be shown  DB@  /PACELL D! <B  secti 6 D! <B  '  o    Attribut e VB_Nam e = "GRA DEImpl" Option ExplicitA@Priva M odule  '*A GDescriw: Pl ace mult iple ins tances o f cell 0 6 along two points GPar ters: non E Pub Sub Ru@n() O rror Go`To hE D im ptBeginPO As 3d End bExit4BooleanHUseKeyIneInputTypeMsdCad dMinAllowedDiCb# 3|Do@DX;B etweenSe ts OfLi\ne> iInteger#E!XYRSqr  R nNumOfxSecB3 $G= Common.Get4From Units("0:1.0"ĎLQg)Ap|a!.e?Queue.Sendand ("noechoShowb PLACEMENT AC=w{d>o DiA @2ve`Lting s.Ang`= 0o#mVal ue("LOCA TE START POINT(R ESET TO EXIT)", 'ld6IfC Theqa uDHq{ Ifb !v=` FalsgAbAu= Tru(pFtENDSBNEW LINE@ E , , KNoto/ '@m in$!'i'#!a B9-x d = E#.Y / DelRefere`.UORsPerMas areStor8ageg4.X!iO + X * Cos(bh.%H YM Y N SinR EK fS X -0 j.X?c YdW= * qHP6 C>r Y'5 'Makt horizontalu|./ /%vertic?_$/ A)/UYAA=9gW '3U 3.14159265032 N?  ;(; |?' ''_': ` ('+'L=R)ߔ*' number=scK\= { /h_GkIIff0, VX w=@Zc^2) F0iS1 p ACaŲUglC("CELL(,:R_qlT\X\!cq `&U_H Ne>x@ۢD Il( "SINGLE 2ONLYý= Loop S ESJUCMrߢn.PptPҥ_n.Q3Q% "0 :# Codes.Log.P8Repor tToMsgBoxCurPA #g'strStri֓ O'  3dD'  |a ps`!to be sn y Appli cation.S howCommand (str< String) ACall C adInputQ ueue.Send~("/PACELL"'tDat aPoint(pt :E Sub         \        x  ME   (  < < < <   B @ H H   i `  Y i   Thi % ` eter 8    %Q  0   Y     R   h R  , J ( @ x .  2  >  D ` 8  .  T  "  h  p  x        (  "      2   P  p            &   H  P  ( X   8  &       0 & P $ x 0  $  $  *  ( P $ x  *  ,  8   8  0 X 8     $  8  & @  h   * ( (  * 8   h  p                 x p K *************************************************************************** ----- Description:: L This function is sets fpp parameters to SACS. The parameters %  are:  % % Parameters: 1. nParameter can be: 0 D 1-Dimension parameters ( level, color ...) % : 2-stream delta parameters ( sd,st ) ( 3-text parameters + 4-pattern scale (ps) 7 2.dTextSize --Text size and line spacing d = stream delta and strea tolerance 1 used if nParameter=3 ' Misc: Function uses rwcstn.bas M *****************************************************************************   ]  ]   '   (  ! // Include(create) CSTN in file  param.r0 = rqtIncludeCSTN   Call fnRWCSTN(param) DB@ , // Store xaxscl & yaxscl & zaxscl in CSTN   param.xaxscl = 1# DB@  param.yaxscl = 1#! <%  param.zaxscl = 1#!   param.r0 = rqtSetScale  Call fnRWCSTN(param)   noecho D! <B   %    Drawing Not INITIALIZED DB . d    K T   Dimension settings section  '  7  set Text size 3mm  !  '  7  scale Text size to active scale   '  7  convert to meters ya  tx=  D! <B >     '   ls=  D! <B >   dimension axis true D! <B >  dimension font 61 D! <B > `  dimension justification center D! <B >  dimension level 5 D! <B >    dimension color 5 D! <B > stnR  dimension text weight 0 D! <B > e  dimension text color 5 D! <B >  dimension weight 0 D! <B > SET  K T   Steam curve settings section < MbP?'  7  set stream delta 1.0 mm  !  '  7  scale Text size to active scale  sd=  D! <B >  MbP?'  7  set stream tolerance 1.0 mm  !  '  7  scale Text size to active scale  st=  D! <B >  K T   Text settings section onum  !  '  7  scale Text size to active scale   '  7  convert to meters   tx=  D! <B > East    ' P  ls=  D! <B > H  lv = 5 D! <B > D ACTIVE LEVEL~  co=0 D! <B > D ACTIVE COLOR  lc=0 D! <B > D ACTIVE STYLE  ft=61 D! <B > D ACTIVE FONT !   K T  ps= !  D! <B > n h k `  echo D! <B  rr &B@ nt poi| 0 (  FPPSETImpl.Run B@ !  B@  o    Attribut e VB_Nam e = "FPP SETImpl" Option Explicit@Priva Module '*G MDescTri{:  T his func# set pp par ter s to SACS. TheQNare2P:!71. n can bE 1-DimensC( lev el, color ...)B# 2-stream@ delta h( sd,st 3-textv3 4-pat n scale (pBs2.dT@S@ize -- sand li ne spacing34hleranc&used if Hd=3Misck F s r wcstn.bas@ H Pub@ Sub Run(As IntegerL, GO@Do eK@YA+O rrG@oTo hE . ACp RWpCSTN¡1d DefaultSn = 1¤.r0rqtGec $ //clude(Bc Pte) a in fib| 9In!Call fnC( AJ Store xaxscl & yz %  d`#$ESF'(O,E"aApa.CadInp utQueue. SendComm Z("noecho";If !." <> rt pletedS uccefullyanShowBE("Draw o Not IN ITIALIZEDElsja Select Cxasehh a1, 'ǘt@ s >sa[= V3s ' 3lmm[ *DN$A \ 'Õ a v`a t/ 1000'conPvertm2rm)AdKeyin("tx="`\/B =/ 2Ols %dmaxPvtrue%_O2H2Tfont 61> @*`D?797ju@stificB: ceWr<{ 5C?Fweight 0? ? ? ? B F s0? bG2 'S"tQcur ? @ A B C D E F G H I J K L M N O P Q R T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o q r s t u v w x y z { | } ~   T ( e %9  ʎ        x  ME  (       $  <      0        8  X   `  p $               "     ( < 8  x 0        $ (  P  X  `      $   "          (   0   @   P  `  h    p  x * " ,    H ( X p X    0  F @            |  h F              6  t H v   8 0 @ 0 p   <  6  2   X > ` 6  &   2  0 8   h             2  2 (  0 ` .              8 " H  p  2  2   2  2 (   `                   8  H  ` 0 p       ,    *   P  `   h 6 x  X  X    `  h  p         0           (  8  H  h         0           8  X  h  x  6  <  6  8 8  p t x t  : h 8  2  :  2 X 6  :  2  , @  p   x $  2  2     8  H  `  x                    @  `  p   x         !   !  ! $ 0!  X!  x!   ! ! x p Q -------------------------------------------------------------------------------- Description: J Initialize the FPP design file by creating/filing the scala and monument * point text node(CADD Standarts TextNode) Q --------------------------------------------------------------------------------   ] @ ] X ] p ]  ]  ]  ]  ]  ]  ] 8 ] X ] x ]  ' p ' v  FPP INITIALIZE DB@  &(   T   Save active angle and scale NULL D! \! ^' Z D! \! D' ~ ?' xxt ?' zat  (  cho $  ' V**  V **** ! ' leme ! ' x ! ' zfy l' v   Drawing Initialized at : (1:   )    Reininialize? $     ' p ' v k k p   user scale input V t (  ?' k P $    :  SET PROMPT Enter Scale 1:(   )   <B@> Accept/Reject DB@v lid d   Enter Scale 1:(   )  DB@v  k   FPP INITIALIZE DB@  z | ~ D! <% x .  !  ~ !  z  ' p !  | e !  ****** !    $  $ j  ****' p d  !  ^%  X' k  k  k  k  p   store new scalega  V (  r V (    Include(create) CSTN in file exte  (  aga A  ' V k  ' Store xaxscl & yaxscl & zaxscl in CSTN   (   ( 0:04  ( !  ( ! h A  point  compress <B@> d x ' p k h k ` p   get monument point  D b (  ' $  ' V  V    , If rtCompletedSuccefully = rwcstnResult ThenR!  P( ! P( e P( ine  get monument point value y  $    N '  SET PROMPT North Mon. Pnt.( P!   )M  <B@>  d  North Mon. Pnt.( P!   )M DB@v k  z | ~ D! <% x .  !  ~ !  z  ' p !  | e !  !    $  $ j  ' p d @ !  ^%  X P(  k  k  k   get monument point value x p $    SET PROMPT East Mon. Pnt.( P!   )M  <B@> d   East Mon. Pnt.( P!   )M DB@v k H z | ~ D! <% x .  !  ~ !  z  ' p !  | e !  !    $  $ j  ' p d  !  ^%  X P(  k x k p k h k ` p   save current monument point P!  ( d P!  ( f P!  (   (  A  k  d  ! d P(  ! f P(  !  P( k  k  p   scale the border  reference scale absolute fpp <B@   tcb->refScale.master A@  <B@ 0  Point3dFromXYZ(0, 0, 0) <B@  A changed point values, as sacs upgraded borders have these values  01:7.16 $  x 6(  @ 1 + Application.ActiveModelReference.GlobalOrigin.X  00:75.48$  x 6(  A 1 + Application.ActiveModelReference.GlobalOrigin.Y  x ' x  z ' z  ? scale everything that is between (0, 0) and (01:1.60, 00:71.00) ]  ]  ]  B@  %  .  ! b ! .   # ! ! !     ! ! !      ! ! !  6!   ! ! !  6!     scale this element !   4 1 Scale only unlocked elements or we will get error  x x x B@ B@ k  k  / This code is commented because it doesn't works n ptPoint.X = GetDoubleFromUnits("01:1.60") ' * dScale + Application.ActiveModelReference.GlobalOrigin.X o ptPoint.Y = GetDoubleFromUnits("00:71.00") ' * dScale + Application.ActiveModelReference.GlobalOrigin.Y * dPrevScaleX = dScale / dPrevScaleX * dPrevScaleY = dScale / dPrevScaleY 5 CadInputQueue.SendCommand "place fence block" / CadInputQueue.SendDataPoint Point3dZero + CadInputQueue.SendDataPoint ptPoint NCG 8 CadInputQueue.SendCommand "fence scale original" / CadInputQueue.SendDataPoint Point3dZero  CadInputQueue.SendReset  0:97.00 $   D! ! h!  6( >=  0:9.90$   D! ! h!  6(   place fence block <B@  k p p   settings the views set ed off <B@>  <B@ 0  ?  0:85.00 $   D! ! h!  6(   0:18.50 $   D! ! h!  6(   1:1.60$   D! ! h!  |(   0:0 $   D! ! h!  |(  window area  <B@> _ 6 <B@ % | <B@ | <B@ -  ? set ed on  <B@> | <B@  sv=TB, TITLE BLOCK <B@> | <B@  0:00.00 $   D! ! h!  6(   0:71.10 $   D! ! h!  6(   0:21.00 $   D! ! h!  |(   0:67.20 $   D! ! h!  |(  window area  <B@> 6 <B@ | <B@ |E | <B@ -  ? set ed on  <B@> a i l | <B@ r  sv=TD,TOP DATA <B@> | <B@ set ed off <B@> | <B@  fit all  <B@> | <B@ sv=ALL,ALL OF DRAWING AREA NO ED <B@> | <B@ i set ed on  <B@> | <B@  sv=2615,ALL OF DRAWING AREA  <B@> | <B@  sv=FPP,ALL OF DRAWING AREA <B@> c | <B@ %k  p v   / writting the monument point in the design file  0:03.700$   6(  < 1 + Application.ActiveModelReference.GlobalOrigin.X  0:03.600$   6(  < 1 + Application.ActiveModelReference.GlobalOrigin.Y ]  ] 0  L(   L(  L(  L JM! @$  ' ] P  E- P!   M 6 $  . ] p  level 5 %  . %  /   (   ( f i Mb`?  ! (  Mb`?  ! (   B@J B@ B@L  N- P!   M 6 $  .   /   (   (  Mb`?  ! ( s Mb`?  ! (   B@J B@ B@L  / This code is commented because it doesn't works 6 CadInputQueue.SendKeyin "active level=level 5"h e 0 CadInputQueue.SendKeyin "active color 1" 1 CadInputQueue.SendKeyin "active weight 1" n ptPoint.X = GetDoubleFromUnits("0:03.700") * dScale '+ Application.ActiveModelReference.GlobalOrigin.Xy / n ptPoint.Y = GetDoubleFromUnits("0:03.600") * dScale '+ Application.ActiveModelReference.GlobalOrigin.Y 4 CadInputQueue.SendKeyin "tx=" & 0.2 * dScale 1 CadInputQueue.SendKeyin "active angle 90" , CadInputQueue.SendKeyin "place text" 4 CadInputQueue.SendKeyin " E-" & ptMonument.X A& + CadInputQueue.SendDataPoint ptPoint O t 0 CadInputQueue.SendKeyin "active angle 0" 4 CadInputQueue.SendKeyin " N-" & ptMonument.Y + CadInputQueue.SendDataPoint ptPoint  & CadInputQueue.SendKeyin "NULL"h e k  p   writing scale in design file  0:93.000$   D! ! h!  6(   0:20.500$   D! ! h!  6( _Bp edit single <B@>  6 <B@ t  1:  <B@>  NULL <B@> k ~!  D! \! D(  ~!  D! \! D(  ~!  D! \! D(  Z D! \( ^$   m SET PROMPT <B@> , k   &(   : Should be called before exit - sets cursor back to normal &B@ |   ~!  D! \! D(  ~!  D! \! D(  ~!  D! \! D(  Z D! \( ^$   SET PROMPT <B@> s o n k  Z D! \( ^ &(    Report that operation failed  FPPINITImpl.Run B@ B@ o p h V Attribut e VB_Nam e = "FPP INITImpl " Optio n Explicit@Priva Module ' -L S@Descri: Initia lize the desig n file b y creati8ng/  &sc ala and monumen ' point text no de(CADD Starts T N )<>OpPub Sub Run( 4O rror GoTo hE Dim bExi t As Boo@lean RNe dS e9Do : مdPrevBXYAGparamR@WCSTNPsrwcstnRpesul.C Typ#objMessag*CadInputXptMDsPs3.d2dActivAng @Z LpteFTJ  Ck= FalsD9bi C C Apڀon.ShowCommAA ALIZE ApD te.I sEnabledC' Save aA8b !d3$= etks."$ k"&EZO= 1# Y`$ aK.r0 rqtGet C!L= fnM(Ska If rt'plete dSuccefully UThe'dlh= " .xaxscl$ w}acy' ET 0:aOAsc(MDidn, 1 ))vbE6o@ q (7CDbl(n trToSyst`emDep3pStr 2)ET]+ ,A>C K' store new#H'0PrtAbnormal<> Hq Fou =k'аclu2e) QsfsIn!CallsA5 D{"Srpgcn zn up(" =DK?am.??" IȄ4 ]m ([KI_cZr "_1_4 #*S ' gPV?s[@VeXYG ,b+ 0L Asc(MDid, 1 ))-vb Escape[:A A<OHEʙ= CDb l(VStrT oSystemDepend <|Q -'D gmon point va`lue xK XN8ot ÀӇis PowerDraft()XZKSB{ ("SET PROMPT EastWXDK74)vSh'_ U/'4kut !6$ #EP o @ ) ;%WV%X re uue ߌ ' save churr` nparam.i01YZ2Zrr,qt @ՇX_ C all fnRWCSTN(\M\g"!i0 HY 1O3a.ZG2F S p4c cale t he border#_aE"refe0ce @| absolute0 fppCEXxpr @Vl"tcb-> S.mPeer", 6d Q1iDataPrqR 3dZero ' FЦXYZ(0, !  Y ' c@hanged xs, as.cs upgrads h0sezspt .A @DoubleQ U nits("01 :7.16") * dPrevX '+Act iveModelRU.Globa lOrigin.X?$?00:75.48OOOIx3i = / le @)'&everything+at is between  ) ` `1:1.6 p1.00X!Dim eE5rator As EleOG zSCqN ew0nCriteria' b.Excl udeNonGr(aphpl 5Z P!e.a f SCDo W hip;.MoveNextg =.C_' G.R5.LowP1>= -1t Ap_+Y  0 High <=`58اd t rY xYOBd((s eS#; QIsLockaC= FaPڒ 'ponly unls `)`we wiherroYD 8A SRUF G? ew.g# I End If  LoophH'This code mm ented becaus (t d oesn't works ' ptPoint. X = GetD oubleFro mUnits(" 01:1.60" ) ' * dS cale + A pplicati on.ActiveM }lRefe rence.Gl obalOrigPin.XpYp0:71.05:e :18.5:ۖ 26Iץ2.__ GFwindow areaF#4 L2` Qe^n_Jjv=TB, TITLE BLOCK &y:00/5y yo&&y1&e?^/5F:2$?5//#l?567.2)#52W5G5Z/etd5p5D,TOP DATA?5iOqQf{all/ / Msv=ALL,0 OF DR AWING AR EA NO ED???_  2615 E/ p v=FPP i*AReIP.writ1"monu4 pq Лde sign fil>e c\:03.7BU'__\Q1 _T6jjjHuD@im rot As Matrix3dptrwp1 Z 07=@Vector0RAngle(p t, 3.14105926(3 txr TextEleQ  Set tx t = Crea teTextEl ement1(N othing, " E-" & @ptMonup.X 8" M", ( Point, r otation)  "Dim lvl As Level = Active DesignFile.)s("l1 5"a ? , KColo r 1 LineWeigh (Sty AH0. 002 * dS0cale %Wixdth5vM odelRefe rence.Add 2Rewrit ne by '  DIMENSIONINGA@ xt  % Set locate cursur for choosing lines **** &( ******  choose element <B@> Identify line to Place Dimension p 6 ^%  .  p       ! l & ! l ^   ! ( + S5 *! 5 ,!   :0yE> ration' N 5 *!  R(  6!  R( 5 *! 5 ,!   :0yE> e  Id ' N 6!  R( 5 *!  R( d A@`  Dim:Invalid line orientation DB@.  '  k   Accept/Reject A  B@<k  q  d x A@`  Dim:Invalid Element type DB@. LO'  k 8 Y *** aggregate ***************************************************************************    get monument point b ( n $  ' VLO V  aga ! d P(  ! f P(    if succefull request scale r exte  (  aga $  ' V k  V   E   if get scale succefull  ! '  N  0:04.000$  !  D! ! h!  ' Z point R!  P!    Z    ' ZCa Z ' \d X  0:04.000$  !  D! ! h!  ' Zt.EndP R!  P!    Z    ' Z ' \k N R!  MbP? !  R( e  E ' T line d R!  MbP? !  R( ,,  N ' T<B k X  TX= Mb`? !    <B@> D  Z j( l n N j( n sel   frmFPPDIM.InitializeControls   frmFPPDIM.Show vbModal  $ If frmFPPDIM.ModalResult = vbOK Then   If frmFPPDIM.IsVertical Then   strDirection = "N"   Else   strDirection = "E"  End If   Else   bExit = True   End If   Unload frmFPPDIM p N  active angle 90  <B@> d   active angle 0 <B@> k X $   SET PROMPT <B@> k  PLACE TEXT <B@> T  -  Z  M   <B@> R <B@  NULL <B@> k   Z *** end aggregate ************************************************************************d @  ! get monument or get scale failed A@`     V p V r  V t  + Dim: Not SACS Design File / Old Design File DB@. d   Dim: Abnormal EXIT DB@. k p ' p k ` k X k P H  &(   : Should be called before exit - sets cursor back to normal &B@ |    &(    Report that operation failed  FPPDIMImpl.Run B@ B@ o h ` + Attribut e VB_Nam e = "FPP DIMImpl" Option Explicit@Priva Module ` ' -L SDescri: Calculand wri the dimens (dis tance of a line/ patterne&d*re(iv e to &monu 't point 41esi gn file scaQPub Sub Run() rro r GoTo h2E Di m objMes sage As CadInput bExitABoolean xEle= ptPC3d bIsVertiDbReStabrptM[ptstrDiXrec Sng%G'dDefa0ultSl'Do@X@PNparamRWCSTN PsrwcstnResG TypdOff Se9nActAngInte8gerAA Cd= 0Falso WhNot B ' Terminy a?comm@.  Queue.Se ndKeyin "NULL }aa G 5eShowC# "ENS@IONING'" locacu@rsur fWchoosi r)## =te.dVsEnabl`vn e eX2@e[Ӏon#lH ("IdentifyPla@E",2, bGtD%)If 7 A(Ish ") Theq7E.g.!MmsdL Or?c WithAsA d 'E Abs(. Origin.X - .Endt .X) < 0.:0 1 = Trudj = f3Y`'iD5.YEoYY({JX  0Beep Apu1aU.@g?i m:Invaliu ori2rH7?  E/$ If/ 4d2l GejVal ue("Accept/Rej@>;dW; qQ2 1# Sa}"pED7 te?aR  '*** aggregZ / {N ;y'g u O|.r0@>rqt% X_1 |= fn=c(B!(-rtPcpletedSu%fully?N 2 'bK i0 BKш.i1_Q' if s request5= # ’qbD)0"d R?"[= xaxscl_Q0 ^IA2 ա=IFrom Units("0:04r") * + YCp@ elRefere.Globalוx (f+ 2q)* 1"{po )< /4ob= ~9-ORbA ?e?08y??:o@#6Y:8??V 7/B?1F% ˃Ҡ-1$ų  strD irection@ = "E"ElseptSt`art.Y + 0.001 * param.y`axsclI Nnd IfK CadInput Queue.Se ndKeyin "TX=" & (V2VxV)0 frmFPPDI M.dblDimensdOffSet%IsVertical bA''nit ializeControls Show vbModai'If  Result,vbOK Then @l; C%' WX'bEx"iAGTruT'EUnloadMW4 `8Not #w/ @(Q;l("a ve angle 90"tk W* . 7-(isPow erDraft( )# #SET PROMPT"?$ 7PLACEp TEX:h&8 "-a"M DataPopint ȗ0V"pNULLymo '*** @ ag gregate 7 _ ?* ge@t monutP or s e failed @Beep,@rwcstn[r,tMAIc Oxr _0 TextNodeFou*a S ?I Ap,plPra.kErJr"w:  SACS Des ign F / OldOoaom: Abnorm{EXIT;Ob ?+ ? Loo@ CommandКte. MessagespEnab $|7j' uPbe before el- sets cursback to 3.ҡDefa$SqSub h-R:o i Re port thaqp1perJ1C)s.Log "3Impl.RunHToMs gBoxCurren!   ,  6 :  ̙        x  ME    (  <  <  p m p  %  tend % @ tanc % `B User D arto  % F   % +H P ! !   il p  proiB   line)L  tend % r t ei  %         %Q 0       T  J h D D  H H N  P  F 0 P x "                        (   H 2 P   $  L        (   0 , 8  h $ x   8    >   0   8 " X       2              8 0 & h V        0  $ P  x          .     >   P  X  `   h  p  x "                 R  J h * L F 8 R B             ( $ 8  `  & p   &   *      "   @  X   `  h  p   x  x p M *****************************************************************************  D Description: This function extends several lines the same distance. > User first defines how farto extend the lines by = either a key-in Distance or D-button end Point. ly l B Then the program prompts the user to identified line H to be extended. Each identified line must either be accept=3 J or rejected. If the lines is accepted, the user may accepted @ the line by locating the nest line to be extended.li J ************************************************************************** ( ] @ ] X ] x ]  ]  ]  ]   noecho D! <B  EXTEND LINES DB@ _  + Set default cursur for spotting operations not se &B@F  Lo   Get point or extend distance  5 ENTER EXTEND DISTANCE KEY-IN OR D-BTN (RESET TO EXIT) B >$ H ' p b p G x j j . F . D_   % Set locate cursur for choosing lines  Sh &B@< lled b   Locate a line to be extended   F  ' 4,,  LOCATE A LINE(RESET TO END) p  ^%  . Dd  " ACCEPT/REJECT(ACCEPT ON NEXT LINE) p  ^%  . D ok  p   If cancel-button   go to "LOCATE A LINE" again  F    ce . Fd `  , go to "Get point or extend distance" againset  x  k  d    Extending locate line F    j B   S  2 Extending line: in case a mouse-selected point  extend line distance D! <B   O Call Application.CadInputQueue.SendDataPoint(elPrevLine.AsLineElement.EndPoint) @ D! <B   > D! <B  r' ld  ) Extending line: in case a key-in value  extend line keyin D! <B   a BX D! <B > or,, @ D! <B  p$ l @ D! <B  p pk 8 k 0 D  G x j 6  no more lines selected le D! J ght mo D. F 0 . elPrevLine will be extended on the next click% ' @k  k     noecho D! <B    Should be called before exitlta to &B@ below | 0 (  EXTLINESImpl.Run B@ ig B@ f cello  K Description: This function returns either a point that is selected by mouse <B@> D or a distance value is entered in the key-in input box.'  $ Parameters: strPrompt(in) - prompt &( F dDistance(out) - value is entered in the key-in input boxl ? pt (out) - a point that is selected by mouse e K Returns: In case of cancel button is pressed, the function returns true  ]  ' H L( star L( PROM L( ! l ' B l DB@v ?? z  | ~ D! <% x . roop r!  outer ~K T F '  operation canceled ' H zK T F )  operation canceled p ' H K T F +  a mouse-selected point *!  r! ' L :z  |K T F '  a key-in value Z '  r!  ^%  ' B:z  S  ' H n  i  x ' Attribut e VB_Nam e = "EXT LINESImp l" Opti on Explicit@Priva rModule '*I O Descri : This funcexte nds seve ral lines the s distance .F User first defhow farto *#($by ei2r a key-in D5 or D-t M Point@Then0program mpt^uN Didentif8iedlB beWed. Each  mu rWAaccep '-reject9If?[ ed,B'may % `AN by locating@gt2 .E Pub S ub Run()K;OrrhG@oTo hE  ACDim b Exit As BooleanGptFyv3dTou `PrevdIDo/ c%A$elL@$Elemel Call A pa.Cad InputQueue.SCom mand("noecho"%!ScBEND oƒ@ao !' Sebkault cursu n /spotAop@vAsd St``PtDefCor G pAk!W:e€ }c9= ,Value("ENTER ADISTANC E KEY-IN OR`xBTN (RESET TO IT)", 5, A$&@g|EAID"G#7= Nothd-b; g a 0bpe0pt1,C oohi _1  Dvo 3 a(" in3 Ke yin(CStr(.)zon7#?o; oo!ch 6E?? A,tP?2NIno more2Iqң>_Z.I96GO6 ^_ ' Owi 0n% ck/ xpt9C opSLo / 61;'ul4d 0c0Vbezfec$t EsTSS @ :Code s.Log.RundcRepor@MsgŲ BoxCurre nt End Sub ' Descript ion: Thi@s func8 returns either a point that Nsel ected by@ mouse  ofdista nce valu&e7 er 6in Je key- input box. FParam eters: strPromp t(in) -L p mdDi(pout) &%p $pt !e-"|R WIn cas0e of}l @button~pressed,}tru Pub lic FGe*tnV( A s String , ByRef  Do$e 6E Pq3d)B oolean :CDim msBgACadIAeM9@,ag%A " =0 Falpt.X0C@YJZGG+=  (AppAa.S8howCǃG Se2t-= /Qu0eue. .B3(msdETypeC`omman dDhataJ,J KeyinNReset)$ C T.9 : ' oper?đed dTB Q _  )! aC-b`U=A:.Exitd+8#$O T&,onIkFUnits(< @a EFh% ~.}"eMEAe   <  F   s        x  ME    (  <  <  < <    B E E  `p t \ 4p i f  % 6 ed t  % 8 d th  %    % :   %    %Q  0   L     N  Z ` \ D  "  h  p   x            ,            (   0 , P         *           0  8   @   H  h  p &    ,     *    0   8   P  h         ,     <   8   @  H  P   X " p                 x p H Desription: This function sets the same attribute(s) to several objects.-- T Active line style is changed to 3rd. If elements are fenced then changes rt o U style, color and weight of elements to active attributes. If elements are % > identified then only line style is changed to 3rd.  ] @ ] X ] x ]  ]  ]   % Active line stile is changed to 3-rd. (  lc=3 D! <B   noecho D! <B  D! ! . 4k t ' p p b  Change to EXISTING DB@  % Set locate cursur for choosing lines &B@< 4!   If Fence is selectedQ+BJ  Process your fence? p ^%  ' 6 p  /cfncsy D! <B  6 D! <B  d ' p k  /pfencb D! <B  d  If Fence is not selected  Locate an element to be changed :   Identify element p 6 ^%  .  d Accept/Reject p 6 ^%  .  pardek   Changing element p :    del  /celels D! <B  igin f 8 D! <B  p 8 D! <B  trUnitk @   G x j 1  no more element selectpart p . : . + elElement will be changed on the next click tion 6' 8k  k    echo D! <B    Should be called before exit be 0, &B@ | P H  EXSTINGImpl.Run B@ he B@ has bo    Attribut e VB_Nam e = "EXI STINGImp l" Opti on Explicit@Priva rModule 'Desri\: Thi@s funczs ets the sa(s) to sever al objects. J  A C@ve lin ?tyle Zchanged>3rd . If elemen hare fenchen* +s VsJ, color an d weightl o$ Na>Ys5+id Bifi!>only^ Pub Sub Run() %O rrNGoTo hE  Dim bExi t As Boolean fnc F ptPoLin3drevelEXGelP@U j'rir- s C@all Apa.CadInp utQueue. SendComm@n("lc=3"DM noechoESet AM=C,ignF@,.HTH C-c= Fals@Do Wh:Notk CCI8Show4 |"CBE@'" *loccursur f@@2osing@ DSt LtLB C orCg@.IsDef md xeIa '`bosmcteGEK= on.GeMValue ("Proces0s yoa!S?",c"7% ` %p=D/csy%= LDatab(Ef= PAEIf/pbo5n`O=s6'cB@%aNbe D2 }Is 5hNTU'&CSHą("IͣyeB, _. c  nt("Accept/Reͷ P5 ~%'v߁!Ѯ'ZA ;) D^ls^:Uj/a/  Z@h]4'f'pV'no mo l`}ooYF%n=ˠ*'.wi`k3 next c@~k. .k C LoopS sso'gpuld wbepee e s!dtartbaulttfSS  :qCode`s.Log.8RunTnҎSRe portToMsgBoxkraQ      "  H        x  ME    (  <  <  < <  x B @   iP `  ----iR  i  ure i  rt oi  i  m f   % 8 (   % X cel  % x tion  %     %    % `p ( ` % `  ` `  pard`" `$     h %Q " 0       X   h J D   . 0 2 ` 8  8  8  H @   8  8  8  B 8   8  8  >   8 Z @ Z  P  N P      :  X  "4  `  ,    <  <  > P >  (  &    6 @ $ x 6  8        (  @  X   p  x     "     @    H 0 P       ,     "   @ , H   x      ,    "   8 " @  h   .  ,            (  0  8  H  X  p              (  @  X  `   h $ p      *         @    P   h                      :    ` & p                  (         ( 0  @   H  8 `         $       *   8   @   H 8 `                        0 @ @        &             x p Q -------------------------------------------------------------------------------- Description: D This procedure places cell and deletes a part of the line % = depending on input received from the command menu. Parameters: % ( strCellName(in) cell name , nOption(in) option can be 2 1 -change color 2 -change level 1 -pardel line B -do not rotate for vert. line 2 2 -change color 2 -change level 1 -pardel line ; -rotate for vert. line ND SEC 2 3 -change color 2 -change level 8 -do not pardel line G S strUnitsFrom(in) delta to the left/below of origin for partial delete p T strUnitsTo(in) delta to the right/above of origin for partial deleteet to J nHor(in) horizontal rotation of cell can be 0,90,-90 H nVert(in) vertical rotation of cell can be 0,90,-90* Returns:  Misc:EREN 3 The procedure has been ported from E1LPC.UCM %  Q --------------------------------------------------------------------------------            ] D   (  selected line element (bus) > ] D   ( cell object Deta] D@  ( , point chosen by user where to place the cell ] D`  ( , point where to start deleting a part of line ] D  ( - point where to finish deleting a part of line ] D  ( - point chosen by user where to place free cell  ] D  (  outer looping condition ] D  (  right mouse click flagti] D  (  goto start flag ] D  ( % flag indicating if to place free cell <] D   (  angle of chosen line SEC] D8  ( & delta to the left/below of cell origin>] DP  ( ' delta to the right/above of cell origin    no echo   NOECHO <B@> 3 C  active scaleNCE FI  AS=1 <B@> SECTIOA  Place Cell P A@ DT p b  start here '  R   b  get rid of GOTOs upda &(   ac= P <B@  ) Identify line or RESET to place free cell  ^%  '   x  ' exit this inner loop and enter next one k x  locate any design element  &!  &%  . LL   '  x  $ exit inner loop and start outer loopPROMk  ! l & : bus line??? & "):"'  x  $ exit inner loop and start outer loopB@vk  Accept/Reject  ^B   '  x  $ exit inner loop and start outer loopDB@k   ! ( ~ 5 *! 5 ,!   :0yE> !   vertical line  Z ' 5 *! 5 ,!   :0yE> e     horizontal line ' d p PLCCEL: Invalid line orientation DB@. fe' p x # exit inner loop and exit outer loop Scalk  q  $  ' " $  ' $  K T !  (  !  (  !  " ( di !  $ ( B@ '  Z K T !  (  !  (  !  " ( iz !  $ (   Z '  M   FERE !  (  !  (  !  " ( mo !  $ (  ' k  n   Place the cell on right point P  D%  . nputQu   yin ("  Error during cell placement DB@.  Iden' p x k 9 set cell's level and symbology from selected line element !  /  Sect ! 0 / 0 !  (  R   nt   rotation is required  h '      A  k k   D! B@J 3 Application.ActiveModelReference.AddElement objCell N B@L  just repeats UCMs functionality  <  delete partialC@  C@ C@ C@ q  A@2 " objBus.Redraw msdDrawingModeNormal'  x     pfre:  b  ac= P <B@  " Enter cell origin or Reset to exit p ^%  '  p x X k P  Place the cell on right point P  D%  .     Error during cell placement DB@. x k  D! B@J 2 set cell's level and symbology from ActiveSettings \!  /  \! 0 / 0 \!  (  B@ N B@L   echo  ECHO <B@>  &(   : Should be called before exit - sets cursor back to normal &B@ | h `   Report that box drawing failed  &(  E1LPCImpl.Run B@ B@ o z Attribut e VB_Nam e = "E1L PCImpl" Option ExplicitA@Priva Module ' -L ' @Descri:  This procedur e places cell and delet  a part o f the lin 'Epen ding tin put rece ived froBmcomm*menu.CPar! tersJst rC A(in)4In `nocan b T% 1-ch ange col a'"g.riduGOxTOsa @t e.MessagesEnabliNFac='14 xQ= Qon.GetQVal@ue("Id,ifyD pRESET!SQ@", O`X O+ db(,jnHor$m$ )$ 1`|$73 $?$ U"*<> nV?)3))m 08\A"v_]2O P$ U}k'bv the cell a`ht pakS"ebjC= Create D3Name, ), AB Is Nothing4B±dur!"pP``/ 2 's's@ levelbcs ymbology f@] sWek h.Lr= [ЁStyl?d"[.C rPU  ;p2;?c'rotis required-Mod 36g밙zk `0"sP 4Ca@-RUAb@|Z() <*9? ?}!+Active elR@eferen sA|ddd3qa0 '? 4 .R edraw msdDp 3qNormal'just`p0?s UCMs fun on tyя dInputQue .Sen dCommq"d!P1te pial;DatarEZA aRe<q [#AllView:s'p1oodeo bRe 78NIL' `pfre:W|hiAUvqCa8Rac=" & )!]]c Qon.@V alue("En_Yк@ b to ", bYaZQ ZP?9 n n! 8U 6nncnnj AiЏnn3 p |OJOJ0; o Eleme &( ve Bus p  2 PLACING FENCE ARROUND SECTION NEED TO BE ENLARGED  place fence block <B@    Get lower left cornerUse  Section Detail DB@  Identify section first point p ^%  ' (ontent   Get upper right corner nt p ( <B@  Identify opposite corner p ^%  ' *ec p * <B@  bExit = True , Cak 0 k (  ' Change in case name don't meet to place Qu] ` (!  *!  gy" (! ' wyer *!  ((   *( e pak  (!  *!  !  (! ' !  *!  ((   *( X k P  : ATTACHING REFERENCE FILE TO SIMULATE THE ENLARGED SECTION p ! ' % $     @ CadInputQueue.SendKeyin ("SET PROMPT Enter section detail No >")n  Enter section detail No > DB@v d p  Enter section detail No > DB@v k @  Section Detail DB@  z | ~ D! <% x .  !  ~ !  z  ' p d !    $  $ j  * Ca' p d ! ' e syk k x k p p  ATTACH REFERENCE  Default "DT   ","DT    " *  <B@> normal * <B@ <B@  active level=level 5 <B@>  active color 0 <B@>  active weight 1 <B@> 2 PLACING CIRCLE AROUND SECTION NEED TO BE ENLARGED  place circle center <B@> ( ? *$  <B@ * <B@  D! \(   D! \(  3 CLIPPING THE REFERENCE FILE TO THE DESIRED SECTION  reference clip boundary DT  <B@  * <B@ * <B@ <B@  update <B@> * <B@ 0 SCALING THE REFERENCE FILE TO THE DESIRED SCALE % READING THE SCALE FROM THE TEXT NODE  '   (  $   ! '  k H .   NULL <B@> $    S CadInputQueue.SendKeyin ("SET PROMPT Enter section scale (" & dDefaultScale & "):")  Enter section scale (   ): DB@v d x  Enter section scale (   ): DB@v k 8  Section Detail DB@ z | ~ D! <% x .  !  ~ !  z  ' p d  !   '  !    $  $ j  e ' p d p ! X'  k X k P p  reference scale absolute DT  <B@   tcb->refScale.master   A@ *!  (!     (!  *! $  <B@ <B@  reference display off DT  <B@  k h p   CALCULATING THE TEXT SIZE  active txsize=  Mb`?   <B@>  5 MOVING THE REFERENCE FILE TO THE DESIRED DESTINATION  reference move DT  <B@  *!  (!     (!  *! $  <B@ $    B CadInputQueue.SendKeyin ("SET PROMPT Identify destination point>")  Identify destination point> DB@v d  Identify destination point> DB@v k  Section Detail DB@  Identify destination point p ^%  '   <B@ k 8 p  - WRITTING THE DETAILED SECTION NO. AN D SCALE  active txj cb <B@  DETAIL -  SCALE(1:   )    D%  .   D! B@J JRM N B@L  / DRAWING A LINE FROM THE SECTION TO BE ENLARGED *!  (!     '  *'  !   !   ! $  '    D% H .   D! B@J jeC N B@L '  !   !  ! $  '    D% H .   D! B@J N B@L active txj lb <B@  SEE DETAIL -    D%  . JRM  D! B@J N B@L  - PLACING CIRCLE AROUND SECTION TO BE ENLARGED  place circle center <B@> ( ? *$  <B@ * <B@  NULL <B@> jeC  reference display on DT  <B@   update <B@> k  If Not isPowerDraft() Then * CadInputQueue.SendKeyin ("SET PROMPT")  End If k (   restore settings  D! \(   D! \(    If Not isPowerDraft() Then  * CadInputQueue.SendKeyin ("SET PROMPT")   End If  &(   : Should be called before exit - sets cursor back to normal &B@ xJJ|    restore settings  D! \(   D! \(    If Not isPowerDraft() Then  * CadInputQueue.SendKeyin ("SET PROMPT")   End If  &(    Report that function failed.F{c  DETAILImpl.Run B@ B@ S t o   ȶ Attribut e VB_Nam e = "DET AILImpl" Opti on Explicit@Priva rModuleR' -L ' Descri : Generenlarg ed view of a secin the drawing andGannot#it accHord lyParters?@ReturnMisc O|Pub Sub Run() rro r GoTo hE Dim bEx ]As Boolean @Break  o bjMessageCadInputtA' s ave previousUtt G @A@ZveTextStylB LevelC' ^tsp0fenc@8ptLowLeftAPoint3@rG@UpRighUS?DAPineStarL(EnddLengthDo p/GstrDGNFileۀ"S ngKetail NoARFlo`gicalpARWCSTN s dDefaultS 6z A"d2@?WT dr=G.XamW= R-: Y: Y#Ytv.Ybn`?  i' ATTACHBREFEBRBBFILEAAS@IMULAT HACG G/ |vG`Z򉠤ignw.Fult' DisPqEDraft() '.CV("SET P ROMPT En`Bd"G> >jD -KPrompt "OilC E&t_3tP_Ѿ \VryVBr zg %iS!r(msdType4], |^ResetY }7.B, Or1$ Ӵ #A Nb@ /P Asc(Mid( T1, 1))  vbEscapea2  6+p=Yb !1=K? 1d?C ?2B "SQ "3G G" &mB& " ""DT%u("",o""" *؃o D /& a"OА=l5 c adInputQ ueue.Sen dKeyin " active c olor 0"   Cwei`ght 1 l ' PLACING CIRCLE AROUND S ECTION N EED TO B E ENLARGED$plac ircl enterDataPoint 3 polate( ptLowLef t, 0.5, ptUpRp)H+ Appl ication.ASettin gs.TextSty h= obj &#Level !' CLIPPiTHE REFERENCE FIlgADESIR@knKϊCommand "referenklip bo undary D T" & str DetailNo]Y ! Reset"upd@ Ӈ ' SC,AL$c@ EREADqROM 8TEXT N ODmKdDefaultScabQ1param.r0@LrqtGekIf fnR@WCSTN()tBplete dSuccefu lly ThenmxaxsclELIfk@j!hMessage@Noth`lF;NULL:+ isPow erDraft( )4' ("SET P`3PT E! se on s"/(!d !& "8):"L%ɊSh owPrompt< " B Else+  08+S&l6@2XB(msd!%Type , E3@E`$Q>.  `RL  OrWE gbExit` Trul8_QP Len( Q;0-2 d%BZ*A Asc(Midn, 1 R)vbE/pe2A  / CDbl E :d GAS '1sc@absolute/s /CExprO Value "tcb->px!.mas, E/ ? wuFFXYZ(PT0.X +04.X`) / 2QY(.ZM|d2   dis@y off;_ > L{PAL`CULATyxS|IZx!!8&t@xsize=b(E{*002 ' MOVOIP ON mo?^&&&&& 4O~! ~t֊~Idify dLes` pQ>}r o} _Q 5oQ #| pt%= Q0Ԑ{BHN("? 5 ", Y1Fd''o&{ /A/A O` ' WRIT@DE TAO. AN 2 txj cba" Set objText Element = Applic ation.Create|1(N othing, "DETAIL - " & st rDetailN o "SCALE(1:fetCP s.LogImpl.Runj!a ?" 'let's roll2 fD&Sleve '\symbologynm'T@Sawyer@b$esfuss i] -7pa 3^̲='['Z 3; .MoveNexM BL1AndS(.-W K EPKIf{= qHTruq ' check if"D"=+f~up EmacrokL= ==Id@ifyUM,P,>Fm= oK@ '^waSh er good-by\'loie any ?3 tU#StY.L"D\(',gastView," _NQNobTtIs!dhq/O! 'dY#GinsistF FntWF{!) Y ' bw[$'well, wwarned..PW Gu_KoKW_?X? .RedrawLO1 3' ku4ldc0`,͎dC0P rt ault ! a1 ' RepHa1_ox Q/fad$Co96g.Rune3#ToMsgBoxW ܟB2 Tܱ2&'HDd + ofNI'ö pass02a p5߀1P} t *է-OPo[>Co 3%0 Cx([ ByRef ob jElement As P)  On E rror GoTo catch<t 'to av oid exce@ptions2I .IsGrap hical ThenFkWit h ActiveSettingF.Levepl = C &i neWeight+ 0Col v+End OFRewrite' IfExit Sub:' Repo rt that box draw failed(Codes. Log "CSL TCImpl.C hangeAn dSymbcgy"3ToMsgBoxCurr ~B +(   ,  : (  ʙ        x  ME       P    ` ` P`  R H   8 ` H p 8    8 p  %Q  0                ( J 8 4 @ B  B h "                   $   @  P  `  p &                     (  H  `  x     "       2   H   P " `                  B       $   8  @  P   X   h  p   x                                 0  8  @  P  X   `  h  p   x B       0                   "    (  @  `  x            8        (  0   8  X  x                " " (  P  X  `  h     D     8  H   ` "  h       2  (   (  0  8  @   H  P  F p   $         0 8  h &               0  H  `         2 2  . P             "         8   X  x                       ^ 8              x p ] 8 ]@  ` ]@   C Description: Purpose Place bubble cells with one or two data fields 3x  Parameters : 1. Cell name . 2. Number of data fields (1 or 2) : 3. Change level/color to active (1:Yes, 0:No) < 4. Max length (in chars) of 1st edit data field D! < 5. Max length (in chars) of 2nd edit data fieldP   G 8 ]  '    Set default parameters ]  ]   ' V  ' X   Set text WIDTH scaling factors Z  + T J  + T ER 8  + T 0  + T '   Set text HEIGHT scaling factors so ^  + R ti T  + R J  + R H  + R er   Save active angle ]  D! \! ^' Z D! \( ^ LOCK GG ON D! <B   G  FT=61 D! <B   LC=0 D! <B   Text Just=CC  /TXJS7 D! <B   noecho D! <B  Place Cell P  DB@  AC= P D! <B    b   P j l n p V X  rA `   C  Z D! \( ^   Should be called before exit $  echo D! <B   &B@ ' 4,,| H @  BUBLDRVRImpl.Run B@ B@ grid o   _  ] p   Check if form is already open ****  d!  2 :k  !   . dk    d  atesce . dDB@ l DB@v ' P h dB@ P  Reset  ) C' p d  P  ion ' bx  k  P$ j    S' p d  PX ' bB x  k  k  k  p i   ] 0 r  r n  b to t  Enter text or RESET to ignore p$ b ' r p p$ t ' r x  k r' li H   Place fence block  /PFENCB D! <B  , ( x D! <B   a z D! <B  .bor,,] x n p p$ l ' rpl]  p p r $  ' ~  2 Reduce text size as required in 2-charactera steps]  ~     '  ]  ]  $ T   d  ' 8 $ R   d  ' : : D! \! (  8 D! \! (  ~   p  WT=0 D! <B  d (  WT=1 D! <B  c k  ]  z!  x!     (  z!  x!     (  ]  ] 0 ] P r   D%  .  | ( z  (  ~ (   ( m e  = If text is entered, place the data field with the given text  B   D! B@J N B@L  /NULL D! <B  o     p ]  ]  ]  ] 8 ' p  , Ask to specify placement point for the cell.  /PACELL D! <B   Enter cell origin p ^%  '  p '  |  k  ] P P  D%  .   ? increments Graphic Group number and saves it to the design file  (  r   Lets scale to a defined scale ] p ]   '   (   %   !   !    !      Prevent scaling of 0  !  !  !  B@ k H k @ k 8  D! B@J N B@L lX  DB@ l CHANGE LEVEL D! <B   D! <B   D! <B  CHANGE COLOR D! <B   D! <B   D! <B   DB  k 8 ]  ]  ]  ! ! !    ! ! !    '  ! ! !    ! ! !    '  ! ! !  ! ! !     '  ]  ]  ]     j    shift the second field down      ' > d j   1 two fields, the first field has to be shifted up      ' >       '  d h   single fields, no shifts ' > ' k 0 k (   x(  >    x(    z(   >    z(     x z    n p$     V X$   p ! A v p G y j   /PFENCB D! <B  o    Attribut e VB_Nam e = "BUB LDRVRImp l" Opti on Explicit@Priva rModuleD Pub H sText As S ng V g_Height Factors(4)%Integer &Width% 'Descri: Pur pose Pla ce bubbl e cells with one or two data fields EPar y ters : 1. C n  2. Num@ber of! (1,2) 3 & hange level/col@Do {ive: Yes, 0:No4. Max ng^(in @chars)>1st editBō=52ndm Sub Run(8strBBp, nFMAHl, bC9LA9Boo0lean 0Len1J n2 × al isFPPFalseK HcOrrQG@oTo hE  ADim bExxitBD=F B'SeOefault pƀCnDef.FpirstB=+N S`econd = 2CIC)tWIDTH scaling &f g_J1)) M90274e3a56r`t= 48cHEIGHT|F}8+"7*akl pED dActivAng [DoI= ApAa*.be Ft`/s.?C  11CallJ CadIn putQueue .SendCom mand("LO CK GG ON"_FT=6F1C=0'bJust=CC?-/TXJS7noechoC%,ShowD$ ("ýb " + &..AC=CDo Whi GNotdGb3~B@J Ȧk&2, _g i NoÔH`  ,c Loop W 03'uld b up,e fore e`W#*--)St.P rtp YS j`:`Cod@es.Log;.xRunpBccR eportToM sgBoxCurrenErEFunC GetSValueq Promp, ByRef"lbs Dos A !gffrmTxp1 'Check (if mp a lready openGqResupNcI .VisiThsAIfJ.n<> 0 k t = 1hPRy|tR! X Is_ Zew ]C`B #Я"11 ".G vbal{ et" Dz0aTruDgb@ E0K?3 K) " 3y'? /5q Asc( 27   / C`24OQ & 9qQ]] ?"d_@W(xY:AѲA p*5AC$ H1) <@ 1 Or :>N T g5= k(<"E @CRE SET to ign@^"tedq!AGSp (kpc (S v  .$%[Sy(ptLef^pPoint3d, ptRBottom/A/er, d!Sxize3_`UlGGrou"DdB' fen!lxockOuOuEu/@PFENCB?cD ataPoint (ptLeftT@op) C all Appl ication. CadInput Queue.SendDRightBottomDim str Text As String4, = GetWi thMaxLen(n, nDef , bExit\n gth\Integer]= IIf(;+K 4() )'Reduce tX size as required in 2-ch aractera1leps7tidxScaleF orI = (R + 1) / 2C%(dWidmD ouble He?1  0g_ Hs(@) *4 dAfS910~0DBA ctiveSett s.tyle.dCCCF= :If ET >= 5 ThenCdComma nd("WT=0b"Els^p1Fnd IfC#CAptCe@Š3d.X aLpt׀+ .XHF YO Y I YD "elEle>maJA4'regM~EntryXReg mMZa@|x`>  =A reate( 1(Noth@D,Ef,$, . GraphicGrouplG"`.Justif msBh*7 =eJ'StartPosi5 1C' <is :ed lahe d ' fi eld w t`g cnc®GtAdM( SdM odelReference.e:F ' raw a# /aNormal h Og /NULLa^ "E ^SubPriv`=  P!BCellNhame!GSbÀF9A$NuIdCh angeLeves Boolean1AǺ2_xi B Y FirstJjSecondOB͢FOpEal isFPP sD`GFa:#OriginAʂ#$H.# S= R # 'Ask to specify prBp fn,c.##0PACE##Apty= qrV@alue(" 0 A NSy_am.zX!1 'PrM ntPX of Ę%q 2A03$r C q. 0gAcg  gkgyS howMessa ge (Cb(baK0͛QGrCHANGE LEVERm1 N~2Kո=T=O/?,OOO@ COLORu??j  ResetDisPgyU(Q)aFdcXCYm yZQu"G= .R1.Low@ .H`0daYao.bd `¿gh.Y - 4Q PDim dY As D oubleTe@xtSizepi Field2In`tegern For @= 1 To n\NumS@~If#>#h en' sh ift the second f1sdow * = dCe rY - dHeight CellQuater +/ 88Els}=O Z Q' twoLs,VfirstUhas to b afed up s!_Ui_G#%= (/ 7) * 6 ? `ingle7nods\0H%% EyIf ptLeftTop.X }X}; Y F"/ 2I RABottomKcQ DH  JCall `Place(!F), pt, _dIIf( , nMaxLe$n1F2) Dezf FaTCSblbdE , b Exit, elElem@n.Gr aphicGroxup)'' i T|   N %App lication .CadInpu tQueue.S endComma nd("/PFENCB"  F Sub +        9T        x  ME    (  <  <    ****`@ owin H ****  % Bh 1la   %     p %Q  0       "        (  0  8   @   H  `  h  p  x                      (   0  8  P   X  p                >        @  2 P    6          0    0  8   @  ` ( p     (  0   8  @  `   p                       (  8  H   X   p          0     (   H . `                 0   8  H  X  h   x 0         .    H X   x         @          ( & 0  X  x    x p  ` ] @ ] X ] p ]  ]   Input values l]  ]  ]  ]    Grid dimensions] ( ] @ ] X ] p   Box and grid size]  ]  ]  ]    Current drawing position ]  ]   ]  ] 0 '   Line element erat] P  noecho D! <B  GRID OF BOXES DB@ lue ' p '  ' " _ P "  Get number of rows nceled $ ENTER NUMBER OF ROWS (RESET TO EXIT) p ^% j ' $ k    Get number of columns p "    ENTER NUMBER OF COLUMNS p ^% j ' & k p  / Set default cursor for the spotting operations &B@F   Get lower left corner p  IDENTIFY LOWER LEFT CORNER  ^%  ' ( ' " k   Get upper right corner p      &  & & & 6 IDENTIFY UPPER RIGHT CORNER OR KEY-IN BOX WIDTH,HEIGHT " ; Invalid data input. Type Width,Height in the key-in window. $  ' *B@ " G x j eck  p p   Calculate box size     *!  (!   $ ' 6 *!  (!   & ' 4,,d H *! ' 60",, *! ' 4( k    New grid size**** 4 & ' 8e 6 $ ' :FD (! ' ,**** (! ' 2**** , 8 ' .a 2 : ' 0LL  Draw Columns Atta   Set initial coordinatesce 0 *( DB@ , *( z , (( D!  & !  ) Create a line in the application context ( * ! D% H . Bra  Save the line to the file B ! D! B@J ** ' Redraw the line, so it becomes visible on N BB@L **  Move to the next position *!  4 *(  (!  4 ((    Draw rows  ) Set initial coordinates for rows drawing . *( !  2 *(  , (( p 2 ((  a  $ .bor,, ) Create a line in the application context ( * ! D% H . B  Save the line to the file B ! D! B@J ' Redraw the line, so it becomes visible N BB@L  Move to the next position *!  6 *(  (!  6 ((  P k H  : Should be called before exit - sets cursor back to normal  echo D! <B  &B@ |     Report that box drawing failed  BOXGRIDImpl.Run B@ i B@ o p h ~ Attribut e VB_Nam e = "BOX GRIDImpl " Optio n Explicit@Priva Module @ Pub D Sub Run() T nrror GoTo hE Dim bGoOn As BooleanExit12UiInt0eger' Input va0lues OnRows Col ptLowLef^Point3d(ptUpRi gh' Gr id dimensFd*Do d( tOp_ Bottom Box and g"sizAWidthx|HeE7  #C urrent d rawing p8osiAAcdX#YMG bBfBe‚TypeMsdCadCC = m Data ' Line eleu@Ѕnnm EI C@all Apa<."Queue .SendComm k("noec8ho" A Sh$ow " OF ES@ bbn= FalsD>B1@m2k Do A If Not 2 The{aa ]et number oxf r m!o= !on.Get$wVt("ENTER NUMB  ROWS (R ESET TO EXIT)", \0,"! E`[If 'colu\mnpA( Or)0nBCOLUMNS_IS )def ault cur sf` the sp }afoperg"HhDBSt@It~Dcm@ I 0 (low@6l!corn%##o>pF'"dd:ID:IF Y LOW:LE FT CORNER" 18AQ}7?p ɣ@Activee lRefe ce.Addd r 0' ReQ, so Hbeco mes visib5 .B!NormaflK-MonextUk! *UF" /`N /.. QQ7 t@SV9?0"WY2= +2kG/2R!/2/2%))C/2/2/2 /2 /2<ɱ .Applica tion.Act iveModel Referenc e.AddEle ment mLi ne  ' Redraw the l <, s o it bec omes visXibl j.rmsdD AingyNormal d rMove tos next posi (ptUpR ight.Y = + dBox HeLowLefN ? End If ' Should callefore ex - sets c ursor baTckinC   CadInpu tQueue.S endComma nd("echo ")< StattartDefpault E"Sub hE`rror:up(ortXa sox Ayh fai@2 A Cs.Lo g "BOXGR IDImpl.RHun"N ReToMsg `Cur1t N   4  =   ;        x  ME    (    set parseall off <B@> `   $   e1l K T F J ********************* The following is E1L section *********************** rf=e1l:e1la '   NULL <B@> %  Attach Border Form DB@ Accept/Reject DB@v z |  ~ D! <% x .  ! !  ~ !  z  ' p d   attach  " 04.bor,,el1,"Aramco form 2615",,,, ' k  ild K T F J ********************* The following is ILD section *********************** rf=ild:ildb ' %  NULL <B@>   Attach Border Form DB@ Accept/Reject DB@v z |  ~ D! <% x .  !  ~ !  z  ' p d p   attach  " 04.bor,,ild,"Aramco form 7460",,,, ' k (  pfd K T F J ********************* The following is PFD section *********************** rf=pfd:pfda '   NULL <B@>  Attach Border Form DB@ Accept/Reject DB@v z |  ~ D! <% x .  !  ~ !  z  ' p d    attach  " 04.bor,,pfd,"Aramco form 2615",,,, ' k   pid K T F J ********************* The following is PID section *********************** rf=pid:pida '   NULL <B@>  Attach Border Form DB@ Accept/Reject DB@v z |  ~ D! <% x .  !  ~ !  z  ' p d   attach  " 05.bor,,pid,"Aramco form 5994",,,, ' k H  vod K T F J ********************* The following is VOD section *********************** rf=vod:voda ' A@  NULL <B@>   Attach Border Form DB@ Accept/Reject DB@v * De z |  ~ D! <% x . ment !  ~ !  z  ' p d    attach  " 04.bor,,vod,"Aramco form 2615",,,, ' k   fpp K T J ********************* The following is fpp section *********************** rf=fpp:fppa '   NULL <B@> ser cl  Attach Border Form DB@ Accept/Reject DB@v D z |  ~ D! <% x . . r !  ~ !  z  ' p d    attach !  " 04.bor,,fpp,"Aramco form 2615",,,, ' k h S F ' p n P p   attach****  REFERENCE DETACH ` <B@  <B@ escrip  <B@> <B@ ts str  reference locate off ` <B@> locale  reference snap on ` <B@> en  fpp `  0 SCALING THE REFERENCE FILE TO THE DESIRED SCALEns  % READING THE SCALE FROM THE TEXT NODE ****   '   ( **** $   **** ! '   k   reference scale absolute ` <B@>  tcb->refScale.master A@ h $  <B@ ****k @ k 8 <B@ ******$   *** SET PROMPT <B@> < k  &B@ from |     restore settings $   (fro SET PROMPT <B@> systemk   &( on)   Report that function failedt[in]  ATTBORImpl.Run B@ ed B@ o   ٴ Attribut e VB_Nam e = "ATT BORImpl" Option Explicit@Priva Module ` ' -L SD escri: This funcattac h border reference fi'>Par ters = strPr ctCode [in]Z p  n( one of e1l, pid, fp p, ilpf vod)-/xPub Sub Run( XAs Sng @O rror GoTo hE  Dim bExit Boolean objM@essageCadInputC @RefFRC ommandLi7E  pXRWPCSTNB\sd DefaultScalBDo8@A* Queue .SendKey in "noecho@ V set !seall nf Selec t Case Mid T, 1, ^3 S "~":'* ollowing E1L s@s͒ ** Yrf=!: aD4"!VBNULL Apa.Shows@BgForFm< gmpt c cept/RejlS@1K= GetO(msBd%Type, BBData Point.ReGB(;'If .A  OrthAmE5 Cq`= Tru^Els,!' D!uE+ "04.,,el1,""A`co f`= 2615"", L8End Ifg"g"?b]/bxILD?be " b:` bKK(?b?bfmi?b ?b?b+e?b?b11e4d1 111"Qjv=~k 1@$17460111b10= 1PF1\߻?_S1p:0 ?b>u1JZ?bh ?b1o?b:1(j<1uV>_1(?b1 OO_`i?b11ĕwThe?b?b 11%"11@$?b?bq11id10 1PI11ߩS0:0 11R11#__?b_11t?b2%1^11$1 k!1111 11 11w1115S@$15994?b111|- 1VO1o111p:0 1F dInputQu eue.Send Keyin "NULL"  Applicat ion.Show Command "Attach Border FormrPrompt pccept/Reject 3 Set objM essage = ~Ca Get!(msdType,  DataPoint Reset) IfN.?9Sc 6 Or$Then8bExit1TrueEls' a͏$strRefFilLinAY+ "04.b or,,vod, ""Aramco fz 2615X"", pE IfCase "Hfpp '* @ llowin g is @ s@ ** :9P"rf= : a"K?e?r ??? \bbbuta bb$( bbebHb#b!w:V|!Sel_# aNot ('3~ o[+"R EFERENCE DETACH 0" & g ductCodA? #rq re ference lo e off_snap o  / K%A ' SCALING THE G.FILE TODESPIRED"EIREADEE FROMbTEXT0 NODGdD efaultScal!1Gpa.r0 rqt`t2 fnRWCSTN() mpletedSu |fully.}xaxsc~l'/1( absolut ef0SCExpr@!@cValutcb->.master",  . 3dFXYZ(0, ! #9X/>isPowe rDraft()o7("SET PP"PT"D C$@Stat txart"SrS ub hErr$orK' torepytt`zs?S  sEnabled*g' R eport that funca fa dr N s.LogTTBORI..RundHToMsgBoxCurHt     =)  ʉ  ( h GetModuleFileNameA 0      x  ME      P  0   $  N 8 B                        0  @  H   P : `       :        $   @  H F h              N   @ & X   B  >  :   P N ` N  "        J   h  p         2       B  (  0   8   @  P   h                    x p     6 Function gets an integer value from the Key-in window@ , strPrompt - a prompt string to be shown 3  @ nMinValue - minimum value to test the entered value against m e bExit - [in/out] Sets to True by the function to signal that user has canceled the operation X  Return value - e Integer value on success, bExit set to True if there was an error or user has canceled the action  ] @ ' j ' p _  l DB@v z | ~ D! <% x . r r!  ~ r!  z  ' p d  r! $  r! X' j j n   x P d H # Input value should be greater than nX  ! A@ Pk d  Invalid data input ! A@ B Bk k p i / Function gets a point value of the mouse click R , strPrompt - a prompt string to be shown e bExit - [in/out] Sets to True by the function to signal that user has canceled the operation  bUseKeyIn - [in] Y strErrorMessage - [in] Error message if count of argument from keyin is less then need O eInputType - [out]CadInputQueue.GetInput.InputType : keyin, point or reset?  Return value - e Point3d value on success, bExit set to True if there was an error or user has canceled the action X    ~ > Invalid data input. Type X,Y coordinates in the key-in window. ` ] h ]  ]  ]  ' p _  l DB@v  z  ~ | D! <% x . rdy od  z  ~ D! <% x . rk X r! '  r!  ~ r!  z  ' p r!  | e . Test if user entered X,Y in the key-in window r!   , $  '     A@ d $  $  +  .  $  $   +  x" or $  $   $  $   $  (  <  $  ( " x  d   Invalid data input ! A@ @ k  k  d  r! '  f 9x  k  p i  * Description: This function selects element $ Parameteters: strPrompt(in) - prompt < < bExit(out) =True, if user clicks cancel button` & ptTouch(out) touch point 1 Returns: Element - that is selected by mouse I Nothing - if user clicks on the drawing where is no element  ]  l DB@v z  ~ D! <% x . r r!  ~  r!  z   ' p p r!  r!  D! &%  .  r! ' z p k h i ` G ***********************************************************************  Description: K Converts string to string represenation, depending of locale settings  4 Arguments: strValue[in] the value to be converted  Returns: converted string  H ************************************************************************    . ?X   $  $  '    , ?X   $  $  ' i h G ***********************************************************************  Description: < Converts value from master and subunit value to double ? (from Microstation coordinate system to VB representtion) 8 Arguments: strUnit[in] the value to be converted * format: 0:0.4 or :0.4 or 0,4  Return value - double value l H ************************************************************************ @ ] D  % R ] D   ] D  % ] D   ] D     -  '    - $  '    : '     '  z k    4 input numerical value format: 0,5 or 0.5 $  X' d H    4 if leading zero is omitted format: :0.3 or :0,3  ' d      $  $  X' i o k     $  $  X'       D! !   D! !   D! !  ' . k H '        ' c e s k  i  G ***********************************************************************  Description: rotate an element by angle < Arguments: objElem[in/out] the element to be rotated 8 pntFixed [in] the point of rotation 3 nAngle[in] angle(in degree)  Misc: H objElem.Rewrite must be called affer if the element already exist H ************************************************************************  ]  ]   C Create a rotation matrix for rotating with the Z direction fixed. ]  (  (   (      $  '   $  '   + Apply the transform to rotate the element  B@ o ( ] h '  ]   $ ` '   $  '  $  '  ]   draft.exe '   '  k 0 i ( V Attribut e VB_Nam e = "Com mon" Op tion Priva ModuleXExplic@it DD eclare FuncvGetlFileLib "kernel 32" Alia@s _  "2A" (ByVal hK As Long, lp]n S AnSize0)# 'ge ts an in teger va lue from the Key -in wind ow  st$rPpt ]- a p ing to be shownnMinb+ - minimum4 Ptest6eAred again s'2bExi6  ![in/o`ut] S^ !Tr .by"f sign thaPt us ohc`ancel8opperaAl*C+Return!- IGsucc ess, C&seɀ0o !if! w Verrorv S a@ub@ OG_}FZ(@BoopleanBDßD@im msgAC adInputM@7ag@\C D qCs= 0CCB= Fals Do3ApZ.S? DF3G @uB#=  &Queue.C")(msdETypeand,'  inNRe 7)'If. " Or The`e w$aE'Ef&`I sNumericg.B)0 !o3>C`5G  > gu/bqI;%s>$J "+luDldgrer`g`f" + C () " !"b8D C"`orityElEnd If-@id data@M  Loo p While Not !%c! po D'o mo c kG!CRc5- 㿫ǩ bUseXIn` ] `7%DcR b m c ount arg c`key`0is l@an needc ey!ǧ3X?: ",[rB?C?bP P3k?b?b?b_j ?bbmy@_eC T`, cqbvO\,9P/ wS03 ?m5. VX,Y coordin`@s 7.?wF Mk`[etot:DoT(arrC ( lonPospWiquZs$so!sC{bb&[t <._0actteD`Q?u2^k' X_ _ j__0Q%_ 1Y! x&=[7 c_"p Z ' TU8U7!+e16Stdž, 8","h@ UB [d(u) < 1O  xD%4:=r; o&(0&) @%DoeF`Units& l 11)} E(Po2 8`.X 85+Y)1 R?:_tte`i ]:= : .point   Exit DoEnd IfptTouch t 'ReturnDEleS D`that d`ed by mo 9ÎM hingI on the drawwhere)noPube `  SC( ByVal As Str &,Boolean,, r P3d)%CuCDim msgACad InputMessageI App&aAu.ShowGiG# Set= Queue.Get(msdETypeCommand, 0Data0NRe0set)C = @g. Lq Or^ #IfG@eE=Jj@?6State.Loct]6g.View, DEr=AVMB *? !_i}FaConver|yA]toD!repr`6naH , dependof l # :t s  Argupà `ue[in]ivalueB be ced&yf@a ? vtrToSystemD twbmwD=`IReplac e()B, ". ", Mid$(C(0.5), 2, 1) ` ,x )?(#/ WI=f ma+r subun`׆Ado ľ(Micros@p`EorN q s5aHVB mStS@)'KPU? "PmP fo rmat: 0:0.4 or 0,4 C cV c- C )?!kV@YDbFs& * cCW   SenColo0nPos$jIn teger7dM?BCp0adSub/"Mea 05P8 = o9"@ "G=z ^:U3e= "0ThYfA0#q ` `AC`W <= 0l'i n Wric(5 v,,5Q, G7d= CDbl(OMtrqJElsԆQJ =, 1< !'!leBaczeroomitt 5 163 6,3w !' y^pY Y, -Z!abS.d;+ (* AлveMode0lRef.U@ORsPerG: + _+1 { s) /_s9  ce StorЪ!8 io3`3e?&@_7{Q? * (-1q [X?  ry@roA`q5Ła8nglpslobjl/] AٔCqU p`ntFix6p {p 0r,n~A1 y@r pgreeQMisc: 0$ .Re write musallaf+Ai alrBy exisP'/ԟ,L RAb Z( gu@, sr$%O*nB Max[ 3 1E@ltransT PS@ Create a rotatio n matrix forng with the Z direcfixed.  Dim A xis As Point3d0(@.X = 0YU Z 1RM = 3dFromV yorAnd%Angle(c, Pi * n / 180) SEltrhans dT mO[(Ff\( B`, pnt(' Apply.* toe elementAPobjE.@ J End SubV Public Fun isPowerD@raft()Boolean+lRet Long  }Fal sefileNameS}z`* 256 B= GetModuleFD (0, }E, FAC =x Le@-G  Cpase( J *po–Integer= In .!, "dJ.exe"JIf  > 0 TheOcA-ITruIfIfeAd @    `     9  a       0&#&&$    ` $   ` $   ` $ 9  ` $ a  ` ,   `     &+`    `0     9  Q  q            !  A  0&&&0#&00$    ` $    ` $ )   ` @ Q   `     a        0&00&&$ y   ` $    ` $    ` $    ` $ 1   ` $ Y   ` $    ` $    ` $    ` $    ` $ !   ` $ I   ` $ q   ` $   ` $   ! ` $   " ` $   # ` $ 9  $ ` $ a  % ` $   & ` $   ' `  n                          rU   ~|      ) ( 0   0   0 X   0    0 x  0    0   0 X   0 `  0   0   0   0 `  0    0  0  0   0  0 `  0   0  0  0  0 `  0  0  0  0 `  0  0  0  0 `  0  0   0 @  0   0   0   0 X  0   0                                                                     !  "  #  $  %  &  '  ( %          P  G 7 (    $ $ ShellExecuteA        x  ME  @  $ (   @  "*  " .  "2  " 6  ":  <  <  <   <   <   < * 6  `      DX  `      H  `        iJ  Nx  `        iP   iR 8  iT X  iV  Z  `    !  ^  `     &   i`  LIST dX  `    +  h`  `     0   iP   LISTij   LISTil    LISTin   LISTip 8  LISTir   v  `   5  z `   :  ~  `   ?  ` `   D   `   I    `     N   i   i    ` `    S  i   i   i   i   i   i    V R i @   Ci `  f 9i   l i   A I i   e 1 i  <   `    Y  `  `    ^    `    c    `    h   iP  iR  m p i @   F i `   i  l i  P P   `    o    `    t  `  `    x    `    |    `       `     `  `       `       `       `     `  `       `         `  ( (    M  %  f 9  % P l  E 8   % p l  1 m p l x   % R  p l %  R W q   $ %  $@ ` !    , ! `  "    . " ` #    0 # ` $    `2 8X $ ` lJ %   +@ % ` J &     @Bh : & ` 0J ' "  `Px +4' ` $J  ( -  `Tt @Vd @XT ˜&  B (  0  @ 0  p   @ 40    @ 8X     @ <    @ x  X `    ` X       `   X ` @        X  0   ` `  ( ( ) )    X     I  %Q $ * \ R f f f f * 2 N 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 O 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 P 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 Q 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 R 5 1 e 1 2 5 0 c $ * \ R f f f f * 2 M 5 1 e 1 2 5 0 c    7   H$      0   8   @   H   P   X "  `  h   x "     "     "     "      "       ( "  0  8   H " P " `    "        "        "        "        "       ( "  0  8   P "d 6 X  `j     "        "  (  0   @ "  H  P   ` "4  h  "      "        "        "        "       0 "  8  @   P "  X  `   p "  x      "        "        "        "          "  8  $ @  h  p                            "      (  0   8  @  H  P  $ X                     (      (   @  `  f h                (  0   8 "  @  H   X 6 ` 2  6  "   $   8  @  P   X  h  p   x         6 ( 6 "  X    ` 6 h , 6 "       * 0    ` "  h   p @ : x J :        V L x X B   (  4 0 $ ( P    x              V T  X h "               7    (   0   8    @ B  H  P  X  `   h               x     $  Ar]    ]@ ]   ]@ ]@ ]@0 ]@X  @B B o  FB B o ` X J LB B o @  P R T V XB B "o  x \B B & o  ` bB B o  fB B P o X 0 P j l n p r tB B  o p ` xB B  o P  |B B  o 0  B B o    B B  o  ` B B o     B B  o  ,             $  (  -  2    ,                                B B Po  B B Ro  B B To ` B B Vo            P R     B B  o H  B B o (  B B o   B B o  ` 4B  o   4B   o   4B  o   0B   o h ` B B  o H  B B  o (  B B  o   B B  o   Title Block Automation ST`   Check if form is already open    8!  k x !   . 8k X  P 8   . 8 8(    8B@ k  o     Dim fTBA As New frmTBA` ]  ]   ]   ] ` ]  ]    Check if form is already open  x <!   k ` !   . <k 8  0 <     " Load and parse the Index.Cfg file     B@     %   Data Verified OKA@  d  Data mismatch detected. $  & Clik OK to "Fix" or Cancel to "Ignore" $    . <  <(   <( "  <( (  <B@ k  k  k  o    ( &B@( o  0 ------------------------------------------------ , Description: It opens AutoSacsVersion dialog( 0 ------------------------------------------------ @   Check if form is already open   ,!  ( k  !   . ,k    ,  (  . ,(  ,B@ k H o @ 0 ------------------------------------------------ " Description: It opens Release Note 0 ------------------------------------------------  o  0 ------------------------------------------------ % Description: It opens TitleBlock Help 0 ------------------------------------------------  ]   4  tbv ' 2  open  help.doc 6 2 &A@ ( o   A@: Vba load 4  TitleBlockVerification.mvba  <B@> Vba load 4 & Microstation Aramco Tools\BatchTB.mvba <B@> . ( o  P -------------------------------------------------------------------------------- F Description: It add refernce of TB_Validation.mvba in ARAMCO_SACS.mvba R ----------------------------------------------------------------------------------X ]  B D! F! H! J ( B! $ L TB_Validation  ' @ z x k p B ' @ z P i H P -------------------------------------------------------------------------------- M Description: It checks for refernce of TB_Validation.mvba in ARAMCO_SACS.mvba R ---------------------------------------------------------------------------------- N0 @  ]  4  TB_Validation.mvba ' P P D! F! H! JB@R k | N o  ] H ] ` ] x WScript.Shell $ Z . X  SYSTEM X% \ . V SACSV8i_DIR $ V ' 4 . Xi ( w Attribut e VB_Nam e = "SAC S" Opti on Expli cit Priva Dec lare FuncHShellExecLib "32.dll" Alias&JA" _ (ByVal h wnd As L ong, lp`Operab S File2GPT?Par ters (Dir@ectorynShowCmdR7*P)U Const SW_SHOW5m_o anClo"sUcls Dim frmV O-v$!LINESnD, LeftÅ Righ$σ$ , F,P_GRA PB^ATTBOR(ProductCodhICIH+;BOXpGRID;dBUBLDRV"1 FieldNumH?, bChangeLevelBoolean@+MaxLen1:n2XISTINzGEDiEbNzGEN/+S ELECTBU{}w.9*Ol HGEc2DRAW)?7!r1.1_SCLOUBAKA okENGLI okMRjo`' Tit!Bloc ~utom8TBA Sh 0.Set f M = Nothing8JGoTo 0&q IsD e dew frm8A?.VerifyABFalse S how vbModeless PSub Public  2Validate'DimxA V F adData APPDATA7 AppIndexes() INDE XINFOPlantPLANTSizesSIZEBorderBORD|ERHLؗ'}#a?BA ' Load a parse the e.Cfg filǗ .A Aa, es, l, D`?GBNHelBph.Com@eTs(, adG,  ),q MsgBox "LBbied OK"' Eca ~ (mismat ch detec ted." + Chr(10)  "Clik t o ""Fix"" CancelIgnore""",nOKC)7vbOK|=}" ~E.!%b=$ )`|ationDxara +<Tru@ 2e)ae MendLinGmWSt . rtPrimitivHw c  '- * 'De scrip(: ItϠutoS(acs@%s , dialo? ,jSACS$ a- rm `2?f J@g' J!" R3 33vD 6)ps( ! !!Rxa U`3!!PmR?,_ _ T TitleBlo0!ZjQV,AeDir{trUU=dstall!@+ "tbv]S hellExec ute 0, " @W"pp.docXNullSR,kP0dW_SH OWo OnProj0`m 1' W%Refere_ CadInp utQueue.SpIKeyin @"Vba lau" & & ")ificrY.mv