#ifdef CAD // 22-05-1998 KTH /* REVISIONS: * * 28-04-1999 PF update van de _getekend-velden toegevoegd. De database weet hierdoor dat de * betreffende update hiervandaan komt, en staat het dan toe (#2376). * 28-04-1999 PF Procedure cad_p_ruimte_update_opp verwijderd (obsolete) * 27-04-1999 BIV Zelfde al vorige regel, maar dan voor terreinsectoren. * --- 01.44 --- * 22-04-1999 BIV Procedure cad_slnkPredraw zodanig aangepast dat bij een deel ALLE discipline-tekeningen die de * gebruiker mag zien(disciplines) worden weggeschreven in cad_slnkstruct. * --- 01.43 --- * 14-04-1999 BIV Functie cad_MaakCadTekening toegevoegd. Deze functie maakt een tekening aan in cad_tekening en * en geeft de naam van die tekening terug. * 12-04-1999 BIV Procedure cad_SLNKgetBinnenBuiten toegevoegd. Deze bepaalt a.h.v. LoadDwg of binnen of buiten. * 30-03-1999 BIV Procedure cad_SLNKDelenbijWerkplek. * 18-03-1999 BIV #2278 - cad_SLNKPostDraw aangepast i.v.m. ins_deelkoppeling. * 12-03-1999 BIV #2278 - Procedure cad_SLNKPrePostDraw toegevoegd t.b.v. tekenen "vanuit" AutoCAD. * 11-03-1999 BIV #2278 - Procedures cad_slnkPredraw,cad_SLNKModify,cad_SLNKPostErase, cad_SLNKPostDraw uitgebreid * i.v.m. LPN_PRS_WERKPLEK t.b.v. Facilitor 3. * 09-03-1999 BIV I.o.v. MB PERIMETER vervangen door LENGTH. * 08-03-1999 BIV #2278 - Entry PERIMETER toegevoegd voor update van Omtrek in terreinsector,gebouw en ruimte. * 03-03-1999 BIV #2278 - Procedures cad_slnkPredraw,cad_SLNKModify,cad_SLNKPostErase, cad_SLNKPostDraw uitgebreid * i.v.m. LPN_INS_DEEL t.b.v. Facilitor 3. * 01-03-1999 BIV #2278 - Functies cad_getVerdiepPlgrnd_tekening en cad_getVerdiepCntr_tekening toegevoegd * t.b.v. Facilitor 3, het grafisch plaatsen van een ruimte. * 26-02-1999 BIV #2278 - Procedures cad_slnkPredraw,cad_SLNKModify,cad_SLNKPostErase, cad_SLNKPostDraw aangepast * i.v.m. LPN_ALG_TERREINSECTOR en LPN_ALG_RUIMTE t.b.v. Facilitor 3. * --- 01.42 --- * --- 01.41 --- * 09-12-1998 BIV Functies cad_getDisciplinetekening, cad_getPlattegrondtekening, cad_getContourtekening toegevoegd. * 09-12-1998 BIV Procedure cad_SLNKPreDraw toegevoegd. * 03-12-1998 BIV Procedure cad_SLNKgetDrawing toegevoegd. * 20-11-1998 BIV Procedure cad_SLNKSTRUCTclearAll toegevoegd (wist alles van de opgegeven sessie). * 12-11-1998 BIV Procedure cad_SLNKModify toegevoegd. * 09-11-1998 BIV Procedure cad_SLNKPostErase toegevoegd. * 06-11-1998 BIV Procedure cad_SLNKPostDraw toegevoegd. * 05-11-1998 BIV Procedure cad_SLNKSTRUCTshift toegevoegd(wist 1ste entry van opgegeven sessie schuift * alle andere entries 1 pos. door (dus 4->3, 3->2 en 2->1)). * 05-11-1998 BIV Procedure cad_SLNKSTRUCTclear toegevoegd (wist alles van de opgegeven sessie, behalve de * entry FAC_MODULE). * 02-11-1998 BIV Procedures cad_SLNKSTRUCTinsertVALINT,...VALSTR, ....VALREAL en ....VALDATE toegevoegd. * 06-10-1998 PF #2060 get_tekeningnaam werkt nu ook voor terreinen * --- 01.40 --- * --- 01.39 --- * 22-07-1998 KTH - diverse -- vervangen door slash-sterretje/sterretje-slash * - diverse kleine aanpassingen * 21-07-1998 BIV Procedure cad_p_ruimte_update_opp toegevoegd * 21-07-1998 BIV Functie cad_f_ruimte_get_tekeningnaam() toegevoegd. * 09-07-1998 PF Geen exception meer, en PRAGMA WNPS toegevoegd * 08-07-1998 PF Functies gebruiken TABLE ins_deel ipv VIEW ins_v_aanwezigdeel, vanwege autorisatie. * De functie wordt ook door andere users (FCLTCAD) gebruikt, en die ziet niets * in de autorisatie views * 07-07-1998 BIV Functies cad_f_deel_get_locatie_key, ..._get_verdieping_key, ..._get_discipline_key, * ..._get_tekeningnaam toegevoegd. * --- 01.38 --- * --- 01.37 --- * 22-05-1998 KTH Aangemaakt */ CREATE OR REPLACE PACKAGE cad AS FUNCTION cad_f_deel_get_locatie(key IN NUMBER) RETURN NUMBER; FUNCTION cad_f_deel_get_verdieping(key IN NUMBER) RETURN NUMBER; FUNCTION cad_f_deel_get_discipline(key IN NUMBER) RETURN NUMBER; FUNCTION cad_f_deel_get_tekeningnaam(key IN NUMBER) RETURN VARCHAR2; FUNCTION cad_f_ruimte_get_tekeningnaam(key IN NUMBER) RETURN VARCHAR2; PROCEDURE cad_SLNKSTRUCTinsertVALINT(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER); PROCEDURE cad_SLNKSTRUCTinsertVALSTR(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value VARCHAR2, ClrEntry NUMBER); PROCEDURE cad_SLNKSTRUCTinsertVALREAL(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER); PROCEDURE cad_SLNKSTRUCTinsertVALDATE(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value DATE, ClrEntry NUMBER); FUNCTION cad_SLNKSTRUCTreadVALINT(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER; FUNCTION cad_SLNKSTRUCTreadVALSTR(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN VARCHAR2; FUNCTION cad_SLNKSTRUCTreadVALREAL(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER; FUNCTION cad_SLNKSTRUCTreadVALDATE(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN DATE; PROCEDURE cad_SLNKSTRUCTclear(Session_Id NUMBER); PROCEDURE cad_SLNKSTRUCTshift(Session_Id NUMBER); PROCEDURE cad_SLNKpostDraw(Session_Id NUMBER); PROCEDURE cad_SLNKpostErase(Session_Id NUMBER); PROCEDURE cad_SLNKpostModify(Session_Id NUMBER); PROCEDURE cad_SLNKSTRUCTclearAll(Session_Id NUMBER); PROCEDURE cad_SLNKgetDrawing(Session_Id NUMBER); PROCEDURE cad_SLNKPreDraw(Session_Id NUMBER); PROCEDURE cad_SLNKPrePostDraw(Session_Id NUMBER); PROCEDURE cad_SLNKDelenbijWerkplek(Session_Id NUMBER); PROCEDURE cad_getSymboolInfo(Session_Id NUMBER, Entry VARCHAR2); PROCEDURE cad_SLNKgetBinnenBuiten(Session_Id NUMBER, LoadDwg IN VARCHAR2); /* Deze procedure is slechts eenmaal gebruikt t.b.v. grafische conversie BIS ... * PROCEDURE cad_SLNKConvPreDraw(Session_Id NUMBER, LOC_X_COORD NUMBER, LOC_Y_COORD NUMBER); */ FUNCTION cad_getDisciplinetekening(Locatie_key IN NUMBER, Discipline_key IN NUMBER) RETURN VARCHAR2; FUNCTION cad_getPlattegrondtekening(Locatie_key IN NUMBER)RETURN VARCHAR2; FUNCTION cad_getContourtekening(Locatie_key IN NUMBER)RETURN VARCHAR2; FUNCTION cad_getVerdiepPlgrnd_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2; FUNCTION cad_getVerdiepCntr_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2; FUNCTION cad_getLocatieCode_Tekening(TekeningNaam IN VARCHAR2) RETURN VARCHAR2; FUNCTION cad_getTekeningNaam_LoadDwg(LoadDwg IN VARCHAR2) RETURN VARCHAR2; /* garandeer dat de functies de database-state en package-state niet beinvloeden * (anders kunnen ze niet zondermeer in een view worden gebruikt) */ PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_locatie, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_verdieping, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_discipline, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_tekeningnaam, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_f_ruimte_get_tekeningnaam, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_getDisciplinetekening, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_getPlattegrondtekening, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_getContourtekening, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_getVerdiepPlgrnd_tekening, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_getVerdiepCntr_tekening, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_getLocatieCode_Tekening, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cad_getTekeningNaam_LoadDwg, WNDS, WNPS); END cad; / CREATE OR REPLACE PACKAGE BODY cad AS FUNCTION cad_f_deel_get_locatie(Key IN NUMBER) RETURN NUMBER IS locatie_key NUMBER(10); BEGIN SELECT ins_alg_locatie_key INTO locatie_key FROM all_v_aanwezigdeel /* FROM ins_deel -- de tabel i.o.m. PF view gebruiken */ WHERE ins_deel_key = Key; RETURN locatie_key; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END cad_f_deel_get_locatie; FUNCTION cad_f_deel_get_verdieping(Key IN NUMBER) RETURN NUMBER IS verdieping_key NUMBER(10); PlaatsDeel VARCHAR2(1); WerkplekKey NUMBER(10); BEGIN /* Functie aangepast t.b.v. Facilitor 3 i.v.m. mogelijkheid deel te plaatsen op een werkplek */ SELECT ins_alg_ruimte_type INTO PlaatsDeel FROM ins_deel WHERE ins_deel_key = Key; IF PlaatsDeel = 'W' THEN SELECT ins_alg_ruimte_key INTO WerkplekKey FROM ins_deel WHERE ins_deel_key = Key; /* Bepaal ruimte waarin werkplek zich bevindt en vervolgens de verdieping */ BEGIN SELECT alg_verdieping_key INTO verdieping_key FROM alg_ruimte WHERE alg_ruimte_key = (SELECT prs_alg_ruimte_key FROM PRS_WERKPLEK WHERE prs_werkplek_key = WerkplekKey); RETURN verdieping_key; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; ELSE BEGIN SELECT ALG_G.alg_verdieping_key INTO verdieping_key FROM alg_ruimte ALG_G, ins_deel INS_D /* de tabel! */ WHERE INS_D.ins_deel_key = Key AND INS_D.ins_alg_ruimte_key = ALG_G.alg_ruimte_key; RETURN verdieping_key; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END IF; END cad_f_deel_get_verdieping; FUNCTION cad_f_deel_get_discipline(Key IN NUMBER) RETURN NUMBER IS discipline_key NUMBER(10); BEGIN SELECT ins_discipline_key INTO discipline_key FROM all_v_aanwezigdeel /* FROM ins_deel -- de tabel! */ WHERE ins_deel_key = Key; RETURN discipline_key; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END cad_f_deel_get_discipline; FUNCTION cad_f_deel_get_tekeningnaam(Key IN NUMBER) RETURN VARCHAR2 IS tekeningnaam VARCHAR2(256); locatie_key NUMBER(10); verdieping_key NUMBER(10); discipline_key NUMBER(10); BEGIN locatie_key := cad_f_deel_get_locatie(Key); verdieping_key := cad_f_deel_get_verdieping(Key); discipline_key := cad_f_deel_get_discipline(Key); IF (locatie_key IS NOT NULL AND verdieping_key IS NOT NULL AND discipline_key IS NOT NULL) THEN BEGIN SELECT cad_tekening_filenaam INTO tekeningnaam FROM cad_v_cad_tekening WHERE alg_locatie_key = locatie_key AND alg_verdieping_key = verdieping_key AND ins_discipline_key = discipline_key; RETURN tekeningnaam; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; ELSIF (locatie_key IS NOT NULL AND verdieping_key IS NULL AND discipline_key IS NOT NULL) THEN BEGIN SELECT cad_tekening_filenaam INTO tekeningnaam FROM cad_v_cad_tekening WHERE alg_locatie_key = locatie_key AND alg_verdieping_key IS NULL AND ins_discipline_key = discipline_key; RETURN tekeningnaam; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END IF; END cad_f_deel_get_tekeningnaam; FUNCTION cad_f_ruimte_get_tekeningnaam(Key IN NUMBER) RETURN VARCHAR2 IS tekeningnaam VARCHAR2(256); locatie_key NUMBER(10); verdieping_key NUMBER(10); BEGIN SELECT alg_locatie_key, alg_verdieping_key INTO locatie_key, verdieping_key FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = Key; IF (locatie_key IS NOT NULL AND verdieping_key IS NOT NULL) THEN BEGIN SELECT cad_tekening_filenaam INTO tekeningnaam FROM cad_v_cad_tekening /* ja deze! */ WHERE alg_locatie_key = locatie_key AND alg_verdieping_key = verdieping_key AND cad_tekening_type = 'C'; RETURN tekeningnaam; EXCEPTION WHEN NO_DATA_FOUND THEN /* raise_application_error(-20000, 'ins_m166'); */ RETURN NULL; END; ELSE RETURN NULL; END IF; END cad_f_ruimte_get_tekeningnaam; FUNCTION Bepaal_locatiecode(locatie_key IN NUMBER) RETURN VARCHAR2 IS locatie_code VARCHAR2(5); BEGIN BEGIN SELECT alg_locatie_code INTO locatie_code FROM alg_locatie WHERE alg_locatie_key = Locatie_key; RETURN locatie_code; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END Bepaal_locatiecode; FUNCTION cad_getLocatieCode_Tekening(TekeningNaam IN VARCHAR2) RETURN VARCHAR2 IS locatieCode VARCHAR2(25); SlashPositie NUMBER(2); BEGIN SlashPositie := INSTR(TekeningNaam,'\'); LocatieCode := SUBSTR(TekeningNaam,1, SlashPositie-1); RETURN LocatieCode; END cad_getLocatieCode_Tekening; FUNCTION cad_getTekeningNaam_LoadDwg(LoadDwg IN VARCHAR2) RETURN VARCHAR2 IS Teller NUMBER; OneChar VARCHAR2(1); Tekening VARCHAR2(256); SlashFound BOOLEAN := FALSE; BEGIN Teller:= LENGTH(LoadDwg); WHILE (teller>0) LOOP OneChar:=SUBSTR(LoadDwg,Teller,1); IF OneChar='\' THEN EXIT; END IF; teller :=teller-1; END LOOP; IF teller = 0 THEN /* geen '\' gevonden */ RETURN LoadDwg; ELSE /* return tekeningnaam zonder pad terug */ RETURN SUBSTR(LoadDwg,teller+1,LENGTH(LoadDwg)-teller); END IF; END cad_getTekeningNaam_LoadDwg; FUNCTION cad_getDisciplinetekening(Locatie_key IN NUMBER, Discipline_key IN NUMBER)RETURN VARCHAR2 IS locatie_code VARCHAR2(5); tekening VARCHAR2(256); Disciplinetekening VARCHAR2(256); BEGIN BEGIN locatie_code := bepaal_locatiecode(Locatie_key); SELECT cad_tekening_filenaam INTO tekening FROM cad_v_discipline WHERE alg_locatie_key = Locatie_key AND ins_discipline_key = Discipline_key; Disciplinetekening := locatie_code||'\'||tekening; RETURN Disciplinetekening; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getDisciplinetekening; FUNCTION cad_getPlattegrondtekening(Locatie_key IN NUMBER)RETURN VARCHAR2 IS locatie_code VARCHAR2(5); tekening VARCHAR2(256); Plattegrondtekening VARCHAR2(256); BEGIN BEGIN locatie_code := bepaal_locatiecode(Locatie_key); SELECT cad_tekening_filenaam INTO tekening FROM cad_v_plattegrond WHERE alg_locatie_key = Locatie_key AND alg_verdieping_key IS NULL; plattegrondtekening := locatie_code||'\'||tekening; RETURN plattegrondtekening; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getPlattegrondtekening; FUNCTION cad_getVerdiepPlgrnd_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2 IS locatie_code VARCHAR2(5); tekening VARCHAR2(256); Plattegrondtekening VARCHAR2(256); BEGIN BEGIN locatie_code := bepaal_locatiecode(Locatiekey); SELECT cad_tekening_filenaam INTO tekening FROM cad_v_plattegrond WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key = Verdiepingkey; plattegrondtekening := locatie_code||'\'||tekening; RETURN plattegrondtekening; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getVerdiepPlgrnd_tekening; FUNCTION cad_getContourtekening(Locatie_key IN NUMBER)RETURN VARCHAR2 IS locatie_code VARCHAR2(5); tekening VARCHAR2(256); Contourtekening VARCHAR2(256); BEGIN locatie_code := bepaal_locatiecode(Locatie_key); BEGIN SELECT cad_tekening_filenaam INTO tekening FROM cad_v_contour WHERE alg_locatie_key = Locatie_key AND alg_verdieping_key IS NULL; Contourtekening := locatie_code||'\'||tekening; RETURN Contourtekening; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getContourtekening; FUNCTION cad_getVerdiepCntr_tekening(Locatiekey IN NUMBER, Verdiepingkey IN NUMBER) RETURN VARCHAR2 IS locatie_code VARCHAR2(5); tekening VARCHAR2(256); Contourtekening VARCHAR2(256); BEGIN locatie_code := bepaal_locatiecode(LocatieKey); BEGIN SELECT cad_tekening_filenaam INTO tekening FROM cad_v_contour WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key = Verdiepingkey; Contourtekening := locatie_code||'\'||tekening; RETURN Contourtekening; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getVerdiepCntr_tekening; PROCEDURE cad_SLNKgetBinnenBuiten(Session_Id IN NUMBER, LoadDwg IN VARCHAR2) IS /* Bepaal a.h.v. de LoadDwg of het hier gaat om een buitentekening(terreinsector) of binnentekening */ TekeningNaam VARCHAR2(256); LocatieCode VARCHAR2(5); LocatieKey NUMBER(10); VerdiepingKey NUMBER(10); Plaats NUMBER; BEGIN TekeningNaam := cad_getTekeningNaam_LoadDwg(LoadDwg); LocatieCode := cad_getLocatieCode_Tekening(LoadDwg); SELECT alg_locatie_key INTO LocatieKey FROM alg_locatie WHERE UPPER(alg_locatie_code) = UPPER(LocatieCode); BEGIN SELECT alg_verdieping_key INTO VerdiepingKey FROM cad_v_plattegrond WHERE alg_locatie_key = LocatieKey AND cad_tekening_filenaam = TekeningNaam; IF VerdiepingKey IS NOT NULL THEN Plaats := 0; ELSE Plaats := 1; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN Plaats := 1; END; cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, Plaats, 1); cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END cad_SLNKgetBinnenBuiten; PROCEDURE cad_SLNKSTRUCTdelete(Session_Id NUMBER, Entry VARCHAR2) IS BEGIN BEGIN DELETE FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry = entry; COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END cad_SLNKSTRUCTdelete; PROCEDURE cad_SLNKSTRUCTinsertVALINT(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER) IS BEGIN IF ClrEntry = 1 AND seqnr = 1 THEN cad_SLNKSTRUCTdelete(Session_Id, Entry); END IF; BEGIN INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valint) VALUES(Session_Id, entry, seqnr, value); COMMIT; EXCEPTION WHEN OTHERS THEN NULL; END; END cad_SLNKSTRUCTinsertVALINT; PROCEDURE cad_SLNKSTRUCTinsertVALSTR(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value VARCHAR2, ClrEntry NUMBER) IS BEGIN IF ClrEntry = 1 AND seqnr = 1 THEN cad_SLNKSTRUCTdelete(Session_Id, Entry); END IF; BEGIN INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valstr) VALUES(Session_Id, entry, seqnr, value); COMMIT; EXCEPTION WHEN OTHERS THEN NULL; END; END cad_SLNKSTRUCTinsertVALSTR; PROCEDURE cad_SLNKSTRUCTinsertVALREAL(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER) IS BEGIN IF ClrEntry = 1 AND seqnr = 1 THEN cad_SLNKSTRUCTdelete(Session_Id, Entry); END IF; BEGIN INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valreal) VALUES(Session_Id, entry, seqnr, value); COMMIT; EXCEPTION WHEN OTHERS THEN NULL; END; END cad_SLNKSTRUCTinsertVALREAL; PROCEDURE cad_SLNKSTRUCTinsertVALDATE(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value DATE, ClrEntry NUMBER) IS BEGIN IF ClrEntry = 1 AND seqnr = 1 THEN cad_SLNKSTRUCTdelete(Session_Id, Entry); END IF; BEGIN INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valdate) VALUES(Session_Id, entry, seqnr, value); COMMIT; EXCEPTION WHEN OTHERS THEN NULL; END; END cad_SLNKSTRUCTinsertVALDATE; PROCEDURE cad_SLNKSTRUCTclear(Session_Id NUMBER) IS BEGIN BEGIN DELETE FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry <> 'FAC_MODULE' AND cad_slnkstruct_entry <> 'SYNC'; COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END cad_SLNKSTRUCTclear; PROCEDURE cad_SLNKSTRUCTclearAll(Session_Id NUMBER) IS BEGIN BEGIN DELETE FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id; COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END cad_SLNKSTRUCTclearAll; PROCEDURE cad_SLNKSTRUCTshift(Session_Id NUMBER) IS aantal NUMBER(10); BEGIN BEGIN SELECT max(cad_slnkstruct_seqnr) INTO aantal FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry <> 'FAC_MODULE' AND cad_slnkstruct_entry <> 'SYNC'; IF aantal > 1 THEN DELETE FROM cad_slnkstruct WHERE cad_slnkstruct_seqnr = 1 AND cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry <> 'FAC_MODULE' AND cad_slnkstruct_entry <> 'SYNC'; COMMIT; UPDATE cad_slnkstruct SET cad_slnkstruct_seqnr = cad_slnkstruct_seqnr - 1 WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry <> 'FAC_MODULE' AND cad_slnkstruct_entry <> 'SYNC'; COMMIT; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END cad_SLNKSTRUCTshift; FUNCTION cad_SLNKSTRUCTreadVALINT(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER IS Value NUMBER; BEGIN BEGIN SELECT cad_slnkstruct_valint INTO Value FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry = Entry AND cad_slnkstruct_seqnr = 1; RETURN Value; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_SLNKSTRUCTreadVALINT; FUNCTION cad_SLNKSTRUCTreadVALINT2(Session_Id IN NUMBER, Entry IN VARCHAR2, SeqNr IN NUMBER) RETURN NUMBER IS Value NUMBER; BEGIN BEGIN SELECT cad_slnkstruct_valint INTO Value FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry = Entry AND cad_slnkstruct_seqnr = SeqNr; RETURN Value; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_SLNKSTRUCTreadVALINT2; FUNCTION cad_SLNKSTRUCTreadVALSTR(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN VARCHAR2 IS Value VARCHAR2(128); BEGIN BEGIN SELECT cad_slnkstruct_valstr INTO Value FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry = Entry AND cad_slnkstruct_seqnr = 1; RETURN Value; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_SLNKSTRUCTreadVALSTR; FUNCTION cad_SLNKSTRUCTreadVALSTR2(Session_Id IN NUMBER, Entry IN VARCHAR2, SeqNr IN NUMBER) RETURN VARCHAR2 IS Value VARCHAR2(128); BEGIN BEGIN SELECT cad_slnkstruct_valstr INTO Value FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry = Entry AND cad_slnkstruct_seqnr = SeqNr; RETURN Value; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_SLNKSTRUCTreadVALSTR2; FUNCTION cad_SLNKSTRUCTreadVALREAL(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER IS Value NUMBER; BEGIN BEGIN SELECT cad_slnkstruct_valreal INTO Value FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry = Entry AND cad_slnkstruct_seqnr = 1; RETURN Value; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_SLNKSTRUCTreadVALREAL; FUNCTION cad_SLNKSTRUCTreadVALDATE(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN DATE IS Value DATE; BEGIN BEGIN SELECT cad_slnkstruct_valdate INTO Value FROM cad_slnkstruct WHERE cad_slnkstruct_sessionid = Session_Id AND cad_slnkstruct_entry = Entry AND cad_slnkstruct_seqnr = 1; RETURN Value; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_SLNKSTRUCTreadVALDATE; PROCEDURE cad_SLNKgetDrawing(Session_Id NUMBER) IS LPNName VARCHAR2(128); tekeningnaam VARCHAR2(256); locatie_key NUMBER(10); locCode VARCHAR2(5); DwgString VARCHAR2(261); BEGIN LocCode := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'INFOS', 1); LPNName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'INFOS', 2); SELECT alg_locatie_key INTO locatie_key FROM alg_v_aanweziglocatie WHERE alg_locatie_code = LocCode; IF LPNName = 'LPN_BIS_BORING' THEN BEGIN SELECT cad_tekening_filenaam INTO tekeningnaam FROM cad_v_cad_tekening WHERE alg_locatie_key = locatie_key AND cad_tekening_type = 'D' AND ins_discipline_key = (SELECT ins_discipline_key FROM ins_tab_discipline WHERE UPPER(ins_discipline_omschrijving) = 'MILIEU'); EXCEPTION WHEN NO_DATA_FOUND THEN tekeningnaam := NULL; END; ELSE /* Later misschien verder uitwerken voor LPN_ALG_TERREINSECTOR, LPN_BIS_PROJECT en LPN_BIS_ONTGRAVINGSVAK. * Voorlopig voor al deze LPN's dezelfde acties. */ BEGIN SELECT cad_tekening_filenaam INTO tekeningnaam FROM cad_v_cad_tekening WHERE alg_locatie_key = locatie_key AND cad_tekening_type = 'C'; EXCEPTION WHEN NO_DATA_FOUND THEN tekeningnaam := NULL; END; END IF; DwgString := LocCode||'\'||tekeningnaam; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SRCDWG', 1, DwgString, 1); cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END cad_SLNKgetDrawing; FUNCTION cad_getLayerColor(Entry IN VARCHAR2) RETURN NUMBER IS LayerColor NUMBER(3); BEGIN BEGIN SELECT cad_symbool_kleur INTO LayerColor FROM cad_symbool WHERE cad_symbool_entry = Entry; RETURN LayerColor; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getLayerColor; FUNCTION cad_getLayerLinetype(Entry IN VARCHAR2) RETURN VARCHAR2 IS LayerLinetype VARCHAR2(256); BEGIN BEGIN SELECT cad_symbool_linetype INTO LayerLinetype FROM cad_symbool WHERE cad_symbool_entry = Entry; RETURN LayerLinetype; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getLayerLinetype; FUNCTION cad_getLayerName(Entry IN VARCHAR2) RETURN VARCHAR2 IS LayerName VARCHAR2(256); BEGIN BEGIN SELECT cad_symbool_layer INTO LayerName FROM cad_symbool WHERE cad_symbool_entry = Entry; RETURN LayerName; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; END cad_getLayerName; #ifdef BIS PROCEDURE cad_KILLtrajecten(Session_Id NUMBER, Diepte NUMBER, Datum DATE) IS Eerste BOOLEAN; BEGIN DECLARE CURSOR EindTrajectGroter IS SELECT DISTINCT(BIS_BT1.bis_boring_key), BIS_BT1.bis_boring_key FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT1 WHERE CAD_S.cad_slnkstruct_sessionid = 114866 AND CAD_S.cad_slnkstruct_entry = 'LPNKEYDELO' AND CAD_S.cad_slnkstruct_valint = BIS_BT1.bis_boring_key AND Diepte >= (SELECT MAX(BIS_BT2.bis_traject_einddiepte) FROM bis_v_boring_trajecten BIS_BT2 WHERE BIS_BT2.bis_boring_key = BIS_BT1.bis_boring_key); /* Als Diepte > einddiepte laatste traject v/e boring -> verwijder hele boring */ BEGIN Eerste := TRUE; FOR TrajectRec IN EindTrajectGroter LOOP UPDATE bis_boring SET bis_boring_verwijderdatum = Datum WHERE bis_boring_key = TrajectRec.bis_boring_key AND bis_boring_verwijderdatum IS NULL; COMMIT; IF Eerste THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 1); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, TrajectRec.bis_boring_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 0); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, TrajectRec.bis_boring_key, 0); END IF; END LOOP; END; DECLARE CURSOR TrajectKleinerDiepte IS SELECT CAD_S.cad_slnkstruct_valint, bis_traject_key FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT WHERE CAD_S.cad_slnkstruct_sessionid = Session_Id AND CAD_S.cad_slnkstruct_entry = 'LPNKEYDELO' AND CAD_S.cad_slnkstruct_valint = BIS_BT.bis_boring_key AND BIS_BT.bis_traject_einddiepte < Diepte; /* Hele traject valt binnen het ontgravingsvak */ BEGIN FOR TrajectRec IN TrajectKleinerDiepte LOOP UPDATE bis_traject SET bis_traject_einddatum = Datum WHERE bis_traject_key = TrajectRec.bis_traject_key AND bis_traject_einddatum IS NULL; /* Als een traject wordt verwijderd dan moet het ook uit het mengmonster verwijderd worden */ DELETE FROM bis_traject_mengmonster WHERE bis_traject_mengmonster_key = TrajectRec.bis_traject_key; COMMIT; END LOOP; END; DECLARE CURSOR TrajectOverlap IS SELECT CAD_S.cad_slnkstruct_valint, BIS_BT.bis_traject_key FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT WHERE CAD_S.cad_slnkstruct_sessionid = Session_Id AND CAD_S.cad_slnkstruct_entry = 'LPNKEYDELO' AND CAD_S.cad_slnkstruct_valint = BIS_BT.bis_boring_key AND BIS_BT.bis_traject_begindiepte < Diepte AND BIS_BT.bis_traject_einddiepte > Diepte; /* Het traject valt gedeeltelijk binnen het ontgravingsvak */ BEGIN FOR TrajectRec IN TrajectOverlap LOOP UPDATE bis_traject SET bis_traject_begindiepte = Diepte WHERE bis_traject_key = TrajectRec.bis_traject_key; COMMIT; END LOOP; END; END cad_KILLtrajecten; FUNCTION cad_GETBoringSymbolName(Boring_key IN NUMBER) RETURN VARCHAR2 IS SymboolNaam VARCHAR2(128); GrondBoring VARCHAR2(1) := 0; GrondwaterBoring VARCHAR2(1) := 0; AantalPeilbuizen VARCHAR2(1) := 0; Sondering VARCHAR2(1) := 0; Cursor BoringCursor IS SELECT bis_boring_key, bis_grond_key, bis_grondwater_key, bis_sondering_key FROM bis_v_aanwezigbor_boringtype WHERE bis_boring_key = Boring_Key; BEGIN SELECT count(*) INTO AantalPeilbuizen FROM bis_v_aanwezigbor_boringtype WHERE bis_boring_key = Boring_Key AND bis_grondwater_key IS NOT NULL; FOR BoringRec IN BoringCursor LOOP IF BoringRec.bis_sondering_key IS NOT NULL AND Sondering = 0 THEN Sondering := 1; END IF; IF BoringRec.bis_grond_key IS NOT NULL AND Grondboring = 0 THEN Grondboring := 1; END IF; IF BoringRec.bis_grondwater_key IS NOT NULL AND Grondwaterboring = 0 THEN Grondwaterboring := 1; END IF; END LOOP; IF Grondboring = 1 AND Grondwaterboring = 1 AND Sondering = 0 AND AantalPeilbuizen = 0 THEN Grondboring := 0; ELSIF Grondwaterboring = 1 AND Sondering = 1 THEN AantalPeilbuizen := 1; Grondboring := 0; ELSIF Grondwaterboring = 1 AND AantalPeilbuizen > 1 THEN AantalPeilbuizen := 2; Grondboring := 0; Sondering := 0; ELSIF Grondwaterboring = 1 AND AantalPeilbuizen = 1 THEN Grondboring := 0; ELSE Grondboring := 1; Grondwaterboring := 0; Sondering := 0; END IF; BEGIN SELECT bis_boringblk_symbool INTO SymboolNaam FROM bis_boringblk WHERE bis_boringblk_grond = GrondBoring AND bis_boringblk_grondwater = GrondwaterBoring AND bis_boringblk_aantalpb = Aantalpeilbuizen AND bis_boringblk_sondering = Sondering; EXCEPTION WHEN NO_DATA_FOUND THEN SymboolNaam := NULL; END; Return SymboolNaam; END cad_GETBoringSymbolName; /* Eenmalige procedure t.b.v. Grafische conversie BIS */ PROCEDURE cad_SLNKConvPreDraw(Session_Id NUMBER, loc_x_coord NUMBER, loc_y_coord NUMBER) IS LPNName VARCHAR2(128); LPNKey NUMBER(10); LPNKeyCond NUMBER(10); Diepte NUMBER(8,2); Veld_Key NUMBER(10); Subloc_Code VARCHAR2(10); Boring_nummer VARCHAR2(5); Punt_boring BOOLEAN; Boring_Symbol VARCHAR2(128); Valint NUMBER; SeqNr NUMBER(10); Datum DATE; BEGIN LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASPREDRAW'); LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYPREDRAW'); SeqNr := cad_SLNKSTRUCTreadVALINT(Session_id, 'SEQNR'); IF SeqNr IS NULL THEN SeqNr := 1; END IF; /* Bepaal of er sprake is van een veld(contour) of van een puntboring */ cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_BORING', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); SELECT bis_veld_key, bis_boring_nummer INTO veld_key, boring_nummer FROM bis_v_aanwezigboring WHERE bis_boring_key = LPNKey; IF veld_key IS NULL THEN Valint := 0; Punt_boring := TRUE; /* Er moet een boring getekend worden */ ELSE Valint := 2; /* Er moet een contour getekend worden */ Punt_boring := FALSE; END IF; cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, Valint, 1); IF Punt_boring THEN /* Zoek juiste boringsymbool bij Boringnummer */ Boring_Symbol := cad_GETBoringSymbolName(LPNKey); cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Boring_Symbol, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'BORING', 1); END IF; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_BORING_KEY', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1); SELECT alg_terreinsector_key INTO LPNKeyCond FROM bis_v_aanwezigboring WHERE bis_boring_key = LPNKey; cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1); IF Punt_boring THEN cad.cad_SLNKstructinsertVALREAL(Session_Id,'INSPOINTX', SeqNr, loc_x_coord, 1); cad.cad_SLNKstructinsertVALREAL(Session_Id,'INSPOINTY', SeqNr, loc_y_coord, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 1, 1); END IF; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_BORING_NUMMER', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, boring_nummer, 1); END cad_SLNKConvPreDraw; #endif // BIS FUNCTION CheckLPNCondKey(LPNCondName IN VARCHAR2, LPNCondKey IN NUMBER) RETURN BOOLEAN IS Dummy NUMBER(10); BEGIN IF LPNCondName = 'LPN_ALG_TERREINSECTOR' THEN BEGIN SELECT alg_terreinsector_key INTO Dummy FROM alg_terreinsector WHERE alg_terreinsector_key = LPNCondKey; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END; ELSIF LPNCondName = 'LPN_ALG_RUIMTE' THEN BEGIN SELECT alg_ruimte_key INTO Dummy FROM alg_ruimte WHERE alg_ruimte_key = LPNCondKey; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END; ELSIF LPNCondName = 'LPN_PRS_WERKPLEK' THEN BEGIN SELECT prs_werkplek_key INTO Dummy FROM prs_werkplek WHERE prs_werkplek_key = LPNCondKey; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END; ELSE RETURN FALSE; END IF; END CheckLPNCondKey; FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS VolgnrTxt VARCHAR2(10); Volgnummer NUMBER(3); Numeriek BOOLEAN := TRUE; SeqNr NUMBER(10); StreepPos NUMBER(2); VoorDeStreep VARCHAR2(20); ReturnString VARCHAR2(30); BEGIN IF Omschrijving IS NULL THEN ReturnString := '01'; RETURN ReturnString; ELSE StreepPos := INSTR(Omschrijving, '-'); IF StreepPos = 0 THEN VolgnrTxt := Omschrijving; ELSE VoorDeStreep := SUBSTR(Omschrijving,1, StreepPos-1); VolgnrTxt := SUBSTR(Omschrijving, StreepPos+1, LENGTH(omschrijving)-StreepPos); END IF; FOR i IN 1.. LENGTH(VolgnrTxt) LOOP IF SUBSTR(VolgnrTxt,i,1) BETWEEN '0' AND '9' OR SUBSTR(VolgnrTxt,i,1) = ' ' THEN Numeriek := TRUE; ELSE Numeriek := FALSE; EXIT; END IF; END LOOP; IF Numeriek THEN Volgnummer := TO_NUMBER(VolgnrTxt); Volgnummer := Volgnummer + 1; VolgnrTxt := TO_CHAR(Volgnummer); IF StreepPos <> 0 THEN VolgnrTxt := '- 0'||VolgnrTxt; ELSE VolgnrTxt := '0'||VolgnrTxt; END IF; ELSE Volgnummer := 1; VolgnrTxt := VolgnrTxt||'- 01'; END IF; IF VoorDeStreep IS NOT NULL THEN ReturnString := VoorDeStreep||VolgnrTxt; ELSE ReturnString := VolgnrTxt; END IF; RETURN ReturnString; END IF; END Bepaal_VolgnummerTxt; FUNCTION AddDeel(Session_Id IN NUMBER, SrtdeelKey IN NUMBER, LoadDwg IN VARCHAR2, LPNCondName IN VARCHAR2, LPNCondKey IN NUMBER) RETURN NUMBER IS Plaatsdeel ins_deel.ins_alg_ruimte_type%TYPE; LocatieCode alg_locatie.alg_locatie_code%TYPE; LocatieKey alg_locatie.alg_locatie_key%TYPE; DisciplineKey ins_discipline.ins_discipline_key%TYPE; Volgnummer NUMBER(3); SrtgroepKey ins_srtgroep.ins_srtgroep_key%TYPE; SrtDeelCode ins_srtdeel.ins_srtdeel_code%TYPE; Omschrijving VARCHAR2(30); ZoekString VARCHAR2(20); AntiString VARCHAR2(20); VolgNrTxt VARCHAR2(30); SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; MaxLengte NUMBER(10); Dummy NUMBER(10); LabelSymbool VARCHAR2(256); LabelOK BOOLEAN; BEGIN LocatieCode := cad_getLocatieCode_Tekening(LoadDwg); BEGIN SELECT alg_locatie_key INTO LocatieKey FROM alg_locatie WHERE UPPER(alg_locatie_code) = UPPER(LocatieCode); EXCEPTION WHEN NO_DATA_FOUND THEN LocatieKey := NULL; END; SELECT ins_discipline_key INTO DisciplineKey FROM ins_srtgroep WHERE ins_srtgroep_key = (SELECT ins_srtgroep_key FROM ins_srtdeel WHERE ins_srtdeel_key = SrtDeelKey); IF LPNCondName = 'LPN_ALG_TERREINSECTOR' THEN PlaatsDeel := 'T'; ELSIF LPNCondName = 'LPN_ALG_RUIMTE' THEN PlaatsDeel := 'R'; ELSIF LPNCondName = 'LPN_PRS_WERKPLEK' THEN PlaatsDeel := 'W'; END IF; LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO'); LabelOK := FALSE; IF LabelSymbool IS NOT NULL THEN LabelSymbool := SUBSTR(LabelSymbool,1,10); BEGIN SELECT ins_deel_key INTO Dummy FROM all_v_aanwezigdeel WHERE ins_deel_upper = LabelSymbool; LabelOK := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN LabelOK := TRUE; Omschrijving := LabelSymbool; END; ELSE LabelOK := FALSE; END IF; IF NOT LabelOK THEN SELECT ins_srtdeel_code INTO SrtDeelCode FROM ins_srtdeel WHERE ins_srtdeel_key = SrtdeelKey; Zoekstring := RTRIM(SrtDeelCode)||' - 0%'; Antistring := RTRIM(SrtDeelCode)||' - 00%'; BEGIN SELECT MAX(LENGTH(ins_deel_omschrijving)) INTO MaxLengte FROM all_v_aanwezigdeel WHERE ins_srtdeel_key = SrtdeelKey AND ins_alg_locatie_key = LocatieKey AND ins_deel_parent_key IS NULL AND ins_deel_omschrijving LIKE Zoekstring AND ins_deel_omschrijving NOT LIKE AntiString; SELECT max(ins_deel_omschrijving) INTO Omschrijving FROM all_v_aanwezigdeel WHERE ins_srtdeel_key = SrtdeelKey AND ins_alg_locatie_key = LocatieKey AND ins_deel_parent_key IS NULL AND ins_deel_omschrijving LIKE Zoekstring AND ins_deel_omschrijving NOT LIKE AntiString AND LENGTH(ins_deel_omschrijving) = MaxLengte; IF Omschrijving IS NOT NULL THEN VolgnrTxt := Bepaal_VolgnummerTxt(Omschrijving); ELSE VolgnrTxt := RTRIM(SrtdeelCode)||' - 01'; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN VolgnrTxt := RTRIM(SrtdeelCode)||' - 01'; END; Omschrijving := VolgnrTxt; END IF; INSERT INTO ins_deel(ins_srtdeel_key, ins_alg_ruimte_key, ins_alg_ruimte_type, ins_deel_aantal, ins_deel_omschrijving) VALUES(SrtdeelKey, LPNCondKey, PlaatsDeel, 1, Omschrijving); COMMIT; BEGIN SELECT ins_deel_key INTO LPNKey FROM all_v_aanwezigdeel WHERE ins_srtdeel_key = SrtdeelKey AND ins_deel_omschrijving = omschrijving AND ins_alg_ruimte_key = LPNCondKey AND ins_alg_ruimte_type = PlaatsDeel; RETURN LPNKey; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END AddDeel; FUNCTION cad_MaakCadTekening(LPNALIAS IN VARCHAR2, LPNKEY IN VARCHAR2, SrtTekening IN CHAR) RETURN VARCHAR2 IS LocatieKey alg_locatie.alg_locatie_key%TYPE; LocatieCode alg_locatie.alg_locatie_code%TYPE; VerdiepingKey alg_ruimte.alg_verdieping_key%TYPE; DisciplineKey ins_discipline.ins_discipline_key%TYPE; TekeningNaam cad_tekening.cad_tekening_filenaam%TYPE; TekeningKey cad_tekening.cad_tekening_key%TYPE; PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE; BEGIN IF LPNALIAS = 'LPN_ALG_TERREINSECTOR' THEN SELECT alg_locatie_key,alg_locatie_code INTO LocatieKey, LocatieCode FROM alg_locatie WHERE alg_locatie_key = (SELECT alg_locatie_key FROM alg_terreinsector WHERE alg_terreinsector_key = LPNKey); /* Tekening bestaat nog NIET, dus aanmaken ... * Naam v.d. tekening is waarde v.d. toe te voegen key v.d. tabel cad_tekening + '.DWG' */ SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL; TekeningNaam := TO_CHAR(TekeningKey)||'.DWG'; VerdiepingKey := NULL; DisciplineKey := NULL; ELSIF LPNALIAS = 'LPN_ALG_GEBOUW' THEN SELECT alg_locatie_key,alg_locatie_code INTO LocatieKey, LocatieCode FROM alg_locatie WHERE alg_locatie_key = (SELECT alg_locatie_key FROM alg_gebouw WHERE alg_gebouw_key = LPNKey); SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL; TekeningNaam := TO_CHAR(TekeningKey)||'.DWG'; VerdiepingKey := NULL; DisciplineKey := NULL; ELSIF LPNALIAS = 'LPN_ALG_RUIMTE' THEN SELECT alg_locatie_key,alg_locatie_code, alg_verdieping_key INTO LocatieKey, LocatieCode, VerdiepingKey FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = LPNKey; SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL; TekeningNaam := TO_CHAR(TekeningKey)||'.DWG'; DisciplineKey := NULL; ELSIF LPNALIAS = 'LPN_INS_DEEL' THEN SELECT ins_alg_locatie_key, ins_alg_ruimte_type INTO LocatieKey, PlaatsDeel FROM ins_deel WHERE ins_deel_key = LPNKey; LocatieCode := Bepaal_LocatieCode(LocatieKey); IF SrtTekening = 'D' THEN DisciplineKey := cad_f_deel_get_discipline(LPNKey); ELSE DisciplineKey := NULL; END IF; IF PlaatsDeel = 'T' THEN /* Deel bevindt zich buiten */ VerdiepingKey := NULL; ELSE VerdiepingKey := cad_f_deel_get_verdieping(LPNKey); END IF; SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL; TekeningNaam := TO_CHAR(TekeningKey)||'.DWG'; ELSIF LPNALIAS = 'LPN_PRS_WERKPLEK' THEN SELECT alg_locatie_key, alg_verdieping_key INTO LocatieKey, VerdiepingKey FROM prs_v_werkplek_gegevens WHERE prs_werkplek_key = LPNKey; LocatieCode := Bepaal_LocatieCode(LocatieKey); SELECT cad_s_cad_tekening_key.NEXTVAL INTO TekeningKey FROM DUAL; TekeningNaam := TO_CHAR(TekeningKey)||'.DWG'; DisciplineKey := NULL; END IF; INSERT INTO cad_tekening(cad_tekening_key, alg_locatie_key, alg_verdieping_key, ins_discipline_key, cad_tekening_filenaam, cad_tekening_type) VALUES(TekeningKey, LocatieKey, VerdiepingKey, DisciplineKey, TekeningNaam, SrtTekening); COMMIT; Tekeningnaam := LocatieCode||'\'||TekeningNaam; RETURN TekeningNaam; END cad_MaakCadTekening; PROCEDURE cad_SLNKPreDraw(Session_Id NUMBER) IS LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNKeyCond cad_slnkstruct.cad_slnkstruct_valint%TYPE; #ifdef BIS Diepte NUMBER(8,2); Veld_Key NUMBER(10); Boring_nummer VARCHAR2(5); Projectnr VARCHAR2(8); Ontgraafvak_Naam VARCHAR2(32); Punt_boring BOOLEAN; Boring_Symbol VARCHAR2(128); #endif //BIS LocatieKey alg_locatie.alg_locatie_key%TYPE; VerdiepingKey alg_verdieping.alg_verdieping_key%TYPE; DisciplineKey ins_discipline.ins_discipline_key%TYPE; locatiecode alg_locatie.alg_locatie_code%TYPE; Subloc_Code alg_terreinsector.alg_terreinsector_code%TYPE; RuimteNr alg_ruimte.alg_ruimte_nr%TYPE; WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE; gebouwcode alg_gebouw.alg_gebouw_code%TYPE; SrcDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE; AttachDwg1 cad_slnkstruct.cad_slnkstruct_valstr%TYPE; AttachDwg2 cad_slnkstruct.cad_slnkstruct_valstr%TYPE; Valint cad_slnkstruct.cad_slnkstruct_valint%TYPE; SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE; Datum DATE; Eerste BOOLEAN; LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE; LayerColor ins_srtdeel.ins_srtdeel_cadlaycolor%TYPE; LayerLineType ins_srtdeel.ins_srtdeel_cadlaylinetype%TYPE; Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE; Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE; PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE; Omschrijving VARCHAR2(30); SrtTekening VARCHAR2(20); BEGIN LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASPREDRAW'); LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYPREDRAW'); SeqNr := cad_SLNKSTRUCTreadVALINT(Session_id, 'SEQNR'); IF SeqNr IS NULL THEN SeqNr := 1; END IF; IF LPNName = 'LPN_INS_DEEL' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_INS_DEEL', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); /* Bepaal soortdeelkey */ SELECT ins_srtdeel_key INTO SrtdeelKey FROM ins_deel WHERE ins_deel_key = LPNKey; SELECT ins_srtdeel_dimensie INTO Dimensie FROM ins_srtdeel WHERE ins_srtdeel_key = SrtdeelKey; cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'DIMENSION', SeqNr, Dimensie, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'INS_DEEL_KEY', 1); /* Lees de grafische gegevens uit tabel ins_srtdeel */ SELECT ins_srtdeel_cadlaycolor, ins_srtdeel_cadlaylinetype,ins_srtdeel_cadlayer, ins_srtdeel_acadsymbol INTO LayerColor, LayerLineType, LayerNaam, Symbool FROM ins_srtdeel WHERE ins_srtdeel_key = SrtdeelKey; cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Symbool, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 0, 1); /* Bepaal of een deel geplaatst is op een T(erreinsector) of in een R(uimte)/W(erkplek)... */ SELECT ins_alg_ruimte_type INTO PlaatsDeel FROM ins_deel WHERE ins_deel_key = LPNKey; IF PlaatsDeel = 'T' THEN /* Terreinsector */ cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1); ELSE /* Ruimte of Werkplek */ cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_RUIMTE', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_RUIMTE_KEY', 1); END IF; IF PlaatsDeel = 'W' THEN /* Bepaal ruimte waarin werkplek zich bevindt en geef ruimtekey ervan door */ SELECT prs_alg_ruimte_key INTO LPNKeyCond FROM prs_werkplek WHERE prs_werkplek_key = (SELECT ins_alg_ruimte_key FROM ins_deel WHERE ins_deel_key = LPNKey); ELSE SELECT ins_alg_ruimte_key INTO LPNKeyCond FROM ins_deel WHERE ins_deel_key = LPNKey; END IF; cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1); /* Bepaal Disciplinetekening */ SrcDwg := cad_f_deel_get_tekeningnaam(LPNKey); SELECT ins_alg_locatie_key INTO LocatieKey FROM ins_deel WHERE ins_deel_key = LPNKey; Locatiecode := Bepaal_locatiecode(LocatieKey); IF SrcDwg IS NOT NULL THEN SrcDwg := Locatiecode||'\'||SrcDwg; ELSE SrcDwg := cad_MaakCadTekening('LPN_INS_DEEL', LPNKey, 'D'); END IF; /* Bepaal LoadDwg */ IF PlaatsDeel = 'T' THEN /* Terreinsector */ LoadDwg := cad_getPlattegrondtekening(Locatiekey); ELSE /* Ruimte of Werkplek */ SELECT alg_verdieping_key INTO VerdiepingKey FROM alg_ruimte WHERE alg_ruimte_key = LPNKeyCond; LoadDwg := cad_getVerdiepPlgrnd_tekening(LocatieKey, Verdiepingkey); END IF; IF LoadDwg IS NULL THEN LoadDwg := cad_MaakCadTekening('LPN_INS_DEEL', LPNKey, 'P'); END IF; /* Bepaal Attachdwg's */ IF PlaatsDeel = 'T' THEN /* Terreinsector */ AttachDwg1 := cad_getContourtekening(LocatieKey); /* Contourtekening locatie */ ELSE /* Ruimte of Werkplek */ AttachDwg1 := cad_getVerdiepCntr_tekening(LocatieKey, Verdiepingkey); /* Contourtekening verdieping */ END IF; IF AttachDwg1 IS NULL THEN AttachDwg1 := cad_MaakCadTekening('LPN_INS_DEEL', LPNKey, 'C'); END IF; AttachDwg2 := SrcDwg; cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1); cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1); cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1); cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, Attachdwg2, 0); IF PlaatsDeel = 'T' THEN DECLARE Cursor D_tekeningen IS SELECT cad_tekening_filenaam FROM cad_v_discipline WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key IS NULL AND ins_discipline_key IN (SELECT ins_discipline_key FROM INS_v_aanwezigdiscipline); BEGIN FOR TekenRec IN D_tekeningen LOOP cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0); END LOOP; END; ELSE DECLARE Cursor D_tekeningen IS SELECT cad_tekening_filenaam FROM cad_v_discipline WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key = VerdiepingKey AND ins_discipline_key IN (SELECT ins_discipline_key FROM INS_v_aanwezigdiscipline); BEGIN FOR TekenRec IN D_tekeningen LOOP cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0); END LOOP; END; END IF; cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'INS_DEEL_CADLABEL', 1); SELECT ins_deel_omschrijving INTO Omschrijving FROM ins_deel WHERE ins_deel_key = LPNKey; cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, Omschrijving, 1); ELSIF LPNName = 'LPN_ALG_GEBOUW' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_ALG_GEBOUW', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'ALG_GEBOUW_KEY', 1); LayerColor := cad_getLayercolor('ALG_GEBOUW'); LayerLineType := cad_getLayerlinetype('ALG_GEBOUW'); LayerNaam := cad_getLayername('ALG_GEBOUW'); cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1); SELECT alg_locatie_key INTO Locatiekey FROM alg_gebouw WHERE alg_gebouw_key = LPNKey; Locatiecode := Bepaal_locatiecode(LocatieKey); LoadDwg := cad_getPlattegrondtekening(LocatieKey); IF LoadDwg IS NULL THEN LoadDwg := cad_MaakCadTekening('LPN_ALG_GEBOUW', LPNKey, 'P'); END IF; SrcDwg := cad_getContourtekening(LocatieKey); IF SrcDwg IS NULL THEN SrcDwg := cad_MaakCadTekening('LPN_ALG_GEBOUW', LPNKey, 'C'); END IF; AttachDwg1 := SrcDwg; cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1); DECLARE Cursor D_tekeningen IS SELECT cad_tekening_filenaam FROM cad_v_discipline WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key IS NULL AND ins_discipline_key IN (SELECT ins_discipline_key FROM INS_v_aanwezigdiscipline); BEGIN FOR TekenRec IN D_tekeningen LOOP cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0); END LOOP; END; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'ALG_GEBOUW_CADLABEL', 1); SELECT alg_gebouw_code INTO gebouwcode FROM alg_v_aanweziggebouw WHERE alg_gebouw_key = LPNKey; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, gebouwcode, 1); ELSIF LPNName = 'LPN_ALG_RUIMTE' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_ALG_RUIMTE', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'ALG_RUIMTE_KEY', 1); LayerColor := cad_getLayercolor('ALG_RUIMTE'); LayerLineType := cad_getLayerlinetype('ALG_RUIMTE'); LayerNaam := cad_getLayername('ALG_RUIMTE'); cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1); SELECT alg_locatie_key, alg_verdieping_key INTO locatiekey, verdiepingkey FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = LPNKey; LocatieCode := Bepaal_locatiecode(LocatieKey); LoadDwg := cad_getVerdiepPlgrnd_tekening(Locatiekey, Verdiepingkey); IF LoadDwg IS NULL THEN LoadDwg := cad_MaakCadTekening('LPN_ALG_RUIMTE', LPNKey, 'P'); END IF; SrcDwg := cad_getVerdiepCntr_tekening(Locatiekey, Verdiepingkey); IF SrcDwg IS NULL THEN SrcDwg := cad_MaakCadTekening('LPN_ALG_RUIMTE', LPNKey, 'C'); END IF; AttachDwg1 := SrcDwg; cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1); DECLARE Cursor D_tekeningen IS SELECT cad_tekening_filenaam FROM cad_v_discipline WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key = VerdiepingKey AND ins_discipline_key IN (SELECT ins_discipline_key FROM INS_v_aanwezigdiscipline); BEGIN FOR TekenRec IN D_tekeningen LOOP cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0); END LOOP; END; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'ALG_RUIMTE_CADLABEL', 1); SELECT alg_ruimte_nr INTO RuimteNr FROM alg_ruimte WHERE alg_ruimte_key = LPNKey; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, RuimteNr, 1); ELSIF LPNNAME = 'LPN_PRS_WERKPLEK' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_PRS_WERKPLEK', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 0, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'PRS_WERKPLEK_KEY', 1); LayerColor := cad_getLayercolor('PRS_WERKPLEK'); LayerLineType := cad_getLayerlinetype('PRS_WERKPLEK'); LayerNaam := cad_getLayername('PRS_WERKPLEK'); cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1); SELECT cad_symbool_symbool INTO symbool FROM cad_symbool WHERE cad_symbool_entry = 'PRS_WERKPLEK'; cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Symbool, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 0, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_RUIMTE', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_RUIMTE_KEY', 1); SELECT prs_alg_ruimte_key INTO LPNKeyCond FROM prs_werkplek WHERE prs_werkplek_key = LPNKey; cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1); /* Bepaal de bijbehorende tekeningen */ SELECT alg_locatie_key, alg_verdieping_key INTO locatiekey, verdiepingkey FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = (SELECT prs_alg_ruimte_key FROM prs_werkplek WHERE prs_werkplek_key = LPNKey); LocatieCode := Bepaal_locatiecode(LocatieKey); SrcDwg := cad_getVerdiepCntr_tekening(LocatieKey, Verdiepingkey); /* Contourtekening verdieping */ IF SrcDwg IS NULL THEN SrcDwg := cad_MaakCadTekening('LPN_PRS_WERKPLEK', LPNKey, 'C'); END IF; LoadDwg := cad_getVerdiepPlgrnd_tekening(LocatieKey, Verdiepingkey); /* Plattegrondtekening verdieping */ IF LoadDwg IS NULL THEN LoadDwg := cad_MaakCadTekening('LPN_PRS_WERKPLEK', LPNKey, 'P'); END IF; AttachDwg1 := SrcDwg; cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1); DECLARE Cursor D_tekeningen IS SELECT cad_tekening_filenaam FROM cad_v_discipline WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key = VerdiepingKey AND ins_discipline_key IN (SELECT ins_discipline_key FROM INS_v_aanwezigdiscipline); BEGIN FOR TekenRec IN D_tekeningen LOOP cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0); END LOOP; END; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'PRS_WERKPLEK_CADLABEL', 1); SELECT prs_werkplek_volgnr INTO WerkplekNr FROM prs_werkplek WHERE prs_werkplek_key = LPNKey; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, WerkplekNr, 1); ELSIF LPNNAME = 'LPN_ALG_TERREINSECTOR' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1); #ifdef BIS LayerNaam := 'SUBLOCATIE'; #else LayerColor := cad_getLayercolor('ALG_TERREINSECTOR'); LayerLineType := cad_getLayerlinetype('ALG_TERREINSECTOR'); LayerNaam := cad_getLayername('ALG_TERREINSECTOR'); cad.cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', SeqNr, LayerColor, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', SeqNr, LayerLinetype, 1); #endif //NONBIS cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, Layernaam, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1); SELECT alg_locatie_key INTO Locatiekey FROM alg_terreinsector WHERE alg_terreinsector_key = LPNKey; LocatieCode := Bepaal_locatiecode(LocatieKey); LoadDwg := cad_getPlattegrondtekening(LocatieKey); IF LoadDwg IS NULL THEN LoadDwg := cad_MaakCadTekening('LPN_ALG_TERREINSECTOR', LPNKey, 'P'); END IF; SrcDwg := cad_getContourtekening(LocatieKey); IF SrcDwg IS NULL THEN SrcDwg := cad_MaakCadTekening('LPN_ALG_TERREINSECTOR', LPNKey, 'C'); END IF; AttachDwg1 := SrcDwg; cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1); DECLARE Cursor D_tekeningen IS SELECT cad_tekening_filenaam FROM cad_v_discipline WHERE alg_locatie_key = LocatieKey AND alg_verdieping_key IS NULL AND ins_discipline_key IN (SELECT ins_discipline_key FROM INS_v_aanwezigdiscipline); BEGIN FOR TekenRec IN D_tekeningen LOOP cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, LocatieCode||'\'||Tekenrec.cad_tekening_filenaam, 0); END LOOP; END; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'ALG_TERREINSECTOR_CADLABEL', 1); SELECT alg_terreinsector_code INTO Subloc_code FROM alg_v_aanwezigterreinsector WHERE alg_terreinsector_key = LPNKey; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, Subloc_code, 1); #ifdef BIS /* Zet alle boringen die binnen deze sublocatie vallen in de tabel cad_slnkstruct */ DECLARE CURSOR Sectorboring IS SELECT bis_boring_key FROM bis_v_aanwezigboring WHERE alg_terreinsector_key = LPNKey; BEGIN Eerste := TRUE; FOR BoringRec IN Sectorboring LOOP IF Eerste THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASCONDAOUTER', 1,'LPN_BIS_BORING', 1); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYCONDAOUTER', 1, BoringRec.bis_boring_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASCONDAOUTER', 1,'LPN_BIS_BORING', 0); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYCONDAOUTER', 1, BoringRec.bis_boring_key, 0); END IF; END LOOP; END; ELSIF LPNNAME = 'LPN_BIS_BORING' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_BORING', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); /* Bepaal of er sprake is van een veld(contour) of van een puntboring */ SELECT bis_veld_key, bis_boring_nummer INTO veld_key, boring_nummer FROM bis_v_aanwezigboring WHERE bis_boring_key = LPNKey; IF veld_key IS NULL THEN Valint := 0; Punt_boring := TRUE; /* Er moet een boring getekend worden */ ELSE Valint := 2; /* Er moet een contour getekend worden */ Punt_boring := FALSE; END IF; cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, Valint, 1); /* Zoek de juiste tekeningen bij de boring */ BEGIN SELECT ins_discipline_key INTO DisciplineKey FROM ins_discipline WHERE ins_discipline_omschrijving = 'Milieu'; EXCEPTION WHEN NO_DATA_FOUND THEN DisciplineKey := NULL; END; Locatiekey := bis.bis_boring_get_locatie(LPNKey); SrcDwg := cad_getDisciplinetekening(LocatieKey, DisciplineKey); LoadDwg := cad_getPlattegrondtekening(LocatieKey); AttachDwg1 := cad_getContourtekening(LocatieKey); AttachDwg2 := SrcDwg; cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', SeqNr, SrcDwg, 1); cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', SeqNr, LoadDwg, 1); cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, AttachDwg1, 1); cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', SeqNr, Attachdwg2, 0); IF Punt_boring THEN /* Zoek juiste boringsymbool bij Boringnummer */ Boring_Symbol := cad_GETBoringSymbolName(LPNKey); cad.cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', SeqNr, Boring_Symbol, 1); END IF; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'BORING', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_BORING_KEY', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNALIASCONDA', SeqNr, 'LPN_ALG_TERREINSECTOR', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLCONDA', SeqNr, 'ALG_TERREINSECTOR_KEY', 1); SELECT alg_terreinsector_key INTO LPNKeyCond FROM bis_v_aanwezigboring WHERE bis_boring_key = LPNKey; cad.cad_SLNKstructinsertVALINT(Session_Id,'LPNKEYCONDA', SeqNr, LPNKeyCond, 1); IF Punt_boring THEN cad.cad_SLNKstructinsertVALINT(Session_Id,'INSPOINTCODE', SeqNr, 0, 1); END IF; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_BORING_NUMMER', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, boring_nummer, 1); ELSIF LPNNAME = 'LPN_BIS_PROJECT' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_PROJECT', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'PROJECT', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_PROJECT_KEY', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_PROJECT_NR', 1); SELECT alg_locatie_key INTO Locatiekey FROM bis_project WHERE bis_project_key = LPNKey; SrcDwg := cad_getContourtekening(LocatieKey); LoadDwg := cad_getPlattegrondtekening(LocatieKey); AttachDwg1 := SrcDwg; cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1); SELECT bis_project_nr INTO ProjectNr FROM bis_v_aanwezigproject WHERE bis_project_key = LPNKey; ProjectNr := SUBSTR(ProjectNr,1,2)||'-'||SUBSTR(ProjectNr,3,6); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, ProjectNr, 1); ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN cad.cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASINSA', SeqNr, 'LPN_BIS_ONTGRAVINGSVAK', 1); cad.cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYINSA', SeqNr, LPNKey, 1); cad.cad_SLNKstructinsertVALINT(Session_Id,'DIMENSION', SeqNr, 2, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', SeqNr, 'ONTGRAVINSVAK', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LPNCOLINSA', SeqNr, 'BIS_ONTGRAVINGSVAK_KEY', 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'BIS_ONTGRAVINGSVAK_NAAM', 1); SELECT bis_ontgravingsvak_naam INTO Ontgraafvak_naam FROM bis_ontgravingsvak WHERE bis_ontgravingsvak_key = LPNKey; cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABEL',SeqNr, Ontgraafvak_naam, 1); SELECT alg_locatie_key INTO LocatieKey FROM bis_ontgravingsvak WHERE bis_ontgravingsvak_key = LPNKey; SrcDwg := cad_getContourtekening(LocatieKey); LoadDwg := cad_getPlattegrondtekening(LocatieKey); AttachDwg1 := SrcDwg; cad.cad_SLNKstructinsertVALSTR(Session_Id,'SRCDWG', 1, SrcDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'LOADDWG', 1, LoadDwg, 1); cad.cad_SLNKstructinsertVALSTR(Session_Id,'ATTACHDWG', 1, AttachDwg1, 1); SELECT bis_ontgravingsvak_diepte INTO Diepte FROM bis_ontgravingsvak WHERE bis_ontgravingsvak_key = LPNKey; cad.cad_SLNKstructinsertVALREAL(Session_Id,'DEPTH', SeqNr, Diepte, 1); SELECT bis_ontgravingsvak_aanmaak INTO Datum FROM bis_ontgravingsvak WHERE bis_ontgravingsvak_key = LPNKey; cad.cad_SLNKstructinsertVALSTR(Session_Id,'DATE', SeqNr, TO_CHAR(Datum), 1); #endif //BIS END IF; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END cad_SLNKPreDraw; FUNCTION cad_SLNKPrePostUndo(Session_id NUMBER) RETURN BOOLEAN IS LPNAliasINSO cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKeyINSO cad_slnkstruct.cad_slnkstruct_valint%TYPE; Code VARCHAR2(10); RuimteKey alg_ruimte.alg_ruimte_key%TYPE; WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE; VerdiepingKey alg_ruimte.alg_verdieping_key%TYPE; LocatieKey alg_locatie.alg_locatie_key%TYPE; SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE; Omschrijving VARCHAR2(30); Dummy NUMBER(10); RetValue BOOLEAN; BEGIN LPNAliasINSO := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO'); LPNKeyINSO := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYINSO'); IF LPNKeyINSO IS NOT NULL THEN BEGIN IF LPNAliasINSO = 'LPN_ALG_TERREINSECTOR' THEN SELECT alg_locatie_key, alg_terreinsector_code INTO LocatieKey, Code FROM alg_terreinsector WHERE alg_terreinsector_key = LPNKeyINSO; BEGIN SELECT alg_terreinsector_key INTO Dummy FROM alg_v_aanwezigterreinsector WHERE alg_locatie_key = LocatieKey AND alg_terreinsector_code = Code; RetValue := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN /* Verwijderdatum wordt NULL */ UPDATE alg_terreinsector SET alg_terreinsector_verwijder = NULL, alg_terreinsector_getekend = SYSDATE /* It's CAD */ WHERE alg_terreinsector_key = LPNKeyINSO; RetValue := TRUE; END; ELSIF LPNAliasINSO = 'LPN_ALG_GEBOUW' THEN SELECT alg_locatie_key, alg_gebouw_code INTO LocatieKey, Code FROM alg_gebouw WHERE alg_gebouw_key = LPNKeyINSO; BEGIN SELECT alg_gebouw_key INTO Dummy FROM alg_v_aanweziggebouw WHERE alg_locatie_key = LocatieKey AND alg_gebouw_code = Code; RetValue := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN /* Verwijderdatum wordt NULL */ UPDATE alg_gebouw SET alg_gebouw_verwijder = NULL, alg_gebouw_getekend = SYSDATE /* It's CAD */ WHERE alg_gebouw_key = LPNKeyINSO; RetValue := TRUE; END; ELSIF LPNAliasINSO = 'LPN_ALG_RUIMTE' THEN SELECT alg_verdieping_key, alg_ruimte_upper_nr INTO VerdiepingKey, Code FROM alg_ruimte WHERE alg_ruimte_key = LPNKeyINSO; BEGIN SELECT alg_ruimte_key INTO Dummy FROM alg_v_aanwezigruimte WHERE alg_verdieping_key = VerdiepingKey AND alg_ruimte_upper_nr = Code; RetValue := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN /* Verwijderdatum wordt NULL */ UPDATE alg_ruimte SET alg_ruimte_verwijder = NULL, alg_ruimte_getekend = SYSDATE /* It's CAD */ WHERE alg_ruimte_key = LPNKeyINSO; RetValue := TRUE; END; ELSIF LPNAliasINSO = 'LPN_PRS_WERKPLEK' THEN SELECT prs_alg_ruimte_key, prs_werkplek_volgnr INTO RuimteKey, Werkpleknr FROM prs_werkplek WHERE prs_werkplek_key = LPNKeyINSO; BEGIN SELECT prs_werkplek_key INTO Dummy FROM prs_v_aanwezigwerkplek WHERE prs_alg_ruimte_key = RuimteKey AND prs_werkplek_volgnr = WerkplekNr; RetValue := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN /* Verwijderdatum wordt NULL */ UPDATE prs_werkplek SET prs_werkplek_verwijder = NULL, prs_werkplek_getekend = SYSDATE /* IT's CAD */ WHERE prs_werkplek_key = LPNKeyINSO; RetValue := TRUE; END; ELSIF LPNAliasINSO = 'LPN_INS_DEEL' THEN SELECT ins_alg_locatie_key, ins_srtdeel_key, ins_deel_upper INTO LocatieKey, SrtdeelKey, Omschrijving FROM ins_deel WHERE ins_deel_key = LPNKeyINSO; BEGIN SELECT ins_deel_key INTO dummy FROM all_v_aanwezigdeel WHERE ins_alg_locatie_key = LocatieKey AND ins_srtdeel_key = SrtDeelKey AND ins_deel_parent_key IS NULL AND ins_deel_upper = Omschrijving; RetValue := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN UPDATE ins_deel SET ins_deel_verwijder = NULL, ins_deel_getekend = SYSDATE /* It's CAD */ WHERE ins_deel_key = LPNKeyINSO; RetValue := TRUE; END; ELSE RETURN FALSE; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN RetValue := FALSE; END; ELSE RetValue := FALSE; /* Geen undo gegevens vanuit AutoCAD - gewoon toevoegen via PrePostDraw */ END IF; IF RetValue THEN cad_SLNKSTRUCTclear(Session_Id); cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNAliasINSO, 1); cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKeyINSO, 1); cad_SLNKPreDraw(Session_Id); END IF; RETURN RetValue; END cad_SLNKPrePostUndo; PROCEDURE cad_SLNKPrePostDimensie0(Session_Id NUMBER) IS Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE; LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE; Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; SymboolLayer ins_srtdeel.ins_srtdeel_cadlayer%TYPE; LabelSymbool VARCHAR2(256); SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE; LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; BlockNaam ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; LPNCondKeyOK BOOLEAN; RecordAdded BOOLEAN; RuimteNr alg_ruimte.alg_ruimte_nr%TYPE; RuimteKey alg_ruimte.alg_ruimte_key%TYPE; WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE; LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE; SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE; Omschrijving VARCHAR2(30); Dummy NUMBER(10); LabelOK BOOLEAN; LPNAliasINSO cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKeyINSO cad_slnkstruct.cad_slnkstruct_valint%TYPE; BEGIN Dimensie := 0; LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER'); LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO'); LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO'); BlockNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'BLOCK'); LoadDwg := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG'); IF LPNCondKey IS NOT NULL THEN SELECT cad_symbool_symbool, cad_symbool_layer INTO Symbool, SymboolLayer FROM cad_symbool WHERE cad_symbool_entry = 'PRS_WERKPLEK'; IF BlockNaam = Symbool -- i.o.v. mb AND LayerNaam = SymboolLayer THEN /* Het is een werkplek - Check eerst of LPNCondkey wel ruimtekey is */ IF LPNCondName = 'LPN_ALG_RUIMTE' THEN LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); IF NOT LPNCondKeyOK THEN SeqNr := 2; LOOP LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', SeqNr); LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', SeqNr); IF LPNCondKey IS NULL THEN EXIT; END IF; LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); EXIT WHEN LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE'; LPNCondKeyOK := FALSE; SeqNr := SeqNr + 1; END LOOP; END IF; ELSE LPNCondKeyOK := FALSE; END IF; IF LPNCondKeyOK THEN LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO'); LabelOK := FALSE; IF LabelSymbool IS NOT NULL THEN LabelSymbool := SUBSTR(LabelSymbool,1,3); /* Vanuit AutoCAD voorstel voor een label binnengekregen */ BEGIN SELECT prs_werkplek_key INTO Dummy FROM all_v_aanwezigwerkplek WHERE prs_alg_ruimte_key = LPNCondKey AND prs_werkplek_volgnr = TO_NUMBER(LabelSymbool); LabelOK := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN /* Label bestaat nog niet */ LabelOK := TRUE; WerkplekNr := TO_NUMBER(LabelSymbool); Omschrijving := LabelSymbool; END; ELSE LabelOK := FALSE; END IF; IF NOT LabelOK THEN /* Bepaal het volgnummer v/d toe te voegen werkplek */ BEGIN SELECT MAX(prs_werkplek_volgnr) + 1 INTO WerkplekNr FROM all_v_aanwezigwerkplek WHERE prs_alg_ruimte_key = LPNCondKey AND prs_werkplek_module = 'PRR'; IF WerkplekNr IS NULL THEN WerkplekNr := 1; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN werkplekNr := 1; END; /* Omschrijving */ SELECT alg_ruimte_nr INTO RuimteNr FROM alg_ruimte WHERE alg_ruimte_key = LPNCondKey; Omschrijving := RuimteNr||' - '||TO_CHAR(WerkplekNr); END IF; INSERT INTO prs_werkplek(prs_werkplek_module, prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_alg_ruimte_key, prs_werkplek_getekend) VALUES ('PRR', WerkplekNr, Omschrijving, LPNCondKey, SYSDATE); RecordAdded := TRUE; /* Bepaal sleutel van zojuist toegevoegde werkplek i.v.m. aanroep Predraw */ LPNName := 'LPN_PRS_WERKPLEK'; BEGIN SELECT prs_werkplek_key INTO LPNKey FROM prs_v_aanwezigwerkplek WHERE prs_alg_ruimte_key = LPNCondKey AND prs_werkplek_volgnr = WerkplekNr; EXCEPTION WHEN NO_DATA_FOUND THEN LPNKey := NULL; END; ELSE RecordAdded := FALSE; END IF; ELSE /* Het is geen WERKPLEK - check of het een srtdeel is */ SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey FROM ins_srtdeel WHERE ins_srtdeel_dimensie = Dimensie AND UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam) AND UPPER(ins_srtdeel_acadsymbol) = UPPER(BlockNaam); IF SrtDeelKey IS NOT NULL THEN /* Het is een srtdeel, dus voeg een deel toe */ IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR LPNCondName = 'LPN_PRS_WERKPLEK' THEN LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); IF NOT LPNCondKeyOK THEN Seqnr := 2; LOOP LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr); LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr); IF LPNCondKey IS NULL THEN EXIT; END IF; LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR') OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE') OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK'); LPNCondKeyOK := FALSE; Seqnr := Seqnr + 1; END LOOP; END IF; ELSE LPNCondKeyOK := FALSE; END IF; IF LPNCondKeyOK THEN LPNName := 'LPN_INS_DEEL'; LPNKey := AddDeel(Session_id, SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey); RecordAdded:= TRUE; ELSE RecordAdded:= FALSE; END IF; ELSE SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey FROM ins_srtdeel WHERE ins_srtdeel_dimensie = Dimensie AND UPPER(ins_srtdeel_acadsymbol) = UPPER(BlockNaam); IF SrtDeelKey IS NOT NULL THEN /* Het is een srtdeel */ IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR LPNCondName = 'LPN_PRS_WERKPLEK' THEN LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); IF NOT LPNCondKeyOK THEN Seqnr := 2; LOOP LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr); LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr); IF LPNCondKey IS NULL THEN EXIT; END IF; LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR') OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE') OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK'); LPNCondKeyOK := FALSE; Seqnr := Seqnr + 1; END LOOP; END IF; ELSE LPNCondKeyOK := FALSE; END IF; IF LPNCondKeyOK THEN LPNName := 'LPN_INS_DEEL'; LPNKey := AddDeel(Session_id,SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey); RecordAdded:= TRUE; ELSE RecordAdded:= FALSE; END IF; ELSE RecordAdded:= FALSE; END IF; END IF; END IF; END IF; cad_SLNKSTRUCTclear(Session_Id); IF RecordAdded THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName, 1); cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKey, 1); cad_SLNKPreDraw(Session_Id); ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END IF; END cad_SLNKPrePostDimensie0; PROCEDURE cad_SLNKPrePostDimensie1(Session_Id NUMBER) IS Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE; LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE; Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE; LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; BlockNaam ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; LPNCondKeyOK BOOLEAN; RecordAdded BOOLEAN; LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE; SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE; Omschrijving VARCHAR2(30); BEGIN Dimensie := 1; LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO'); LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO'); LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER'); LoadDwg := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG'); /* Check of het een soortdeel is... */ SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey FROM ins_srtdeel WHERE ins_srtdeel_dimensie = Dimensie AND UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam); IF SrtDeelKey IS NOT NULL THEN /* Het is een srtdeel */ IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR LPNCondName = 'LPN_PRS_WERKPLEK' THEN LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); IF NOT LPNCondKeyOK THEN Seqnr := 2; LOOP LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr); LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr); IF LPNCondKey IS NULL THEN EXIT; END IF; LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR') OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE') OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK'); LPNCondKeyOK := FALSE; Seqnr := Seqnr + 1; END LOOP; END IF; ELSE LPNCondKeyOK := FALSE; END IF; IF LPNCondKeyOK THEN LPNName := 'LPN_INS_DEEL'; LPNKey := AddDeel(Session_id, SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey); RecordAdded:= TRUE; ELSE RecordAdded:= FALSE; END IF; ELSE RecordAdded:= FALSE; END IF; cad_SLNKSTRUCTclear(Session_Id); IF RecordAdded THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName, 1); cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKey, 1); cad_SLNKPreDraw(Session_Id); ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END IF; END cad_SLNKPrePostDimensie1; PROCEDURE cad_SLNKPrePostDimensie2(Session_Id NUMBER) IS Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE; LayerNaam ins_srtdeel.ins_srtdeel_cadlayer%TYPE; LocatieKey alg_locatie.alg_locatie_key%TYPE; VerdiepingKey alg_verdieping.alg_verdieping_key%TYPE; VerdiepingNr alg_verdieping.alg_verdieping_volgnr%TYPE; DisciplineKey ins_discipline.ins_discipline_key%TYPE; locatiecode alg_locatie.alg_locatie_code%TYPE; Sectorcode alg_terreinsector.alg_terreinsector_code%TYPE; Gebouwcode alg_gebouw.alg_gebouw_code%TYPE; RuimteNr alg_ruimte.alg_ruimte_nr%TYPE; Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; SymboolLayer ins_srtdeel.ins_srtdeel_cadlayer%TYPE; TekeningNaam cad_tekening.cad_tekening_filenaam%TYPE; SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE; LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; BlockNaam ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; LPNCondKeyOK BOOLEAN; RecordAdded BOOLEAN:= FALSE; LoadDwg cad_slnkstruct.cad_slnkstruct_valstr%TYPE; SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE; Omschrijving VARCHAR2(30); VolgnrTxt VARCHAR2(3); ZoekString VARCHAR2(20); StreepPos NUMBER(2); MaxLengte NUMBER(10); Dummy NUMBER(10); LabelSymbool VARCHAR2(256); LabelOK BOOLEAN; BEGIN Dimensie := 2; LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER'); LoadDwg := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LOADDWG'); BlockNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'BLOCK'); LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO'); LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO'); SELECT cad_symbool_layer INTO SymboolLayer FROM cad_symbool WHERE cad_symbool_entry = 'ALG_TERREINSECTOR'; IF LayerNaam = SymboolLayer THEN /* Het is een terrein ... */ LocatieCode := cad_getLocatieCode_Tekening(LoadDwg); SELECT alg_locatie_key INTO LocatieKey FROM alg_locatie WHERE alg_locatie_code = LocatieCode; LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO'); LabelOK := FALSE; IF LabelSymbool IS NOT NULL THEN LabelSymbool := SUBSTR(LabelSymbool,1,10); BEGIN /* Check of label reeds bestaat */ SELECT alg_terreinsector_key INTO Dummy FROM alg_v_aanwezigterreinsector WHERE alg_locatie_key = LocatieKey AND UPPER(alg_terreinsector_code) = LabelSymbool; LabelOK := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN LabelOK := TRUE; SectorCode := LabelSymbool; END; ELSE LabelOK:= FALSE; END IF; IF NOT LabelOK THEN /* De terreinsectorcode = locatiecode + volgnummer */ BEGIN SELECT MAX(LENGTH(alg_terreinsector_code)) INTO MaxLengte FROM alg_v_aanwezigterreinsector WHERE alg_locatie_key = LocatieKey AND alg_terreinsector_code BETWEEN '0' AND '9999999999' AND alg_terreinsector_code like '0%' AND alg_terreinsector_code NOT LIKE '00%'; SELECT max(alg_terreinsector_code) INTO Omschrijving FROM alg_v_aanwezigterreinsector WHERE alg_locatie_key = LocatieKey AND alg_terreinsector_code BETWEEN '0' AND '9999999999' AND alg_terreinsector_code like '0%' AND alg_terreinsector_code NOT LIKE '00%' AND LENGTH(alg_terreinsector_code) = MaxLengte; SectorCode := Bepaal_VolgnummerTxt(Omschrijving); EXCEPTION WHEN NO_DATA_FOUND THEN SectorCode := '01'; END; END IF; INSERT INTO alg_terreinsector(alg_locatie_key, alg_terreinsector_code, alg_terreinsector_naam) VALUES (LocatieKey, SectorCode, SectorCode); RecordAdded := TRUE; COMMIT; /* Bepaal sleutel van zojuist toegevoegde terreinsector i.v.m. aanroep Predraw */ LPNName := 'LPN_ALG_TERREINSECTOR'; BEGIN SELECT alg_terreinsector_key INTO LPNKey FROM alg_v_aanwezigterreinsector WHERE alg_locatie_key = LocatieKey AND alg_terreinsector_code = SectorCode; EXCEPTION WHEN NO_DATA_FOUND THEN LPNKey := NULL; END; ELSE /* Het is geen terreinsector, is het een gebouw ? */ SELECT cad_symbool_Layer INTO SymboolLayer FROM cad_symbool WHERE cad_symbool_entry = 'ALG_GEBOUW'; IF LayerNaam = SymboolLayer THEN /* Het is een gebouw ... */ LocatieCode := cad_getLocatieCode_Tekening(LoadDwg); SELECT alg_locatie_key INTO LocatieKey FROM alg_locatie WHERE alg_locatie_code = LocatieCode; LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO'); LabelOK := FALSE; IF LabelSymbool IS NOT NULL THEN LabelSymbool := SUBSTR(LabelSymbool,1,10); BEGIN SELECT alg_gebouw_key INTO Dummy FROM alg_v_aanweziggebouw WHERE alg_locatie_key = LocatieKey AND UPPER(alg_gebouw_code) = UPPER(LabelSymbool); LabelOK := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN LabelOK := TRUE; GebouwCode := LabelSymbool; END; ELSE LabelOK := FALSE; END IF; IF NOT labelOK THEN BEGIN SELECT MAX(LENGTH(alg_gebouw_code)) INTO MaxLengte FROM alg_v_aanweziggebouw WHERE alg_locatie_key = LocatieKey AND alg_gebouw_code BETWEEN '0' AND '9999999999' AND alg_gebouw_code like '0%' AND alg_gebouw_code NOT LIKE '00%'; SELECT MAX(alg_gebouw_code) INTO omschrijving FROM alg_v_aanweziggebouw WHERE alg_locatie_key = LocatieKey AND alg_gebouw_code BETWEEN '0' AND '9999999999' AND alg_gebouw_code like '0%' AND alg_gebouw_code NOT LIKE '00%' AND LENGTH(alg_gebouw_code) = MaxLengte; GebouwCode := Bepaal_VolgnummerTxt(Omschrijving); EXCEPTION WHEN NO_DATA_FOUND THEN GebouwCode := '01'; END; END IF; INSERT INTO alg_gebouw(alg_locatie_key,alg_srtgebouw_key,alg_gebouw_code,alg_gebouw_naam, alg_gebouw_omschrijving) VALUES(LocatieKey, NULL, GebouwCode, GebouwCode, GebouwCode); COMMIT; RecordAdded := TRUE; /* Bepaal sleutel van zojuist toegevoegde gebouw i.v.m. aanroep Predraw... */ LPNName := 'LPN_ALG_GEBOUW'; BEGIN SELECT alg_gebouw_key INTO LPNKey FROM alg_v_aanweziggebouw WHERE alg_locatie_key = LocatieKey AND UPPER(alg_gebouw_code) = UPPER(GebouwCode); EXCEPTION WHEN NO_DATA_FOUND THEN LPNKey := NULL; END; ELSE /* Het is geen gebouw, is het dan een ruimte ??? */ SELECT cad_symbool_layer INTO SymboolLayer FROM cad_symbool WHERE cad_symbool_entry = 'ALG_RUIMTE'; IF LayerNaam = SymboolLayer THEN /* Het is een ruimte ... */ LocatieCode := cad_getLocatieCode_Tekening(LoadDwg); SELECT alg_locatie_key INTO LocatieKey FROM alg_locatie WHERE alg_locatie_code = LocatieCode; /* Bepaal verdieping -> bepaal eerst tekeningnaam zonder toevoeging Locatiecode... */ TekeningNaam := cad_getTekeningNaam_LoadDwg(LoadDwg); BEGIN SELECT alg_verdieping_key INTO VerdiepingKey FROM cad_v_plattegrond WHERE alg_locatie_key = LocatieKey AND cad_tekening_filenaam = TekeningNaam AND alg_verdieping_key IS NOT NULL; SELECT alg_verdieping_volgNr INTO VerdiepingNr FROM alg_verdieping WHERE alg_verdieping_key = VerdiepingKey; EXCEPTION WHEN NO_DATA_FOUND THEN VerdiepingNr := NULL; END; LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABELO'); LabelOK := FALSE; IF LabelSymbool IS NOT NULL THEN LabelSymbool := SUBSTR(LabelSymbool,1,10); BEGIN SELECT alg_ruimte_key INTO Dummy FROM alg_v_aanwezigruimte WHERE alg_verdieping_key = VerdiepingKey AND alg_ruimte_upper_nr = UPPER(LabelSymbool); LabelOK := FALSE; EXCEPTION WHEN NO_DATA_FOUND THEN LabelOK := TRUE; RuimteNr := LabelSymbool; END; ELSE LabelOK := FALSE; END IF; IF VerdiepingNr IS NOT NULL THEN IF NOT LabelOK THEN BEGIN SELECT MAX(LENGTH(alg_ruimte_nr)) INTO MaxLengte FROM alg_v_aanwezigruimte WHERE alg_verdieping_Key = VerdiepingKey AND alg_ruimte_nr BETWEEN '0' AND '9999999999' AND alg_ruimte_nr like '0%' AND alg_ruimte_nr NOT LIKE '00%'; SELECT MAX(alg_ruimte_nr) INTO Omschrijving FROM alg_v_aanwezigruimte WHERE alg_verdieping_Key = VerdiepingKey AND alg_ruimte_nr BETWEEN '0' AND '9999999999' AND alg_ruimte_nr like '0%' AND alg_ruimte_nr NOT LIKE '00%' AND LENGTH(alg_ruimte_nr) = MaxLengte; RuimteNr := Bepaal_VolgnummerTxt(Omschrijving); EXCEPTION WHEN NO_DATA_FOUND THEN RuimteNr := '01'; END; END IF; INSERT INTO alg_ruimte(alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr) VALUES (VerdiepingKey, NULL, RuimteNr); RecordAdded := TRUE; /* Bepaal sleutel van zojuist toegevoegde ruimte i.v.m. aanroep Predraw */ LPNName := 'LPN_ALG_RUIMTE'; BEGIN SELECT alg_ruimte_key INTO LPNKey FROM alg_v_aanwezigruimte WHERE alg_verdieping_key = VerdiepingKey AND alg_ruimte_nr = RuimteNr; EXCEPTION WHEN NO_DATA_FOUND THEN LPNKey := NULL; END; END IF; ELSE /* Het is ook geen ruimte, check of het dan een srtdeel is...*/ SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey FROM ins_srtdeel WHERE ins_srtdeel_dimensie = Dimensie AND UPPER(ins_srtdeel_cadlayer) = UPPER(LayerNaam) AND UPPER(ins_srtdeel_acadsymbol) = UPPER(BlockNaam); IF SrtDeelKey IS NOT NULL THEN /* Het is een srtdeel... */ IF LPNCondName = 'LPN_ALG_TERREINSECTOR' OR LPNCondName = 'LPN_ALG_RUIMTE' OR LPNCondName = 'LPN_PRS_WERKPLEK' THEN LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); IF NOT LPNCondKeyOK THEN Seqnr := 2; LOOP LPNCondName := cad_SLNKSTRUCTreadVALSTR2(Session_id, 'LPNALIASCONDO', Seqnr); LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr); IF LPNCondKey IS NULL THEN EXIT; END IF; LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); EXIT WHEN (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_TERREINSECTOR') OR (LPNCondKeyOK AND LPNCondName = 'LPN_ALG_RUIMTE') OR (LPNCondKeyOK AND LPNCondName = 'LPN_PRS_WERKPLEK'); LPNCondKeyOK := FALSE; Seqnr := Seqnr + 1; END LOOP; END IF; ELSE LPNCondKeyOK := FALSE; END IF; IF LPNCondKeyOK THEN LPNName := 'LPN_INS_DEEL'; LPNKey := AddDeel(Session_id, SrtdeelKey, LoadDwg, LPNCondName, LPNCondKey); RecordAdded:= TRUE; ELSE RecordAdded:= FALSE; END IF; ELSE /* Het is een onbekend object... */ RecordAdded:= FALSE; END IF; END IF; END IF; END IF; cad_SLNKSTRUCTclear(Session_Id); IF RecordAdded THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id,'LPNALIASPREDRAW', 1, LPNName, 1); cad_SLNKSTRUCTinsertVALINT(Session_Id,'LPNKEYPREDRAW', 1, LPNKey, 1); cad_SLNKPreDraw(Session_Id); ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END IF; END cad_SLNKPrePostDimensie2; PROCEDURE cad_SLNKPrePostDraw(Session_Id NUMBER) IS Symbool ins_srtdeel.ins_srtdeel_acadsymbol%TYPE; SymboolLayer ins_srtdeel.ins_srtdeel_cadlayer%TYPE; SrtdeelKey ins_srtdeel.ins_srtdeel_key%TYPE; Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE; PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE; Omschrijving VARCHAR2(30); UndoOK BOOLEAN; BEGIN UndoOK:= cad_SLNKPrePostUndo(Session_Id); IF NOT UndoOK THEN Dimensie := cad_SLNKSTRUCTreadVALINT(Session_id, 'DIMENSION'); IF Dimensie = 0 THEN cad_SLNKPrePostDimensie0(Session_Id); ELSIF Dimensie = 1 THEN cad_SLNKPrePostDimensie1(Session_Id); ELSIF Dimensie = 2 THEN cad_SLNKPrePostDimensie2(Session_Id); ELSE NULL; END IF; END IF; END cad_SLNKPrePostDraw; PROCEDURE cad_SLNKpostdraw(Session_Id NUMBER) IS LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; VeldKey NUMBER(10); Oppervlak NUMBER(13,3); Omtrek NUMBER(13,3); Diepte NUMBER(8,2); Volume NUMBER(12,4); Datum DATE; CheckDatum VARCHAR2(11); LPNAliasLinkO cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKeyLinkO cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE; Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE; PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE; PlaatsKey NUMBER(10); RuimteKey prs_werkplek.prs_alg_ruimte_key%TYPE; RuimteType VARCHAR2(1); DoDeelUpdate BOOLEAN; BEGIN LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO'); LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYINSO'); LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO'); LPNCondKey := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNKEYCONDO'); IF LPNNAME = 'LPN_INS_DEEL' THEN LPNAliasLinkO := cad_SLNKSTRUCTreadVALSTR(Session_Id, 'LPNALIASLINKO'); IF LPNAliasLinkO IS NOT NULL THEN /* Aanmaken ins_deelkoppeling record voor elke LPNKEYLINKO */ LPNKeyLinkO := 1; /* NOT NULL */ SeqNr := 1; WHILE (LPNKeyLinkO IS NOT NULL) LOOP LPNKeyLinkO := cad_SLNKSTRUCTreadVALINT2(Session_Id, 'LPNKEYLINKO', SeqNr); IF LPNKeyLinkO IS NOT NULL THEN INSERT INTO ins_deelkoppeling(ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key) VALUES (LPNKey, LPNKeyLinkO); COMMIT; SeqNr := SeqNr+1; END IF; END LOOP; END IF; BEGIN SELECT ins_srtdeel_dimensie INTO Dimensie FROM ins_srtdeel WHERE ins_srtdeel_key = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = LPNKey); EXCEPTION WHEN NO_DATA_FOUND THEN Dimensie := NULL; /* Dimensie niet gevonden -> doe verder niets */ END; Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); IF Omtrek IS NOT NULL AND Dimensie <> 0 THEN UPDATE ins_deel SET ins_deel_omtrek = Omtrek WHERE ins_deel_key = LPNKey; END IF; Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); IF Oppervlak IS NOT NULL AND Dimensie = 2 THEN UPDATE ins_deel SET ins_deel_oppervlak = Oppervlak WHERE ins_deel_key = LPNKey; END IF; DoDeelUpdate := TRUE; IF LPNCondName = 'LPN_ALG_RUIMTE' THEN /* Bij LPN_ALG_RUIMTE checken - of deel gekoppeld is aan een werkplek die zich in dezelfde ruimte bevindt dan de opgegeven ruimte, zo ja dan GEEN update van de plaats v/h deel */ SELECT ins_alg_ruimte_type, ins_alg_ruimte_key INTO PlaatsDeel, PlaatsKey FROM all_v_aanwezigdeel WHERE ins_deel_key = LPNKey; IF PlaatsDeel = 'W' THEN SELECT prs_alg_ruimte_key INTO RuimteKey FROM prs_werkplek WHERE prs_werkplek_key = PlaatsKey; IF Ruimtekey = LPNCondKey THEN DoDeelUpdate := FALSE; END IF; END IF; END IF; IF DODeelUpdate THEN UPDATE ins_deel SET ins_alg_ruimte_key = LPNCondKey, ins_alg_ruimte_type = RuimteType, ins_deel_getekend = SYSDATE /* It's CAD */ WHERE ins_deel_key = LPNKey; END IF; ELSIF LPNNAME = 'LPN_ALG_GEBOUW' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); UPDATE alg_gebouw SET alg_gebouw_bruto_vloeropp = Oppervlak, alg_gebouw_omtrek = Omtrek, alg_gebouw_getekend = SYSDATE WHERE alg_gebouw_key = LPNKey; ELSIF LPNNAME = 'LPN_ALG_RUIMTE' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); UPDATE alg_ruimte SET alg_ruimte_bruto_vloeropp = Oppervlak, alg_ruimte_omtrek = Omtrek, alg_ruimte_getekend = SYSDATE WHERE alg_ruimte_key = LPNKey; ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); UPDATE alg_terreinsector SET alg_terreinsector_oppervlak = Oppervlak, alg_terreinsector_omtrek = Omtrek, alg_terreinsector_getekend = SYSDATE WHERE alg_terreinsector_key = LPNKey; #ifdef BIS ELSIF LPNName = 'LPN_BIS_BORING' THEN UPDATE bis_boring SET bis_boring_getekend = 'TRUE' WHERE bis_boring_key = LPNKey; /* als het een veld betreft dan oppervlakte aanpassen in tabel bis_veld */ SELECT bis_veld_key INTO VeldKey FROM bis_boring WHERE bis_boring_key = LPNKey; IF VeldKey IS NOT NULL THEN /* lees oppervlakte uit */ Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); UPDATE bis_veld SET bis_veld_oppervlakte = Oppervlak WHERE bis_veld_key = Veldkey; END IF; ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Diepte:= cad_SLNKSTRUCTreadVALREAL(Session_id, 'DEPTH'); Volume := Oppervlak * Diepte; BEGIN SELECT bis_ontgravingsvak_aanmaak INTO Datum FROM bis_ontgravingsvak WHERE bis_ontgravingsvak_key = LPNKey; EXCEPTION WHEN NO_DATA_FOUND THEN Datum := SYSDATE; END; UPDATE bis_ontgravingsvak SET bis_ontgravingsvak_volume = Volume, bis_ontgravingsvak_diepte = Diepte WHERE bis_ontgravingsvak_key = LPNKey; /* "Onthoofden" van trajecten */ cad_KILLtrajecten(Session_Id, Diepte, Datum); ELSIF LPNName = 'LPN_BIS_PROJECT' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); UPDATE bis_project SET bis_project_oppervlakte = Oppervlak WHERE bis_project_key = LPNKey; #endif //BIS END IF; COMMIT; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); /* ORACLE is klaar */ END cad_SLNKpostdraw; PROCEDURE cad_SLNKpostErase(Session_Id NUMBER) IS LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; SeqNr cad_slnkstruct.cad_slnkstruct_valint%TYPE; CheckDatum VARCHAR2(10); Datum DATE; Eerste BOOLEAN; WerkPlekFound BOOLEAN; BEGIN CheckDatum := cad_SLNKSTRUCTreadVALSTR(Session_id, 'DATE'); Datum := TO_DATE(CheckDatum, 'DD-MM-YYYY'); LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASDELO'); LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYDELO'); IF LPNName = 'LPN_INS_DEEL' THEN UPDATE ins_deel SET ins_deel_verwijder = SYSDATE, ins_deel_getekend = NULL /* It's CAD */ WHERE ins_deel_key = LPNKey; DELETE FROM ins_deelkoppeling WHERE ins_deelkoppeling_van_key = LPNKEY OR ins_deelkoppeling_naar_key = LPNKEY; COMMIT; ELSIF LPNName = 'LPN_ALG_GEBOUW' THEN UPDATE alg_gebouw SET alg_gebouw_verwijder = SYSDATE, alg_gebouw_getekend = NULL /* It's CAD */ WHERE alg_gebouw_key = LPNKey; COMMIT; ELSIF LPNName = 'LPN_ALG_RUIMTE' THEN /* Geef aan AutoCAD de sleutels door van de werkplekken die zich in de te verwijderen ruimte bevinden */ BEGIN DECLARE Cursor RuimteWerkplek IS SELECT prs_werkplek_key FROM prs_werkplek WHERE prs_alg_ruimte_key = LPNKey; BEGIN Eerste := TRUE; WerkPlekFound := FALSE; FOR WerkplekRec IN RuimteWerkplek LOOP IF Eerste THEN WerkPlekFound := TRUE; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_PRS_WERKPLEK', 1); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, WerkplekRec.prs_werkplek_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_PRS_WERKPLEK', 0); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, WerkplekRec.prs_werkplek_key, 0); END IF; END LOOP; END; END; /* Geef aan AutoCAD de sleutels door van de delen die zich in de te verwijderen ruimte bevinden EN * de delen die zich op werkplekken bevinden binnen de te verwijderen ruimte... */ BEGIN DECLARE Cursor RuimteDeel IS SELECT ins_deel_key FROM all_v_aanwezigdeel WHERE ins_alg_ruimte_key = LPNKey AND ins_alg_ruimte_type = 'R' OR (ins_alg_ruimte_type = 'W' AND ins_alg_ruimte_key IN (SELECT prs_werkplek_key from prs_v_aanwezigwerkplek WHERE prs_alg_ruimte_key = LPNKey)); BEGIN Eerste := TRUE; FOR DeelRec IN RuimteDeel LOOP IF Eerste AND NOT WerkPlekFound THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 1); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 0); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 0); END IF; END LOOP; END; END; UPDATE alg_ruimte SET alg_ruimte_verwijder = SYSDATE, alg_ruimte_getekend = NULL /* It's CAD */ WHERE alg_ruimte_key = LPNKey; COMMIT; ELSIF LPNName = 'LPN_PRS_WERKPLEK' THEN /* Geef aan AutoCAD de sleutels door van de delen die zich op de te verwijderen werkplek bevinden... */ BEGIN DECLARE Cursor WerkplekDeel IS SELECT ins_deel_key FROM all_v_aanwezigdeel WHERE ins_alg_ruimte_type = 'W' AND ins_alg_ruimte_key = LPNKey; BEGIN Eerste := TRUE; FOR DeelRec IN WerkplekDeel LOOP IF Eerste THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 1); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 0); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 0); END IF; END LOOP; END; END; UPDATE prs_werkplek SET prs_werkplek_verwijder = SYSDATE, prs_werkplek_getekend = NULL /* It's CAD */ WHERE prs_werkplek_key = LPNKey; COMMIT; ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN #ifdef BIS BEGIN DECLARE CURSOR Sectorboring IS SELECT bis_boring_key, alg_terreinsector_key FROM bis_v_aanwezigboring WHERE alg_terreinsector_key = LPNKey; BEGIN Eerste := TRUE; FOR BoringRec IN Sectorboring LOOP IF Eerste THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 1); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, BoringRec.bis_boring_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 0); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, BoringRec.bis_boring_key, 0); END IF; /* Sublocatie grafisch verwijderd zet getekend veld van de boring op 'FALSE' */ UPDATE bis_boring SET bis_boring_getekend = 'FALSE' WHERE bis_boring_key = BoringRec.bis_boring_key; COMMIT; END LOOP; END; END; UPDATE alg_terreinsector SET alg_terreinsector_verwijder = Datum, alg_terreinsector_getekend = NULL /* It's CAD */ WHERE alg_terreinsector_key = LPNKey; COMMIT; #else BEGIN DECLARE CURSOR TerreinDeel IS SELECT ins_deel_key FROM all_v_aanwezigdeel WHERE ins_alg_ruimte_key = LPNKey AND ins_alg_ruimte_type = 'T'; BEGIN Eerste := TRUE; FOR DeelRec IN TerreinDeel LOOP IF Eerste THEN cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 1); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_INS_DEEL', 0); cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, DeelRec.ins_deel_key, 0); END IF; END LOOP; END; END; UPDATE alg_terreinsector SET alg_terreinsector_verwijder = SYSDATE, alg_terreinsector_getekend = NULL /* It's CAD */ WHERE alg_terreinsector_key = LPNKey; COMMIT; #endif //NONBIS #ifdef BIS ELSIF LPNName = 'LPN_BIS_BORING' THEN IF CheckDatum IS NOT NULL THEN UPDATE bis_boring SET bis_boring_verwijderdatum = Datum WHERE bis_boring_key = LPNKey; ELSE UPDATE bis_boring SET bis_boring_getekend = 'FALSE' WHERE bis_boring_key = LPNKey; UPDATE bis_veld SET bis_veld_oppervlakte = NULL WHERE bis_veld_key IN (SELECT bis_veld_key FROM bis_boring WHERE bis_boring_key = LPNKey); END IF; ELSIF LPNName = 'LPN_BIS_PROJECT' THEN UPDATE bis_project SET bis_project_einddatum = Datum WHERE bis_project_key = LPNKey; COMMIT; ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN UPDATE bis_ontgravingsvak SET bis_ontgravingsvak_verwijder = Datum WHERE bis_ontgravingsvak_key = LPNKey; COMMIT; #endif //BIS END IF; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END cad_SLNKpostErase; PROCEDURE cad_SLNKpostModify(Session_Id NUMBER) IS LPNName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNCondName cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNCondKey cad_slnkstruct.cad_slnkstruct_valint%TYPE; VeldKey NUMBER(10); Oppervlak NUMBER(13,3); Diepte NUMBER(8,2); Omtrek NUMBER(13,3); Volume NUMBER(12,4); Datum DATE; Seqnr cad_slnkstruct.cad_slnkstruct_valint%TYPE; LPNCondKeyOK BOOLEAN:= FALSE; RuimteType VARCHAR2(1); LPNAliasLinkO cad_slnkstruct.cad_slnkstruct_valstr%TYPE; LPNKeyLinkO cad_slnkstruct.cad_slnkstruct_valint%TYPE; Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE; PlaatsDeel ins_deel.ins_alg_ruimte_type%TYPE; PlaatsKey NUMBER(10); RuimteKey prs_werkplek.prs_alg_ruimte_key%TYPE; WerkplekNr prs_werkplek.prs_werkplek_volgnr%TYPE; DoDeelUpdate BOOLEAN; BEGIN LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASMODO'); LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYMODO'); IF LPNName = 'LPN_INS_DEEL' THEN /* Bepaal nieuwe plek v/h deel */ LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO'); LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO'); IF LPNCondKey IS NOT NULL THEN /* Check of key wel bestaat - kan zijn dat tekening niet helemaal up-to-date is */ LPNCondKeyOk := CheckLPNCondKey(LPNCondName, LPNCondKey); IF NOT LPNCondKeyOK THEN Seqnr := 2; LOOP LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr); IF LPNCondKey IS NULL THEN EXIT; END IF; LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); EXIT WHEN LPNCondKeyOK; Seqnr := Seqnr + 1; END LOOP; END IF; IF LPNCondKeyOK THEN IF LPNCondName = 'LPN_ALG_TERREINSECTOR' THEN RuimteType := 'T'; ELSIF LPNCondName = 'LPN_ALG_RUIMTE' THEN RuimteType := 'R'; ELSIF LPNCondName = 'LPN_PRS_WERKPLEK' THEN RuimteType := 'W'; END IF; DoDeelUpdate := TRUE; IF LPNCondName = 'LPN_ALG_RUIMTE' THEN /* Bij LPN_ALG_RUIMTE checken - of deel gekoppeld is aan een werkplek die zich in dezelfde ruimte bevindt dan de opgegeven ruimte, zo ja dan GEEN update van de plaats v/h deel */ SELECT ins_alg_ruimte_type, ins_alg_ruimte_key INTO PlaatsDeel, PlaatsKey FROM all_v_aanwezigdeel WHERE ins_deel_key = LPNKey; IF PlaatsDeel = 'W' THEN SELECT prs_alg_ruimte_key INTO RuimteKey FROM prs_werkplek WHERE prs_werkplek_key = PlaatsKey; IF Ruimtekey = LPNCondKey THEN DoDeelUpdate := FALSE; END IF; END IF; END IF; IF DODeelUpdate THEN UPDATE ins_deel SET ins_alg_ruimte_key = LPNCondKey, ins_alg_ruimte_type = RuimteType, ins_deel_getekend = SYSDATE /* It's CAD */ WHERE ins_deel_key = LPNKey; END IF; END IF; END IF; LPNAliasLinkO := cad_SLNKSTRUCTreadVALSTR(Session_Id, 'LPNALIASLINKO'); LPNKeyLinkO := cad_SLNKSTRUCTreadVALINT(Session_Id, 'LPNKEYLINKO'); /* Deelgegevens gewijzigd - deelkoppeling records aanpassen */ DELETE ins_deelkoppeling WHERE ins_deelkoppeling_van_key = LPNKey OR ins_deelkoppeling_naar_key = LPNKey; COMMIT; IF LPNAliasLinkO IS NOT NULL AND LPNKeyLinkO IS NOT NULL THEN LPNKeyLinkO := 1; /* NOT NULL */ SeqNr := 1; WHILE (LPNKeyLinkO IS NOT NULL) LOOP LPNKeyLinkO := cad_SLNKSTRUCTreadVALINT2(Session_Id, 'LPNKEYLINKO', SeqNr); IF LPNKeyLinkO IS NOT NULL THEN BEGIN INSERT INTO ins_deelkoppeling(ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key) VALUES (LPNKey, LPNKeyLinkO); COMMIT; SeqNr := SeqNr+1; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN SeqNr := SeqNr+1; /* Record bestaat reeds -> ga gewoon verder met volgende */ END; END IF; END LOOP; END IF; /* Zoek Dimensie van deel op */ BEGIN SELECT ins_srtdeel_dimensie INTO Dimensie FROM ins_srtdeel WHERE ins_srtdeel_key = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = LPNKey); EXCEPTION WHEN NO_DATA_FOUND THEN Dimensie := NULL; /* Dimensie niet gevonden -> doe verder niets */ END; /* Omtrek bijwerken ? */ Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); IF Omtrek IS NOT NULL AND Dimensie = 1 THEN UPDATE ins_deel SET ins_deel_omtrek = Omtrek WHERE ins_deel_key = LPNKey; END IF; /* Oppervlak bijwerken */ Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); IF Oppervlak IS NOT NULL AND Dimensie = 2 THEN UPDATE ins_deel SET ins_deel_oppervlak = Oppervlak WHERE ins_deel_key = LPNKey; END IF; ELSIF LPNName = 'LPN_ALG_GEBOUW' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); UPDATE alg_gebouw SET alg_gebouw_bruto_vloeropp = Oppervlak, alg_gebouw_omtrek = Omtrek WHERE alg_gebouw_key = LPNKey; ELSIF LPNName = 'LPN_ALG_RUIMTE' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); UPDATE alg_ruimte SET alg_ruimte_bruto_vloeropp = Oppervlak, alg_ruimte_omtrek = Omtrek WHERE alg_ruimte_key = LPNKey; ELSIF LPNName = 'LPN_PRS_WERKPLEK' THEN /* Bepaal de nieuwe ruimte v/d werkplek */ LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO'); LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO'); IF LPNCondKey IS NOT NULL THEN /* Check of key wel bestaat - kan zijn dat tekening niet helemaal up-to-date is */ LPNCondKeyOk := CheckLPNCondKey(LPNCondName, LPNCondKey); IF NOT LPNCondKeyOK THEN Seqnr := 2; LOOP LPNCondKey := cad_SLNKSTRUCTreadVALINT2(Session_id, 'LPNKEYCONDO', Seqnr); IF LPNCondKey IS NULL THEN EXIT; END IF; LPNCondKeyOK := CheckLPNCondKey(LPNCondName, LPNCondKey); EXIT WHEN LPNCondKeyOK; Seqnr := Seqnr + 1; END LOOP; END IF; IF LPNCondKeyOK THEN BEGIN UPDATE prs_werkplek SET prs_alg_ruimte_key = LPNCondKey, prs_werkplek_getekend = SYSDATE /* IT's CAD */ WHERE prs_werkplek_key = LPNKey; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN SELECT MAX(prs_werkplek_volgnr) + 1 INTO WerkplekNr FROM all_v_aanwezigwerkplek WHERE prs_alg_ruimte_key = LPNCondKey; UPDATE prs_werkplek SET prs_werkplek_volgnr = WerkplekNr, prs_alg_ruimte_key = LPNCondKey, prs_werkplek_getekend = SYSDATE /* It's CAD */ WHERE prs_werkplek_key = LPNKey; END; END IF; END IF; ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Omtrek := cad_SLNKSTRUCTreadVALREAL(Session_id, 'LENGTH'); UPDATE alg_terreinsector SET alg_terreinsector_oppervlak = Oppervlak, alg_terreinsector_omtrek = Omtrek WHERE alg_terreinsector_key = LPNKey; #ifdef BIS ELSIF LPNName = 'LPN_BIS_BORING' THEN /* als het een veld betreft dan oppervlakte aanpassen in tabel bis_veld */ SELECT bis_veld_key INTO VeldKey FROM bis_boring WHERE bis_boring_key = LPNKey; IF VeldKey IS NOT NULL THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); UPDATE bis_veld SET bis_veld_oppervlakte = Oppervlak WHERE bis_veld_key = Veldkey; END IF; ELSIF LPNName = 'LPN_BIS_PROJECT' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); UPDATE bis_project SET bis_project_oppervlakte = Oppervlak WHERE bis_project_key = LPNKey; ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA'); Diepte := cad_SLNKSTRUCTreadVALREAL(Session_id, 'DEPTH'); Volume := Oppervlak * Diepte; UPDATE bis_ontgravingsvak SET bis_ontgravingsvak_diepte = Diepte, bis_ontgravingsvak_volume = Volume WHERE bis_ontgravingsvak_key = LPNKey; /* "Onthoofden" van trajecten */ Datum := TO_DATE(cad_SLNKSTRUCTreadVALSTR(Session_id, 'DATE'), 'DD-MM-YYYY'); cad_KILLtrajecten(Session_Id, Diepte, Datum); #endif //BIS END IF; COMMIT; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END cad_SLNKpostModify; PROCEDURE cad_SLNKDelenbijWerkplek(Session_Id NUMBER) IS LPNKey NUMBER(10); Eerste BOOLEAN; BEGIN LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'INFOI'); BEGIN DECLARE Cursor WerkplekDelen IS SELECT ins_deel_key FROM all_v_aanwezigdeel WHERE ins_alg_ruimte_key = LPNKey AND ins_alg_ruimte_type = 'W'; BEGIN Eerste := TRUE; FOR DelenRec IN WerkplekDelen LOOP IF Eerste THEN cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, DelenRec.ins_deel_key, 1); Eerste := FALSE; ELSE cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, DelenRec.ins_deel_key, 0); END IF; END LOOP; END; END; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END cad_SLNKDelenbijWerkplek; PROCEDURE cad_getSymboolInfo(Session_Id NUMBER, Entry VARCHAR2) IS LayerNaam cad_symbool.cad_symbool_layer%TYPE; LayerColor cad_symbool.cad_symbool_kleur%TYPE; LayerLineType cad_symbool.cad_symbool_linetype%TYPE; Symbool cad_symbool.cad_symbool_symbool%TYPE; BEGIN BEGIN SELECT cad_symbool_layer, cad_symbool_kleur, cad_symbool_linetype, cad_symbool_symbool INTO LayerNaam, LayerColor, LayerLineType, Symbool FROM cad_symbool WHERE UPPER(cad_symbool_entry) = UPPER(Entry); cad_SLNKstructinsertVALSTR(Session_Id,'LAYER', 1, Layernaam, 1); cad_SLNKstructinsertVALINT(Session_Id,'LAYERCOLOR', 1, LayerColor, 1); cad_SLNKstructinsertVALSTR(Session_Id,'LAYERLINETYPE', 1, LayerLinetype, 1); cad_SLNKstructinsertVALSTR(Session_Id,'BLOCK', 1, Symbool, 1); EXCEPTION WHEN NO_DATA_FOUND THEN NULL; /* Entry niet gevonden -> geef AutoCAD niets terug */ END; cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); END cad_getSymboolInfo; END cad; / #endif // CAD