Skip to content

Commit e1972b1

Browse files
committed
Changed "apply void" to "ignore void" to make use more clear, updated readme
1 parent 1707a0f commit e1972b1

File tree

11 files changed

+153
-165
lines changed

11 files changed

+153
-165
lines changed

GUI_code/Ext_GUI.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,9 @@ def runCode(input_path,
261261
json_dictionary["IFC"]["Div objects"] = div_string.split()
262262

263263
if div_settings.simple_geo.get():
264-
json_dictionary["IFC"]["Apply voids"] = 2
264+
json_dictionary["IFC"]["Ignore voids"] = 2
265265
else:
266-
json_dictionary["IFC"]["Apply voids"] = 0
266+
json_dictionary["IFC"]["Ignore voids"] = 0
267267

268268
footprint_elevation = float(footprint_settings.footprint_elevation.get())
269269
if footprint_settings.footprint_unit.get() == "mm":

README.md

Lines changed: 92 additions & 86 deletions
Large diffs are not rendered by default.

inc/DataManager.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ void DataManager::updateShapeMemory(IfcSchema::IfcProduct* product, TopoDS_Shape
689689
void DataManager::applyVoids()
690690
{
691691
//TODO: make this work with the opening objects list
692-
std::cout << CommunicationStringEnum::getString(CommunicationStringID::infoApplyVoids) << std::endl;
692+
std::cout << CommunicationStringEnum::getString(CommunicationStringID::infoIgnoreVoids) << std::endl;
693693
timedVoidShapeAdjust<IfcSchema::IfcWall>("IfcWall");
694694
timedVoidShapeAdjust<IfcSchema::IfcSlab>("IfcSlab");
695695
timedVoidShapeAdjust<IfcSchema::IfcRoof>("IfcRoof");
@@ -1093,7 +1093,7 @@ void DataManager::indexGeo()
10931093
}
10941094
std::cout << std::endl;
10951095
// find valid voids
1096-
if (settingsCollection.applyVoidGrade() == 1)
1096+
if (settingsCollection.ignoreVoidGrade() == 1)
10971097
{
10981098
applyVoids();
10991099
}
@@ -1470,7 +1470,7 @@ TopoDS_Shape DataManager::getObjectShape(IfcSchema::IfcProduct* product, bool is
14701470
std::string objectType = product->data().type()->name();
14711471
std::unordered_set<std::string> openingObjects = SettingsCollection::getInstance().getOpeningObjectsList();
14721472

1473-
int simplefyGeoGrade = SettingsCollection::getInstance().applyVoidGrade();
1473+
int simplefyGeoGrade = SettingsCollection::getInstance().ignoreVoidGrade();
14741474

14751475
if (simplefyGeoGrade == 0) { isSimple = false; }
14761476
else if (simplefyGeoGrade == 2) { isSimple = true; }

inc/IOManager.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,12 @@ void IOManager::printSummary()
209209
{
210210
std::cout << CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::indent) << settingsCollection.desiredRotation() << "\n";
211211
}
212-
std::cout << "- Apply void grade:\n";
213-
std::cout << CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::indent) << settingsCollection.applyVoidGrade() << "\n";
212+
std::cout << "- Ignore void grade:\n";
213+
std::cout << CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::indent) << settingsCollection.ignoreVoidGrade() << "\n";
214214
std::cout << "- Simplify geometry:\n";
215215
std::cout << boolToString(settingsCollection.simplefyGeo()) << "\n";
216216
std::cout << "- Ignore simplification for: \n";
217-
std::cout << CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::indent) << settingsCollection.getIgnoreSimplificationList().size() << std::endl;
217+
std::cout << CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::indent) << settingsCollection.getIgnoreSimplificationList().size() << " object(s)" << std::endl;
218218
std::cout << "- Space dividing objects:\n";
219219
if (settingsCollection.useDefaultDiv())
220220
{
@@ -268,9 +268,9 @@ void IOManager::printSummary()
268268
std::cout << "- Max thread count\n";
269269
std::cout << CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::indent) << settingsCollection.threadcount() << "\n\n";
270270

