Files
Database/CAD/CAD_PAC.SRC
Bert in het Veld 04082fcbee cad_SLNKSTRUCTclear opgenomen in ...prepostdraw i.o.v. MB.
svn path=/Database/trunk/; revision=6636
1999-03-29 15:05:26 +00:00

2509 lines
102 KiB
Plaintext

#ifdef CAD // 22-05-1998 KTH
/* REVISIONS:
*
* --- 01.43 ---
* 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_p_ruimte_update_opp(key IN NUMBER, VloerOpp IN NUMBER);
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_SLNKgetBinnenBuiten(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;
/*
* CAD_P_RUIMTE_UPDATE_OPP wordt aangeroepen vanuit AutoCAD
* en wijzigt de vloeroppervlakte van een opgegeven ruimte
*
* Merk op dat een eventuele EXCEPTION hier niet expliciet wordt afgevangen!
*/
PROCEDURE cad_p_ruimte_update_opp(Key IN NUMBER, VloerOpp IN NUMBER) IS
BEGIN
/* alleen indien het een logisch aanwezige ruimte betreft passen we de opp aan */
UPDATE alg_v_aanwezigruimte
SET alg_ruimte_bruto_vloeropp = VloerOpp
WHERE alg_ruimte_key = Key;
COMMIT;
END cad_p_ruimte_update_opp;
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
/* Tekeningnaam heeft formaat <Locatiecode>\<Tekeningnaam> */
Teller NUMBER;
OneChar VARCHAR2(1);
locatie_code VARCHAR2(25);
SlashFound BOOLEAN := FALSE;
BEGIN
Teller:= 1;
Locatie_code := NULL;
WHILE (Teller <= LENGTH(TekeningNaam)) LOOP
OneChar:=SUBSTR(TekeningNaam,Teller,1);
IF OneChar='\' THEN
SlashFound := TRUE;
EXIT;
END IF;
Locatie_code := Locatie_code||OneChar;
Teller:=Teller+1;
END LOOP;
IF SlashFound THEN
RETURN locatie_code;
ELSE
RETURN NULL;
END IF;
END cad_getLocatieCode_Tekening;
FUNCTION cad_getTekeningNaam_LoadDwg(LoadDwg IN VARCHAR2) RETURN VARCHAR2 IS
/* LoadDwg moet volgende formaat hebben <Locatiecode>\<Tekeningnaam> - (Tekeningnaam zonder extensie DWG) */
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_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_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);
Dummy 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
DECLARE
EXCEPTION
WHEN NO_DATA_FOUND THEN
Plaats := 1;
END;
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'INFOI', 1, Plaats, 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(3);
Volgnummer NUMBER(3);
Numeriek BOOLEAN := TRUE;
SeqNr NUMBER(10);
StreepPos NUMBER(2);
BEGIN
IF Omschrijving IS NULL THEN
Numeriek := FALSE;
ELSE
StreepPos := INSTR(Omschrijving, '-');
VolgnrTxt := SUBSTR(Omschrijving, StreepPos+2, LENGTH(omschrijving)-StreepPos);
/* Check of volgnummer wel uit cijfers bestaat */
FOR i IN 1.. LENGTH(VolgnrTxt) LOOP
IF SUBSTR(VolgnrTxt,i,1) BETWEEN '0' AND '9' THEN
Numeriek := TRUE;
ELSE
Numeriek := FALSE;
EXIT;
END IF;
END LOOP;
END IF;
IF Numeriek THEN
Volgnummer := TO_NUMBER(VolgnrTxt);
Volgnummer := Volgnummer + 1;
VolgnrTxt := TO_CHAR(Volgnummer);
VolgnrTxt := LPAD(VolgnrTxt, 3, '0');
ELSE
Volgnummer := 1;
VolgnrTxt := '001';
END IF;
RETURN VolgnrTxt;
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 VARCHAR2(1);
LocatieCode VARCHAR2(5);
LocatieKey NUMBER(10);
DisciplineKey NUMBER(10);
Volgnummer NUMBER(3);
SrtgroepKey NUMBER(10);
SrtDeelCode VARCHAR2(10);
Omschrijving VARCHAR2(30);
ZoekString VARCHAR2(20);
VolgNrTxt VARCHAR2(3);
SeqNr NUMBER(10);
LPNKey NUMBER(10);
BEGIN
/* Bepaal locatiekey a.h.v. LoadDwg */
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);
/* Bepaal ins_alg_ruimte_type */
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;
/* Bepaal omschrijving */
SELECT ins_srtdeel_code INTO SrtDeelCode
FROM ins_srtdeel
WHERE ins_srtdeel_key = SrtdeelKey;
Zoekstring := SrtDeelCode||' - '||'%';
BEGIN
SELECT max(ins_deel_omschrijving) INTO Omschrijving
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_deel_parent_key IS NULL
AND ins_deel_omschrijving LIKE Zoekstring;
VolgnrTxt := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
VolgnrTxt := '001';
END;
Omschrijving := SrtDeelCode||' - '||VolgnrTxt;
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;
/* Zoek key van net geplaatst deel terug */
BEGIN
SELECT ins_deel_key INTO LPNKey
FROM ins_deel
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
RETURN NULL;
END;
END AddDeel;
PROCEDURE cad_SLNKPreDraw(Session_Id NUMBER) IS
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
LPNKeyCond NUMBER(10);
#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 NUMBER(10);
VerdiepingKey NUMBER(10);
DisciplineKey NUMBER(10);
locatiecode VARCHAR2(5);
Subloc_Code VARCHAR2(10);
RuimteNr VARCHAR2(10);
WerkplekNr NUMBER(3);
gebouwcode VARCHAR2(10);
SrcDwg VARCHAR2(128);
LoadDwg VARCHAR2(128);
AttachDwg1 VARCHAR2(128);
AttachDwg2 VARCHAR2(128);
Valint NUMBER;
SeqNr NUMBER(10);
Datum DATE;
Eerste BOOLEAN;
LayerNaam VARCHAR2(256);
LayerColor NUMBER(3);
LayerLineType VARCHAR2(256);
Symbool VARCHAR2(256);
SrtdeelKey NUMBER(10);
Dimensie NUMBER;
PlaatsDeel VARCHAR2(1);
Omschrijving VARCHAR2(30);
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);
IF SrcDwg IS NOT NULL THEN
SELECT ins_alg_locatie_key INTO LocatieKey
FROM ins_deel
WHERE ins_deel_key = LPNKey;
Locatiecode := Bepaal_locatiecode(LocatieKey);
SrcDwg := Locatiecode||'\'||SrcDwg;
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;
LoadDwg := LoadDwg;
/* 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;
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);
cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'INS_DEEL_OMSCHRIJVING', 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;
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);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'ALG_GEBOUW_CODE', 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;
SrcDwg := cad_getVerdiepCntr_tekening(Locatiekey, Verdiepingkey);
LoadDwg := cad_getVerdiepPlgrnd_tekening(Locatiekey, Verdiepingkey);
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);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL', SeqNr, 'ALG_RUIMTE_NR', 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);
SrcDwg := cad_getVerdiepCntr_tekening(LocatieKey, Verdiepingkey); /* Contourtekening verdieping */
LoadDwg := cad_getVerdiepPlgrnd_tekening(LocatieKey, Verdiepingkey); /* Plattegrondtekening verdieping */
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);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'PRS_WERKPLEK_VOLGNR', 1);
SELECT prs_werkplek_volgnr INTO WerkplekNr
FROM prs_werkplek
WHERE prs_werkplek_key = LPNKey;
cad.cad_SLNKstructinsertVALINT(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;
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);
cad.cad_SLNKstructinsertVALSTR(Session_Id,'LABELCOL',SeqNr, 'ALG_TERREINSECTOR_CODE', 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;
PROCEDURE cad_SLNKPrePostDimensie0(Session_Id NUMBER) IS
Dimensie NUMBER;
LayerNaam VARCHAR2(256);
Symbool VARCHAR2(256);
SymboolLayer VARCHAR2(256);
SrtdeelKey NUMBER(10);
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
LPNCondName VARCHAR2(128);
LPNCondKey NUMBER(10);
BlockNaam VARCHAR2(256);
LPNCondKeyOK BOOLEAN;
RecordAdded BOOLEAN;
RuimteNr VARCHAR2(10);
WerkplekNr NUMBER(3);
LoadDwg VARCHAR2(128);
SeqNr NUMBER(10);
Omschrijving VARCHAR2(30);
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');
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 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
/* 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';
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);
INSERT INTO prs_werkplek(prs_werkplek_module, prs_werkplek_volgnr, prs_werkplek_omschrijving,
prs_alg_ruimte_key) VALUES ('PRR', WerkplekNr, Omschrijving, LPNCondKey);
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 */
BEGIN
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = LayerNaam
AND ins_srtdeel_acadsymbol = BlockNaam;
/* 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;
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_acadsymbol = BlockNaam;
/* 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;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END;
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 NUMBER;
LayerNaam VARCHAR2(256);
Symbool VARCHAR2(256);
SrtdeelKey NUMBER(10);
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
LPNCondName VARCHAR2(128);
LPNCondKey NUMBER(10);
BlockNaam VARCHAR2(256);
LPNCondKeyOK BOOLEAN;
RecordAdded BOOLEAN;
LoadDwg VARCHAR2(128);
SeqNr NUMBER(10);
Omschrijving VARCHAR2(30);
BEGIN
Dimensie := 1;
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
BEGIN
/* Check of het een soortdeel is... */
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = LayerNaam;
/* 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;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Onbekend object... */
NULL;
END;
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 NUMBER;
LayerNaam VARCHAR2(256);
LocatieKey NUMBER(10);
VerdiepingKey NUMBER(10);
VerdiepingNr NUMBER(3);
DisciplineKey NUMBER(10);
locatiecode VARCHAR2(5);
Sectorcode VARCHAR2(10);
Gebouwcode VARCHAR2(10);
RuimteNr VARCHAR2(10);
Symbool VARCHAR2(256);
SymboolLayer VARCHAR2(256);
TekeningNaam VARCHAR2(256);
SrtdeelKey NUMBER(10);
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
LPNCondName VARCHAR2(128);
LPNCondKey NUMBER(10);
BlockNaam VARCHAR2(256);
LPNCondKeyOK BOOLEAN;
RecordAdded BOOLEAN:= FALSE;
LoadDwg VARCHAR2(128);
SeqNr NUMBER(10);
Omschrijving VARCHAR2(30);
VolgnrTxt VARCHAR2(3);
ZoekString VARCHAR2(20);
BEGIN
Dimensie := 2;
LayerNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LAYER');
Dimensie := cad_SLNKSTRUCTreadVALINT(Session_id, 'DIMENSION');
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;
/* De terreinsectorcode = locatiecode + volgnummer */
Zoekstring := LocatieCode||' - '||'___';
BEGIN
SELECT max(alg_terreinsector_code) INTO Omschrijving
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code LIKE Zoekstring;
VolgnrTxt := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
VolgnrTxt := '001';
END;
SectorCode:= Locatiecode||' - '||VolgnrTxt;
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;
/* De gebouwcode = locatiecode + volgnummer */
Zoekstring := LocatieCode||' - '||'___';
BEGIN
SELECT MAX(alg_gebouw_code) INTO omschrijving
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code LIKE Zoekstring;
VolgnrTxt:= Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
VolgnrTxt:= '001';
END;
GebouwCode:= LocatieCode||' - '||VolgnrTxt;
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 alg_gebouw_code = 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);
TekeningNaam := TekeningNaam||'.DWG';
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;
IF VerdiepingNr IS NOT NULL THEN
/* Ruimtenr. = verdiepingvolgnr. + volgnummer */
ZoekString := TO_CHAR(VerdiepingNr)||'-'||'___';
BEGIN
SELECT MAX(alg_ruimte_nr) INTO Omschrijving
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_Key = VerdiepingKey
AND alg_ruimte_nr LIKE ZoekString;
VolgnrTxt := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
VolgnrTxt := '001';
END;
RuimteNr:= TO_CHAR(VerdiepingNr)||' - '||VolgnrTxt;
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...*/
BEGIN
SELECT MIN(ins_srtdeel_key) INTO SrtDeelKey
FROM ins_srtdeel
WHERE ins_srtdeel_dimensie = Dimensie
AND ins_srtdeel_cadlayer = LayerNaam
AND ins_srtdeel_acadsymbol = BlockNaam;
/* 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;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Het is een onbekend object... */
RecordAdded:= FALSE;
END;
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 VARCHAR2(256);
SymboolLayer VARCHAR2(256);
SrtdeelKey NUMBER(10);
Dimensie NUMBER;
PlaatsDeel VARCHAR2(1);
Omschrijving VARCHAR2(30);
BEGIN
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 cad_SLNKPrePostDraw;
PROCEDURE cad_SLNKpostdraw(Session_Id NUMBER) IS
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
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 VARCHAR2(128);
LPNKeyLinkO NUMBER(10);
SeqNr NUMBER(10);
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
BEGIN
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYINSO');
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 = 1 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;
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_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
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 VARCHAR2(128);
LPNKey NUMBER(10);
SeqNr NUMBER(10);
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
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
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
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 ins_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
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
WHERE alg_terreinsector_key = LPNKey;
COMMIT;
#else
BEGIN
DECLARE
CURSOR TerreinDeel IS
SELECT ins_deel_key
FROM ins_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
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 VARCHAR2(128);
LPNKey NUMBER(10);
LPNCondName VARCHAR2(128);
LPNCondKey NUMBER(10);
VeldKey NUMBER(10);
Oppervlak NUMBER(13,3);
Diepte NUMBER(8,2);
Omtrek NUMBER(13,3);
Volume NUMBER(12,4);
Datum DATE;
Seqnr NUMBER(10);
LPNCondKeyOK BOOLEAN:= FALSE;
RuimteType VARCHAR2(1);
LPNAliasLinkO VARCHAR2(128);
LPNKeyLinkO NUMBER(10);
Dimensie ins_srtdeel.ins_srtdeel_dimensie%TYPE;
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;
UPDATE ins_deel
SET ins_alg_ruimte_key = LPNCondKey,
ins_alg_ruimte_type = RuimteType
WHERE ins_deel_key = LPNKey;
END IF;
END IF;
LPNAliasLinkO := cad_SLNKSTRUCTreadVALSTR(Session_Id, 'LPNALIASLINKO');
LPNKeyLinkO := cad_SLNKSTRUCTreadVALINT(Session_Id, 'LPNKEYLINKO');
IF LPNAliasLinkO IS NOT NULL AND LPNKeyLinkO IS NOT NULL THEN
/* Deelgegevens gewijzigd - deelkoppeling records aanpassen */
DELETE ins_deelkoppeling
WHERE ins_deelkoppeling_van_key = LPNKey
OR ins_deelkoppeling_naar_key = LPNKey;
COMMIT;
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;
/* 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
UPDATE prs_werkplek
SET prs_alg_ruimte_key = LPNCondKey
WHERE prs_werkplek_key = LPNKey;
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;
END cad;
/
#endif // CAD