[TD]fix issues reported by 3d dimension testers

- correct interpretation of True vs Projected

- handle long subelement names in references

- fix "too small" value condition

- better error messages for bad dimension geometry
This commit is contained in:
wandererfan
2022-11-27 19:35:33 -05:00
committed by WandererFan
parent 1b547dff72
commit 17554e29f1
11 changed files with 148 additions and 64 deletions

View File

@@ -459,23 +459,25 @@ DimensionGeometryType TechDraw::isValidMultiEdge(ReferenceVector refs)
return isInvalid;
}
//must be an extent?
if (refs.size() > 2) {
return isMultiEdge;
}
auto objFeat0( dynamic_cast<TechDraw::DrawViewPart *>(refs.at(0).getObject()));
if ( !objFeat0 ) {
//probably redundant
throw Base::RuntimeError("Logic error in isValidMultiEdge");
}
//they both must start with "Edge"
if(TechDraw::DrawUtil::getGeomTypeFromName(refs.at(0).getSubName()) != "Edge" ||
TechDraw::DrawUtil::getGeomTypeFromName(refs.at(1).getSubName()) != "Edge") {
return isInvalid;
//they all must start with "Edge"
for (auto& ref : refs) {
if(TechDraw::DrawUtil::getGeomTypeFromName(ref.getSubName()) != "Edge" ) {
return isInvalid;
}
}
if (refs.size() > 2) {
//many edges, must be an extent?
return isMultiEdge;
}
//exactly 2 edges. could be angle, could be distance
int GeoId0( TechDraw::DrawUtil::getIndexFromName(refs.at(0).getSubName()) );
int GeoId1( TechDraw::DrawUtil::getIndexFromName(refs.at(1).getSubName()) );
TechDraw::BaseGeomPtr geom0 = objFeat0->getGeomByIndex(GeoId0);