271-
if (settingsCollection.applyVoidGrade() != 0 && settingsCollection.summaryVoxels() ||
272-
settingsCollection.applyVoidGrade() != 0 && settingsCollection.makeV() ||
273-
settingsCollection.applyVoidGrade() != 0 && settingsCollection.make32())
271+
if (settingsCollection.ignoreVoidGrade() != 0 && settingsCollection.summaryVoxels() ||
272+
settingsCollection.ignoreVoidGrade() != 0 && settingsCollection.makeV() ||
273+
settingsCollection.ignoreVoidGrade() != 0 && settingsCollection.make32())
274274
{
275275
std::cout << errorWarningStringEnum::getString(ErrorID::warningSimplefication) << "\n\n";
276276
ErrorCollection::getInstance().addError(ErrorID::warningSimplefication);
@@ -406,7 +406,7 @@ nlohmann::json IOManager::settingsToJSON()
406406
std::string ifcOName = JsonObjectInEnum::getString(JsonObjectInID::IFC);
407407
std::string ifcRotationOName = JsonObjectInEnum::getString(JsonObjectInID::IFCRotationAngle);
408408
std::string ifcDivOName = JsonObjectInEnum::getString(JsonObjectInID::IFCDivObject);
409-
std::string ifcApplyVoidOName = JsonObjectInEnum::getString(JsonObjectInID::IFCapplyVoids);
409+
std::string ifcignoreVoidOName = JsonObjectInEnum::getString(JsonObjectInID::IFCignoreVoids);
410410
std::string ifcSimpleOName = JsonObjectInEnum::getString(JsonObjectInID::IFCsimplefyGeo);
411411
std::string ifcIgnoreSimpleOName = JsonObjectInEnum::getString(JsonObjectInID::IFCignoreSimple);
412412

@@ -426,7 +426,7 @@ nlohmann::json IOManager::settingsToJSON()
426426
{
427427
ifcJSON[ifcDivOName] = settingsCollection.getCustomDivList();
428428
}
429-
ifcJSON[ifcApplyVoidOName] = settingsCollection.applyVoidGrade();
429+
ifcJSON[ifcignoreVoidOName] = settingsCollection.ignoreVoidGrade();
430430
ifcJSON[ifcSimpleOName] = settingsCollection.simplefyGeo();
431431
ifcJSON[ifcIgnoreSimpleOName] = settingsCollection.getIgnoreSimplificationList();
432432
settingsJSON[ifcOName] = ifcJSON;

inc/cjCreator.cpp

Lines changed: 21 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4008,22 +4008,24 @@ std::vector<CJT::GeoObject> CJGeoCreator::makeLoDe0(DataManager* h, CJT::Kernel*
40084008
SettingsCollection& settingsCollection = SettingsCollection::getInstance();
40094009
std::cout << CommunicationStringEnum::getString(CommunicationStringID::infoComputingLoDe0) << std::endl;
40104010
auto startTime = std::chrono::steady_clock::now();
4011-
4012-
if (storeyObjects_.empty()){makeStoreyObjects(h);}
40134011
finishedLoDe0_ = true;
40144012

4015-
std::vector< CJT::GeoObject> geoObjectList; // final output collection
4013+
gp_Trsf localRotationTrsf;
4014+
localRotationTrsf.SetRotation(gp_Ax1(gp_Pnt(0, 0, 0), gp_Vec(0, 0, 1)), -settingsCollection.gridRotation());
40164015

4016+
std::vector< CJT::GeoObject> geoObjectList; // final output collection
40174017
auto spatialIndx = h->getIndexPointer();
4018-
4018+
4019+
std::vector<TopoDS_Shape> collectionShape;
40194020
for (auto it = spatialIndx->begin(); it != spatialIndx->end(); ++ it)
40204021
{
40214022
Value test = *it;
40224023
std::shared_ptr<IfcProductSpatialData> lookup = h->getLookup(test.second);
40234024
TopoDS_Shape currentShape = lookup->getProductShape();
40244025
if (currentShape.IsNull()) { continue; }
4026+
currentShape.Move(localRotationTrsf);
4027+
40254028

4026-
CJT::GeoObject geoObject = kernel->convertToJSON(currentShape, "4.0");
40274029
IfcSchema::IfcProduct* currentProduct = lookup->getProductPtr();
40284030

40294031
nlohmann::json attributeMap;
@@ -4034,56 +4036,29 @@ std::vector<CJT::GeoObject> CJGeoCreator::makeLoDe0(DataManager* h, CJT::Kernel*
40344036
}
40354037

40364038
int faceCount = 0;
4037-
for (TopExp_Explorer explorer(currentShape, TopAbs_FACE); explorer.More(); explorer.Next()) { faceCount++; }
4039+
for (TopExp_Explorer explorer(currentShape, TopAbs_FACE); explorer.More(); explorer.Next())
4040+
{
4041+
faceCount++;
4042+
}
40384043
std::vector<int>TypeValueList(faceCount, 0);
40394044

4045+
CJT::GeoObject geoObject = kernel->convertToJSON(currentShape, "4.0");
40404046
geoObject.setSurfaceTypeValues(TypeValueList);
40414047
geoObject.appendSurfaceData(attributeMap);
40424048
geoObjectList.emplace_back(geoObject);
4043-
}
4044-
4045-
4046-
40474049

4048-
4049-
/*for (const std::shared_ptr<CJT::CityObject>& storeyObject : storeyObjects_)
4050+
collectionShape.emplace_back(currentShape);
4051+
}
4052+
if (settingsCollection.createOBJ())
40504053
{
4051-
std::vector<std::string> storeyGuidList = storeyObject->getAttributes()["IFC Guid"];
4052-
std::vector< IfcSchema::IfcBuildingStorey*> ifcStoreyList = fetchStoreyObjects(h, storeyGuidList);
4053-
4054-
for (IfcSchema::IfcBuildingStorey* currentStorey : ifcStoreyList)
4055-
{
4056-
IfcSchema::IfcRelContainedInSpatialStructure::list::ptr containedStructure = currentStorey->ContainsElements()->as<IfcSchema::IfcRelContainedInSpatialStructure>();
4057-
for (auto csit = containedStructure->begin(); csit != containedStructure->end(); ++csit)
4058-
{
4059-
IfcSchema::IfcProduct::list::ptr storeyRelatedProducts = (*csit)->RelatedElements();
4060-
for (auto srit = storeyRelatedProducts->begin(); srit != storeyRelatedProducts->end(); ++srit)
4061-
{
4062-
IfcSchema::IfcProduct* currentProduct = *srit;
4063-
TopoDS_Shape currentShape = h->getObjectShapeFromMem(currentProduct, true);
4064-
4065-
if (currentShape.IsNull()) { continue; }
4066-
CJT::GeoObject geoObject = kernel->convertToJSON(currentShape, "4.0");
4067-
4068-
nlohmann::json attributeMap;
4069-
attributeMap[CJObjectEnum::getString(CJObjectID::CJType)] = "+" + currentProduct->data().type()->name();
4070-
nlohmann::json attributeList = h->collectPropertyValues(currentProduct->GlobalId());
4071-
for (auto jsonObIt = attributeList.begin(); jsonObIt != attributeList.end(); ++jsonObIt) {
4072-
attributeMap[sourceIdentifierEnum::getString(sourceIdentifierID::ifc) + jsonObIt.key()] = jsonObIt.value();
4073-
}
4074-
4075-
int faceCount = 0;
4076-
for (TopExp_Explorer explorer(currentShape, TopAbs_FACE); explorer.More(); explorer.Next()) { faceCount++; }
4077-
std::vector<int>TypeValueList(faceCount, 0);
4054+
helperFunctions::writeToOBJ(collectionShape, settingsCollection.getOutputBasePath() + fileExtensionEnum::getString(fileExtensionID::OBJLoDe0));
4055+
}
40784056

4079-
geoObject.setSurfaceTypeValues(TypeValueList);
4080-
geoObject.appendSurfaceData(attributeMap);
4081-
geoObjectList.emplace_back(geoObject);
4082-
}
4083-
}
4084-
}
4057+
if (settingsCollection.createSTEP())
4058+
{
4059+
helperFunctions::writeToSTEP(collectionShape, settingsCollection.getOutputBasePath() + fileExtensionEnum::getString(fileExtensionID::STEPLoDe0));
40854060
}
4086-
*/
4061+
40874062
printTime(startTime, std::chrono::steady_clock::now());
40884063
garbageCollection();
40894064
return geoObjectList;

inc/helper.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3159,6 +3159,7 @@ void helperFunctions::writeToOBJ(const std::vector<T>& theShapeList, const std::
31593159
std::vector<std::vector<int>> nestedTriangleIndx;
31603160
std::unordered_map<gp_XYZ, int, gp_XYZ_Hash, gp_XYZ_Equal> vertMap;
31613161

3162+
int counter = 0;
31623163
for (const T& theShape : theShapeList)
31633164
{
31643165
for (TopExp_Explorer exp(theShape, TopAbs_FACE); exp.More(); exp.Next()) {

inc/helper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#define USE_IFC4
1+
#define USE_IFC4x3
22
#define iterationVersion "0.2.5"
33

44
#ifdef USE_IFC2x3

inc/settingsCollection.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ void SettingsCollection::setIFCRelatedSettings(const nlohmann::json& json)
185185
setUseDefaultDiv(ifcDataJson);
186186
setUseProxy(ifcDataJson);
187187
setCustomDivList(ifcDataJson);
188-
setApplyVoidGrade(ifcDataJson);
188+
setIgnoreVoidGrade(ifcDataJson);
189189
setSimplefyGeo(ifcDataJson);
190190
setIgnoreSimplificationList(ifcDataJson);
191191
setCorrectPlacement(ifcDataJson);
@@ -834,27 +834,27 @@ void SettingsCollection::setUseProxy(const nlohmann::json& json)
834834
return;
835835
}
836836

837-
void SettingsCollection::setApplyVoidGrade(const nlohmann::json& json)
837+
void SettingsCollection::setIgnoreVoidGrade(const nlohmann::json& json)
838838
{
839-
std::string applyVoidOName = JsonObjectInEnum::getString(JsonObjectInID::IFCapplyVoids);
840-
if (json.contains(applyVoidOName))
839+
std::string ignoreVoidOName = JsonObjectInEnum::getString(JsonObjectInID::IFCignoreVoids);
840+
if (json.contains(ignoreVoidOName))
841841
{
842842
try
843843
{
844-
int applyVoidInt = getJsonInt(json[applyVoidOName], false, false);
844+
int ignoreVoidInt = getJsonInt(json[ignoreVoidOName], false, false);
845845

846-
if (applyVoidInt < 0 && applyVoidInt > 3)
846+
if (ignoreVoidInt < 0 && ignoreVoidInt > 3)
847847
{
848848
//TODO: add error
849849
return;
850850
}
851851

852-
setApplyVoidGrade(applyVoidInt);
852+
setIgnoreVoidGrade(ignoreVoidInt);
853853
}
854854
catch (const ErrorID& exceptionId)
855855
{
856-
ErrorCollection::getInstance().addError(exceptionId, applyVoidOName);
857-
throw std::string(errorWarningStringEnum::getString(exceptionId) + applyVoidOName);
856+
ErrorCollection::getInstance().addError(exceptionId, ignoreVoidOName);
857+
throw std::string(errorWarningStringEnum::getString(exceptionId) + ignoreVoidOName);
858858
}
859859
}
860860
return;

inc/settingsCollection.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ struct SettingsCollection {
8484
"IfcDoor",
8585
"IfcWindow"
8686
};
87-
int applyVoidGrade_ = 0;
87+
int ignoreVoidGrade_ = 0;
8888
bool simplefyGeo_ = true;
8989
std::vector<std::string> ignoreSimplificationList_;
9090

@@ -329,9 +329,9 @@ struct SettingsCollection {
329329
void setUseProxy(bool value) { useProxy_ = value; }
330330
void setUseProxy(const nlohmann::json& json);
331331

332-
int applyVoidGrade() const { return applyVoidGrade_; }
333-
void setApplyVoidGrade(int value) { applyVoidGrade_ = value; }
334-
void setApplyVoidGrade(const nlohmann::json& json);
332+
int ignoreVoidGrade() const { return ignoreVoidGrade_; }
333+
void setIgnoreVoidGrade(int value) { ignoreVoidGrade_ = value; }
334+
void setIgnoreVoidGrade(const nlohmann::json& json);
335335

336336
bool simplefyGeo() const { return simplefyGeo_; }
337337
void setSimplefyGeo(bool value) { simplefyGeo_ = value; }

inc/stringManager.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ std::string CommunicationStringEnum::getString(CommunicationStringID id)
6868
return CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::info) + "Internalizing Geometry of Construction Model";
6969
case CommunicationStringID::infoCreateSpatialIndex:
7070
return CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::info) + "Create Spatial Index";
71-
case CommunicationStringID::infoApplyVoids:
72-
return CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::info) + "apply voids";
71+
case CommunicationStringID::infoIgnoreVoids:
72+
return CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::info) + "Ignore voids";
7373
case CommunicationStringID::infoFoundUnits:
7474
return CommunicationStringImportanceEnum::getString(CommunicationStringImportanceID::info) + "Found units:";
7575
case CommunicationStringID::infoDefaultVolumeUnit:
@@ -448,6 +448,8 @@ std::string fileExtensionEnum::getString(fileExtensionID id)
448448
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDc1" + getString(fileExtensionID::OBJ);
449449
case fileExtensionID::OBJLoDd1:
450450
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDd1" + getString(fileExtensionID::OBJ);
451+
case fileExtensionID::OBJLoDe0:
452+
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDe0" + getString(fileExtensionID::OBJ);
451453
case fileExtensionID::OBJLoDe1:
452454
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDe1" + getString(fileExtensionID::OBJ);
453455
case fileExtensionID::OBJLoD32:
@@ -477,6 +479,8 @@ std::string fileExtensionEnum::getString(fileExtensionID id)
477479
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDc1" + getString(fileExtensionID::STEP);
478480
case fileExtensionID::STEPLoDd1:
479481
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDd1" + getString(fileExtensionID::STEP);
482+
case fileExtensionID::STEPLoDe0:
483+
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDe0" + getString(fileExtensionID::STEP);
480484
case fileExtensionID::STEPLoDe1:
481485
return getString(fileExtensionID::dash) + getString(fileExtensionID::exterior) + "LoDe1" + getString(fileExtensionID::STEP);
482486
case fileExtensionID::STEPLoD32:
@@ -572,8 +576,8 @@ std::string JsonObjectInEnum::getString(JsonObjectInID id)
572576
return "Div objects";
573577
case JsonObjectInID::IFCsimplefyGeo:
574578
return "Simplify geometry";
575-
case JsonObjectInID::IFCapplyVoids:
576-
return "Apply voids";
579+
case JsonObjectInID::IFCignoreVoids:
580+
return "Ignore voids";
577581
case JsonObjectInID::IFCignoreSimple:
578582
return "Ignore simplification";
579583
case JsonObjectInID::IFCCorrentPlacement:

0 commit comments

Comments
 (0)