Files
Facilitor/APPL/CAD/cad_scan_dwf.inc
Jos Groot Lipman 27a6df484a Gescand label afkappen op 30 posities
svn path=/Website/branches/v2015.3/; revision=28325
2016-03-02 08:48:13 +00:00

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;
}
%>