-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathegadsIO129.patch
More file actions
108 lines (103 loc) · 3.63 KB
/
Copy pathegadsIO129.patch
File metadata and controls
108 lines (103 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
--- ESP/EngSketchPad/src/EGADS/src/egadsIO.cpp 2026-03-06 20:22:39.000000000 +0000
+++ ESP/EngSketchPad/src/EGADS/src/egadsIO.cpp 2026-04-15 13:40:55.990286766 +0000
@@ -105,7 +105,7 @@
#endif
-//#define INTERIM
+#define INTERIM
#define UVTOL 1.e-4
@@ -2665,6 +2665,20 @@
egadsBody *pbody = (egadsBody *) obj->blind;
pbody->shape = Exp.Current();
if (egads == 0) {
+ TopTools_IndexedMapOfShape FaceMap;
+ TopExp::MapShapes(pbody->shape, TopAbs_FACE, FaceMap);
+ int nNullSurf = 0;
+ for (int iFace = 1; iFace <= FaceMap.Extent(); iFace++) {
+ TopoDS_Face Face = TopoDS::Face(FaceMap(iFace));
+ Handle(Geom_Surface) hSurface = BRep_Tool::Surface(Face);
+ if (hSurface.IsNull()) nNullSurf++;
+ }
+ if (nNullSurf != 0) {
+/* printf(" EGADS Warning: Body %d has %d NULL Surfaces of %d Faces\n",
+ i, nNullSurf, FaceMap.Extent()); */
+ if (invalid != NULL) invalid[i-1] = 2;
+ continue;
+ }
BRepCheck_Analyzer fCheck(pbody->shape);
if (!fCheck.IsValid()) {
try {
@@ -2701,6 +2715,20 @@
egadsBody *pbody = (egadsBody *) obj->blind;
pbody->shape = Exp.Current();
if (egads == 0) {
+ TopTools_IndexedMapOfShape FaceMap;
+ TopExp::MapShapes(pbody->shape, TopAbs_FACE, FaceMap);
+ int nNullSurf = 0;
+ for (int iFace = 1; iFace <= FaceMap.Extent(); iFace++) {
+ TopoDS_Face Face = TopoDS::Face(FaceMap(iFace));
+ Handle(Geom_Surface) hSurface = BRep_Tool::Surface(Face);
+ if (hSurface.IsNull()) nNullSurf++;
+ }
+ if (nNullSurf != 0) {
+/* printf(" EGADS Warning: Body %d has %d NULL Surfaces of %d Faces\n",
+ i, nNullSurf, FaceMap.Extent()); */
+ if (invalid != NULL) invalid[i-1] = 2;
+ continue;
+ }
BRepCheck_Analyzer sCheck(pbody->shape);
if (!sCheck.IsValid()) {
try {
@@ -2743,6 +2771,20 @@
egadsBody *pbody = (egadsBody *) obj->blind;
pbody->shape = Exp.Current();
if (egads == 0) {
+ TopTools_IndexedMapOfShape FaceMap;
+ TopExp::MapShapes(pbody->shape, TopAbs_FACE, FaceMap);
+ int nNullSurf = 0;
+ for (int iFace = 1; iFace <= FaceMap.Extent(); iFace++) {
+ TopoDS_Face Face = TopoDS::Face(FaceMap(iFace));
+ Handle(Geom_Surface) hSurface = BRep_Tool::Surface(Face);
+ if (hSurface.IsNull()) nNullSurf++;
+ }
+ if (nNullSurf != 0) {
+/* printf(" EGADS Warning: Body %d has %d NULL Surfaces of %d Faces\n",
+ i, nNullSurf, FaceMap.Extent()); */
+ if (invalid != NULL) invalid[i-1] = 2;
+ continue;
+ }
BRepCheck_Analyzer sCheck(pbody->shape);
if (!sCheck.IsValid()) {
try {
@@ -2780,6 +2822,24 @@
}
}
}
+ if (invalid != NULL) {
+ int nInvalid = 0;
+ for (j = 0; j < i; j++) if (invalid[j] == 2) nInvalid++;
+ if (nInvalid == i) {
+ printf(" EGADS Error: No Valid Bodies!\n");
+ source.Nullify();
+ for (i = 0; i < nBody; i++) {
+ egObject *obj = mshape->bodies[i];
+ egadsBody *pbody = (egadsBody *) obj->blind;
+ delete pbody;
+ EG_deleteObject(mshape->bodies[i]);
+ }
+ delete [] mshape->bodies;
+ delete mshape;
+ EG_free(invalid);
+ return EGADS_NODATA;
+ }
+ }
stat = EG_makeObject(context, &omodel);
if (stat != EGADS_SUCCESS) {
@@ -2823,7 +2883,7 @@
continue;
}
if (invalid != NULL)
- if (invalid[i] == 1)
+ if (invalid[i] != 0)
EG_attributeAdd(pobj, ".invalid", ATTRSTRING, 1, NULL, NULL, name);
mshape->bodies[j] = mshape->bodies[i];
j++;