137 lines
5.3 KiB
C++
137 lines
5.3 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: cad_scan_dwf.inc
|
|
Description: Scant een DWF en sla de gevonden contouren op
|
|
in de tabel CAD_IMP_CONTOUR
|
|
Daar kunnen andere schermen dan rapporten op definieren.
|
|
Context:
|
|
Note: ContoursXML is niet meer nodig sinds SlnkDWF.DLL 2.60: daar kun je
|
|
ContourCount en ContourItem gebruiken om te itereren over de contouren
|
|
*/ %>
|
|
<!--#include file="../SlnkDWF/DWFProperties.inc" -->
|
|
<%
|
|
|
|
// Als concept==1 dan wordt onder de concept folder gezocht en opgeslagen in cad_contour met concept=1
|
|
function scanDWF(ctKey, concept)
|
|
{
|
|
// is bij aanroepers al wel geweest protectRequest.validateToken();
|
|
if (1) // Inout
|
|
{
|
|
sql = "SELECT cad_tekening_key" // Concept tekeningnaam is altijd dezelfde als actueel
|
|
+ " , cad_tekening_filenaam"
|
|
+ " , cad_tekening_type"
|
|
+ " , cad_tekening_key"
|
|
+ " FROM cad_tekening ct"
|
|
+ " WHERE cad_tekening_verwijder IS NULL"
|
|
+ " AND cad_tekening_type = 'P'"
|
|
+ " AND cad_tekening_key = " + ctKey;
|
|
}
|
|
oRs = Oracle.Execute(sql);
|
|
|
|
var fso, f1;
|
|
fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
|
|
var msg;
|
|
if (!oRs.Eof)
|
|
{
|
|
teknaam = oRs("cad_tekening_filenaam").value + ".DWF";
|
|
|
|
if (concept)
|
|
teknaam = S("fg_dwf_path_concept") + teknaam;
|
|
else
|
|
teknaam = S("fg_dwf_path") + teknaam;
|
|
if (!fso.FileExists(teknaam))
|
|
{
|
|
msg = L("lcl_fg_drawingnotfound") + ":" + teknaam;
|
|
__Log(msg);
|
|
}
|
|
else
|
|
{
|
|
__Log("Inscannen " + teknaam);
|
|
var dwfHandle = GetContoursHandle(teknaam, S("fg_contourlayers"), S("fg_labellayers"), S("fg_contour_minArea"));
|
|
|
|
// Oude contouren opruimen
|
|
Oracle.Execute("DELETE FROM CAD_IMP_CONTOUR"
|
|
+ " WHERE cad_tekening_key = " + ctKey
|
|
+ " AND cad_imp_contour_concept = " + concept)
|
|
|
|
var nnLabel = 0;
|
|
var nnOpp = 0;
|
|
for (var i=0; i < dwfHandle.ContourCount; i++)
|
|
{
|
|
var cont = dwfHandle.ContourItem(i);
|
|
|
|
oLabel = cont.Label;
|
|
if (oLabel)
|
|
{
|
|
oOpp = cont.Area;
|
|
if (oOpp)
|
|
{
|
|
nnLabel++;
|
|
nnOpp += (oOpp/1e6);
|
|
sql = "INSERT INTO CAD_IMP_CONTOUR (cad_tekening_key, cad_imp_contour_nr, cad_imp_contour_opp, cad_imp_contour_concept)"
|
|
+" VALUES(" + ctKey + ", " + safe.quoted_sql(oLabel, 30) + " ," + oOpp/1e6 + " ," + concept + ")";
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
}
|
|
var foundRooms = dwfHandle.ContourCount;
|
|
__Log("Scannen tekening " + teknaam + " met " + foundRooms + " contouren")
|
|
|
|
// Nu nog een tweede slag voor de eventuele alternatieve contourlagen
|
|
// Let wel: alleen contour-labels die we met de eerste slag gevonden hebben
|
|
// tellen we mee, we doen geen nieuwe inserts
|
|
if (S("fg_contourlayers_alt1")!="" && S("fg_labellayers_alt1")!="")
|
|
{
|
|
var dwfHandle = GetContoursHandle(teknaam, S("fg_contourlayers_alt1"), S("fg_labellayers_alt1"), S("fg_contour_minArea"));
|
|
|
|
for (var i=0; i < dwfHandle.ContourCount; i++)
|
|
{
|
|
var cont = dwfHandle.ContourItem(i);
|
|
|
|
oLabel = cont.Label;
|
|
if (oLabel)
|
|
{
|
|
oOpp = cont.Area;
|
|
if (oOpp)
|
|
{
|
|
sql = "UPDATE CAD_IMP_CONTOUR "
|
|
+" SET cad_imp_contour_opp_alt1 = " + oOpp/1e6
|
|
+" WHERE cad_tekening_key = " + ctKey
|
|
+" AND cad_imp_contour_concept = " + concept
|
|
+" AND cad_imp_contour_nr = " + safe.quoted_sql(oLabel, 30)
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
sql = "UPDATE cad_tekening "
|
|
+ " SET cad_tekening_geimporteerd = SYSDATE"
|
|
+ " WHERE cad_tekening_key = " + ctKey;
|
|
Oracle.Execute(sql);
|
|
|
|
// Zoek dubbeleen
|
|
sql = "SELECT cad_imp_contour_nr"
|
|
+ " , COUNT(*) "
|
|
+ " FROM cad_imp_contour"
|
|
+ " WHERE cad_tekening_key = " + ctKey
|
|
+ " AND cad_imp_contour_concept = " + concept
|
|
+ " GROUP BY cad_imp_contour_nr HAVING COUNT(*) > 1"
|
|
oRs2 = Oracle.Execute(sql);
|
|
|
|
if (oRs2.eof)
|
|
{
|
|
msg = L("lcl_fg_tek_scannen").format(oRs("cad_tekening_filenaam").value, foundRooms, nnLabel, nnOpp.toFixed(1) );
|
|
}
|
|
else
|
|
msg = L("lcl_fg_tek_scandbl"); // Pas op: dubbelen
|
|
}
|
|
// Kan er maar een zijn oRs.MoveNext();
|
|
}
|
|
|
|
return msg;
|
|
}
|
|
%> |