forked from rebinnaf/Road-Optimization
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mainScript.js
116 lines (102 loc) · 2.75 KB
/
mainScript.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
var x = require("./geom.js");
var x = require("./genetic-al.js");
var db = app.ActiveModelDb;
var doc = app.ActiveDocument();
var model = app.ActiveModel;
var dbWkt = model.CoordSysWkt;
// console.log("ooof", db.TableNames);
var bestReproject = app.GetBestFittingUTM84ProjectionWkt(
model.Boundary.BBox2d,
dbWkt
);
var coverageIds = [];
var coverageCoords = [];
var roadCoord = [];
var roadIds = [];
function getGeometry(arr) {
var data = {
type: "LineString",
coordinates: arr,
};
return data;
}
function getCoverageIDs() {
var sset = app.ActiveSelectionSet;
console.log("sset:", sset);
if (sset.QueryCount(db.TableIndex("COVERAGES")) < 1) {
print("Nothing Selected");
return;
}
var filter = sset.GetFilter(db.TableIndex("COVERAGES"));
var table = db.Table("COVERAGES");
table.StartQuery(filter);
var read;
while ((read = table.Next())) {
coverageIds.push(read.ID);
console.log("coverage:", read.ID);
}
table.EndQuery();
}
function getRoadIDs() {
var sset = app.ActiveSelectionSet;
console.log("sset:", sset);
if (sset.QueryCount(db.TableIndex("ROADS")) < 1) {
print("Nothing Selected");
return;
}
var filter = sset.GetFilter(db.TableIndex("ROADS"));
var table = db.Table("ROADS");
table.StartQuery(filter);
var read;
while ((read = table.Next())) {
roadIds.push(read.ID);
console.log("road:", read.ID);
id = read.ID;
}
table.EndQuery();
}
function createRoad(coordinates) {
var tableR = db.Table("ROADS");
// for (var i in IDs) {
var feature = tableR.GetWriteRow();
var pos = getGeometry(coordinates);
var geom = new adsk.Geometry(pos);
feature.GEOMETRY = geom;
feature.MANUAL_STYLE = "#ff0000";
feature.DESCRIPTION = "Nadia";
feature.GUID = app.createGuid();
var featID = tableR.Insert(feature);
if (featID > -1) {
app.InvalidateTileCache(db.TableIndex("ROADS"), feature.GEOMETRY.BBox2d);
console.log("invalidated");
}
tableR.EndQuery();
}
function getCoverageCoords() {
forEach(coverageIds, function (id) {
var tableC = db.Table("COVERAGES");
var coverage = tableC.QueryFeature(id);
var coords = JSON.parse(JSON.stringify(coverage.GEOMETRY.ToGeoJSON()))
.coordinates;
coverageCoords.push(coords[0]);
console.log("coverage", id, ":", coords);
tableC.EndQuery();
});
}
function getRoadCoord() {
var id = roadIds[0];
var tableR = db.Table("ROADS");
var road = tableR.QueryFeature(id);
roadCoord = JSON.parse(JSON.stringify(road.GEOMETRY.ToGeoJSON())).coordinates;
// console.log("coverage", id, ":", coords);
tableR.EndQuery();
}
getRoadIDs();
getCoverageIDs();
getCoverageCoords();
getRoadCoord();
var answer = run(roadCoord, coverageCoords);
// scenario2(answer);
// scenario1(answer);
// console.log(answer[2]);
gc();