Adds rpm specs to migration repo
This commit is contained in:
1 parent
acee7b8766
commit
7f035543e2
145 files changed
+13982
No files matched your search
+81
@@ -0,0 +1,81 @@
|
||||
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
# Created by Norbert Thoden, SLSE, 2021-03-16
|
||||
|
||||
Um die postProcessingExcon Scripte laufen zu lassen sind erforderlich
|
||||
- xls2csv zypper in xls2csv
|
||||
- cs2cs zypper install proj
|
||||
|
||||
In dem Unterverzeichnis vwm_adjustment befinden sich die Scripte von Manfred Gronak.
|
||||
Sie dienen dazu, die Positionen der Anbringungspunkte der BSM (aussen) so zu verschieben,
|
||||
dass bei Beschuss der korrekte Raum beschädigt wird.
|
||||
|
||||
Um die js-Files auszuführen sind ein paar Vorbereitungsschritte notwendig:
|
||||
|
||||
- Repository für NodeJS hinzufügen (Es sollte aktuell sein, damit die Nachinstalltionen per npm funktionieren)
|
||||
(192.168.133.111 -> Repo-Server bei Mike Wille)
|
||||
|
||||
--------------------
|
||||
ctc@CTCAP15:/etc/zypp/repos.d> cat nodejs.repo
|
||||
[nodejs]
|
||||
name=nodejs
|
||||
enabled=1
|
||||
autorefresh=1
|
||||
baseurl=http://192.168.133.111/pub/repositories/devel:/languages:/nodejs/openSUSE_Leap_15.1/
|
||||
path=/
|
||||
type=rpm-md
|
||||
keeppackages=0
|
||||
--------------------
|
||||
|
||||
|
||||
Unklar ist, welche Version nun tatsächlich notwendig ist...
|
||||
sudo zypper install nodejs
|
||||
sudo zypper install nodejs12
|
||||
|
||||
|
||||
|
||||
|
||||
- ein paar js-Pakete nachinstallieren:
|
||||
|
||||
- Proxy-Settings:
|
||||
(Aucvh wenn im Netz oft die Notation die Notation mit "@" zu lesen ist,
|
||||
|
||||
USER@PWD|PROXY:PORT --> bei OpenSuse 15.1 hat funktioniert: NEIN
|
||||
USER:PWD|PROXY:PORT --> bei OpenSuse 15.1 hat funktioniert: JA
|
||||
|
||||
npm config set proxy http://<MAIL_ADR>:<PWD>@213.61.254.67:8080
|
||||
npm config set https-proxy http://<MAIL_ADR>:<PWD>@213.61.254.67:8080
|
||||
|
||||
->
|
||||
cat ~/.npmrc
|
||||
proxy=http://norbert.thoden%40lifemaps.com:<PWD>@213.61.254.67:8080/
|
||||
https-proxy=http://norbert.thoden@lifemaps.com:<PWD>@213.61.254.67:8080
|
||||
|
||||
- npm install
|
||||
npm install xml2json
|
||||
npm install fs
|
||||
npm install xml-formatter
|
||||
npm install js2xmlparser
|
||||
|
||||
Thore:
|
||||
>>>Hallo,
|
||||
auf dem guez-15-1-qt-5-15-rpmbuild - 10.198.80.103 ist das bereits entsprechend umgesetzt:
|
||||
Zur nachlese:
|
||||
|
||||
zypper ar http://10.198.80.75/opensuse/15.1/repositories/devel:/languages:/nodejs/openSUSE_Leap_15.1/ nodejs;
|
||||
zypper rm nodejs10 nodejs10-devel –y && zypper in nodejs12 nodejs12-devel –ly;
|
||||
npm config set proxy http://10.198.80.60:3128;
|
||||
npm config set https-proxy http://10.198.80.60:3128;
|
||||
npm install npm@latest;
|
||||
npm install xml2json fs xml-formatter js2xmlparser;
|
||||
npm config delete proxy;
|
||||
npm config delete https-proxy; <<<
|
||||
|
||||
Mit su (ohen -) habe ich dann noch machen müssen:
|
||||
npm install -g xml2json fs xml-formatter js2xmlparser
|
||||
|
||||
mit npm -list -g sieht man dann, WO diese sind -> NODE_PATH
|
||||
|
||||
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
|
||||
#!/bin/sh
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
|
||||
me=`basename "$0"`
|
||||
searchPath="."
|
||||
|
||||
if [ $# -ne 2 ]
|
||||
then
|
||||
searchPath=$1
|
||||
fi;
|
||||
|
||||
echo "START '$me' at path= '${searchPath}' ..."
|
||||
|
||||
#REF_MOD_AP_0001
|
||||
|
||||
#BDI_P_1
|
||||
#CAMERA_IN_AP_1 CAMERA_OUT_AP_1
|
||||
#IPS_OUT_AP_1 IPS_IN_AP_1
|
||||
#ZEG_MOD_AP_1
|
||||
|
||||
#undest_room_201
|
||||
#SW_room_201
|
||||
#floor_1
|
||||
#xargs grep -wo 'IPS_IN_AP_[[:digit:]]\{1\}' | sort
|
||||
|
||||
|
||||
REGEXS="${REGEXS} REF_MOD_AP_[0-9]\{4\}"
|
||||
|
||||
REGEXS="${REGEXS} BDI_P_[0-9]\{1\} BDI_P_[0-9]\{2\}"
|
||||
|
||||
REGEXS="${REGEXS} CAMERA_IN_AP_[0-9]\{1\} CAMERA_IN_AP_[0-9]\{2\}"
|
||||
REGEXS="${REGEXS} CAMERA_OUT_AP_[0-9]\{1\} CAMERA_OUT_AP_[0-9]\{2\}"
|
||||
|
||||
REGEXS="${REGEXS} IPS_IN_AP_[0-9]\{1\} IPS_IN_AP_[0-9]\{2\}"
|
||||
REGEXS="${REGEXS} IPS_OUT_AP_[0-9]\{1\} IPS_OUT_AP_[0-9]\{2\}"
|
||||
|
||||
REGEXS="${REGEXS} ZEG_AP_[0-9]\{1\} ZEG_[0-9]\{2\}"
|
||||
|
||||
REGEXS="${REGEXS} floor_[0-9]\{1\} floor_[0-9]\{2\}"
|
||||
REGEXS="${REGEXS} undest_room_[0-9]\{3\}"
|
||||
REGEXS="${REGEXS} SW_room_[0-9]\{3\}"
|
||||
|
||||
|
||||
|
||||
|
||||
cnt=0;
|
||||
|
||||
for REGEX in ${REGEXS}
|
||||
do
|
||||
echo "---------------------------------------"
|
||||
((cnt=cnt+1))
|
||||
echo " check using regex_${cnt}: '${REGEX}' --->"
|
||||
find ${searchPath} -iname "*.flt.xml" | xargs grep -wo ${REGEX} | sort | uniq -cd
|
||||
echo
|
||||
done
|
||||
|
||||
echo "END '$me' ..."
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
|
||||
# 30 Bldgs:
|
||||
#BLDGS = "1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1114 1115 1116 1117 1285 1286 1287 2105 3100 3101 3102 3279 3280 3298 3299 3300 4102 4197 4198 BN_Kanaele U_Bahn"
|
||||
# Since 02-07-2021: ----
|
||||
BLDGS="1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1114 1115 1116 1117 1285 1286 1287 2119 3100 3101 3102 3279 3280 3298 3299 3300 4102 4197 4198 BN_Kanaele U_Bahn"
|
||||
|
||||
# Alle (Stand 07/2021)
|
||||
BLDGS="0910 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1185 1188 1191 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 2100 2101 2105 2106 2107 2108 2109 2110 2112 2114 2115 2116 2117 2118 2119 2120 2121 2122 2205 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141_26 3141_27 3142 3143 3144 3145_47 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 BN_Kanaele salchau_571 salchau_574 salchau_575 salchau_576 salchau_577 salchau_tunnel U_Bahn"
|
||||
|
||||
for BLDG in ${BLDGS}
|
||||
do
|
||||
|
||||
echo "Bldg: '$BLDG':";
|
||||
|
||||
MyFile=`find ../GuezBuildings/buildings/ -iname "bldg_${BLDG}.flt.VWM_Building.xml"`
|
||||
grep -E "OuterWallProtectiveFactor|ExclusionZoneProtectiveFactor" $MyFile | sort -u | grep -vE "usionZoneProtectiveFactor>0<|usionZoneProtectiveFactor>20|WallProtectiveFactor>200"
|
||||
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
echo "'$BLDG' okay";
|
||||
else
|
||||
echo " failure on -> '$BLDG' ";
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
import csv
|
||||
import math
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 3:
|
||||
print("Usage %s <data_file_in> <script_file_out>" % sys.argv[0])
|
||||
sys.exit()
|
||||
|
||||
def convert(src, dst, x, y):
|
||||
cmd = "cs2cs -f %%.13f %s +to %s << EOF\n%s %s\nEOF" % (src, dst, x, y)
|
||||
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
|
||||
ret = p.wait()
|
||||
pos = p.stdout.read().replace('\t', ' ').split()
|
||||
#print pos
|
||||
return pos
|
||||
|
||||
def main():
|
||||
|
||||
subdir = ''
|
||||
|
||||
# Z&M 3D-Welt liefert 'RDE_Transformationspunkte...'
|
||||
# SPD / J.Treffer ueberfuehrt diese dann in 'GUEZ_BWDLZ_Transformationspunkte_Ba*.xlsx'
|
||||
|
||||
|
||||
# script_file = open('import_salchau.csv', 'w')
|
||||
# script_file = open('import_ba1.csv', 'w')
|
||||
# script_file = open('import_baXX.csv', 'w')
|
||||
# csv_file='Transformationspunkte_180704_salchau.csv'
|
||||
# csv_file='Transformationspunkte_180829_korrigiert_BWDLZ_ba1.csv'
|
||||
# csv_file='Transformationspunkte_180829_korrigiert_BWDLZ_ba2.csv'
|
||||
|
||||
# csv_file='GUEZ_BWDLZ_Salchau.csv'
|
||||
# script_filename = 'import_salchau.csv'
|
||||
|
||||
csv_file=os.path.abspath(sys.argv[1])
|
||||
script_filename=os.path.abspath(sys.argv[2])
|
||||
|
||||
print "csv_file %s" % csv_file
|
||||
print "script_filename %s" % script_filename
|
||||
|
||||
# sys.exit()
|
||||
|
||||
|
||||
|
||||
|
||||
# script_filename = 'import_ba1.csv'
|
||||
# csv_file='GUEZ_BWDLZ_Transformationspunkte_Ba_1_2_3_4_Norbert_ba1.csv'
|
||||
|
||||
# script_filename = 'import_ba2.csv'
|
||||
# csv_file='GUEZ_BWDLZ_Transformationspunkte_Ba_1_2_3_4_Norbert_ba2.csv'
|
||||
|
||||
# script_filename = 'import_ba3.csv'
|
||||
# csv_file='GUEZ_BWDLZ_Transformationspunkte_Ba_1_2_3_4_Norbert_ba3.csv'
|
||||
|
||||
# script_filename = 'import_ba4.csv'
|
||||
# csv_file='GUEZ_BWDLZ_Transformationspunkte_Ba_1_2_3_4_Norbert_ba4.csv'
|
||||
|
||||
|
||||
script_file = open(script_filename, 'w')
|
||||
|
||||
# dir_prefix = 'bldg_'
|
||||
dir_prefix = 'bldg_'
|
||||
file_prefix = dir_prefix
|
||||
|
||||
proj_from = "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs"
|
||||
proj_utm = "+init=epsg:32632"
|
||||
proj_to = "+init=epsg:4326"
|
||||
print 'parsing %s' % csv_file
|
||||
skipped_buildings_xml = []
|
||||
skipped_buildings_vwm = []
|
||||
skipped_buildings_name = []
|
||||
skipped_buildings_no_files = []
|
||||
names = []
|
||||
|
||||
|
||||
|
||||
script_file_header = "#xmlFile;vulnerabilityFile;egcuToRoomFile;position"
|
||||
script_file.write('%s\n' % (script_file_header));
|
||||
|
||||
for line in list(csv.reader(open(csv_file, 'rt'), delimiter = ',')):
|
||||
if len(line) < 7:
|
||||
print " skip line (wrong number of columns): %s" % line
|
||||
continue
|
||||
|
||||
ofs = 2;
|
||||
if line[ofs] != 'EG':
|
||||
print " skip line (no EG): %s" % line
|
||||
continue
|
||||
ofs += 1
|
||||
|
||||
name = line[0]
|
||||
if name in names:
|
||||
print "found duplicate building %s - skipping" % name
|
||||
skipped_buildings_name.append(name)
|
||||
continue
|
||||
# adjsut the names
|
||||
name = name.strip()
|
||||
if '(' in name:
|
||||
name = name[:name.index('(') - 1]
|
||||
if len(name) == 0:
|
||||
continue
|
||||
print 'Converting coordinates for building "%s"' % name
|
||||
names.append(name)
|
||||
|
||||
try:
|
||||
x = float(line[ofs].replace(',', '.'))
|
||||
ofs += 1
|
||||
y = float(line[ofs].replace(',', '.'))
|
||||
ofs += 1
|
||||
z = float(line[ofs].replace(',', '.'))
|
||||
ofs += 1
|
||||
r = float(line[ofs].replace(',', '.'))
|
||||
except:
|
||||
continue
|
||||
path = os.path.join('../GuezBuildings', 'buildings', '%s%s' % (file_prefix, name))
|
||||
if not os.path.exists(path):
|
||||
print "Can not find path " + path
|
||||
skipped_buildings_no_files.append(name)
|
||||
continue
|
||||
xml = os.path.join(path, '%s%s.flt.xml' % (file_prefix, name))
|
||||
vwm = os.path.join(path, '%s%s.flt.VWM_Building.xml' % (file_prefix, name))
|
||||
if not os.path.exists(xml):
|
||||
skipped_buildings_xml.append(name)
|
||||
continue
|
||||
if not os.path.exists(vwm):
|
||||
skipped_buildings_vwm.append(name)
|
||||
continue
|
||||
|
||||
pos_utm1 = convert(proj_from, proj_utm, x, y)
|
||||
pos_utm2 = convert(proj_from, proj_utm, x + 1, y)
|
||||
dX = float(pos_utm1[0]) - float(pos_utm2[0])
|
||||
dY = float(pos_utm1[1]) - float(pos_utm2[1])
|
||||
angle = math.atan(dY / dX)
|
||||
angle = angle * 180 / math.pi
|
||||
r += angle
|
||||
|
||||
pos = convert(proj_from, proj_to, x, y)
|
||||
lat = float(pos[0]) / 180. * math.pi
|
||||
lon = float(pos[1]) / 180. * math.pi
|
||||
#print lon, lat, pos[0], pos[1]
|
||||
|
||||
pos = '%.13f,%.13f,%.4f,%.4f' % (lat, lon, z, r);
|
||||
flt = '%s%s.flt.xml' % (file_prefix, name)
|
||||
vwm = '%s%s.flt.VWM_Building.xml' % (file_prefix, name)
|
||||
egcu = '%s%s.egcu2room.xml' % (file_prefix, name)
|
||||
script_file.write('%s;%s;%s;%s\n' % (flt, vwm, egcu, pos));
|
||||
|
||||
print 'Summary for: %s - %s' % (csv_file, script_filename)
|
||||
|
||||
if len(skipped_buildings_no_files):
|
||||
print "Skipped due to missing files: " + ', '.join(skipped_buildings_no_files)
|
||||
if len(skipped_buildings_xml):
|
||||
print "Skipped due to missing xml: " + ', '.join(skipped_buildings_xml)
|
||||
if len(skipped_buildings_vwm):
|
||||
print "Skipped due to missing vwm: " + ', '.join(skipped_buildings_vwm)
|
||||
if len(skipped_buildings_name):
|
||||
print "Skipped due to duplicate names: " + ', '.join(skipped_buildings_name)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Vendored
Executable
+74
@@ -0,0 +1,74 @@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
#
|
||||
# Von Hand auszufuellen - Version und Release anpassen!
|
||||
# import_ba1.csv erzeugen (mittels convert_coordinates.py)
|
||||
# "osgconv.sh ba1"
|
||||
# es wird ~/rpmbuild/SOURCES/guez_buildings_ba1_buildingviewer-1.0.0.tar.gz erzeugt, inklusive import_ba1.csv
|
||||
# rpmbuild -bb --target=noarch guez_buildings_ba0_buildingviewer.spec
|
||||
#
|
||||
|
||||
%define real_name guez_buildings_ba0_buildingviewer
|
||||
|
||||
Summary: Guez Buildings BA0 for BuildingViewer
|
||||
Name: %{real_name}
|
||||
Version: @VERSION@
|
||||
Release: 0
|
||||
License: proprietary
|
||||
Group: Applications/Resources
|
||||
Source: %{real_name}-%{version}.tar.gz
|
||||
Prefix: /
|
||||
Vendor: LifeMaps GmbH
|
||||
URL: http://www.life-maps.com
|
||||
Packager: ctc
|
||||
Provides: %{real_name}
|
||||
AutoReqProv: no
|
||||
|
||||
%description
|
||||
3D Models for Guez Buildings / BuildingViewer for BA0 (Kanaele, U_Bahn, 0910_Wasserwerk)
|
||||
Build information: @JENKINS_BUILD_TAG@
|
||||
|
||||
%changelog
|
||||
#* date +"%a %b %d %Y" text
|
||||
* Mon Mar 15 2021 Norbert Thoden
|
||||
- add vwm_adjustment (MG)
|
||||
* Tue Mar 09 2021 Norbert Thoden
|
||||
- update to rev 4571 @ renoir/SPD (new structure xlsx, footprint BN_Kan)
|
||||
* Thu Dec 10 2020 Norbert Thoden
|
||||
- update (ba1,2,3,4 ; add bldg_0910)
|
||||
* Mon Jul 01 2019 Christian Ehrlicher
|
||||
- used compressed ive files / textures
|
||||
* Thu Mar 21 2019 Christian Ehrlicher
|
||||
- renamed buildings to BWDLZ naming
|
||||
* Mon Nov 26 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Nov 09 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Oct 12 2018 Christian Ehrlicher
|
||||
- updates from SPD (models, positions)
|
||||
* Mon Aug 13 2018 Christian Ehrlicher
|
||||
- initial
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
echo "nothing to build"
|
||||
# nothing to do here
|
||||
|
||||
|
||||
%install
|
||||
mkdir -p "%{buildroot}/opt/BuildingModels/"
|
||||
cp -r %{_builddir}/%{buildsubdir}/* %{buildroot}/opt/BuildingModels/
|
||||
|
||||
%clean
|
||||
%__rm -rf "%{buildroot}"
|
||||
|
||||
%files
|
||||
%defattr(-,ctc,ctc,755)
|
||||
/opt/BuildingModels/
|
||||
|
||||
%pre
|
||||
%post
|
||||
%preun
|
||||
%postun
|
||||
Vendored
Executable
+74
@@ -0,0 +1,74 @@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
#
|
||||
# Von Hand auszufuellen - Version und Release anpassen!
|
||||
# import_ba1.csv erzeugen (mittels convert_coordinates.py)
|
||||
# "osgconv.sh ba1"
|
||||
# es wird ~/rpmbuild/SOURCES/guez_buildings_ba1_buildingviewer-1.0.0.tar.gz erzeugt, inklusive import_ba1.csv
|
||||
# rpmbuild -bb --target=noarch guez_buildings_ba1_buildingviewer.spec
|
||||
#
|
||||
|
||||
%define real_name guez_buildings_ba1_buildingviewer
|
||||
|
||||
Summary: Guez Buildings BA1 for BuildingViewer
|
||||
Name: %{real_name}
|
||||
Version: @VERSION@
|
||||
Release: 0
|
||||
License: proprietary
|
||||
Group: Applications/Resources
|
||||
Source: %{real_name}-%{version}.tar.gz
|
||||
Prefix: /
|
||||
Vendor: LifeMaps GmbH
|
||||
URL: http://www.life-maps.com
|
||||
Packager: ctc
|
||||
Provides: %{real_name}
|
||||
AutoReqProv: no
|
||||
|
||||
%description
|
||||
3D Models for Guez Buildings / BuildingViewer for BA1
|
||||
Build information: @JENKINS_BUILD_TAG@
|
||||
|
||||
%changelog
|
||||
#* date +"%a %b %d %Y" text
|
||||
* Mon Mar 15 2021 Norbert Thoden
|
||||
- add vwm_adjustment (MG)
|
||||
* Tue Mar 09 2021 Norbert Thoden
|
||||
- update to rev 4571 @ renoir/SPD (new structure xlsx, footprint BN_Kan)
|
||||
* Thu Dec 10 2020 Norbert Thoden
|
||||
- update (ba1,2,3,4 ; add bldg_0910)
|
||||
* Mon Jul 01 2019 Christian Ehrlicher
|
||||
- used compressed ive files / textures
|
||||
* Thu Mar 21 2019 Christian Ehrlicher
|
||||
- renamed buildings to BWDLZ naming
|
||||
* Mon Nov 26 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Nov 09 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Oct 12 2018 Christian Ehrlicher
|
||||
- updates from SPD (models, positions)
|
||||
* Mon Aug 13 2018 Christian Ehrlicher
|
||||
- initial
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
echo "nothing to build"
|
||||
# nothing to do here
|
||||
|
||||
|
||||
%install
|
||||
mkdir -p "%{buildroot}/opt/BuildingModels/"
|
||||
cp -r %{_builddir}/%{buildsubdir}/* %{buildroot}/opt/BuildingModels/
|
||||
|
||||
%clean
|
||||
%__rm -rf "%{buildroot}"
|
||||
|
||||
%files
|
||||
%defattr(-,ctc,ctc,755)
|
||||
/opt/BuildingModels/
|
||||
|
||||
%pre
|
||||
%post
|
||||
%preun
|
||||
%postun
|
||||
Vendored
Executable
+74
@@ -0,0 +1,74 @@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
#
|
||||
# Von Hand auszufuellen - Version und Release anpassen!
|
||||
# import_ba2.csv erzeugen (mittels convert_coordinates.py)
|
||||
# "osgconv.sh ba2"
|
||||
# es wird ~/rpmbuild/SOURCES/guez_buildings_ba2_buildingviewer-1.0.0.tar.gz erzeugt, inklusive import_ba2.csv
|
||||
# rpmbuild -bb --target=noarch guez_buildings_ba2_buildingviewer.spec
|
||||
#
|
||||
|
||||
%define real_name guez_buildings_ba2_buildingviewer
|
||||
|
||||
Summary: Guez Buildings BA2 for BuildingViewer
|
||||
Name: %{real_name}
|
||||
Version: @VERSION@
|
||||
Release: 0
|
||||
License: proprietary
|
||||
Group: Applications/Resources
|
||||
Source: %{real_name}-%{version}.tar.gz
|
||||
Prefix: /
|
||||
Vendor: LifeMaps GmbH
|
||||
URL: http://www.life-maps.com
|
||||
Packager: ctc
|
||||
Provides: %{real_name}
|
||||
AutoReqProv: no
|
||||
|
||||
%description
|
||||
3D Models for Guez Buildings / BuildingViewer for BA2
|
||||
Build information: @JENKINS_BUILD_TAG@
|
||||
|
||||
%changelog
|
||||
#* date +"%a %b %d %Y" text
|
||||
* Mon Mar 15 2021 Norbert Thoden
|
||||
- add vwm_adjustment (MG)
|
||||
* Tue Mar 09 2021 Norbert Thoden
|
||||
- update to rev 4571 @ renoir/SPD (new structure xlsx, footprint BN_Kan)
|
||||
* Thu Dec 10 2020 Norbert Thoden
|
||||
- update (ba1,2,3,4 ; add bldg_2105)
|
||||
* Mon Jul 01 2019 Christian Ehrlicher
|
||||
- used compressed ive files / textures
|
||||
* Thu Mar 21 2019 Christian Ehrlicher
|
||||
- renamed buildings to BWDLZ naming
|
||||
* Mon Nov 26 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Nov 09 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Oct 12 2018 Christian Ehrlicher
|
||||
- updates from SPD (models, positions)
|
||||
* Fri Sep 28 2018 Christian Ehrlicher
|
||||
- initial
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
echo "nothing to build"
|
||||
# nothing to do here
|
||||
|
||||
|
||||
%install
|
||||
mkdir -p "%{buildroot}/opt/BuildingModels/"
|
||||
cp -r %{_builddir}/%{buildsubdir}/* %{buildroot}/opt/BuildingModels/
|
||||
|
||||
%clean
|
||||
%__rm -rf "%{buildroot}"
|
||||
|
||||
%files
|
||||
%defattr(-,ctc,ctc,755)
|
||||
/opt/BuildingModels/
|
||||
|
||||
%pre
|
||||
%post
|
||||
%preun
|
||||
%postun
|
||||
Vendored
Executable
+62
@@ -0,0 +1,62 @@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
#
|
||||
# Von Hand auszufuellen - Version und Release anpassen!
|
||||
# import_ba3.csv erzeugen (mittels convert_coordinates.py)
|
||||
# "osgconv.sh ba3"
|
||||
# es wird ~/rpmbuild/SOURCES/guez_buildings_ba3_buildingviewer-1.0.0.tar.gz erzeugt, inklusive import_ba3.csv
|
||||
# rpmbuild -bb --target=noarch guez_buildings_ba3_buildingviewer.spec
|
||||
#
|
||||
|
||||
%define real_name guez_buildings_ba3_buildingviewer
|
||||
|
||||
Summary: Guez Buildings BA3 for BuildingViewer
|
||||
Name: %{real_name}
|
||||
Version: @VERSION@
|
||||
Release: 0
|
||||
License: proprietary
|
||||
Group: Applications/Resources
|
||||
Source: %{real_name}-%{version}.tar.gz
|
||||
Prefix: /
|
||||
Vendor: LifeMaps GmbH
|
||||
URL: http://www.life-maps.com
|
||||
Packager: ctc
|
||||
Provides: %{real_name}
|
||||
AutoReqProv: no
|
||||
|
||||
%description
|
||||
3D Models for Guez Buildings / BuildingViewer for BA3
|
||||
Build information: @JENKINS_BUILD_TAG@
|
||||
|
||||
%changelog
|
||||
#* date +"%a %b %d %Y" text
|
||||
* Mon Mar 15 2021 Norbert Thoden
|
||||
- add vwm_adjustment (MG)
|
||||
* Tue Mar 09 2021 Norbert Thoden
|
||||
- update to rev 4571 @ renoir/SPD (new structure xlsx, footprint BN_Kan)
|
||||
* Thu Dec 10 2020 Norbert Thoden
|
||||
- initial / update (ba1,2,3,4) (copy from ba, with used compressed ive files / texture)
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
echo "nothing to build"
|
||||
# nothing to do here
|
||||
|
||||
|
||||
%install
|
||||
mkdir -p "%{buildroot}/opt/BuildingModels/"
|
||||
cp -r %{_builddir}/%{buildsubdir}/* %{buildroot}/opt/BuildingModels/
|
||||
|
||||
%clean
|
||||
%__rm -rf "%{buildroot}"
|
||||
|
||||
%files
|
||||
%defattr(-,ctc,ctc,755)
|
||||
/opt/BuildingModels/
|
||||
|
||||
%pre
|
||||
%post
|
||||
%preun
|
||||
%postun
|
||||
Vendored
Executable
+62
@@ -0,0 +1,62 @@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
#
|
||||
# Von Hand auszufuellen - Version und Release anpassen!
|
||||
# import_ba3.csv erzeugen (mittels convert_coordinates.py)
|
||||
# "osgconv.sh ba4"
|
||||
# es wird ~/rpmbuild/SOURCES/guez_buildings_ba4_buildingviewer-1.0.0.tar.gz erzeugt, inklusive import_ba3.csv
|
||||
# rpmbuild -bb --target=noarch guez_buildings_ba4_buildingviewer.spec
|
||||
#
|
||||
|
||||
%define real_name guez_buildings_ba4_buildingviewer
|
||||
|
||||
Summary: Guez Buildings BA4 for BuildingViewer
|
||||
Name: %{real_name}
|
||||
Version: @VERSION@
|
||||
Release: 0
|
||||
License: proprietary
|
||||
Group: Applications/Resources
|
||||
Source: %{real_name}-%{version}.tar.gz
|
||||
Prefix: /
|
||||
Vendor: LifeMaps GmbH
|
||||
URL: http://www.life-maps.com
|
||||
Packager: ctc
|
||||
Provides: %{real_name}
|
||||
AutoReqProv: no
|
||||
|
||||
%description
|
||||
3D Models for Guez Buildings / BuildingViewer for BA4
|
||||
Build information: @JENKINS_BUILD_TAG@
|
||||
|
||||
%changelog
|
||||
#* date +"%a %b %d %Y" text
|
||||
* Mon Mar 15 2021 Norbert Thoden
|
||||
- add vwm_adjustment (MG)
|
||||
* Tue Mar 09 2021 Norbert Thoden
|
||||
- update to rev 4571 @ renoir/SPD (new structure xlsx, footprint BN_Kan)
|
||||
* Thu Dec 10 2020 Norbert Thoden
|
||||
- initial / update (ba1,2,3,4) (copy from ba, with used compressed ive files / texture)
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
echo "nothing to build"
|
||||
# nothing to do here
|
||||
|
||||
|
||||
%install
|
||||
mkdir -p "%{buildroot}/opt/BuildingModels/"
|
||||
cp -r %{_builddir}/%{buildsubdir}/* %{buildroot}/opt/BuildingModels/
|
||||
|
||||
%clean
|
||||
%__rm -rf "%{buildroot}"
|
||||
|
||||
%files
|
||||
%defattr(-,ctc,ctc,755)
|
||||
/opt/BuildingModels/
|
||||
|
||||
%pre
|
||||
%post
|
||||
%preun
|
||||
%postun
|
||||
Vendored
Executable
+75
@@ -0,0 +1,75 @@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
#
|
||||
# Von Hand auszufuellen - Version und Release anpassen!
|
||||
# import_salchau.csv erzeugen (mittels convert_coordinates.py)
|
||||
# "osgconv.sh salchau"
|
||||
# es wird ~/rpmbuild/SOURCES/guez_buildings_salchau_buildingviewer-1.0.0.tar.gz erzeugt, inklusive import_salchau.csv
|
||||
# rpmbuild -bb --target=noarch guez_buildings_salchau_buildingviewer.spec
|
||||
#
|
||||
|
||||
%define real_name guez_buildings_salchau_buildingviewer
|
||||
|
||||
Summary: Guez Buildings Salchau for BuildingViewer
|
||||
Name: %{real_name}
|
||||
Version: @VERSION@
|
||||
Release: 0
|
||||
License: proprietary
|
||||
Group: Applications/Resources
|
||||
Source: %{real_name}-%{version}.tar.gz
|
||||
Prefix: /
|
||||
Vendor: LifeMaps GmbH
|
||||
URL: http://www.life-maps.com
|
||||
Packager: ctc
|
||||
Provides: %{real_name}
|
||||
AutoReqProv: no
|
||||
|
||||
%description
|
||||
3D Models for Guez Buildings / BuildingViewer for BA1-Salchau
|
||||
Build information: @JENKINS_BUILD_TAG@
|
||||
|
||||
|
||||
%changelog
|
||||
#* date +"%a %b %d %Y" text
|
||||
* Mon Mar 15 2021 Norbert Thoden
|
||||
- add vwm_adjustment (MG)
|
||||
* Tue Mar 09 2021 Norbert Thoden
|
||||
- update to rev 4571 @ renoir/SPD (new structure xlsx, footprint BN_Kan)
|
||||
* Tue Jan 05 2021 Norbert Thoden
|
||||
- update to rev 4568 @ renoir/SPD
|
||||
* Mon Jul 01 2019 Christian Ehrlicher
|
||||
- used compressed ive files / textures
|
||||
* Wed Mar 20 2019 Christian Ehrlicher
|
||||
- renamed buildings to BWDLZ naming
|
||||
* Mon Nov 26 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Nov 09 2018 Christian Ehrlicher
|
||||
- updates from SPD (models)
|
||||
* Fri Oct 12 2018 Christian Ehrlicher
|
||||
- updates from SPD (models, positions)
|
||||
* Mon Aug 13 2018 Christian Ehrlicher
|
||||
- initial
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
echo "nothing to build"
|
||||
# nothing to do here
|
||||
|
||||
|
||||
%install
|
||||
mkdir -p "%{buildroot}/opt/BuildingModels/"
|
||||
cp -r %{_builddir}/%{buildsubdir}/* %{buildroot}/opt/BuildingModels/
|
||||
|
||||
%clean
|
||||
%__rm -rf "%{buildroot}"
|
||||
|
||||
%files
|
||||
%defattr(-,ctc,ctc,755)
|
||||
/opt/BuildingModels/
|
||||
|
||||
%pre
|
||||
%post
|
||||
%preun
|
||||
%postun
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "Please pass: <VERSION>, <location>, <absPathTo_import_<location>.csv> like '1234.54123 <ba0|ba1|ba2|ba3|ba4|salchau> /shd/...../import_ba0.csv'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version=$1
|
||||
location=$2
|
||||
import_csv=$3
|
||||
outdir_rel=guez_buildings_${location}_buildingviewer-${version}
|
||||
tmpdir=/tmp
|
||||
outdir=${tmpdir}/${outdir_rel}
|
||||
outdir_ive=${outdir}/StaticMeshes
|
||||
outdir_txt=${outdir}/texture
|
||||
|
||||
rm -rf ${outdir}
|
||||
|
||||
echo "Attn: must be called in directory with building subdirs!"
|
||||
|
||||
if [ ! -e ${outdir_ive} ]; then
|
||||
mkdir -p ${outdir_ive}
|
||||
fi
|
||||
if [ ! -e ${outdir_txt} ]; then
|
||||
mkdir -p ${outdir_txt}
|
||||
fi
|
||||
|
||||
# remove old directory
|
||||
rm -r $outdir_txt
|
||||
# copy texture directory for conversion
|
||||
cp -r texture ${outdir_txt}
|
||||
# copy all files in texture to upper case (windows...)
|
||||
for f in `ls -1 ${outdir_txt}`; do
|
||||
f_upper="${f^^}"
|
||||
f_lower="${f,,}"
|
||||
if [ "${f}x" != "${f_upper}x" ]; then
|
||||
cp ${outdir_txt}/$f ${outdir_txt}/$f_upper
|
||||
fi
|
||||
if [ "${f}x" != "${f_lower}x" ]; then
|
||||
cp ${outdir_txt}/$f ${outdir_txt}/$f_lower
|
||||
fi
|
||||
done
|
||||
|
||||
dirs=`find . -maxdepth 1 -type d | sort -n`
|
||||
pwd=`pwd`
|
||||
cd $outdir_ive
|
||||
infile=${import_csv}
|
||||
if [ ! -e ${infile} ]; then
|
||||
echo "Can not find import file ${infile}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for d in `cat ${infile} | cut -d ';' -f 1 | cut -d '.' -f 1`; do
|
||||
d=`basename $d`
|
||||
srcdir=${pwd}/${d}
|
||||
# nur fertig, wenn .flt und .flt.xml vorhanden sind
|
||||
if [ -e ${srcdir}/${d}.flt ] && [ -e ${srcdir}/${d}.flt.xml ]; then
|
||||
echo "converting $srcdir ..."
|
||||
osgconv --compressed ${srcdir}/${d}.flt ${outdir_ive}/${d}.flt.ive -O "compressed"
|
||||
cp ${srcdir}/$d.*.xml ${outdir_ive}/
|
||||
cp ${srcdir}/$d.*.xml.wrl ${outdir_ive}/
|
||||
echo "... finished"
|
||||
else
|
||||
echo " does not exist: " ${d}
|
||||
fi
|
||||
done
|
||||
rm -r $outdir_txt
|
||||
|
||||
cp ${infile} ${outdir_ive}
|
||||
cd ${tmpdir}
|
||||
tar cvzf ~/rpmbuild/SOURCES/guez_buildings_${location}_buildingviewer-${version}.tar.gz ${outdir_rel}
|
||||
if [ $? -ne 0 ]; then
|
||||
exit 2
|
||||
fi
|
||||
rm -rf ${outdir_rel}
|
||||
cd ${pwd}
|
||||
|
||||
echo "tar.tgz created: guez_buildings_${location}_buildingviewer-${version}.tar.gz"
|
||||
echo "Now you can run rpmbuild -bb --target=noarch guez_buildings_${location}_buildingviewer.spec"
|
||||
|
||||
Vendored
Executable
+57
@@ -0,0 +1,57 @@
|
||||
--- ./bldg_1251/bldg_1251.flt.xml 2021-12-14 11:19:13.992559100 +0100
|
||||
+++ ./bldg_1251/bldg_1251.flt_OKAY.xml 2021-12-14 11:24:43.046227800 +0100
|
||||
@@ -38,20 +38,7 @@
|
||||
<Coord Z="2.260" Y="-0.100" X="0.100" />
|
||||
<Dir Z="0.000" Y="1.000" X="0.000" />
|
||||
</External_Reference>
|
||||
- <External_Reference>
|
||||
- <Name>REF_MOD_AP_0008</Name>
|
||||
- <SubId ID="11008" />
|
||||
- <Model NAME="REFMOD_01.flt" />
|
||||
- <Coord Z="4.720" Y="7.773" X="-0.125" />
|
||||
- <Dir Z="0.000" Y="0.000" X="-1.000" />
|
||||
- </External_Reference>
|
||||
- <External_Reference>
|
||||
- <Name>REF_MOD_AP_0007</Name>
|
||||
- <SubId ID="11007" />
|
||||
- <Model NAME="REFMOD_01.flt" />
|
||||
- <Coord Z="2.326" Y="7.774" X="-0.126" />
|
||||
- <Dir Z="0.000" Y="0.000" X="-1.000" />
|
||||
- </External_Reference>
|
||||
+
|
||||
<External_Reference>
|
||||
<Name>IPS_OUT_AP_1</Name>
|
||||
<SubId ID="15001" />
|
||||
@@ -307,6 +294,16 @@
|
||||
<Coord Z="0.300" Y="7.034" X="1.510" />
|
||||
<Dir Z="0.000" Y="1.000" X="0.000" />
|
||||
</External_Reference>
|
||||
+
|
||||
+ <External_Reference>
|
||||
+ <Name>REF_MOD_AP_0007</Name>
|
||||
+ <SubId ID="11007" />
|
||||
+ <Model NAME="REFMOD_01.flt" />
|
||||
+ <Coord Z="2.326" Y="7.774" X="-0.126" />
|
||||
+ <Dir Z="0.000" Y="0.000" X="-1.000" />
|
||||
+ </External_Reference>
|
||||
+
|
||||
+
|
||||
</Group>
|
||||
</Switch>
|
||||
</Group>
|
||||
@@ -498,6 +495,15 @@
|
||||
<Coord Z="4.844" Y="6.126" X="0.090" />
|
||||
<Dir Z="0.000" Y="0.000" X="1.000" />
|
||||
</External_Reference>
|
||||
+
|
||||
+ <External_Reference>
|
||||
+ <Name>REF_MOD_AP_0008</Name>
|
||||
+ <SubId ID="11008" />
|
||||
+ <Model NAME="REFMOD_01.flt" />
|
||||
+ <Coord Z="4.720" Y="7.773" X="-0.125" />
|
||||
+ <Dir Z="0.000" Y="0.000" X="-1.000" />
|
||||
+ </External_Reference>
|
||||
+
|
||||
</Group>
|
||||
</Switch>
|
||||
</Group>
|
||||
specs/external/guez_buildings/postProcessingExcon/patches/patch_bldg_2101.flt.VWM_Building.xml.patch
Vendored
Executable
+46
@@ -0,0 +1,46 @@
|
||||
--- ./bldg_2101/bldg_2101.flt.VWM_Building.xml 2021-11-30 15:16:54.645671400 +0100
|
||||
+++ ./bldg_2101/bldg_2101.flt.VWM_Building_OKAY.xml 2021-11-30 15:18:13.861363200 +0100
|
||||
@@ -2827,7 +2827,42 @@
|
||||
</Room>
|
||||
<Room>
|
||||
<RoomId>2202</RoomId>
|
||||
- <NeighborRooms />
|
||||
+
|
||||
+ <NeighborRooms>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2108</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2107</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2101</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2102</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2103</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2104</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2105</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ <NeighborRoom>
|
||||
+ <RoomId>2106</RoomId>
|
||||
+ <TransitionFactor>0.9998</TransitionFactor>
|
||||
+ </NeighborRoom>
|
||||
+ </NeighborRooms>
|
||||
+
|
||||
<RoomOuterWalls>
|
||||
<OuterWall>
|
||||
<OuterWallAreaElement>
|
||||
specs/external/guez_buildings/postProcessingExcon/patches/patch_bldg_3100.flt.VWM_Building.xml.patch
Vendored
Executable
+19
@@ -0,0 +1,19 @@
|
||||
--- ./bldg_3100/bldg_3100.flt.VWM_Building.xml 2021-10-25 13:28:07.654517700 +0200
|
||||
+++ ./bldg_3100/bldg_3100.flt.VWM_Building.xmlOKAY 2021-10-25 13:29:34.533732400 +0200
|
||||
@@ -48,7 +48,8 @@
|
||||
</PolygonPoint>
|
||||
</OuterWallAreaElement>
|
||||
<ExclusionZones/>
|
||||
- </OuterWall>
|
||||
+ <OuterWallProtectiveFactor>200</OuterWallProtectiveFactor>
|
||||
+ </OuterWall>
|
||||
<OuterWall>
|
||||
<OuterWallAreaElement>
|
||||
<PolygonPoint>
|
||||
@@ -14204,4 +14205,4 @@
|
||||
</RoomOuterWalls>
|
||||
</Room>
|
||||
</Rooms>
|
||||
-</BuildingVulnerability>
|
||||
\ Kein Zeilenumbruch am Dateiende.
|
||||
+</BuildingVulnerability>
|
||||
Vendored
Executable
+38
@@ -0,0 +1,38 @@
|
||||
--- ./bldg_3101/bldg_3101.flt.xml 2021-12-01 11:10:17.696553000 +0100
|
||||
+++ ./bldg_3101/bldg_3101.flt.OKAY.xml 2021-12-01 11:12:16.394860200 +0100
|
||||
@@ -297,7 +297,7 @@
|
||||
<Group>
|
||||
<Name>undest_room_102</Name>
|
||||
<BBox_Min Z="-0.300" Y="4.205" X="-0.070" />
|
||||
- <BBox_Max Z="2.740" Y="13.720" X="16.719" />
|
||||
+ <BBox_Max Z="2.740" Y="13.720" X="7.29101234567" />
|
||||
<Group>
|
||||
<Name>FOOTPRINT</Name>
|
||||
<BBox_Min Z="0.000" Y="4.462" X="0.180" />
|
||||
@@ -655,7 +655,7 @@
|
||||
<SubId ID="2108" />
|
||||
<Group>
|
||||
<Name>undest_room_108</Name>
|
||||
- <BBox_Min Z="-0.300" Y="4.221" X="4.985" />
|
||||
+ <BBox_Min Z="-0.300" Y="4.221" X="10.72601234567" />
|
||||
<BBox_Max Z="2.740" Y="13.720" X="18.089" />
|
||||
<Group>
|
||||
<Name>FOOTPRINT</Name>
|
||||
@@ -737,7 +737,7 @@
|
||||
<SubId ID="2109" />
|
||||
<Group>
|
||||
<Name>undest_room_109</Name>
|
||||
- <BBox_Min Z="-0.300" Y="-0.164" X="4.985" />
|
||||
+ <BBox_Min Z="-0.300" Y="-0.164" X="14.26201234567" />
|
||||
<BBox_Max Z="2.740" Y="4.462" X="18.089" />
|
||||
<Group>
|
||||
<Name>FOOTPRINT</Name>
|
||||
@@ -899,7 +899,7 @@
|
||||
<SubId ID="2112" />
|
||||
<Group>
|
||||
<Name>undest_room_112</Name>
|
||||
- <BBox_Min Z="-0.300" Y="-0.070" X="3.567" />
|
||||
+ <BBox_Min Z="-0.300" Y="-0.070" X="7.29101234567" />
|
||||
<BBox_Max Z="2.740" Y="4.462" X="16.719" />
|
||||
<Group>
|
||||
<Name>FOOTPRINT</Name>
|
||||
+408
@@ -0,0 +1,408 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# @RDE_HEADER@
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
env
|
||||
|
||||
file_location=`pwd`
|
||||
echo "Comment: current wd is: " `pwd`
|
||||
|
||||
###
|
||||
### Presets
|
||||
###
|
||||
PROJECT="GUEZ"
|
||||
xlsxfile=GUEZ_BWDLZ_BA-0_BA-IV_Transformationspunkte_201210_Korrektur_2021-12-16
|
||||
xlsxfile=GUEZ_BWDLZ_BA-0_BA-IV_Transformationspunkte_201210_Korrektur_2021-12-16_Umbenn2022-02-24
|
||||
|
||||
SPD_BLDGS=../GuezBuildings/buildings
|
||||
LOCATIONS_LIST="ba0 ba1 ba2 ba3 ba4 salchau"
|
||||
|
||||
|
||||
|
||||
echo "Comment: remove some temporary files... revert some other..."
|
||||
rm -v GUEZ_BWDLZ*.csv
|
||||
rm -v ./import*.csv
|
||||
rm -v ./${xlsxfile}*
|
||||
rm -v vwm_adjustment*.log
|
||||
rm -v checkProtective*.log
|
||||
rm -v checkDuplicateNames*.log
|
||||
|
||||
###
|
||||
### revert *.spec
|
||||
###
|
||||
svn revert *.spec
|
||||
|
||||
###
|
||||
### check-out / revert bldgs
|
||||
###
|
||||
echo "Comment: revert bldgs: $SPD_BLDGS ..."
|
||||
rm -rfv $SPD_BLDGS/bldg_3145_47
|
||||
svn revert -R $SPD_BLDGS
|
||||
|
||||
###
|
||||
# remove uneeded: bldg_hierarchie.flt, directory bldg_EGCU_test
|
||||
###
|
||||
rm -v $SPD_BLDGS/bldg_hierarchie.flt
|
||||
rm -rfv $SPD_BLDGS/bldg_EGCU_test
|
||||
mv -v $SPD_BLDGS/bldg_3145-47 $SPD_BLDGS/bldg_3145_47
|
||||
find $SPD_BLDGS -iname "*egcu2room*" -delete
|
||||
find $SPD_BLDGS -iname "*.wrl" -delete
|
||||
find $SPD_BLDGS -iname "*.patch" -delete
|
||||
|
||||
###
|
||||
# fix syntax: bldg_3141_26.flt.VWM_Building.xml
|
||||
###
|
||||
BEFORE="<ExclusionZoneProtectiveFactor>20<\/OuterWallProtectiveFactor>"
|
||||
AFTER="<OuterWallProtectiveFactor>20<\/OuterWallProtectiveFactor>"
|
||||
sed -i "s/${BEFORE}/${AFTER}/g" $SPD_BLDGS/bldg_3141_26/bldg_3141_26.flt.VWM_Building.xml
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
|
||||
|
||||
# Fix bldg_3101 (16.787/16.786 ; remove linear dependencies (GUEZE-605, GUEZE-717 ; CheckAwesOnBldg_3101_verteilt.sh)
|
||||
sed -i 's/16.787/16.786/g' $SPD_BLDGS/bldg_3101/bldg_3101.flt.xml
|
||||
sed -i 's/16.787/16.786/g' $SPD_BLDGS/bldg_3101/bldg_3101.flt.VWM_Building.xml
|
||||
|
||||
# remove 1141n
|
||||
rm -rv $SPD_BLDGS/bldg_1141n
|
||||
|
||||
|
||||
###
|
||||
### Apply some patches: early to be idenpendent from modifications by replace_transistion_factors etc.
|
||||
###
|
||||
# Do it here, because the final xml structure is avaible now (node.js converts to json and back to xml....)
|
||||
#
|
||||
# fix Bbox / placement of 4 roomnames at 3101: 102, 108, 109, 112
|
||||
#
|
||||
# diff -Naur ./bldg_3100/bldg_3100.flt.VWM_Building.xml ./bldg_3100/bldg_3100.flt.VWM_Building.xmlOKAY
|
||||
#
|
||||
|
||||
cp -v ./patches/* $SPD_BLDGS
|
||||
if [ $? -ne 0 ]; then echo "copy command (patches) failed" ; fi
|
||||
|
||||
pushd $SPD_BLDGS
|
||||
if [ $? -ne 0 ]; then echo "cd command failed" ; fi
|
||||
|
||||
echo "Comment: cd building ; patching.."
|
||||
echo "Comment: current wd is: " `pwd`
|
||||
dos2unix ./bldg_3101/bldg_3101.flt.xml
|
||||
cp ./bldg_3101/bldg_3101.flt.xml ./bldg_3101/bldg_3101.flt.xml_bak
|
||||
patch -p1 < patch_bldg_3101.flt.xml.patch
|
||||
if [ $? -ne 0 ]; then echo "patch (patch_bldg_3101.flt.xml.patch) failed" ; exit ; fi
|
||||
|
||||
# add missing OuterWallProtectiveFactor
|
||||
# 2021-11-19: patch ist scheinbar obsolet:
|
||||
#dos2unix bldg_3100/bldg_3100.flt.VWM_Building.xml
|
||||
#patch -p1 < patch_bldg_3100.flt.VWM_Building.xml.patch
|
||||
# if [ $? -ne 0 ]; then echo "patch (patch_bldg_3100.flt.VWM_Building.xml.patch) failed" ; fi
|
||||
|
||||
# add missing neigbors (bldg_2101: quick and dirty: just from top to bottom...)
|
||||
dos2unix bldg_2101/bldg_2101.flt.VWM_Building.xml
|
||||
cp bldg_2101/bldg_2101.flt.VWM_Building.xml bldg_2101/bldg_2101.flt.VWM_Building.xml_bak
|
||||
patch -p1 < patch_bldg_2101.flt.VWM_Building.xml.patch
|
||||
if [ $? -ne 0 ]; then echo "patch (patch_bldg_2101.flt.VWM_Building.xml.patch) failed" ; exit ; fi
|
||||
|
||||
# move 2 REF_MOD / BSM from outdoor to correct room: bldg_1251.flt.xml (GUEZE-973)
|
||||
# patch_bldg_1251.flt.xml.patch not required anymore
|
||||
#dos2unix bldg_1251/bldg_1251.flt.xml
|
||||
#cp bldg_1251/bldg_1251.flt.xml bldg_1251/bldg_1251.flt.xml_bak
|
||||
#patch -p1 < patch_bldg_1251.flt.xml.patch
|
||||
# if [ $? -ne 0 ]; then echo "patch (patch_bldg_1251.flt.xml.patch) failed" ; exit ; fi
|
||||
|
||||
|
||||
popd
|
||||
|
||||
|
||||
|
||||
###
|
||||
### check ProtectiveFactor according VEMAG
|
||||
###
|
||||
# Wall -> 200
|
||||
# Ceiling -> 200
|
||||
# ExclusiveDoor -> 20
|
||||
# ExclusiveWindow -> 0
|
||||
#
|
||||
echo "Comment: checkProtectiveFactors ..."
|
||||
echo "Comment: current wd is: " `pwd`
|
||||
./checkProtective.sh > checkProtective.log
|
||||
protectiveErrorCnt=`cat checkProtective.log | grep "failure" | wc -l`
|
||||
echo -e "Comment: Problems regarding wrong protectiveFactors at some files: cnt: $protectiveErrorCnt"
|
||||
|
||||
|
||||
###
|
||||
### xmllint
|
||||
###
|
||||
echo "Comment: verify xml using xmllint on $SPD_BLDGS ..."
|
||||
rm /tmp/xmllintDummyout.xml
|
||||
find $SPD_BLDGS -iname "*.xml" | xargs xmllint > /tmp/xmllintDummyout.xml
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "xmllint failed" ; exit
|
||||
else
|
||||
echo "xmllint successfull"
|
||||
fi
|
||||
|
||||
|
||||
###
|
||||
### check duplicate names
|
||||
###
|
||||
echo "Comment: check duplicate names on $SPD_BLDGS ..."
|
||||
./checkDuplicateNames.sh $SPD_BLDGS > checkDuplicateNames.log
|
||||
checkDuplicateNamesCnt=`cat checkDuplicateNames.log | grep "flt" | wc -l`
|
||||
echo -e "Comment: Problems regarding duplicate Names at some files: cnt: $checkDuplicateNamesCnt"
|
||||
|
||||
|
||||
###
|
||||
### update _Transformationspunkte
|
||||
###
|
||||
####
|
||||
echo "Comment: update _Transformationspunkte......"
|
||||
cd $SPD_BLDGS/../_Transformationspunkte
|
||||
svn up --username thoden --password SPDsvnTH
|
||||
cd -
|
||||
####
|
||||
|
||||
###
|
||||
### Create VERSION_STR (containing a) rev of SPD and b) of this scripts)
|
||||
###
|
||||
# result will look like '4573.53084'
|
||||
#
|
||||
echo "Comment: create VERSION_STR..."
|
||||
echo "Comment: current wd is: " `pwd`
|
||||
# get last mod rev and remove whitespace
|
||||
VERSION_POST_PROC=`svn info . | grep -E 'Letzte ge|Last Changed Rev' | awk -F ':' '{print $2 }'`
|
||||
VERSION_POST_PROC=`echo $VERSION_POST_PROC | sed -e 's/[[:space:]]*$//'`
|
||||
echo "VERSION_POST_PROC = '$VERSION_POST_PROC'"
|
||||
if [ -z "$VERSION_POST_PROC" ] ; then echo "VERSION_POST_PROC could not be determined" ; exit; fi
|
||||
|
||||
# get lst mod rev and remove whitespace
|
||||
VERSION1=`svn info $SPD_BLDGS | grep -E 'Letzte ge|Last Changed Rev' | awk -F ':' '{print $2 }'`
|
||||
VERSION1=`echo $VERSION1 | sed -e 's/[[:space:]]*$//'`
|
||||
echo "VERSION1 = '$VERSION1'"
|
||||
if [ -z "$VERSION1" ] ; then echo "VERSION1 could not be determined" ; exit; fi
|
||||
|
||||
VERSION2=`svn info $SPD_BLDGS/../_Transformationspunkte | grep -E 'Letzte ge|Last Changed Rev' | awk -F ':' '{print $2 }'`
|
||||
VERSION2=`echo $VERSION2 | sed -e 's/[[:space:]]*$//'`
|
||||
echo "VERSION2 = '$VERSION2'"
|
||||
if [ -z "$VERSION2" ] ; then echo "VERSION2 could not be determined" ; exit; fi
|
||||
|
||||
if (( $VERSION1 > $VERSION2 )); then
|
||||
VERSION_SPD_BLDGS=$VERSION1;
|
||||
else
|
||||
VERSION_SPD_BLDGS=$VERSION2;
|
||||
fi
|
||||
if [ -z "$VERSION_POST_PROC" ] ; then echo "VERSION_SPD_BLDGS could not be determined" ; exit; fi
|
||||
|
||||
# Please do not add strings to VERSION_STR. rpm -Uhv will have problem with it....
|
||||
echo "VERSION_SPD_BLDGS = '$VERSION_SPD_BLDGS'"
|
||||
echo "VERSION_POST_PROC = '$VERSION_POST_PROC'"
|
||||
VERSION_STR="${VERSION_SPD_BLDGS}.${VERSION_POST_PROC}"
|
||||
echo "VERSION_STR = '$VERSION_STR'"
|
||||
|
||||
|
||||
###
|
||||
### vwm_adjustment
|
||||
###
|
||||
# NodeJS:
|
||||
# multiple dirs: 1st for jenkins, 2nd for CTCAP15/Norbert
|
||||
export NODE_PATH='/usr/lib/node_modules:../node_modules'
|
||||
echo "Comment: NODE_PATH=" $NODE_PATH
|
||||
echo "Comment: vwm_adjustment at dir $SPD_BLDGS"
|
||||
node ./vwm_adjustment/RECURSIV/pos_dir_guez.js $SPD_BLDGS &> vwm_adjustment.log
|
||||
|
||||
if [ $? -ne 0 ];
|
||||
then echo " node vwm_adjustment failed" ; tail -n200 vwm_adjustment.log;
|
||||
exit
|
||||
else
|
||||
echo " node vwm_adjustment finished";
|
||||
fi
|
||||
|
||||
|
||||
# Renoir-repos has xml files without svn:eol-style.
|
||||
# So 'svn co' on unix will create files with CR+LF (Windows EOL)
|
||||
# To ensure usefull 'svn diff' showing only the real differences, convert to CR+LF:
|
||||
# execute unix2dos on all files adjusted (vwm_adjustment)
|
||||
echo "Comment: unix2dos (quiet)"
|
||||
find $FILE -name "*flt.xml" | xargs unix2dos -q
|
||||
find $FILE -name "*VWM_Building.xml" | xargs unix2dos -q
|
||||
|
||||
|
||||
|
||||
# for debug:
|
||||
# svn st ../GuezBuildings/buildings/bldg_0910/
|
||||
# svn diff ../GuezBuildings/buildings/bldg_0910/
|
||||
# svn diff ../GuezBuildings/buildings/bldg_0910/bldg_0910.flt.xml
|
||||
|
||||
|
||||
### seperate sheets:
|
||||
# xlsx to xls
|
||||
FILE=$SPD_BLDGS/../_Transformationspunkte/${xlsxfile}.xlsx
|
||||
if [ ! -f "$FILE" ]; then echo "$FILE does not exist." ; exit; fi
|
||||
cp -v $FILE .
|
||||
if [ $? -ne 0 ]; then echo "copy command failed" ; fi
|
||||
|
||||
FILE=./${xlsxfile}.xlsx
|
||||
if [ ! -f "$FILE" ]; then echo "$FILE does not exist." ; exit; fi
|
||||
soffice --headless --convert-to SOFFICE_CONVERTED.xls $FILE
|
||||
#-> GUEZ_BWDLZ_BA-0_BA-IV_Transformationspunkte_201210.SOFFICE_CONVERTED.xls
|
||||
if [ $? -ne 0 ]; then echo "soffice command failed" ; fi
|
||||
|
||||
|
||||
# xls to csv
|
||||
echo "Comment: xlsx to xls..."
|
||||
xlsfile=${xlsxfile}.SOFFICE_CONVERTED.xls
|
||||
|
||||
|
||||
echo "Comment: xls to single csv files..."
|
||||
xls2csv -x ${xlsfile} -n1 -c GUEZ_BWDLZ_salchau.csv
|
||||
xls2csv -x ${xlsfile} -n2 -c GUEZ_BWDLZ_ba0.csv
|
||||
xls2csv -x ${xlsfile} -n3 -c GUEZ_BWDLZ_ba1.csv
|
||||
xls2csv -x ${xlsfile} -n4 -c GUEZ_BWDLZ_ba2.csv
|
||||
xls2csv -x ${xlsfile} -n5 -c GUEZ_BWDLZ_ba3.csv
|
||||
xls2csv -x ${xlsfile} -n6 -c GUEZ_BWDLZ_ba4.csv
|
||||
|
||||
# sort
|
||||
for loc in ${LOCATIONS_LIST}
|
||||
do
|
||||
cat GUEZ_BWDLZ_${loc}.csv | sort > temp.txt
|
||||
mv temp.txt GUEZ_BWDLZ_${loc}.csv
|
||||
done
|
||||
rm temp.txt
|
||||
|
||||
# replace some strings
|
||||
# like BN_Kan -> BN_Kanaele and so on
|
||||
sed -i 's/BN_Kan/BN_Kanaele/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/U-Bahn/U_Bahn/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/^571/salchau_571/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/^574/salchau_574/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/^575/salchau_575/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/^576/salchau_576/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/^577/salchau_577/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/^tunnel/salchau_tunnel/g' GUEZ_BWDLZ_salchau.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
|
||||
# ^314126 -> ^3141_26 ; # ^314127 -> ^3141_27
|
||||
sed -i 's/^314126/3141_26/' GUEZ_BWDLZ_ba3.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
sed -i 's/^314127/3141_27/' GUEZ_BWDLZ_ba3.csv
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
|
||||
|
||||
# bldg 3145-47 -> bldg 3145_47
|
||||
cat GUEZ_BWDLZ_ba3.csv | grep -v BN_3146 > copy_GUEZ_BWDLZ_ba3.csv
|
||||
cp copy_GUEZ_BWDLZ_ba3.csv GUEZ_BWDLZ_ba3.csv
|
||||
rm copy_GUEZ_BWDLZ_ba3.csv
|
||||
sed -i 's/^3145/3145_47/g' GUEZ_BWDLZ_ba3.csv
|
||||
|
||||
|
||||
###
|
||||
### convert_coordinate.py
|
||||
###
|
||||
echo "Comment: convert_coordinates.py angles"
|
||||
echo "Comment: current wd is: " `pwd`
|
||||
FILE=./convert_coordinates.py
|
||||
if [ ! -f "$FILE" ]; then echo "$FILE does not exist." ; exit; fi
|
||||
|
||||
for loc in ${LOCATIONS_LIST}
|
||||
do
|
||||
csv_cnt=`cat import_${loc}.csv | grep -v "^#" | wc -l`
|
||||
python ./convert_coordinates.py GUEZ_BWDLZ_${loc}.csv ./import_${loc}.csv
|
||||
cat GUEZ_BWDLZ_${loc}.csv | sort > temp.txt
|
||||
mv temp.txt GUEZ_BWDLZ_{loc}.csv
|
||||
done
|
||||
|
||||
###
|
||||
### Copy some files to $SPD_BLDGS
|
||||
###
|
||||
echo "Comment: cd building ; osgconv.sh"
|
||||
echo "Comment: current wd is: " `pwd`
|
||||
cp -v ./osgconv.sh $SPD_BLDGS
|
||||
if [ $? -ne 0 ]; then echo "copy command (osgconv.sh) failed" ; fi
|
||||
|
||||
pushd $SPD_BLDGS
|
||||
if [ $? -ne 0 ]; then echo "cd command failed" ; fi
|
||||
|
||||
|
||||
for loc in ${LOCATIONS_LIST}
|
||||
do
|
||||
./osgconv.sh $VERSION_STR ${loc} ${file_location}/import_${loc}.csv
|
||||
done
|
||||
|
||||
### back to location of this file
|
||||
popd
|
||||
|
||||
echo "Comment: rpmbuild..."
|
||||
echo "Comment: current wd is: " `pwd`
|
||||
|
||||
|
||||
###
|
||||
### Prepare spec files:
|
||||
###
|
||||
echo "Comment: replace some vars at *.spec"
|
||||
|
||||
echo "VERSION_STR = '$VERSION_STR'"
|
||||
sed -i "s/@VERSION@/$VERSION_STR/g" guez_buildings*buildingviewer.spec
|
||||
if [ $? -ne 0 ]; then echo "sed command failed" ; fi
|
||||
|
||||
###
|
||||
### JENKINS:
|
||||
###
|
||||
if [ -z "$BUILD_TAG" ] ; then echo "JENKINS BUILD_TAG not defined, set to '-'" ; BUILD_TAG="NoTag" ; fi
|
||||
if [ -z "$BUILD_NUMBER" ] ; then echo "JENKINS BUILD_NUMBER not defined, set to '0'" ; BUILD_NUMBER=0 ; fi
|
||||
JENKINS_BUILD_TAG="${BUILD_TAG}"
|
||||
echo "JENKINS_BUILD_TAG: ${JENKINS_BUILD_TAG}"
|
||||
sed -i "s/@JENKINS_BUILD_TAG@/${JENKINS_BUILD_TAG}/g" guez_buildings*buildingviewer.spec
|
||||
if [ $? -ne 0 ]; then echo "sed command JENKINS_BUILD_TAG failed" ; fi
|
||||
sed -i "s/@RELEASE@/${BUILD_NUMBER}/g" guez_buildings*buildingviewer.spec
|
||||
if [ $? -ne 0 ]; then echo "sed command RELEASE failed" ; fi
|
||||
|
||||
|
||||
for loc in ${LOCATIONS_LIST}
|
||||
do
|
||||
rpmbuild -bb --target=noarch guez_buildings_${loc}_buildingviewer.spec
|
||||
if [ $? -ne 0 ]; then echo "rpmbuild command failed for spec 'guez_buildings_${loc}_buildingviewer.spec'" ; fi
|
||||
done
|
||||
|
||||
echo "rpmbuild... finished"
|
||||
|
||||
|
||||
csv_cnt_sum=0
|
||||
rpm_cnt_sum=0
|
||||
for loc in ${LOCATIONS_LIST}
|
||||
do
|
||||
csv_cnt=`cat import_${loc}.csv | grep -v "^#" | wc -l`
|
||||
rpm_cnt=`rpm -ql ~/rpmbuild/RPMS/noarch/guez_buildings_${loc}_buildingviewer-${VERSION_STR}-0.noarch.rpm | grep flt.xml | wc -l`
|
||||
echo -e "Comment: #bldgs: csv: $csv_cnt \t - rpm: $rpm_cnt \t at import_${loc}.csv"
|
||||
csv_cnt_sum=$(($csv_cnt_sum + $csv_cnt))
|
||||
rpm_cnt_sum=$(($rpm_cnt_sum + $rpm_cnt))
|
||||
done
|
||||
echo -e "Comment: #bldgs: csv: $csv_cnt_sum \t - rpm: $rpm_cnt_sum - Over all"
|
||||
|
||||
echo "Comment: Problems of EGCU_CONF..."
|
||||
grep "EGCU pro Etage" vwm_adjustment.log | sort -u
|
||||
grep "EGCU pro Etage" vwm_adjustment.log | sort -u | wc -l
|
||||
|
||||
echo -e "Comment: Problems regarding wrong protectiveFactors at some files: cnt: $protectiveErrorCnt"
|
||||
echo -e "Comment: Problems regarding duplicate Names at some files: cnt: $checkDuplicateNamesCnt"
|
||||
|
||||
|
||||
## JENKINS?
|
||||
if [ -z ${WORKSPACE} ]
|
||||
then
|
||||
echo "rpmbuild... move to - skipped"
|
||||
else
|
||||
echo "rpmbuild... move to "
|
||||
echo "VERSION_STR = '$VERSION_STR'"
|
||||
DST_DIR=${WORKSPACE}/rpms/
|
||||
mkdir ${DST_DIR}
|
||||
mv -v ~/rpmbuild/RPMS/noarch/guez_buildings*$VERSION_STR*.rpm ${DST_DIR}
|
||||
fi
|
||||
Vendored
Executable
+233
@@ -0,0 +1,233 @@
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Manfred Gronak, 2021-03
|
||||
var fs = require("fs");
|
||||
var parser = require('xml2json');
|
||||
var format = require('xml-formatter');
|
||||
|
||||
var util = require('util');
|
||||
var path = require('path');
|
||||
|
||||
/****************** Hier editieren **********************/
|
||||
// Verschiebung der BSM weiter weg von der Wand
|
||||
var delta = 0.11;
|
||||
|
||||
/********************************************************/
|
||||
|
||||
module.exports = function() {
|
||||
|
||||
this.BSM_pos = function BSM_pos(OriginalxmlFile) {
|
||||
|
||||
var xmlFileNeu = OriginalxmlFile + "_neu";
|
||||
|
||||
var content = fs.readFileSync(OriginalxmlFile);
|
||||
|
||||
var lines = content + '';
|
||||
lines = lines.split("\n");
|
||||
|
||||
// try to save the comment generated by Structure Explorer to be re-inserted later
|
||||
var comment;
|
||||
if (lines[2].includes('HdrLastDate')) {
|
||||
comment = lines[2];
|
||||
|
||||
var idx = comment.lastIndexOf("-->");
|
||||
if (idx > 10)
|
||||
comment = [comment.slice(0, idx), "- PostProcessed by SLTE $Rev$", comment.slice(idx)].join('');
|
||||
}
|
||||
|
||||
console.log("OriginalxmlFile=" + OriginalxmlFile);
|
||||
console.log("Filename=" + path.basename(OriginalxmlFile) );
|
||||
|
||||
var FileNamesArray = path.basename(OriginalxmlFile).split('.');
|
||||
var bldg_name = FileNamesArray[0];
|
||||
console.log("bldg_name = '" + bldg_name + "'" );
|
||||
const specialMovementArray = {
|
||||
"bldg_3106_11005": "0.150012345678",
|
||||
"bldg_3138_11003": "0.150012345678",
|
||||
"bldg_3139_11010": "0.150012345678",
|
||||
"bldg_3139_11011": "0.150012345678",
|
||||
"bldg_3140_11004": "0.160012345678",
|
||||
"bldg_3144_11008": "0.150012345678",
|
||||
"bldg_3144_11010": "0.150012345678",
|
||||
"bldg_3148_11006": "0.150012345678",
|
||||
"bldg_3152_11006": "0.150012345678",
|
||||
"bldg_3152_11007": "0.150012345678",
|
||||
"bldg_3156_11022": "0.150012345678",
|
||||
"bldg_3159_11012": "0.150012345678",
|
||||
|
||||
"bldg_2100_11002": "0.250012345678",
|
||||
"bldg_4115_11003": "0.150012345678",
|
||||
"bldg_4115_11005": "0.150012345678",
|
||||
"bldg_4115_11006": "0.150012345678",
|
||||
"bldg_4115_11007": "0.150012345678",
|
||||
"bldg_4115_11017": "0.150012345678",
|
||||
"bldg_4147_11012": "0.150012345678",
|
||||
"bldg_4155_11003": "0.150012345678",
|
||||
"bldg_4194_11002": "0.250012345678",
|
||||
|
||||
"bldg_4119_11007": "0.250012345678",
|
||||
"bldg_4120_11008": "0.250012345678",
|
||||
"bldg_4121_11010": "0.150012345678",
|
||||
"bldg_4121_11014": "0.150012345678",
|
||||
"bldg_4122_11009": "0.150012345678",
|
||||
"bldg_4122_11012": "0.150012345678",
|
||||
"bldg_4123_11001": "0.150012345678",
|
||||
"bldg_4123_11003": "0.150012345678",
|
||||
"bldg_4123_11013": "0.150012345678",
|
||||
|
||||
"bldg_4130_11006": "0.250012345678",
|
||||
"bldg_4130_11008": "0.250012345678",
|
||||
"bldg_4130_11009": "0.250012345678",
|
||||
}
|
||||
console.log("specialMovementArray " + util.inspect(specialMovementArray, {showHidden: false, depth: 2}));
|
||||
|
||||
|
||||
var jsonFileInhalt = parser.toJson(content, {
|
||||
reversible: true
|
||||
});
|
||||
var jsonContent = JSON.parse(jsonFileInhalt);
|
||||
|
||||
|
||||
// start with "1" to skip bldg FOOTPRINT
|
||||
var j;
|
||||
for (j = 1; j < Object.keys(jsonContent.STREIF.Header.Group.Group).length; j++) {
|
||||
// test, ob Element jsonContent.STREIF.Header.Group.Group[j] vorhanden ist
|
||||
//console.log("0 SHGGS " + j + "-" + util.inspect(jsonContent.STREIF.Header.Group.Group[j], { showHidden: false, depth: 3}));
|
||||
|
||||
if (jsonContent.STREIF.Header.Group.Group[j].Switch) {
|
||||
// console.log("1 SHGGS " + j + "-" + util.inspect(jsonContent.STREIF.Header.Group.Group[j].Switch, {showHidden: false, depth: 2}));
|
||||
|
||||
// in case of just a single room per floor,
|
||||
// -> jsonContent.STREIF.Header.Group.Group[j].Switch is NOT an array
|
||||
// -> jsonContent.STREIF.Header.Group.Group[j].Switch).length is undefined!
|
||||
// ==> wrap into an array:
|
||||
if (!Array.isArray(jsonContent.STREIF.Header.Group.Group[j].Switch)) {
|
||||
// wrap obj into an array
|
||||
var dummy = new Array;
|
||||
dummy[0] = jsonContent.STREIF.Header.Group.Group[j].Switch;
|
||||
jsonContent.STREIF.Header.Group.Group[j].Switch = dummy;
|
||||
}
|
||||
if (!Array.isArray(jsonContent.STREIF.Header.Group.Group[j].Switch))
|
||||
console.log("Switch noArray at " + OriginalxmlFile);
|
||||
|
||||
|
||||
var k;
|
||||
for (k = 0; k < Object.keys(jsonContent.STREIF.Header.Group.Group[j].Switch).length; k++) {
|
||||
// test, ob Elelemant jsonContent.STREIF.Header.Group.Group[j].Switch[k]] vorhanden ist
|
||||
if (jsonContent.STREIF.Header.Group.Group[j].Switch[k]) {
|
||||
|
||||
//console.log("2 SHGGS " + util.inspect(jsonContent.STREIF.Header.Group.Group[j].Switch[k], {showHidden: false, depth: 1}));
|
||||
console.log("2 SHGGS " + jsonContent.STREIF.Header.Group.Group[j].Switch[k].Name.$t);
|
||||
|
||||
|
||||
if (jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group == null) {
|
||||
console.log("Missing GroupNode1 at " + OriginalxmlFile + ", Data:" + util.inspect(jsonContent.STREIF.Header.Group.Group[j].Switch[k], {showHidden: false, depth: 2}));
|
||||
continue;
|
||||
}
|
||||
if (jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group.External_Reference == null) {
|
||||
console.log("Missing GroupNode2 at " + OriginalxmlFile + ", Data:" + util.inspect(jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group, {showHidden: false, depth: 2}));
|
||||
continue;
|
||||
}
|
||||
|
||||
// convert object to array to enable forEach:
|
||||
if (!Array.isArray(jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group.External_Reference)){
|
||||
jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group.External_Reference = [jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group.External_Reference]
|
||||
}
|
||||
|
||||
|
||||
if (!Array.isArray(jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group.External_Reference))
|
||||
console.log("External_Reference: noArray at " + OriginalxmlFile);
|
||||
|
||||
jsonContent.STREIF.Header.Group.Group[j].Switch[k].Group.External_Reference.forEach(extRef => {
|
||||
|
||||
console.log("XXXX current extRe " + util.inspect(extRef, { showHidden: false, depth: 3}));
|
||||
|
||||
var ID = ~~(extRef.SubId.ID / 1000);
|
||||
if (ID == 11) {
|
||||
var finalDelta = delta;
|
||||
var idx = bldg_name + "_" +extRef.SubId.ID;
|
||||
if (specialMovementArray[idx])
|
||||
{
|
||||
finalDelta = specialMovementArray[idx];
|
||||
console.log("specialMovementArray: found, finalDelta= " + finalDelta);
|
||||
}
|
||||
|
||||
console.log("adjust on item ..." + util.inspect(extRef, { showHidden: false, depth: 2 }));
|
||||
extRef.Coord.X = parseFloat(extRef.Coord.X) + (finalDelta * parseFloat(extRef.Dir.X));
|
||||
extRef.Coord.Y = parseFloat(extRef.Coord.Y) + (finalDelta * parseFloat(extRef.Dir.Y));
|
||||
extRef.Coord.Z = parseFloat(extRef.Coord.Z) + (finalDelta * parseFloat(extRef.Dir.Z));
|
||||
console.log("adjust on item " + util.inspect(extRef, { showHidden: false, depth: 2 }) + " done");
|
||||
}
|
||||
|
||||
}); // forEach
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// handle outdoor elements:
|
||||
// console.log("outdoor SHGGS " + j + "-" + util.inspect(jsonContent.STREIF.Header.Group.External_Reference, { showHidden: false, depth: 3}));
|
||||
|
||||
|
||||
if (!Array.isArray(jsonContent.STREIF.Header.Group.External_Reference)) {
|
||||
jsonContent.STREIF.Header.Group.External_Reference = [jsonContent.STREIF.Header.Group.External_Reference]
|
||||
}
|
||||
|
||||
jsonContent.STREIF.Header.Group.External_Reference.forEach(extRef => {
|
||||
|
||||
// console.log("outdoor current extRe " + util.inspect(extRef, { showHidden: false, depth: 3}));
|
||||
|
||||
var ID = ~~(extRef.SubId.ID / 1000);
|
||||
if (ID == 11) {
|
||||
var finalDelta = delta;
|
||||
var idx = bldg_name + "_" +extRef.SubId.ID;
|
||||
if (specialMovementArray[idx])
|
||||
{
|
||||
finalDelta = specialMovementArray[idx];
|
||||
console.log("specialMovementArray: found, finalDelta= " + finalDelta);
|
||||
}
|
||||
|
||||
console.log("outdoor: adjust on item ..." + util.inspect(extRef, { showHidden: false, depth: 2 }));
|
||||
extRef.Coord.X = parseFloat(extRef.Coord.X) + (finalDelta * parseFloat(extRef.Dir.X));
|
||||
extRef.Coord.Y = parseFloat(extRef.Coord.Y) + (finalDelta * parseFloat(extRef.Dir.Y));
|
||||
extRef.Coord.Z = parseFloat(extRef.Coord.Z) + (finalDelta * parseFloat(extRef.Dir.Z));
|
||||
console.log("outdoor: adjust on item " + util.inspect(extRef, { showHidden: false, depth: 2 }) + " done");
|
||||
}
|
||||
}); // forEach
|
||||
|
||||
|
||||
|
||||
var Rooms = jsonContent;
|
||||
|
||||
var stringified = JSON.stringify(Rooms);
|
||||
var ausgabe = parser.toXml(stringified);
|
||||
|
||||
|
||||
if (comment)
|
||||
var formattedXml = '<?xml version="1.0" ?>' + '\n' + comment + '\n' + format(ausgabe, {
|
||||
collapseContent: true,
|
||||
lineSeparator: '\n'
|
||||
});
|
||||
else
|
||||
var formattedXml = '<?xml version="1.0" ?>' + '\n' + format(ausgabe, {
|
||||
collapseContent: true,
|
||||
lineSeparator: '\n'
|
||||
});
|
||||
|
||||
// Renoir-repos has xml files without svn:eol-style.
|
||||
// So 'svn co' will create files with CR+LF (Windows EOL)
|
||||
// To enable an svn diff showingf only the real differences, write with CR+LF:
|
||||
|
||||
// write to < OriginalxmlFile | xmlFileNeu >
|
||||
fs.writeFileSync(OriginalxmlFile, formattedXml, function(err) {
|
||||
// If an error occurred, show it
|
||||
if (err) {
|
||||
console.log("Error on writing file: " + OriginalxmlFile);
|
||||
console.err(err);
|
||||
}
|
||||
});
|
||||
|
||||
} // end of function
|
||||
} // export
|
||||
Vendored
Executable
+160
@@ -0,0 +1,160 @@
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Manfred Gronak, , 2021-04
|
||||
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var parser = require('xml2json');
|
||||
var util = require("util");
|
||||
|
||||
|
||||
var stableSort = (arr, compare) => arr
|
||||
.map((item, index) => ({
|
||||
item,
|
||||
index
|
||||
}))
|
||||
.sort((a, b) => compare(a.item, b.item) || a.index - b.index)
|
||||
.map(({
|
||||
item
|
||||
}) => item)
|
||||
|
||||
|
||||
|
||||
module.exports = function() {
|
||||
|
||||
this.EGCU_conf = function EGCU_conf(OriginalxmlFile) {
|
||||
|
||||
// console.log("EGCU_CONF: orgFile", OriginalxmlFile);
|
||||
|
||||
//OriginalxmlFile = ../GuezBuildings/buildings/bldg_1235/bldg_1235.flt.xml
|
||||
// dirname = ../GuezBuildings/buildings/bldg_1235
|
||||
// basename = bldg_1235
|
||||
// newname ../GuezBuildings/buildings/bldg_1235/bldg_1235.egcu.xml
|
||||
var dirname = path.dirname(OriginalxmlFile);
|
||||
var basename = path.basename(OriginalxmlFile, '.flt.xml');
|
||||
var newFileName = dirname + '/' + basename + '.egcu2room.xml';
|
||||
|
||||
|
||||
var content = fs.readFileSync(OriginalxmlFile);
|
||||
|
||||
var jsonFileInhalt = parser.toJson(content);
|
||||
var jsonContent = JSON.parse(jsonFileInhalt);
|
||||
|
||||
var numberOfBDI = 0;
|
||||
var BDI_Elements_Raw = [];
|
||||
|
||||
// convert object to array to enable forEach:
|
||||
if (!Array.isArray(jsonContent.STREIF.Header.Group.External_Reference)){
|
||||
jsonContent.STREIF.Header.Group.External_Reference = [jsonContent.STREIF.Header.Group.External_Reference]
|
||||
}
|
||||
|
||||
jsonContent.STREIF.Header.Group.External_Reference.forEach(Element => {
|
||||
|
||||
if (Element.Name.substring(0, 6) == 'BDI_P_') {
|
||||
BDI_Elements_Raw.push(Element);
|
||||
numberOfBDI = numberOfBDI + 1;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var BDI_Elements = stableSort(BDI_Elements_Raw, (a, b) => a.Coord.Z - b.Coord.Z);
|
||||
|
||||
|
||||
var Switch_Elements = [];
|
||||
|
||||
jsonContent.STREIF.Header.Group.Group.forEach(Group => {
|
||||
Switch_Elements.push(Group.Switch);
|
||||
});
|
||||
|
||||
var i;
|
||||
|
||||
var Rooms = [];
|
||||
|
||||
|
||||
for (i = 1; i < Object.keys(Switch_Elements).length; i++) {
|
||||
var j;
|
||||
if (util.isArray(Switch_Elements[i])) {
|
||||
// console.log(Object.keys(Switch_Elements[i]).length);
|
||||
for (j = 0; j < Object.keys(Switch_Elements[i]).length; j++) {
|
||||
Rooms.push(Switch_Elements[i][j]);
|
||||
}
|
||||
} else {
|
||||
Rooms.push(Switch_Elements[i]);
|
||||
}
|
||||
}
|
||||
|
||||
console.log("Test auf mindestens EGCU in einer Etage... ");
|
||||
|
||||
// Test auf mindestens EGCU in einer Etage
|
||||
BDI_Elements.forEach(BDI => {
|
||||
var k = 0;
|
||||
BDI_Elements.forEach(BDI2 => {
|
||||
if (parseInt(BDI.Coord.Z) == parseInt(BDI2.Coord.Z))
|
||||
k = k + 1;
|
||||
});
|
||||
if (k > 1) {
|
||||
console.log("EGCU_CONF: mehr als eine EGCU pro Etage " + OriginalxmlFile + " -> " + k);
|
||||
// process.exit();
|
||||
}
|
||||
});
|
||||
|
||||
var EgcuToRooms = "<EgcusToRooms>\n";
|
||||
var z = 0;
|
||||
|
||||
BDI_Elements.forEach(BDI => {
|
||||
z = z + 1;
|
||||
EgcuToRooms = EgcuToRooms + " <Egcu>\n <Mountpoint>\n";
|
||||
EgcuToRooms = EgcuToRooms + " <Name>" + BDI.Name + "</Name>\n";
|
||||
EgcuToRooms = EgcuToRooms + " <SubId>" + BDI.SubId.ID + "</SubId>\n";
|
||||
EgcuToRooms = EgcuToRooms + " </Mountpoint>\n <Rooms>\n";
|
||||
|
||||
|
||||
Rooms.forEach(Room => {
|
||||
|
||||
console.log("Room === " + util.inspect(Room, { showHidden: false, depth: 3}));
|
||||
|
||||
if (Object.keys(BDI_Elements).length == 1) {
|
||||
if (typeof(Room) !== 'undefined') {
|
||||
EgcuToRooms = EgcuToRooms + " <Name>" + Room.Name + "</Name>\n";
|
||||
EgcuToRooms = EgcuToRooms + " <SubId>" + Room.SubId.ID + "</SubId>\n";
|
||||
}
|
||||
} else {
|
||||
|
||||
if (typeof(Room) !== 'undefined') {
|
||||
console.log("XXXX Room === " + util.inspect(Room, { showHidden: false, depth: 3}));
|
||||
console.log("XXXX BDI === " + util.inspect(BDI, { showHidden: false, depth: 3}));
|
||||
var difference = BDI.Coord.Z - Room.Group.BBox_Min.Z;
|
||||
if (parseInt(difference) == 0) {
|
||||
EgcuToRooms = EgcuToRooms + " <Name>" + Room.Name + "</Name>\n";
|
||||
EgcuToRooms = EgcuToRooms + " <SubId>" + Room.SubId.ID + "</SubId>\n";
|
||||
}
|
||||
if (numberOfBDI == z) {
|
||||
if (parseInt(difference) < 0) {
|
||||
EgcuToRooms = EgcuToRooms + " <Name>" + Room.Name + "</Name>\n";
|
||||
EgcuToRooms = EgcuToRooms + " <SubId>" + Room.SubId.ID + "</SubId>\n";
|
||||
}
|
||||
}
|
||||
} // if
|
||||
} // if
|
||||
});
|
||||
EgcuToRooms = EgcuToRooms + " </Rooms>\n </Egcu>\n"
|
||||
});
|
||||
|
||||
EgcuToRooms = EgcuToRooms + '</EgcusToRooms>\n';
|
||||
|
||||
|
||||
console.log(newFileName);
|
||||
// console.log(EgcuToRooms);
|
||||
|
||||
|
||||
fs.writeFileSync(newFileName, EgcuToRooms, function(err) {
|
||||
// If an error occurred, show it and return
|
||||
console.log("EgcuToRooms.xml geschrieben")
|
||||
if (err) return console.error(err);
|
||||
// Successfully wrote binary contents to the file!
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Vendored
Executable
+101
@@ -0,0 +1,101 @@
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Manfred Gronak, , 2021-03
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
// require ('./analyse_vmw_file.js')();
|
||||
require ('./replace_transistion_factors.js')();
|
||||
require('./BSM_pos.js')();
|
||||
require('./egcu_conf.js')();
|
||||
require('./vwmXmlToVrmlWrl.js')();
|
||||
|
||||
require('./simplify_polygons.js')();
|
||||
|
||||
var myArgs = process.argv.slice(2);
|
||||
|
||||
console.log('myArgs: ', myArgs);
|
||||
|
||||
|
||||
// const GUEZ_DIR = '/media/tbox/423F-1127/DATENGEBAEUDE_GUEZ';
|
||||
// const GUEZ_DIR = '/shd/CTC/TOOLS/GuezBuildings/buildingsXXXXX';
|
||||
|
||||
const GUEZ_DIR = myArgs[0];
|
||||
console.log('adjust file at directory: ', GUEZ_DIR);
|
||||
|
||||
/*****************************************************************************************/
|
||||
|
||||
|
||||
|
||||
fs.readdir(GUEZ_DIR, (err, files) => {
|
||||
|
||||
if (err) return console.error(err);
|
||||
|
||||
|
||||
|
||||
var DirNames = files.toString();
|
||||
|
||||
var DirNamesArray = DirNames.split(',');
|
||||
|
||||
DirNamesArray.forEach(DirName => {
|
||||
if (DirName.substring(0, 5) == 'bldg_') {
|
||||
console.log("Working at directory: " + DirName);
|
||||
|
||||
if ( (DirName == 'bldg_1141n') ||
|
||||
(DirName == 'bldg_1102_Treppen') )
|
||||
{
|
||||
console.log("Skip subdir '", DirName + "'");
|
||||
return;
|
||||
}
|
||||
|
||||
fs.readdir(GUEZ_DIR + '/' + DirName, (err, subdir_files) => {
|
||||
if (err) return console.error(err);
|
||||
var SubDirNames = subdir_files.toString();
|
||||
var FileNamesArray = SubDirNames.split(',');
|
||||
|
||||
FileNamesArray.forEach(FileName => {
|
||||
|
||||
var FileNamePartArray = FileName.split('.');
|
||||
// console.log("process file: ", FileNamePartArray);
|
||||
// if (FileNamePartArray[0] == 'bldg_1199' && FileNamePartArray[2] == 'VWM_Building' && FileNamePartArray[3] == 'xml' && FileNamePartArray.length == 4) {
|
||||
if (FileNamePartArray[2] == 'VWM_Building' && FileNamePartArray[3] == 'xml' && FileNamePartArray.length == 4) {
|
||||
|
||||
var File_Path = GUEZ_DIR + '/' + DirName + '/' + FileName;
|
||||
console.log("XXXXX1 File_Path: " + File_Path );
|
||||
simplify_polygons(File_Path); // Aktiviert wg. blgd_0910_Raum2201_Wall0 (8 vertex -> 4) - GUEZE-1004
|
||||
console.log("XXXXX2 File_Path: " + File_Path );
|
||||
replace_transistion_factors(File_Path);
|
||||
|
||||
// create wrl files (VRML). Usefull to find missing outerwalls:
|
||||
console.log("XXXXX3 File_Path: " + File_Path );
|
||||
VwmXmlToWrl(File_Path)
|
||||
} // end if
|
||||
|
||||
|
||||
if (FileNamePartArray[1] == 'flt' && FileNamePartArray[2] == 'xml' && FileNamePartArray.length == 3) {
|
||||
var File_Path = GUEZ_DIR + '/' + DirName + '/' + FileName;
|
||||
console.log("XXXXX4 File_Path: " + File_Path );
|
||||
BSM_pos(File_Path);
|
||||
}
|
||||
|
||||
if (FileNamePartArray[1] == 'flt' && FileNamePartArray[2] == 'xml' && FileNamePartArray.length == 3) {
|
||||
var File_Path = GUEZ_DIR + '/' + DirName + '/' + FileName;
|
||||
console.log("XXXXX5 File_Path: " + File_Path );
|
||||
EGCU_conf(File_Path);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}); // readdir
|
||||
|
||||
|
||||
|
||||
} // end if
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
Vendored
Executable
+288
@@ -0,0 +1,288 @@
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Manfred Gronak, 2021-03
|
||||
const fs = require('fs');
|
||||
|
||||
var parser = require('xml2json');
|
||||
|
||||
var js2xmlparser = require('js2xmlparser');
|
||||
var format = require('xml-formatter');
|
||||
|
||||
var util = require('util');
|
||||
|
||||
/****************** Hier editieren **********************/
|
||||
// Das ist der Transistion Factor, der für alle vertikalen Transitionen eingetragen werden soll
|
||||
// Muss ausgetestet werden.
|
||||
var TransitionFactor_vertical = 0.15;
|
||||
var TransitionFactor_horizontal_min = 0.03; // former MG=0.1
|
||||
|
||||
var TransitionFactor_horizontal_min_limit = 0.03;
|
||||
|
||||
var BelowGroundBldgs = ['U_Bahn', 'xxx'];
|
||||
|
||||
/*****************************************************************************************/
|
||||
|
||||
module.exports = function() {
|
||||
|
||||
this.replace_transistion_factors = function replace_transistion_factors(xmlFile) {
|
||||
|
||||
const OriginalVWMFile = xmlFile;
|
||||
|
||||
var content = fs.readFileSync(OriginalVWMFile);
|
||||
|
||||
var jsonFileInhalt;
|
||||
var jsonContent;
|
||||
try {
|
||||
jsonFileInhalt = parser.toJson(content);
|
||||
jsonContent = JSON.parse(jsonFileInhalt);
|
||||
} catch (e) {
|
||||
console.log("Parsing error bei Datei " + OriginalVWMFile + " -> " + e.message); // Datei geschrieben
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var BuildingName = jsonContent.BuildingVulnerability.BuildingName;
|
||||
BuildingName = BuildingName.substring(5); // bldg_U_Bahn -> U_Bahn
|
||||
|
||||
if (BelowGroundBldgs.includes(BuildingName))
|
||||
{
|
||||
console.log("BuildingName '" + BuildingName + "' -> use special values (like TransistionFactors)");
|
||||
TransitionFactor_vertical = 0.129988;
|
||||
TransitionFactor_horizontal_min = 0.129999; // U-Bahn
|
||||
}
|
||||
|
||||
|
||||
|
||||
// try to save the comment generated by Structure Explorer to be re-inserted later
|
||||
var lines = content + '';
|
||||
lines = lines.split("\n");
|
||||
|
||||
var comment;
|
||||
if (lines[2].includes('HdrLastDate')) {
|
||||
comment = lines[2];
|
||||
|
||||
var idx = comment.lastIndexOf("-->");
|
||||
if (idx > 10)
|
||||
comment = [comment.slice(0, idx), "- PostProcessed by SLTE $Rev$", comment.slice(idx)].join('');
|
||||
}
|
||||
|
||||
|
||||
var i;
|
||||
var RoomId;
|
||||
var NeighborRoomRoomId;
|
||||
var index;
|
||||
|
||||
var RoomArray = jsonContent.BuildingVulnerability.Rooms.Room;
|
||||
if (RoomArray == null) {
|
||||
console.log("Datei " + OriginalVWMFile + ": " + " WARNING, no RoomArray detected");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
console.log("Datei " + OriginalVWMFile + ": " + Object.keys(jsonContent.BuildingVulnerability.Rooms.Room).length + " Rooms detected");
|
||||
|
||||
if (Array.isArray(jsonContent.BuildingVulnerability.Rooms.Room)) {
|
||||
// console.log("1Array: ");
|
||||
} else {
|
||||
// No Array..
|
||||
// wrap obj into an array to ensure 'RoomArray.forEach(...'
|
||||
var dummy = new Array;
|
||||
dummy[0] = jsonContent.BuildingVulnerability.Rooms.Room;
|
||||
jsonContent.BuildingVulnerability.Rooms.Room = dummy;
|
||||
}
|
||||
|
||||
|
||||
// check number of floors:
|
||||
var maxfloor = -1;
|
||||
var roomsPerFloor = new Map;
|
||||
for (i = 0; i < Object.keys(jsonContent.BuildingVulnerability.Rooms.Room).length; i++) {
|
||||
console.log("RaumID " + jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId);
|
||||
|
||||
var floor = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId - 2000);
|
||||
floor = ~~(floor / 100);
|
||||
console.log(" floor=" + floor);
|
||||
if (floor > maxfloor)
|
||||
maxfloor = floor;
|
||||
|
||||
var maxRoomNumber = jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId - 2000;
|
||||
maxRoomNumber = maxRoomNumber - (floor*100.0);
|
||||
console.log(" maxRoomNumber " + maxRoomNumber + " (" + jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId + ")");
|
||||
|
||||
|
||||
console.log(" roomsPerFloor " + ", Data:" + util.inspect(roomsPerFloor, {showHidden: false, depth: 2}));
|
||||
|
||||
console.log(" roomsPerFloor " + roomsPerFloor);
|
||||
if (!roomsPerFloor.has(floor))
|
||||
roomsPerFloor.set(floor, 0);
|
||||
|
||||
if (maxRoomNumber > roomsPerFloor.get(floor))
|
||||
{
|
||||
console.log(" update: maxRoomNumber=" + maxRoomNumber + " at floor " + floor);
|
||||
roomsPerFloor.set(floor, maxRoomNumber);
|
||||
}
|
||||
}
|
||||
|
||||
console.log("maxfloor " + maxfloor);
|
||||
|
||||
|
||||
var removeCandidates = new Array;
|
||||
|
||||
for (i = 0; i < Object.keys(jsonContent.BuildingVulnerability.Rooms.Room).length; i++) {
|
||||
// Reduzierung auf die Etage
|
||||
// console.log("RaumID" + jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId);
|
||||
|
||||
if (jsonContent.BuildingVulnerability.Rooms.Room[i] == null) {
|
||||
console.log("Missing RoomId at " + OriginalVWMFile);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
RoomId = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId / 100);
|
||||
// console.log(RoomId);
|
||||
var j;
|
||||
// console.log(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms);
|
||||
// Test, ob ein Raum keine Nachbarraeume hat. Wenn dann entfernen
|
||||
if (!jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom) {
|
||||
|
||||
var roomToBeRemove = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId - 2000);
|
||||
var roomFloor = ~~(roomToBeRemove / 100);
|
||||
|
||||
// Nur oberste Etage, nur wenn mehr als eine Etage:
|
||||
if (roomFloor == maxfloor && roomsPerFloor.size > 1) {
|
||||
console.log("Element RoomId " + jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId + " muesste entfernt werden at: " + OriginalVWMFile + " (maxfloor=" + maxfloor + ", rooms at previous floor:" + roomsPerFloor.get(maxfloor-1) + "m i=" + i +")");
|
||||
removeCandidates.push({'roomToBeRemovedCandidateIdx' : i, 'roomToBeRemovedCandidateRoomNumber' : jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId});
|
||||
// // delete jsonContent.BuildingVulnerability.Rooms.Room[i];
|
||||
} else
|
||||
console.log("Skip Element RoomId " + jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId + " wird entfernt at: " + OriginalVWMFile + " (maxfloor=" + maxfloor + ")");
|
||||
|
||||
|
||||
} else {
|
||||
//console.log(Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[0].NeighborRooms.NeighborRoom).length);
|
||||
|
||||
for (j = 0; j < Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length; j++) {
|
||||
|
||||
// console.log(jsonContent.BuildingVulnerability.Rooms.Room[0].NeighborRooms.NeighborRoom.NeighborRoom.RoomId);
|
||||
// Test, ob Raeume in der gleiche Etage liegen. Wenn nicht dann Transistion Faktoren einschreiben
|
||||
// console.log(Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length);
|
||||
if (Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length == 1) {
|
||||
NeighborRoomId = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.RoomId / 100);
|
||||
if (RoomId != NeighborRoomId)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.TransitionFactor = TransitionFactor_vertical;
|
||||
else {
|
||||
if (jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.TransitionFactor <= TransitionFactor_horizontal_min)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.TransitionFactor = TransitionFactor_horizontal_min;
|
||||
}
|
||||
} else {
|
||||
|
||||
if (typeof jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j] !== 'undefined') {
|
||||
// console.log(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].RoomId);
|
||||
NeighborRoomId = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].RoomId / 100);
|
||||
if (RoomId != NeighborRoomId)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].TransitionFactor = TransitionFactor_vertical;
|
||||
else {
|
||||
if (jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].TransitionFactor <= TransitionFactor_horizontal_min)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].TransitionFactor = TransitionFactor_horizontal_min;
|
||||
}
|
||||
} else { // if undefined
|
||||
// console.log("NeighborRooms.NeighborRoom is undefined at: " + OriginalVWMFile);
|
||||
// relevant for bldg_salchau_tunnel.flt.VWM_Building.xml, bldg_BN_Kanaele and many more (78 files at this moment)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.TransitionFactor = TransitionFactor_vertical;
|
||||
}
|
||||
} // if
|
||||
} // for
|
||||
}
|
||||
}
|
||||
|
||||
// check
|
||||
|
||||
if (Object.keys(removeCandidates).length > 0) {
|
||||
// how can we process 2 rooms at the roof ??? (like Guez bldg_2101)
|
||||
if (Object.keys(removeCandidates).length > 1) {
|
||||
console.log("ERROR at " + OriginalVWMFile + " : adding neighbor failed, more then one removeCandidates: size=" + Object.keys(removeCandidates).length);
|
||||
} else {
|
||||
|
||||
removeCandidates.forEach(item => {
|
||||
var roomToBeRemovedCandidateIdx = item.roomToBeRemovedCandidateIdx;
|
||||
var roomToBeRemovedCandidateRoomNumber = item.roomToBeRemovedCandidateRoomNumber;
|
||||
|
||||
if (roomToBeRemovedCandidateIdx > 0)
|
||||
{
|
||||
console.log("roomToBeRemovedCandidateIdx=" + roomToBeRemovedCandidateIdx + ", roomToBeRemovedCandidateRoomNumber=" + roomToBeRemovedCandidateRoomNumber);
|
||||
|
||||
// console.log("NeighborRooms " + util.inspect(jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1], {showHidden: false, depth: 3}));
|
||||
// console.log("NeighborRooms " + Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1].NeighborRooms.NeighborRoom).length );
|
||||
|
||||
var lowerRoomId = jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1].RoomId;
|
||||
|
||||
// add lower to topmost room:
|
||||
{
|
||||
// console.log("jsonContent11 " + util.inspect(jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx], {showHidden: false, depth: 5}));
|
||||
|
||||
if (typeof jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx].NeighborRooms.NeighborRoom == 'undefined') {
|
||||
// expected:
|
||||
console.log(OriginalVWMFile + ", adding neighbor, part 1: lowerRoomId=" + lowerRoomId + " to topmost room=" + roomToBeRemovedCandidateRoomNumber );
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx].NeighborRooms['NeighborRoom'] = [ {"RoomId": lowerRoomId, "TransitionFactor": 0.99999} ];
|
||||
} else {
|
||||
console.log("ERROR at " + OriginalVWMFile + " : adding neighbor part 1");
|
||||
}
|
||||
// console.log("jsonContent22 " + util.inspect(jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx], {showHidden: false, depth: 5}));
|
||||
}
|
||||
|
||||
// add topmost to lower:
|
||||
{
|
||||
// console.log("jsonContent33 " + util.inspect(jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1], {showHidden: false, depth: 3}));
|
||||
|
||||
if (Array.isArray(jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1].NeighborRooms.NeighborRoom))
|
||||
{
|
||||
// expected:
|
||||
console.log(OriginalVWMFile + ", adding neighbor, part 2a: to lower room : " + jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1].RoomId);
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1].NeighborRooms.NeighborRoom.push({"RoomId": roomToBeRemovedCandidateRoomNumber, "TransitionFactor": 0.99999});
|
||||
} else {
|
||||
console.log(OriginalVWMFile + ", adding neighbor, part 2b: to lower room : " + jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1].RoomId);
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1].NeighborRooms.NeighborRoom = [{"RoomId": roomToBeRemovedCandidateRoomNumber, "TransitionFactor": 0.99999}];
|
||||
}
|
||||
// console.log("jsonContent44 " + util.inspect(jsonContent.BuildingVulnerability.Rooms.Room[roomToBeRemovedCandidateIdx-1], {showHidden: false, depth: 3}));
|
||||
}
|
||||
|
||||
} // if
|
||||
}) // forEach
|
||||
} // if
|
||||
}// if
|
||||
|
||||
|
||||
|
||||
// delete jsonContent.BuildingVulnerability.Rooms.Room[index].NeighborRooms.NeighborRoom.NeighborRoom;
|
||||
// jsonContent.BuildingVulnerability.Rooms.Room[index].NeighborRooms.NeighborRoom["TransitionFactor"] = TransitionFactor_vertical;
|
||||
// jsonContent.BuildingVulnerability.Rooms.Room[index].NeighborRooms.NeighborRoom["RoomId"] = NeighborRoomRoomId;
|
||||
|
||||
|
||||
var Rooms = jsonContent.BuildingVulnerability;
|
||||
var ausgabe = js2xmlparser.parse("BuildingVulnerability", Rooms);
|
||||
|
||||
if (comment) {
|
||||
var idxOfLine = ausgabe.indexOf("<BuildingName>")
|
||||
// console.log("idxOfLine: " + idxOfLine);
|
||||
var ausgabe2 = [ausgabe.slice(0, idxOfLine), comment, ausgabe.slice(idxOfLine)].join('');
|
||||
ausgabe = ausgabe2;
|
||||
}
|
||||
|
||||
var formattedXml = format(ausgabe, {
|
||||
collapseContent: true,
|
||||
lineSeparator: '\n'
|
||||
});
|
||||
|
||||
|
||||
|
||||
fs.writeFileSync(OriginalVWMFile, formattedXml, function(err) {
|
||||
// If an error occurred, show it
|
||||
if (err) {
|
||||
console.log("Error on writing file: " + OriginalVWMFile);
|
||||
console.err(err);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/********************************************************************************************************/
|
||||
} // end exports
|
||||
Vendored
Executable
+355
@@ -0,0 +1,355 @@
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Norbert Thoden, 2021-12-22
|
||||
const fs = require('fs');
|
||||
|
||||
var parser = require('xml2json');
|
||||
|
||||
var js2xmlparser = require('js2xmlparser');
|
||||
var format = require('xml-formatter');
|
||||
|
||||
var util = require('util');
|
||||
|
||||
/****************** Hier editieren **********************/
|
||||
var BelowGroundBldgs = ['U_Bahn', 'xxx'];
|
||||
|
||||
var tolerance = 0.1;
|
||||
var highQuality = true;
|
||||
|
||||
|
||||
/*****************************************************************************************/
|
||||
|
||||
/*****************************************************************************************/
|
||||
/*****************************************************************************************/
|
||||
/*****************************************************************************************/
|
||||
/*
|
||||
* (c) 2013, Vladimir Agafonkin
|
||||
* Simplify.js, a high-performance JS polyline simplification library
|
||||
* mourner.github.io/simplify-js
|
||||
*/
|
||||
|
||||
// to suit your point format, run search/replace for '.x', '.y' and '.z';
|
||||
// (configurability would draw significant performance overhead)
|
||||
|
||||
// square distance between 2 points
|
||||
function getSquareDistance(p1, p2) {
|
||||
|
||||
var dx = p1.X - p2.X,
|
||||
dy = p1.Y - p2.Y,
|
||||
dz = p1.Z - p2.Z;
|
||||
|
||||
return dx * dx + dy * dy + dz * dz;
|
||||
}
|
||||
|
||||
// square distance from a point to a segment
|
||||
function getSquareSegmentDistance(p, p1, p2) {
|
||||
|
||||
var x = p1.X,
|
||||
y = p1.Y,
|
||||
z = p1.Z,
|
||||
|
||||
dx = p2.X - x,
|
||||
dy = p2.Y - y,
|
||||
dz = p2.Z - z;
|
||||
|
||||
if (dx !== 0 || dy !== 0 || dz !== 0) {
|
||||
|
||||
var t = ((p.X - x) * dx + (p.Y - y) * dy + (p.Z - z) * dz) /
|
||||
(dx * dx + dy * dy + dz * dz);
|
||||
|
||||
if (t > 1) {
|
||||
x = p2.X;
|
||||
y = p2.Y;
|
||||
z = p2.Z;
|
||||
|
||||
} else if (t > 0) {
|
||||
x += dx * t;
|
||||
y += dy * t;
|
||||
z += dz * t;
|
||||
}
|
||||
}
|
||||
|
||||
dx = p.X - x;
|
||||
dy = p.Y - y;
|
||||
dz = p.Z - z;
|
||||
|
||||
return dx * dx + dy * dy + dz * dz;
|
||||
}
|
||||
// the rest of the code doesn't care for the point format
|
||||
|
||||
// basic distance-based simplification
|
||||
function simplifyRadialDistance(points, sqTolerance) {
|
||||
|
||||
var prevPoint = points[0],
|
||||
newPoints = [prevPoint],
|
||||
point;
|
||||
|
||||
for (var i = 1, len = points.length; i < len; i++) {
|
||||
point = points[i];
|
||||
|
||||
if (getSquareDistance(point, prevPoint) > sqTolerance) {
|
||||
newPoints.push(point);
|
||||
prevPoint = point;
|
||||
}
|
||||
}
|
||||
|
||||
if (prevPoint !== point) {
|
||||
newPoints.push(point);
|
||||
}
|
||||
|
||||
return newPoints;
|
||||
}
|
||||
|
||||
// simplification using optimized Douglas-Peucker algorithm with recursion elimination
|
||||
function simplifyDouglasPeucker(points, sqTolerance) {
|
||||
|
||||
var len = points.length,
|
||||
MarkerArray = typeof Uint8Array !== 'undefined' ? Uint8Array : Array,
|
||||
markers = new MarkerArray(len),
|
||||
|
||||
first = 0,
|
||||
last = len - 1,
|
||||
|
||||
stack = [],
|
||||
newPoints = [],
|
||||
|
||||
i, maxSqDist, sqDist, index;
|
||||
|
||||
markers[first] = markers[last] = 1;
|
||||
|
||||
while (last) {
|
||||
|
||||
maxSqDist = 0;
|
||||
|
||||
for (i = first + 1; i < last; i++) {
|
||||
sqDist = getSquareSegmentDistance(points[i], points[first], points[last]);
|
||||
|
||||
if (sqDist > maxSqDist) {
|
||||
index = i;
|
||||
maxSqDist = sqDist;
|
||||
}
|
||||
}
|
||||
|
||||
if (maxSqDist > sqTolerance) {
|
||||
markers[index] = 1;
|
||||
stack.push(first, index, index, last);
|
||||
}
|
||||
|
||||
last = stack.pop();
|
||||
first = stack.pop();
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
if (markers[i]) {
|
||||
newPoints.push(points[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return newPoints;
|
||||
}
|
||||
|
||||
|
||||
function simplify(points, tolerance, highestQuality) {
|
||||
|
||||
var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;
|
||||
|
||||
points = highestQuality ? points : simplifyRadialDistance(points, sqTolerance);
|
||||
points = simplifyDouglasPeucker(points, sqTolerance);
|
||||
|
||||
return points;
|
||||
}
|
||||
/*****************************************************************************************/
|
||||
/*****************************************************************************************/
|
||||
/*****************************************************************************************/
|
||||
|
||||
|
||||
|
||||
module.exports = function() {
|
||||
|
||||
this.simplify_polygons = function simplify_polygons(xmlFile) {
|
||||
|
||||
const OriginalVWMFile = xmlFile;
|
||||
|
||||
var content = fs.readFileSync(OriginalVWMFile);
|
||||
|
||||
var jsonFileInhalt;
|
||||
var jsonContent;
|
||||
try {
|
||||
jsonFileInhalt = parser.toJson(content);
|
||||
jsonContent = JSON.parse(jsonFileInhalt);
|
||||
} catch (e) {
|
||||
console.log("Parsing error bei Datei " + OriginalVWMFile + " -> " + e.message); // Datei geschrieben
|
||||
return;
|
||||
}
|
||||
|
||||
var BuildingName = jsonContent.BuildingVulnerability.BuildingName;
|
||||
BuildingName = BuildingName.substring(5); // bldg_U_Bahn -> U_Bahn
|
||||
|
||||
var RoomArray = jsonContent.BuildingVulnerability.Rooms.Room;
|
||||
if (RoomArray == null) {
|
||||
console.log("Datei " + OriginalVWMFile + ": " + " WARNING, no RoomArray detected");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Array.isArray(RoomArray)){
|
||||
RoomArray = [RoomArray]
|
||||
}
|
||||
console.log("Datei " + OriginalVWMFile + ": " + Object.keys(jsonContent.BuildingVulnerability.Rooms.Room).length + " Rooms detected");
|
||||
console.log("Datei " + OriginalVWMFile + ": " + RoomArray.length + " Rooms detected");
|
||||
|
||||
RoomArray.forEach(Room => {
|
||||
|
||||
// console.log("Bldg " + BuildingName + " - RoomId: " + Room.RoomId);
|
||||
|
||||
var OuterWallArray = Room.RoomOuterWalls.OuterWall;
|
||||
|
||||
//sometimes there are no walls: OuterWallArray is undefined
|
||||
if (!OuterWallArray)
|
||||
{
|
||||
console.log("Bldg " + BuildingName + " / room " + Room.RoomId + " has no walls") ;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Array.isArray(OuterWallArray)){
|
||||
OuterWallArray = [OuterWallArray]
|
||||
}
|
||||
|
||||
|
||||
if (!OuterWallArray)
|
||||
{
|
||||
console.log("Bldg " + BuildingName + " / room " + Room.RoomId + " has no walls") ;
|
||||
return;
|
||||
}
|
||||
|
||||
var wallIdx =-1;
|
||||
OuterWallArray.forEach(Outerwall => {
|
||||
wallIdx++;
|
||||
// console.log(" Outerwall " + "idx=" + wallIdx + " : " + util.inspect(Outerwall, {showHidden: false, depth: 3}));
|
||||
|
||||
//
|
||||
// Wall itself
|
||||
//
|
||||
|
||||
// console.log(" Outerwall: " + Outerwall.OuterWallAreaElement);
|
||||
var PolygonPoints = Outerwall.OuterWallAreaElement.PolygonPoint;
|
||||
|
||||
var polyLengthOrg = PolygonPoints.length;
|
||||
// console.log(" WALL PolygonPoints-Org= " + polyLengthOrg) ;
|
||||
// console.log(" WALL data=" + util.inspect(PolygonPoints, {showHidden: false, depth: 2}));
|
||||
PolygonPoints.forEach(PolygonPoint => {
|
||||
PolygonPoint.X = parseFloat(PolygonPoint.X);
|
||||
PolygonPoint.Y = parseFloat(PolygonPoint.Y);
|
||||
PolygonPoint.Z = parseFloat(PolygonPoint.Z);
|
||||
//console.log(" WALL Point= " + PolygonPoint.X + " " + PolygonPoint.Y + " " + PolygonPoint.Z) ;
|
||||
});
|
||||
|
||||
// There are some walls/rectangles with a very short side (~10cm). Most of them are correct.
|
||||
// Avoid them being modified to a triangle/line:
|
||||
if (PolygonPoints.length > 4)
|
||||
{
|
||||
PolygonPoints = simplify(PolygonPoints, tolerance, highQuality);
|
||||
var polyLengthNew = PolygonPoints.length;
|
||||
// console.log(" PolygonPoints-New= " + polyLengthNew) ;
|
||||
|
||||
if (polyLengthOrg != polyLengthNew)
|
||||
console.log(" WALL Bldg " + BuildingName + " / room " + Room.RoomId + " / wallIdx " + wallIdx + ": " + " Outerwall: length changes from " + polyLengthOrg + " to " + polyLengthNew);
|
||||
|
||||
// console.log(" data=" + util.inspect(PolygonPoints, {showHidden: false, depth: 2}));
|
||||
|
||||
// PolygonPoints.forEach(PolygonPoint => {
|
||||
// console.log(" Point= " + PolygonPoint.X + " " + PolygonPoint.Y + " " + PolygonPoint.Z) ;
|
||||
// });
|
||||
|
||||
// write simplified data back:
|
||||
Outerwall.OuterWallAreaElement.PolygonPoint = PolygonPoints;
|
||||
} else {
|
||||
console.log(" WALL Bldg " + BuildingName + " / room " + Room.RoomId + " / wallIdx " + wallIdx + ": Skip due to short length: " + polyLengthOrg);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// ExclusionZones bldg_1199 is complex and therefore good for verification
|
||||
//
|
||||
{
|
||||
// node: Outerwall has ExclusionZones:
|
||||
// console.log(" ---- ExclZone ExclusionZonesArray= " + util.inspect(Outerwall.ExclusionZones, {showHidden: false, depth: 4}));
|
||||
|
||||
var ExclusionZonesArray = Outerwall.ExclusionZones.ExclusionZone;
|
||||
if (!ExclusionZonesArray)
|
||||
return;
|
||||
|
||||
if (!Array.isArray(ExclusionZonesArray)) {
|
||||
ExclusionZonesArray = [ExclusionZonesArray]
|
||||
}
|
||||
|
||||
// console.log(" ExclZone ExclusionZonesArray.length= " + ExclusionZonesArray.length);
|
||||
|
||||
var EzIdx =-1;
|
||||
ExclusionZonesArray.forEach(ExclusionZone => {
|
||||
EzIdx++;
|
||||
|
||||
// console.log(" ExclZone ---- ExclusionZone " + "EzIdx=" + EzIdx + " : " + util.inspect(ExclusionZone, {showHidden: false, depth: 3}));
|
||||
|
||||
var ExclZonePolygonPoints = ExclusionZone.ExclusionZoneElement.PolygonPoint;
|
||||
var polyLengthOrg = ExclZonePolygonPoints.length;
|
||||
|
||||
// console.log(" ExclZone ExclZonePolygonPoints-Org=" + polyLengthOrg + " (Bldg " + BuildingName + " / room " + Room.RoomId + ")") ;
|
||||
// console.log(" ExclZone data=" + util.inspect(ExclZonePolygonPoints, {showHidden: false, depth: 2}));
|
||||
ExclZonePolygonPoints.forEach(PolygonPoint => {
|
||||
PolygonPoint.X = parseFloat(PolygonPoint.X);
|
||||
PolygonPoint.Y = parseFloat(PolygonPoint.Y);
|
||||
PolygonPoint.Z = parseFloat(PolygonPoint.Z);
|
||||
//console.log(" ExclZone Point= " + PolygonPoint.X + " " + PolygonPoint.Y + " " + PolygonPoint.Z) ;
|
||||
});
|
||||
|
||||
// Maybe in future there will be some ExclZone/rectangles with a very short side (~10cm)...
|
||||
// Avoid them being modified to a triangle/line:
|
||||
if (ExclZonePolygonPoints.length > 4)
|
||||
{
|
||||
ExclZonePolygonPoints = simplify(ExclZonePolygonPoints, tolerance, highQuality);
|
||||
var polyLengthNew = ExclZonePolygonPoints.length;
|
||||
// console.log(" ExclZone ExclZonePolygonPoints-New= " + polyLengthNew) ;
|
||||
|
||||
if (polyLengthOrg != polyLengthNew)
|
||||
console.log(" ExclZone Bldg " + BuildingName + " / room " + Room.RoomId + " / wallIdx " + wallIdx + " / EzIdx " + EzIdx + ": " + " ExclZone: length changes from " + polyLengthOrg + " to " + polyLengthNew) ;
|
||||
|
||||
// write simplified data back, part 1:
|
||||
ExclusionZone.ExclusionZoneElement.PolygonPoint = ExclZonePolygonPoints; //CHECK (e.g. bldg_1199)
|
||||
} else {
|
||||
console.log(" ExclZone Bldg " + BuildingName + " / room " + Room.RoomId + " / wallIdx " + wallIdx + " / EzIdx " + EzIdx + ": " + " Skip due to short length: " + polyLengthOrg) ;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// write simplified data back, part 2:
|
||||
Outerwall.ExclusionZones.ExclusionZone = ExclusionZonesArray //CHECK (e.g. bldg_1199)
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
var Rooms = jsonContent.BuildingVulnerability;
|
||||
var ausgabe = js2xmlparser.parse("BuildingVulnerability", Rooms);
|
||||
|
||||
var formattedXml = format(ausgabe, {
|
||||
collapseContent: true,
|
||||
lineSeparator: '\n'
|
||||
});
|
||||
|
||||
|
||||
|
||||
fs.writeFileSync(OriginalVWMFile, formattedXml, function(err) {
|
||||
// If an error occurred, show it
|
||||
if (err) {
|
||||
console.log("Error on writing file: " + OriginalVWMFile);
|
||||
console.err(err);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/********************************************************************************************************/
|
||||
} // end exports
|
||||
Vendored
Executable
+108
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/nodejs
|
||||
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Manfred Gronak, 2021-03
|
||||
|
||||
var fs = require("fs");
|
||||
var parser = require('xml2json');
|
||||
var js2xmlparser = require('js2xmlparser');
|
||||
var format = require('xml-formatter');
|
||||
|
||||
/****************** Hier editieren **********************/
|
||||
// Das ist der Transistion Factor, der für alle vertikalen Transitionen eingetragen werden soll
|
||||
// Muss ausgetestet werden.
|
||||
var TransitionFactor_vertical = 0.15;
|
||||
var TransitionFactor_horizontal_min = 0.10;
|
||||
|
||||
var TransitionFactor_horizontal_min_limit = 0.05;
|
||||
/********************************************************/
|
||||
|
||||
if (process.argv.length === 2) {
|
||||
console.error('Filename for VWM expected');
|
||||
process.exit(1);
|
||||
}
|
||||
const OriginalVWMFile = process.argv[2];
|
||||
|
||||
|
||||
var VWMFileNeu = OriginalVWMFile + "_neu";
|
||||
|
||||
var content = fs.readFileSync(OriginalVWMFile);
|
||||
|
||||
var jsonFileInhalt = parser.toJson(content);
|
||||
var jsonContent = JSON.parse(jsonFileInhalt);
|
||||
|
||||
var i;
|
||||
var RoomId;
|
||||
var NeighborRoomRoomId;
|
||||
var index;
|
||||
|
||||
console.log(Object.keys(jsonContent.BuildingVulnerability.Rooms.Room).length + " Rooms detected");
|
||||
|
||||
for (i = 0; i < Object.keys(jsonContent.BuildingVulnerability.Rooms.Room).length; i++) {
|
||||
// Reduzierung auf die Etage
|
||||
console.log("RaumID" + jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId);
|
||||
RoomId = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId / 100);
|
||||
// console.log(RoomId);
|
||||
var j;
|
||||
// console.log(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms);
|
||||
// Test, ob ein Raum keine Nachbarraeume hat. Wenn dann entfernen
|
||||
if (!jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom) {
|
||||
console.log("Element RoomId " + jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId + " wird entfernt");
|
||||
delete jsonContent.BuildingVulnerability.Rooms.Room[i];
|
||||
} else {
|
||||
// console.log(Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[0].NeighborRooms.NeighborRoom).length);
|
||||
for (j = 0; j < Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length; j++) {
|
||||
|
||||
// console.log(jsonContent.BuildingVulnerability.Rooms.Room[0].NeighborRooms.NeighborRoom.NeighborRoom.RoomId);
|
||||
// Test, ob Raeume in der gleiche Etage liegen. Wenn nicht dann Transistion Faktoren einschreiben
|
||||
if (Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length == 1) {
|
||||
index = i;
|
||||
NeighborRoomRoomId = jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.RoomId;
|
||||
NeighborRoomId = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.RoomId / 100);
|
||||
if (RoomId != NeighborRoomId)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.TransitionFactor = TransitionFactor_vertical;
|
||||
if (RoomId == NeighborRoomId) {
|
||||
if (jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.TransitionFactor <= TransitionFactor_horizontal_min_limit)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom.TransitionFactor = TransitionFactor_horizontal_min;
|
||||
}
|
||||
} else {
|
||||
if (typeof jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j] !== 'undefined') {
|
||||
NeighborRoomId = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].RoomId / 100);
|
||||
|
||||
if (RoomId != NeighborRoomId)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].TransitionFactor = TransitionFactor_vertical;
|
||||
if (RoomId == NeighborRoomId) {
|
||||
// if (jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].TransitionFactor <= TransitionFactor_horizontal_min_limit)
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j].TransitionFactor = TransitionFactor_horizontal_min;
|
||||
}
|
||||
} else {
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.TransitionFactor = TransitionFactor_vertical;
|
||||
}
|
||||
|
||||
|
||||
} // end if
|
||||
// end for
|
||||
} // end else
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// delete jsonContent.BuildingVulnerability.Rooms.Room[index].NeighborRooms.NeighborRoom.NeighborRoom;
|
||||
// jsonContent.BuildingVulnerability.Rooms.Room[index].NeighborRooms.NeighborRoom["TransitionFactor"] = TransitionFactor_vertical;
|
||||
// jsonContent.BuildingVulnerability.Rooms.Room[index].NeighborRooms.NeighborRoom["RoomId"] = NeighborRoomRoomId;
|
||||
|
||||
|
||||
var Rooms = jsonContent.BuildingVulnerability;
|
||||
|
||||
var ausgabe = js2xmlparser.parse("BuildingVulnerability", Rooms);
|
||||
var formattedXml = format(ausgabe, {
|
||||
collapseContent: true,
|
||||
lineSeparator: '\n'
|
||||
});
|
||||
|
||||
|
||||
fs.writeFile(VWMFileNeu, formattedXml, function (err) {
|
||||
console.log(VWMFileNeu + " Datei geschrieben"); // Datei geschrieben
|
||||
});
|
||||
Vendored
Executable
+122
@@ -0,0 +1,122 @@
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Manfred Gronak, , 2021-05
|
||||
|
||||
var fs = require("fs");
|
||||
var parser = require('xml2json');
|
||||
|
||||
module.exports = function() {
|
||||
|
||||
this.VwmXmlToWrl = function VwmXmlToWrl(OriginalxmlFile) {
|
||||
console.log(" VwmXmlToWrl: "+ OriginalxmlFile); // Datei geschrieben
|
||||
|
||||
// if (OriginalxmlFile.includes("bldg_1287.flt.VWM_Building.xml")) {
|
||||
// console.log(" Skip VwmXmlToWrl: "+ OriginalxmlFile); // Datei geschrieben
|
||||
// } else {
|
||||
// return;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
var coordIndex = "]\n}\ncoordIndex [ ";
|
||||
var counter = 0;
|
||||
|
||||
var wrl_filename = OriginalxmlFile + ".wrl";
|
||||
|
||||
var content = fs.readFileSync(OriginalxmlFile);
|
||||
var jsonFileInhalt = parser.toJson(content);
|
||||
var jsonContent = JSON.parse(jsonFileInhalt);
|
||||
var i;
|
||||
|
||||
var resultfile = "#VRML V2.0 utf8\nBackground {\nskyColor 0.2 0.3 0.1}\nTransform {\ntranslation -2.5 -2.5 -2.5\n"
|
||||
resultfile = resultfile + "children [\n Shape {\nappearance Appearance {\nmaterial Material {\n";
|
||||
resultfile = resultfile + "diffuseColor 1 0 1\n}\n}\ngeometry IndexedFaceSet {\nsolid FALSE\n";
|
||||
resultfile = resultfile + "coord Coordinate {\npoint [\n";
|
||||
|
||||
var RoomArray = jsonContent.BuildingVulnerability.Rooms.Room;
|
||||
if (RoomArray == null) {
|
||||
console.log("Datei " + OriginalxmlFile + ": " + " WARNING, no RoomArray detected");
|
||||
return;
|
||||
}
|
||||
|
||||
if (Array.isArray(RoomArray)) {
|
||||
// console.log("1Array: ");
|
||||
} else {
|
||||
// No Array..
|
||||
// wrap obj into an array to ensure 'RoomArray.forEach(...'
|
||||
var dummy = new Array;
|
||||
dummy[0] = RoomArray;
|
||||
RoomArray = dummy;
|
||||
}
|
||||
|
||||
|
||||
|
||||
RoomArray.forEach(Room => {
|
||||
|
||||
var OuterWallArray = Room.RoomOuterWalls.OuterWall;
|
||||
|
||||
if (Array.isArray(OuterWallArray)) {
|
||||
|
||||
OuterWallArray.forEach(Outerwall => {
|
||||
// console.log("Array: " + Outerwall.OuterWallAreaElement);
|
||||
var n = 0;
|
||||
var PolygonPoints = Outerwall.OuterWallAreaElement.PolygonPoint;
|
||||
|
||||
PolygonPoints.forEach(PolygonPoint => {
|
||||
// console.log(PolygonPoint.X + " " + PolygonPoint.Y + " " + PolygonPoint.Z) ;
|
||||
resultfile = resultfile + PolygonPoint.X + " " + PolygonPoint.Y + " " + PolygonPoint.Z + ",\n";
|
||||
|
||||
n = n + 1;
|
||||
counter = counter + 1;
|
||||
})
|
||||
|
||||
for (i = counter - n; i < counter; i++) {
|
||||
coordIndex = coordIndex + " " + i + ",";
|
||||
}
|
||||
coordIndex = coordIndex + " -1\n";
|
||||
});
|
||||
|
||||
} else {
|
||||
// console.log("NoArray: " + OuterWallArray);
|
||||
|
||||
if (OuterWallArray != undefined) {
|
||||
// RoomArray is object:
|
||||
// that means OuterWallArray could be used as (a single) Outerwall
|
||||
// console.log("OBJ" + OuterWallArray);
|
||||
|
||||
var n = 0;
|
||||
var PolygonPoints = OuterWallArray.OuterWallAreaElement.PolygonPoint;
|
||||
|
||||
PolygonPoints.forEach(PolygonPoint => {
|
||||
// console.log(PolygonPoint.X + " " + PolygonPoint.Y + " " + PolygonPoint.Z) ;
|
||||
resultfile = resultfile + PolygonPoint.X + " " + PolygonPoint.Y + " " + PolygonPoint.Z + ",\n";
|
||||
|
||||
n = n + 1;
|
||||
counter = counter + 1;
|
||||
})
|
||||
|
||||
for (i = counter - n; i < counter; i++) {
|
||||
coordIndex = coordIndex + " " + i + ",";
|
||||
}
|
||||
coordIndex = coordIndex + " -1\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
resultfile = resultfile + coordIndex;
|
||||
resultfile = resultfile + " ]\n}\n}\n]\n}\n";
|
||||
|
||||
fs.writeFileSync(wrl_filename, resultfile, function(err) {
|
||||
// If an error occurred, show it
|
||||
if(err)
|
||||
{
|
||||
console.log("Error on writing file: " + wrl_filename);
|
||||
console.err(err);
|
||||
}
|
||||
});
|
||||
|
||||
} // end of function
|
||||
} // export
|
||||
Vendored
Executable
+86
@@ -0,0 +1,86 @@
|
||||
// $Id$
|
||||
// $HeadURL$
|
||||
// $Author$
|
||||
// Created by Manfred Gronak, 2021-03
|
||||
|
||||
var fs = require("fs");
|
||||
var parser = require('xml2json');
|
||||
var util = require('util');
|
||||
|
||||
|
||||
|
||||
if (process.argv.length === 2) {
|
||||
console.error('Filename for VWM expected');
|
||||
process.exit(1);
|
||||
}
|
||||
const OriginalxmlFile = process.argv[2];
|
||||
|
||||
|
||||
|
||||
var content = fs.readFileSync(OriginalxmlFile);
|
||||
|
||||
var jsonFileInhalt = parser.toJson(content);
|
||||
|
||||
|
||||
var jsonContent = JSON.parse(jsonFileInhalt);
|
||||
|
||||
var i;
|
||||
|
||||
for (i = 0; i < Object.keys(jsonContent.BuildingVulnerability.Rooms.Room).length; i++) {
|
||||
|
||||
// console.log("1 SHGGS " + j + "-" + util.inspect(jsonContent.BuildingVulnerability.Rooms.Room, {showHidden: false, depth: 1}));
|
||||
|
||||
var RoomId = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId - 2000);
|
||||
RoomId = ~~(RoomId % 100);
|
||||
|
||||
var floor = ~~(jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId - 2000);
|
||||
floor = ~~(floor / 100);
|
||||
|
||||
if (RoomId == 1)
|
||||
console.log("***** floor=" + floor);
|
||||
|
||||
console.log(jsonContent.BuildingVulnerability.Rooms.Room[i].RoomId);
|
||||
|
||||
|
||||
|
||||
if (!jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom) {
|
||||
console.log("Keine NeighborRooms - muss entfernt werden");
|
||||
} else {
|
||||
|
||||
// console.log("2 SHGGS " + j + "-" + util.inspect(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom, {showHidden: false, depth: 1}));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (!Array.isArray(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom)) {
|
||||
// wrap obj into an array
|
||||
var dummy = new Array;
|
||||
dummy[0] = jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom;
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom = dummy;
|
||||
}
|
||||
|
||||
// console.log("Keine NeighborRooms - else" + Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length);
|
||||
|
||||
if (!Array.isArray(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom)) {
|
||||
// wrap obj into an array
|
||||
var dummy = new Array;
|
||||
dummy[0] = jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom;
|
||||
jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom = dummy;
|
||||
}
|
||||
|
||||
var j;
|
||||
for (j = 0; j < Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length; j++) {
|
||||
if (!jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j])
|
||||
continue;
|
||||
// console.log("XXX" + jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom);
|
||||
|
||||
// if (Object.keys(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom).length == 1) {
|
||||
// console.log(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom.NeighborRoom);
|
||||
// } else {
|
||||
console.log(jsonContent.BuildingVulnerability.Rooms.Room[i].NeighborRooms.NeighborRoom[j]);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user