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
30import io
31import math
32
33import manufacturingtoolkit.CadExMTK as mtk
34
35import MTKConverter_PartProcessor as part_proc
36import MTKConverter_MachiningProcessor as mach_proc
37import MTKConverter_MoldingProcessor as mold_proc
38import MTKConverter_SheetMetalProcessor as sm_proc
39import MTKConverter_WallThicknessProcessor as wt_proc
40
41class Pair:
42 def __init__(self, theFirst: float, theSecond: float):
43 self.First = theFirst
44 self.Second = theSecond
45
46 def __repr__(self):
47 return f"Pair({self.First}, {self.Second})"
48
49 def __str__(self):
50 return f"{self.First:.2f} x {self.Second:.2f}"
51
52class Dimension:
53 def __init__(self, theX: float, theY: float, theZ: float):
54 self.X = theX
55 self.Y = theY
56 self.Z = theZ
57
58 def __repr__(self):
59 return f"Dimension({self.X}, {self.Y}, {self.Z})"
60
61 def __str__(self):
62 return f"{self.X:.2f} x {self.Y:.2f} x {self.Z:.2f}"
63
64class Direction:
65 def __init__(self, theX: float, theY: float, theZ: float):
66 self.X = theX
67 self.Y = theY
68 self.Z = theZ
69
70 def __repr__(self):
71 return f"Direction({self.X}, {self.Y}, {self.Z})"
72
73 def __str__(self):
74 return f"({self.X:.2f}, {self.Y:.2f}, {self.Z:.2f})"
75
76class Point:
77 def __init__(self, theX: float, theY: float, theZ: float):
78 self.X = theX
79 self.Y = theY
80 self.Z = theZ
81
82 def __repr__(self):
83 return f"Point({self.X}, {self.Y}, {self.Z})"
84
85 def __str__(self):
86 return f"({self.X:.2f}, {self.Y:.2f}, {self.Z:.2f})"
87
88class JSONWriter:
89 def __init__(self, theFile: io.TextIOBase, theStartNestingLevel = 0):
90 self.__myStream = theFile
91 self.__myNestingLevel = theStartNestingLevel
92 self.__myPrevNestingLevel = theStartNestingLevel - 1
93 self.__myIsInit = False
94
95 def OpenSection(self, theName = ""):
96 self.__DoOpenSection (theName, '{')
97
98 def OpenArraySection (self, theName: str):
99 self.__DoOpenSection(theName, '[')
100
101 def CloseSection(self):
102 self.__DoCloseSection('}')
103
104 def CloseArraySection(self):
105 self.__DoCloseSection(']')
106
107 def WriteData(self, theParamName: str, theValue):
108 aValueStr = str(theValue)
109 if type(theValue) is float:
110 aValueStr = f"{theValue:.2f}"
111 self.__Stream().write("\"" + theParamName + "\": \"" + aValueStr + "\"")
112
113 def WriteRawData(self, theRawData: str):
114 self.__PrepareStream()
115 self.__myStream.write(theRawData)
116
117 def WriteEmptyArray (self, theParamName: str):
118 self.__Stream().write("\"" + theParamName + "\": []")
119
120 def NestingLevel(self):
121 return self.__myNestingLevel
122
123 def __DoOpenSection(self, theName: str, theOpenBracketSymbol: str):
124 aStream = self.__Stream()
125 if theName:
126 aStream.write("\"" + theName + "\": ")
127 aStream.write(theOpenBracketSymbol)
128 self.__myNestingLevel += 1
129
130 def __DoCloseSection (self, theCloseBracketSymbol: str):
131 self.__myNestingLevel -= 1
132 self.__Stream().write(theCloseBracketSymbol)
133
134 def __PrepareStream(self):
135 if self.__myNestingLevel == self.__myPrevNestingLevel:
136 self.__myStream.write(",")
137 self.__myPrevNestingLevel = self.__myNestingLevel
138 if self.__myIsInit:
139 self.__myStream.write('\n')
140 self.__myIsInit = True
141
142 def __Stream(self):
143 self.__PrepareStream()
144 for i in range(self.__myNestingLevel):
145 self.__myStream.write(" ")
146 return self.__myStream
147
148class FeatureGroupManager:
149 def __init__(self):
150 self.__myGroups = []
151
152 def AddGroupData (self,
153 theGroupName: str,
154 theGroupColor: str,
155 theFeatureData: str,
156 theFeatureNb: int):
157
158 aRes = -1
159 for i in range(len(self.__myGroups)):
160 aGroup = self.__myGroups[i]
161 if aGroup.myName == theGroupName:
162 aRes = i
163 break
164
165 if aRes == -1:
166 self.__myGroups.append(self.FeatureGroup(theGroupName, theGroupColor))
167 aRes = len(self.__myGroups) - 1
168
169
170 aGroup = self.__myGroups[aRes]
171 aGroup.myFeatureData.append(theFeatureData)
172 aGroup.myFeatureCount += theFeatureNb
173
174 def TotalFeatureCount(self):
175 aTotalFeatureCount = 0
176 for aGroup in self.__myGroups:
177 aTotalFeatureCount += aGroup.myFeatureCount
178 return aTotalFeatureCount
179
180 def Write(self, theWriter: JSONWriter):
181 for aGroup in self.__myGroups:
182 theWriter.OpenSection()
183 theWriter.WriteData("name", aGroup.myName)
184 theWriter.WriteData("color", aGroup.myColor)
185 theWriter.WriteData("totalGroupFeatureCount", aGroup.myFeatureCount)
186
187 aFeatureData = aGroup.myFeatureData
188 if aFeatureData:
189 aHasParams = "parameters" in aFeatureData[0]
190 if aHasParams:
191 theWriter.WriteData ("subGroupCount", len(aFeatureData))
192 theWriter.OpenArraySection ("subGroups")
193 for j in aFeatureData:
194 theWriter.WriteRawData(j)
195 theWriter.CloseArraySection()
196 else:
197 for j in aFeatureData:
198 theWriter.WriteRawData(j)
199
200 theWriter.CloseSection()
201
202 class FeatureGroup:
203 def __init__(self, theName: str, theColor: str):
204 self.myName = theName
205 self.myColor = theColor
206 self.myFeatureData = []
207 self.myFeatureCount = 0
208
209class OrderedFeatureList:
210 def __init__(self):
211 self.__myList = []
212
213 def Append(self, theFeature: mtk.MTKBase_Feature, theShapeIDs):
214 anInsertIndex = 0
215 for i in self.__myList:
216 aRes = OrderedFeatureList.__CompareFeatures(theFeature, i.Feature)
217 if aRes == 0:
218 i.Count += 1
219 i.ShapeIDs.append(theShapeIDs)
220 anInsertIndex = -1
221 break
222 elif aRes < 0:
223 break
224
225 anInsertIndex += 1
226
227 if anInsertIndex >= 0:
228 self.__myList.insert(anInsertIndex, self.FeatureData(theFeature, theShapeIDs))
229
230 def Size(self):
231 return len(self.__myList)
232
233 def GetFeature(self, theIndex: int):
234 return self.__GetFeatureData(theIndex).Feature
235
236 def GetFeatureCount(self, theIndex: int):
237 return self.__GetFeatureData(theIndex).Count
238
239 def GetFeatureShapeIDs(self, theIndex: int):
240 return self.__GetFeatureData(theIndex).ShapeIDs
241
242 def __GetFeatureData(self, theIndex: int):
243 return self.__myList[theIndex]
244
245 @staticmethod
246 def __CompareFeatures(theA: mtk.MTKBase_Feature, theB: mtk.MTKBase_Feature):
247 aComparator = mtk.MTKBase_FeatureComparator()
248 anALessThanB = aComparator(theA, theB)
249 if anALessThanB:
250 return -1
251
252 aBLessThanA = aComparator(theB, theA)
253 if aBLessThanA:
254 return 1
255
256 return 0
257
258 class FeatureData:
259 def __init__(self, theFeature: mtk.MTKBase_Feature, theShapeIDs):
260 self.Feature = theFeature
261 self.Count = 1
262 self.ShapeIDs = []
263 self.ShapeIDs.append(theShapeIDs)
264
265class MTKConverter_Report:
266 def __init__(self):
267 self.__myData = []
268
269 def AddData(self, theData: part_proc.MTKConverter_ProcessData):
270 self.__myData.append(theData)
271
272 def WriteToJSON(self, thePath: str):
273 aFile = open(thePath, "w")
274 if not aFile:
275 return False
276
277 aWriter = JSONWriter(aFile)
278 aWriter.OpenSection()
279 aWriter.WriteData("version", "1")
280
281 if not self.__myData:
282 aWriter.WriteData("error", "The model doesn't contain any parts.")
283 else:
284 aWriter.OpenArraySection("parts")
285 for aProcessData in self.__myData:
286 aWriter.OpenSection()
287 MTKConverter_Report.__WritePartProcessData(aWriter, aProcessData)
288 aWriter.CloseSection()
289 aWriter.CloseArraySection()
290 aWriter.CloseSection()
291
292 aFile.close()
293 return True
294
295 @staticmethod
296 def __WriteParameter(theWriter: JSONWriter, theParamName: str, theParamUnits: str, theParamValue):
297 theWriter.OpenSection()
298 theWriter.WriteData("name", theParamName)
299 theWriter.WriteData("units", theParamUnits)
300 theWriter.WriteData("value", theParamValue)
301 theWriter.CloseSection()
302
303 @staticmethod
304 def __WriteShapeIDs(theWriter: JSONWriter, theVector):
305 if not theVector:
306 return
307
308 theWriter.WriteData("featureCount", len(theVector))
309 theWriter.OpenArraySection("features")
310
311 for aShapeIDVector in theVector:
312 theWriter.OpenSection()
313 theWriter.WriteData("shapeIDCount", len(aShapeIDVector))
314 if not aShapeIDVector:
315 theWriter.WriteEmptyArray("shapeIDs")
316 else:
317 theWriter.OpenArraySection("shapeIDs")
318 for aShapeID in aShapeIDVector:
319 theWriter.OpenSection()
320 theWriter.WriteData("id", aShapeID)
321 theWriter.CloseSection()
322 theWriter.CloseArraySection()
323 theWriter.CloseSection()
324
325 theWriter.CloseArraySection()
326
327 @staticmethod
328 def __DoWriteFeatureDataToString (theFunc, theParamCount: int, theVector):
329 aStream = io.StringIO()
330 aWriter = JSONWriter(aStream, 7)
331
332 aWriter.OpenSection()
333 aWriter.WriteData("parametersCount", theParamCount)
334 aWriter.OpenArraySection("parameters")
335 theFunc(aWriter)
336 aWriter.CloseArraySection()
337 MTKConverter_Report.__WriteShapeIDs(aWriter, theVector)
338 aWriter.CloseSection()
339
340 aRes = aStream.getvalue()
341 aStream.close()
342 return aRes
343
344 @staticmethod
345 def __WriteFeatureDataToString0(theVector):
346 aStream = io.StringIO()
347 aWriter = JSONWriter(aStream, 6)
348
349 MTKConverter_Report.__WriteShapeIDs(aWriter, theVector)
350
351 aRes = aStream.getvalue()
352 aStream.close()
353 return aRes
354
355 @staticmethod
356 def __WriteFeatureDataToString1(theParamName: str, theParamUnits: str, theParamValue, theVector):
357 def WriteParams (theWriter: JSONWriter):
358 MTKConverter_Report.__WriteParameter(theWriter, theParamName, theParamUnits, theParamValue)
359 return MTKConverter_Report.__DoWriteFeatureDataToString(WriteParams, 1, theVector)
360
361 @staticmethod
362 def __WriteFeatureDataToString2(theParamName1: str, theParamUnits1: str, theParamValue1,
363 theParamName2: str, theParamUnits2: str, theParamValue2,
364 theVector):
365 def WriteParams (theWriter: JSONWriter):
366 MTKConverter_Report.__WriteParameter(theWriter, theParamName1, theParamUnits1, theParamValue1)
367 MTKConverter_Report.__WriteParameter(theWriter, theParamName2, theParamUnits2, theParamValue2)
368 return MTKConverter_Report.__DoWriteFeatureDataToString (WriteParams, 2, theVector)
369
370 @staticmethod
371 def __WriteFeatureDataToString3(theParamName1: str, theParamUnits1: str, theParamValue1,
372 theParamName2: str, theParamUnits2: str, theParamValue2,
373 theParamName3: str, theParamUnits3: str, theParamValue3,
374 theVector):
375 def WriteParams (theWriter: JSONWriter):
376 MTKConverter_Report.__WriteParameter(theWriter, theParamName1, theParamUnits1, theParamValue1)
377 MTKConverter_Report.__WriteParameter(theWriter, theParamName2, theParamUnits2, theParamValue2)
378 MTKConverter_Report.__WriteParameter(theWriter, theParamName3, theParamUnits3, theParamValue3)
379 return MTKConverter_Report.__DoWriteFeatureDataToString (WriteParams, 3, theVector)
380
381 @staticmethod
382 def __WriteFeatureDataToString4(theParamName1: str, theParamUnits1: str, theParamValue1,
383 theParamName2: str, theParamUnits2: str, theParamValue2,
384 theParamName3: str, theParamUnits3: str, theParamValue3,
385 theParamName4: str, theParamUnits4: str, theParamValue4,
386 theVector):
387 def WriteParams (theWriter: JSONWriter):
388 MTKConverter_Report.__WriteParameter(theWriter, theParamName1, theParamUnits1, theParamValue1)
389 MTKConverter_Report.__WriteParameter(theWriter, theParamName2, theParamUnits2, theParamValue2)
390 MTKConverter_Report.__WriteParameter(theWriter, theParamName3, theParamUnits3, theParamValue3)
391 MTKConverter_Report.__WriteParameter(theWriter, theParamName4, theParamUnits4, theParamValue4)
392 return MTKConverter_Report.__DoWriteFeatureDataToString (WriteParams, 4, theVector)
393
394 @staticmethod
395 def __MachiningFaceTypeToString(theType):
396 aFaceTypeMap = {
397 mtk.Machining_FT_FlatFaceMilled: "Flat Face Milled Face(s)",
398 mtk.Machining_FT_FlatSideMilled: "Flat Side Milled Face(s)",
399 mtk.Machining_FT_CurvedMilled: "Curved Milled Face(s)",
400 mtk.Machining_FT_CircularMilled: "Circular Milled Face(s)",
401 mtk.Machining_FT_Deburr: "Deburr Face(s)",
402 mtk.Machining_FT_ConvexProfileEdgeMilling: "Convex Profile Edge Milling Face(s)",
403 mtk.Machining_FT_ConcaveFilletEdgeMilling: "Concave Fillet Edge Milling Face(s)",
404 mtk.Machining_FT_FlatMilled: "Flat Milled Face(s)",
405 mtk.Machining_FT_TurnDiameter: "Turn Diameter Face(s)",
406 mtk.Machining_FT_TurnForm: "Turn Form Face(s)",
407 mtk.Machining_FT_TurnFace: "Turn Face Face(s)",
408 mtk.Machining_FT_Bore: "Bore Face(s)"
409 }
410
411 if theType in aFaceTypeMap:
412 return aFaceTypeMap[theType]
413 else:
414 return "Face(s)"
415
416 @staticmethod
417 def __MachiningFaceColor(theType):
418 aFaceTypeMap = {
419 mtk.Machining_FT_FlatFaceMilled: "(115, 251, 253)",
420 mtk.Machining_FT_FlatSideMilled: "(0, 35, 245)",
421 mtk.Machining_FT_CurvedMilled: "(22, 65, 124)",
422 mtk.Machining_FT_CircularMilled: "(255, 254, 145)",
423 mtk.Machining_FT_Deburr: "(0, 0, 0)",
424 mtk.Machining_FT_ConvexProfileEdgeMilling: "(240, 155, 89)",
425 mtk.Machining_FT_ConcaveFilletEdgeMilling: "(129, 127, 38)",
426 mtk.Machining_FT_FlatMilled: "(115, 43, 245)",
427 mtk.Machining_FT_TurnDiameter: "(88, 19, 94)",
428 mtk.Machining_FT_TurnForm: "(161, 251, 142)",
429 mtk.Machining_FT_TurnFace: "(239, 136, 190)",
430 mtk.Machining_FT_Bore: "(127, 130, 187)"
431 }
432
433 if theType in aFaceTypeMap:
434 return aFaceTypeMap[theType]
435 else:
436 return "(0, 0, 0)"
437
438 @staticmethod
439 def __MachiningHoleTypeToString(theType):
440 aHoleTypeMap = {
441 mtk.Machining_HT_Through: "Through Hole(s)",
442 mtk.Machining_HT_FlatBottom: "Flat Bottom Hole(s)",
443 mtk.Machining_HT_Blind: "Blind Hole(s)",
444 mtk.Machining_HT_Partial: "Partial Hole(s)"
445 }
446
447 if theType in aHoleTypeMap:
448 return aHoleTypeMap[theType]
449 else:
450 return "Hole(s)"
451
452 @staticmethod
453 def __MachiningHoleColor(theType):
454 aHoleTypeMap = {
455 mtk.Machining_HT_Through: "(240, 135, 132)",
456 mtk.Machining_HT_FlatBottom: "(235, 51, 36)",
457 mtk.Machining_HT_Blind: "(142, 64, 58)",
458 mtk.Machining_HT_Partial: "(58, 6, 3)"
459 }
460
461 if theType in aHoleTypeMap:
462 return aHoleTypeMap[theType]
463 else:
464 return "(0, 0, 0)"
465
466 @staticmethod
467 def __MachiningPocketTypeToString(theType):
468 aPocketTypeMap = {
469 mtk.Machining_PT_Closed: "Closed Pocket(s)",
470 mtk.Machining_PT_Open: "Open Pocket(s)",
471 mtk.Machining_PT_Through: "Through Pocket(s)"
472 }
473
474 if theType in aPocketTypeMap:
475 return aPocketTypeMap[theType]
476 else:
477 return "Pocket(s)"
478
479 @staticmethod
480 def __MachiningPocketColor(theType):
481 aPocketTypeMap = {
482 mtk.Machining_PT_Closed: "(81, 20, 0)",
483 mtk.Machining_PT_Open: "(189, 103, 37)",
484 mtk.Machining_PT_Through: "(255, 217, 188)"
485 }
486
487 if theType in aPocketTypeMap:
488 return aPocketTypeMap[theType]
489 else:
490 return "(0, 0, 0)"
491
492 @staticmethod
493 def __HemTypeToString(theType):
494 aHemTypeMap = {
495 mtk.SheetMetal_HBT_Flattened: "Flattened Hem Bend(s)",
496 mtk.SheetMetal_HBT_Open: "Open Hem Bend(s)",
497 mtk.SheetMetal_HBT_Teardrop: "Teardrop Hem Bend(s)",
498 mtk.SheetMetal_HBT_Rope: "Rope Hem Bend(s)",
499 mtk.SheetMetal_HBT_Rolled: "Rolled Hem Bend(s)"
500 }
501
502 if theType in aHemTypeMap:
503 return aHemTypeMap[theType]
504 else:
505 return "Hem Bend(s)"
506
507 @staticmethod
508 def __BendName(theBend: mtk.SheetMetal_Bend):
509 if mtk.SheetMetal_HemBend.CompareType(theBend):
510 aHemBend = mtk.SheetMetal_HemBend.Cast(theBend)
511 return MTKConverter_Report.__HemTypeToString(aHemBend.Type())
512 elif mtk.SheetMetal_CurvedBend.CompareType(theBend):
513 return "Curved Bend(s)"
514 return "Bend(s)"
515
516 @staticmethod
517 def __BendColor(theBend: mtk.SheetMetal_Bend):
518 if mtk.SheetMetal_HemBend.CompareType(theBend):
519 aHemBend = mtk.SheetMetal_HemBend.Cast(theBend)
520 aType = aHemBend.Type()
521
522 aHemTypeMap = {
523 mtk.SheetMetal_HBT_Flattened: "(22, 65, 124)",
524 mtk.SheetMetal_HBT_Open: "(42, 85, 144)",
525 mtk.SheetMetal_HBT_Teardrop: "(62, 105, 164)",
526 mtk.SheetMetal_HBT_Rope: "(82, 125, 184)",
527 mtk.SheetMetal_HBT_Rolled: "(102, 145, 204)"
528 }
529
530 if aType in aHemTypeMap:
531 return aHemTypeMap[aType]
532 else:
533 return "(0, 0, 0)"
534 elif mtk.SheetMetal_CurvedBend.CompareType(theBend):
535 return "(255, 254, 145)"
536 return "(0, 35, 245)"
537
538 @staticmethod
539 def __SheetMetalHoleName(theHole: mtk.SheetMetal_Hole):
540 if mtk.SheetMetal_ComplexHole.CompareType(theHole):
541 return "Complex Hole(s)"
542 return "Hole(s)"
543
544 @staticmethod
545 def __SheetMetalHoleColor(theHole: mtk.SheetMetal_Hole):
546 if mtk.SheetMetal_ComplexHole.CompareType(theHole):
547 return "(115, 43, 245)"
548 return "(129, 127, 38)"
549
550 @staticmethod
551 def __SmallDistanceIssueName(theIssue: mtk.DFMSheetMetal_SmallDistanceBetweenFeaturesIssue):
552 if mtk.DFMSheetMetal_SmallDistanceBetweenBendAndLouverIssue.CompareType(theIssue):
553 return "Small Distance Between Bend And Louver Issue(s)"
554 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndBendIssue.CompareType(theIssue):
555 return "Small Distance Between Extruded Hole And Bend Issue(s)"
556 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndEdgeIssue.CompareType(theIssue):
557 return "Small Distance Between Extruded Hole And Edge Issue(s)"
558 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHolesIssue.CompareType(theIssue):
559 return "Small Distance Between Extruded Holes Issue(s)"
560 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndBendIssue.CompareType(theIssue):
561 return "Small Distance Between Hole And Bend Issue(s)"
562 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndCutoutIssue.CompareType(theIssue):
563 return "Small Distance Between Hole And Cutout Issue(s)"
564 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndEdgeIssue.CompareType(theIssue):
565 return "Small Distance Between Hole And Edge Issue(s)"
566 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndLouverIssue.CompareType(theIssue):
567 return "Small Distance Between Hole And Louver Issue(s)"
568 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndNotchIssue.CompareType(theIssue):
569 return "Small Distance Between Hole And Notch Issue(s)"
570 elif mtk.DFMSheetMetal_SmallDistanceBetweenHolesIssue.CompareType(theIssue):
571 return "Small Distance Between Holes Issue(s)"
572 elif mtk.DFMSheetMetal_SmallDistanceBetweenNotchAndBendIssue.CompareType(theIssue):
573 return "Small Distance Between Notch And Bend Issue(s)"
574 elif mtk.DFMSheetMetal_SmallDistanceBetweenNotchesIssue.CompareType(theIssue):
575 return "Small Distance Between Notches Issue(s)"
576 elif mtk.DFMSheetMetal_SmallDistanceBetweenTabsIssue.CompareType(theIssue):
577 return "Small Distance Between Tabs Issue(s)"
578 return "Small Distance Between Feature(s)"
579
580 @staticmethod
581 def __SmallDistanceIssueColor(theIssue: mtk.DFMSheetMetal_SmallDistanceBetweenFeaturesIssue):
582 if mtk.DFMSheetMetal_SmallDistanceBetweenBendAndLouverIssue.CompareType(theIssue):
583 return "(195, 56, 19)"
584 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndBendIssue.CompareType(theIssue):
585 return "(212, 75, 90)"
586 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndEdgeIssue.CompareType(theIssue):
587 return "(198, 75, 105)"
588 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHolesIssue.CompareType(theIssue):
589 return "(170, 65, 120)"
590 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndBendIssue.CompareType(theIssue):
591 return "(239, 136, 190)"
592 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndCutoutIssue.CompareType(theIssue):
593 return "(127, 130, 187)"
594 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndEdgeIssue.CompareType(theIssue):
595 return "(240, 135, 132)"
596 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndLouverIssue.CompareType(theIssue):
597 return "(15, 5, 129)"
598 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndNotchIssue.CompareType(theIssue):
599 return "(235, 51, 36)"
600 elif mtk.DFMSheetMetal_SmallDistanceBetweenHolesIssue.CompareType(theIssue):
601 return "(142, 64, 58)"
602 elif mtk.DFMSheetMetal_SmallDistanceBetweenNotchAndBendIssue.CompareType(theIssue):
603 return "(58, 6, 3)"
604 elif mtk.DFMSheetMetal_SmallDistanceBetweenNotchesIssue.CompareType(theIssue):
605 return "(0, 215, 3)"
606 elif mtk.DFMSheetMetal_SmallDistanceBetweenTabsIssue.CompareType(theIssue):
607 return "(157, 160, 207)"
608 return "(0, 0, 0)"
609
610 @staticmethod
611 def __AddShapeFeature(theManager: FeatureGroupManager, theFeature: mtk.MTKBase_ShapeFeature, theCount: int, theShapeIdVector):
612 aFeature = theFeature
613
614 if mtk.Machining_TurningFace.CompareType(aFeature):
615 aTurningFace = mtk.Machining_TurningFace.Cast(aFeature)
616 aType = aTurningFace.Type()
617 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString1("Radius", "mm", aTurningFace.Radius(), theShapeIdVector)
618 theManager.AddGroupData(MTKConverter_Report.__MachiningFaceTypeToString(aType),
619 MTKConverter_Report.__MachiningFaceColor(aType),
620 aFeatureData, theCount)
621 elif mtk.Machining_Face.CompareType(aFeature):
622 aFace = mtk.Machining_Face.Cast(aFeature)
623 aType = aFace.Type()
624 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
625 theManager.AddGroupData(MTKConverter_Report.__MachiningFaceTypeToString(aType),
626 MTKConverter_Report.__MachiningFaceColor(aType),
627 aFeatureData, theCount)
628 elif mtk.Machining_Countersink.CompareType(aFeature):
629 aCountersink = mtk.Machining_Countersink.Cast(aFeature)
630 anAxis = aCountersink.Axis().Axis()
631 aDirection = Direction(anAxis.X(), anAxis.Y(), anAxis.Z())
632 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
633 "Radius", "mm", aCountersink.Radius(),
634 "Depth", "mm", aCountersink.Depth(),
635 "Axis", "", aDirection,
636 theShapeIdVector)
637 theManager.AddGroupData("Countersink(s)", "(55, 125, 34)", aFeatureData, theCount)
638 elif mtk.Machining_Hole.CompareType(aFeature):
639 aHole = mtk.Machining_Hole.Cast(aFeature)
640 anAxis = aHole.Axis().Axis()
641 aDirection = Direction(anAxis.X(), anAxis.Y(), anAxis.Z())
642 aType = aHole.Type()
643 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
644 "Radius", "mm", aHole.Radius(),
645 "Depth", "mm", aHole.Depth(),
646 "Axis", "", aDirection,
647 theShapeIdVector)
648 theManager.AddGroupData(MTKConverter_Report.__MachiningHoleTypeToString(aType),
649 MTKConverter_Report.__MachiningHoleColor(aType),
650 aFeatureData, theCount)
651 elif mtk.Machining_Pocket.CompareType(aFeature):
652 aPocket = mtk.Machining_Pocket.Cast(aFeature)
653 anAxis = aPocket.Axis().Direction()
654 aDirection = Direction(anAxis.X(), anAxis.Y(), anAxis.Z())
655 aType = aPocket.Type()
656 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString4(
657 "Length", "mm", aPocket.Length(),
658 "Width", "mm", aPocket.Width(),
659 "Depth", "mm", aPocket.Depth(),
660 "Axis", "", aDirection,
661 theShapeIdVector)
662 theManager.AddGroupData(MTKConverter_Report.__MachiningPocketTypeToString(aType),
663 MTKConverter_Report.__MachiningPocketColor(aType),
664 aFeatureData, theCount)
665
666
667 elif mtk.Molding_ScrewBoss.CompareType(aFeature):
668 aScrewBoss = mtk.Molding_ScrewBoss.Cast(aFeature)
669 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
670 "Outer Radius", "mm", aScrewBoss.OuterRadius(),
671 "Inner Radius", "mm", aScrewBoss.InnerRadius(),
672 "Draft Angle", "deg", aScrewBoss.DraftAngle() * 180 / math.pi,
673 theShapeIdVector)
674 theManager.AddGroupData("Screw Boss(es)", "(12, 32, 63)", aFeatureData, theCount)
675 elif mtk.MTKBase_Boss.CompareType(aFeature):
676 aBoss = mtk.MTKBase_Boss.Cast(aFeature)
677 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
678 "Length", "mm", aBoss.Length(),
679 "Width", "mm", aBoss.Width(),
680 "Height", "mm", aBoss.Height(),
681 theShapeIdVector)
682 theManager.AddGroupData ("Boss(es)", "(56, 72, 13)", aFeatureData, theCount)
683 elif mtk.Molding_Rib.CompareType(aFeature):
684 aRib = mtk.Molding_Rib.Cast(aFeature)
685 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString4(
686 "Length", "mm", aRib.Length(),
687 "Height", "mm", aRib.Height(),
688 "Thickness", "mm", aRib.Thickness(),
689 "Draft Angle", "deg", aRib.DraftAngle() * 180 / math.pi,
690 theShapeIdVector)
691 theManager.AddGroupData("Rib(s)", "(34, 51, 127)", aFeatureData, theCount)
692
693
694 elif mtk.SheetMetal_Bead.CompareType(aFeature):
695 aBead = mtk.SheetMetal_Bead.Cast(aFeature)
696 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString1("Depth", "mm", aBead.Depth(), theShapeIdVector)
697 theManager.AddGroupData("Bead(s)", "(115, 251, 253)", aFeatureData, theCount)
698 elif mtk.SheetMetal_Bend.CompareType(aFeature):
699 aBend = mtk.SheetMetal_Bend.Cast(aFeature)
700 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString4(
701 "Radius", "mm", aBend.Radius(),
702 "Angle", "deg", aBend.Angle() * 180 / math.pi,
703 "Length", "mm", aBend.Length(),
704 "Width", "mm", aBend.Width(),
705 theShapeIdVector)
706 theManager.AddGroupData(MTKConverter_Report.__BendName(aBend), MTKConverter_Report.__BendColor(aBend),
707 aFeatureData, theCount)
708 elif mtk.SheetMetal_Bridge.CompareType(aFeature):
709 aBridge = mtk.SheetMetal_Bridge.Cast(aFeature)
710 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
711 "Length", "mm", aBridge.Length(),
712 "Depth", "mm", aBridge.Depth(),
713 theShapeIdVector)
714 theManager.AddGroupData("Bridge(s)", "(240, 155, 89)", aFeatureData, theCount)
715 elif mtk.SheetMetal_Hole.CompareType(aFeature):
716 aHole = mtk.SheetMetal_Hole.Cast(aFeature)
717 anAxis = aHole.Axis().Axis()
718 aDirection = Direction(anAxis.X(), anAxis.Y(), anAxis.Z())
719 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
720 "Radius", "mm", aHole.Radius(),
721 "Depth", "mm", aHole.Depth(),
722 "Axis", "", aDirection,
723 theShapeIdVector)
724 theManager.AddGroupData (MTKConverter_Report.__SheetMetalHoleName(aHole),
725 MTKConverter_Report.__SheetMetalHoleColor(aHole),
726 aFeatureData, theCount)
727 elif mtk.SheetMetal_Cutout.CompareType(aFeature):
728 aCutout = mtk.SheetMetal_Cutout.Cast(aFeature)
729 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString1("Perimeter", "mm", aCutout.Perimeter(), theShapeIdVector)
730 theManager.AddGroupData ("Cutout(s)", "(88, 19, 94)", aFeatureData, theCount)
731 elif mtk.SheetMetal_Louver.CompareType(aFeature):
732 aLouver = mtk.SheetMetal_Louver.Cast(aFeature)
733 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString1(
734 "Depth", "mm", aLouver.Depth(),
735 theShapeIdVector)
736 theManager.AddGroupData("Louver(s)", "(161, 251, 142)", aFeatureData, theCount)
737 elif mtk.SheetMetal_Notch.CompareType(aFeature):
738 aNotch = mtk.SheetMetal_Notch.Cast(aFeature)
739 if mtk.SheetMetal_StraightNotch.CompareType(aNotch):
740 aStraightNotch = mtk.SheetMetal_StraightNotch.Cast(aNotch)
741 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
742 "Length", "mm", aNotch.Length(),
743 "Width", "mm", aNotch.Width(),
744 "Corner Fillet Radius", "mm", aStraightNotch.CornerFilletRadius(),
745 theShapeIdVector)
746 theManager.AddGroupData ("Straight Notch(es)", "(240, 135, 132)", aFeatureData, theCount)
747 elif mtk.SheetMetal_VNotch.CompareType(aNotch):
748 aVNotch = mtk.SheetMetal_VNotch.Cast(aNotch)
749 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
750 "Length", "mm", aNotch.Length(),
751 "Width", "mm", aNotch.Width(),
752 "Angle", "deg", aVNotch.Angle() * 180 / math.pi,
753 theShapeIdVector)
754 theManager.AddGroupData ("V Notch(es)", "(235, 51, 36)", aFeatureData, theCount)
755 else:
756 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
757 "Length", "mm", aNotch.Length(),
758 "Width", "mm", aNotch.Width(),
759 theShapeIdVector)
760 theManager.AddGroupData("Notch(es)", "(239, 136, 190)", aFeatureData, theCount)
761 elif mtk.SheetMetal_Tab.CompareType(aFeature):
762 aTab = mtk.SheetMetal_Tab.Cast(aFeature)
763 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
764 "Length", "mm", aTab.Length(),
765 "Width", "mm", aTab.Width(),
766 theShapeIdVector)
767 theManager.AddGroupData("Tab(s)", "(127, 130, 187)", aFeatureData, theCount)
768
769 @staticmethod
770 def __AddDrillingIssue(theManager: FeatureGroupManager, theIssue: mtk.DFMMachining_DrillingIssue, theCount: int, theShapeIdVector):
771 if mtk.DFMMachining_SmallDiameterHoleIssue.CompareType(theIssue):
772 aSmallHoleIssue = mtk.DFMMachining_SmallDiameterHoleIssue.Cast(theIssue)
773 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
774 "Expected Minimum Diameter", "mm", aSmallHoleIssue.ExpectedMinDiameter(),
775 "Actual Diameter", "mm", aSmallHoleIssue.ActualDiameter(),
776 theShapeIdVector)
777 theManager.AddGroupData("Small Diameter Hole(s)", "(115, 251, 253)", aFeatureData, theCount);
778 elif mtk.DFMMachining_DeepHoleIssue.CompareType(theIssue):
779 aDeepHoleIssue = mtk.DFMMachining_DeepHoleIssue.Cast(theIssue)
780 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
781 "Expected Maximum Depth", "mm", aDeepHoleIssue.ExpectedMaxDepth(),
782 "Actual Depth", "mm", aDeepHoleIssue.ActualDepth(), theShapeIdVector)
783 theManager.AddGroupData("Deep Hole(s)", "(0, 35, 245)", aFeatureData, theCount)
784 elif mtk.DFMMachining_NonStandardDiameterHoleIssue.CompareType(theIssue):
785 aNSDiameterHoleIssue = mtk.DFMMachining_NonStandardDiameterHoleIssue.Cast(theIssue)
786 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
787 "Nearest Standard Diameter", "mm", aNSDiameterHoleIssue.NearestStandardDiameter(),
788 "Actual Diameter", "mm", aNSDiameterHoleIssue.ActualDiameter(),
789 theShapeIdVector)
790 theManager.AddGroupData("Non Standard Diameter Hole(s)", "(22, 65, 124)", aFeatureData, theCount)
791 elif mtk.DFMMachining_NonStandardDrillPointAngleBlindHoleIssue.CompareType(theIssue):
792 aNSDrillPointAngleBlindHoleIssue = mtk.DFMMachining_NonStandardDrillPointAngleBlindHoleIssue.Cast(theIssue)
793 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
794 "Nearest Standard Angle", "deg", aNSDrillPointAngleBlindHoleIssue.NearestStandardAngle() * 180 / math.pi,
795 "Actual Angle", "deg", aNSDrillPointAngleBlindHoleIssue.ActualAngle() * 180 / math.pi,
796 theShapeIdVector)
797 theManager.AddGroupData("Non Standard Drill Point Angle Blind Hole(s)", "(88, 13, 78)", aFeatureData, theCount)
798 elif mtk.DFMMachining_PartialHoleIssue.CompareType(theIssue):
799 aPartialHoleIssue = mtk.DFMMachining_PartialHoleIssue.Cast(theIssue)
800 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
801 "Expected Minimum Material Percent", "%", aPartialHoleIssue.ExpectedMinMaterialPercent() * 100,
802 "Actual Material Percent", "%", aPartialHoleIssue.ActualMaterialPercent() * 100,
803 theShapeIdVector)
804 theManager.AddGroupData("Partial Hole(s)", "(255, 254, 145)", aFeatureData, theCount)
805 elif mtk.DFMMachining_FlatBottomHoleIssue.CompareType(theIssue):
806 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
807 theManager.AddGroupData("Flat Bottom Hole(s)", "(240, 155, 89)", aFeatureData, theCount)
808 elif mtk.DFMMachining_NonPerpendicularHoleIssue.CompareType(theIssue):
809 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
810 theManager.AddGroupData("Non Perpendicular Hole(s)", "(129, 127, 38)", aFeatureData, theCount)
811 elif mtk.DFMMachining_IntersectingCavityHoleIssue.Cast(theIssue):
812 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
813 theManager.AddGroupData("Intersecting Cavity Hole(s)", "(115, 43, 245)", aFeatureData, theCount)
814
815 @staticmethod
816 def __AddMillingIssue(theManager: FeatureGroupManager, theIssue: mtk.DFMMachining_MillingIssue, theCount: int, theShapeIdVector):
817 if mtk.DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.CompareType(theIssue):
818 aFloorRadiusIssue = mtk.DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.Cast(theIssue)
819 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
820 "Nearest Standard Radius", "mm", aFloorRadiusIssue.NearestStandardRadius(),
821 "Actual Radius", "mm", aFloorRadiusIssue.ActualRadius(),
822 theShapeIdVector)
823 theManager.AddGroupData("Non Standard Radius Milled Part Floor Fillet Issue(s)", "(0, 215, 3)", aFeatureData, theCount)
824 elif mtk.DFMMachining_DeepPocketIssue.CompareType(theIssue):
825 aDeepPocketIssue = mtk.DFMMachining_DeepPocketIssue.Cast(theIssue)
826 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
827 "Expected Maximum Depth", "mm", aDeepPocketIssue.ExpectedMaxDepth(),
828 "Actual Depth", "mm", aDeepPocketIssue.ActualDepth(),
829 theShapeIdVector)
830 theManager.AddGroupData("Deep Pocket Issue(s)", "(190, 10, 100)", aFeatureData, theCount)
831 elif mtk.DFMMachining_HighBossIssue.CompareType(theIssue):
832 aHighBossIssue = mtk.DFMMachining_HighBossIssue.Cast(theIssue)
833 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
834 "Expected Maximum Height", "mm", aHighBossIssue.ExpectedMaxHeight(),
835 "Actual Height", "mm", aHighBossIssue.ActualHeight(),
836 theShapeIdVector)
837 theManager.AddGroupData("High Boss Issue(s)", "(180, 100, 50)", aFeatureData, theCount)
838 elif mtk.DFMMachining_LargeMilledPartIssue.CompareType(theIssue):
839 aLMPIssue = mtk.DFMMachining_LargeMilledPartIssue.Cast(theIssue)
840 anExpectedSize = aLMPIssue.ExpectedMaxMilledPartSize()
841 anActualSize = aLMPIssue.ActualMilledPartSize()
842 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
843 "Expected Maximum Size (LxWxH)", "mm",
844 Dimension(anExpectedSize.Length(), anExpectedSize.Width(), anExpectedSize.Height()),
845 "Actual Size (LxWxH)", "mm",
846 Dimension(anActualSize.Length(), anActualSize.Width(), anActualSize.Height()),
847 theShapeIdVector)
848 theManager.AddGroupData("Large Milled Part(s)", "(17, 37, 205)", aFeatureData, theCount)
849 elif mtk.DFMMachining_SmallRadiusMilledPartInternalCornerIssue.CompareType(theIssue):
850 aMSICRIssue = mtk.DFMMachining_SmallRadiusMilledPartInternalCornerIssue.Cast(theIssue)
851 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
852 "Expected Minimum Radius", "mm", aMSICRIssue.ExpectedMinRadius(),
853 "Actual Radius", "mm", aMSICRIssue.ActualRadius(),
854 theShapeIdVector)
855 theManager.AddGroupData("Small Radius Milled Part Internal Corner(s)", "(10, 10, 200)", aFeatureData, theCount)
856 elif mtk.DFMMachining_NonPerpendicularMilledPartShapeIssue.CompareType(theIssue):
857 aNPMPSIssue = mtk.DFMMachining_NonPerpendicularMilledPartShapeIssue.Cast(theIssue)
858 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString1(
859 "Actual Angle", "deg", aNPMPSIssue.ActualAngle() * 180 / math.pi,
860 theShapeIdVector)
861 theManager.AddGroupData("Non Perpendicular Milled Part Shape(s)", "(129, 227, 138)", aFeatureData, theCount)
862 elif mtk.DFMMachining_MilledPartExternalEdgeFilletIssue.CompareType(theIssue):
863 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
864 theManager.AddGroupData("Milled Part External Edge Fillet(s)", "(201, 227, 13)", aFeatureData, theCount)
865 elif mtk.DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.CompareType(theIssue):
866 anInconsistentRadiusIssue = mtk.DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.Cast(theIssue)
867 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
868 "Expected Radius", "mm", anInconsistentRadiusIssue.ExpectedRadius(),
869 "Actual Radius", "mm", anInconsistentRadiusIssue.ActualRadius(),
870 theShapeIdVector)
871 theManager.AddGroupData("Inconsistent Radius Milled Part Floor Fillet Issue(s)", "(180, 15, 190)", aFeatureData, theCount)
872 elif mtk.DFMMachining_NarrowRegionInPocketIssue.CompareType(theIssue):
873 aNarrowRegionIssue = mtk.DFMMachining_NarrowRegionInPocketIssue.Cast(theIssue)
874 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
875 "Expected Minimum Region Size", "mm", aNarrowRegionIssue.ExpectedMinRegionSize(),
876 "Actual Region Size", "mm", aNarrowRegionIssue.ActualRegionSize(),
877 theShapeIdVector)
878 theManager.AddGroupData("Narrow Region In Pocket Issue(s)", "(70, 150, 150)", aFeatureData, theCount)
879 elif mtk.DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.CompareType(theIssue):
880 aLargeRatioIssue = mtk.DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.Cast(theIssue)
881 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
882 "Expected Regions Maximum To Minimum Size Ratio", "", aLargeRatioIssue.ExpectedMaxRegionsMaxToMinSizeRatio(),
883 "Actual Regions Maximum To Minimum Size Ratio", "", aLargeRatioIssue.ActualMaxRegionsMaxToMinSizeRatio(),
884 theShapeIdVector)
885 theManager.AddGroupData("Large Difference Regions Size In Pocket Issue(s)", "(100, 150, 150)", aFeatureData, theCount)
886 elif mtk.DFMMachining_SmallWallThicknessIssue.CompareType(theIssue):
887 aSWTIssue = mtk.DFMMachining_SmallWallThicknessIssue.Cast(theIssue)
888 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
889 "Expected Minimum Thickness", "mm", aSWTIssue.ExpectedMinThickness(),
890 "Actual Thickness", "mm", aSWTIssue.ActualThickness(),
891 theShapeIdVector)
892 theManager.AddGroupData("Small Wall Thickness Issue(s)", "(64, 224, 208)", aFeatureData, theCount)
893
894 @staticmethod
895 def __AddTurningIssue(theManager: FeatureGroupManager, theIssue: mtk.DFMBase_Issue, theCount: int, theShapeIdVector):
896 if mtk.DFMMachining_LargeTurnedPartIssue.CompareType(theIssue):
897 aLTSIssue = mtk.DFMMachining_LargeTurnedPartIssue.Cast(theIssue)
898 anExpectedSize = aLTSIssue.ExpectedMaxTurnedPartSize()
899 anActualSize = aLTSIssue.ActualTurnedPartSize()
900 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
901 "Expected Maximum Size (LxR)", "mm", Pair(anExpectedSize.Length(), anExpectedSize.Radius()),
902 "Actual Size (LxR)", "mm", Pair(anActualSize.Length(), anActualSize.Radius()),
903 theShapeIdVector)
904 theManager.AddGroupData("Large Turned Part(s)", "(195, 195, 195)", aFeatureData, theCount)
905 elif mtk.DFMMachining_LongSlenderTurnedPartIssue.CompareType(theIssue):
906 aLSTIssue = mtk.DFMMachining_LongSlenderTurnedPartIssue.Cast(theIssue)
907 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
908 "Expected Maximum Length", "mm", aLSTIssue.ExpectedMaxLength(),
909 "Actual Length", "mm", aLSTIssue.ActualLength(),
910 "Actual Minimum Diameter", "mm", aLSTIssue.ActualMinDiameter(),
911 theShapeIdVector)
912 theManager.AddGroupData("Long-Slender Turned Part(s)", "(195, 195, 195)", aFeatureData, theCount)
913 elif mtk.DFMMachining_SmallDepthBlindBoredHoleReliefIssue.CompareType(theIssue):
914 aBBHRIssue = mtk.DFMMachining_SmallDepthBlindBoredHoleReliefIssue.Cast(theIssue)
915 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
916 "Expected Minimum Relief Depth", "mm", aBBHRIssue.ExpectedMinReliefDepth(),
917 "Actual Relief Depth", "mm", aBBHRIssue.ActualReliefDepth(),
918 "Actual Diameter", "mm", aBBHRIssue.ActualDiameter(),
919 theShapeIdVector)
920 theManager.AddGroupData("Small Depth Blind Bored Hole Relief(s)", "(88, 19, 94)", aFeatureData, theCount)
921 elif mtk.DFMMachining_DeepBoredHoleIssue.CompareType(theIssue):
922 aISBHIssue = mtk.DFMMachining_DeepBoredHoleIssue.Cast(theIssue)
923 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
924 "Expected Maximum Depth", "mm", aISBHIssue.ExpectedMaxDepth(),
925 "Actual Depth", "mm", aISBHIssue.ActualDepth(),
926 "Actual Diameter", "mm", aISBHIssue.ActualDiameter(),
927 theShapeIdVector);
928 theManager.AddGroupData("Deep Bored Hole(s)", "(161, 251, 142)", aFeatureData, theCount)
929 elif mtk.DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.CompareType(theIssue):
930 aODPRIssue = mtk.DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.Cast(theIssue)
931 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
932 "Expected Maximum Face Incline Angle", "deg", aODPRIssue.ExpectedMaxFaceInclineAngle() * 180 / math.pi,
933 "Actual Face Incline Angle", "deg", aODPRIssue.ActualFaceInclineAngle() * 180 / math.pi,
934 theShapeIdVector)
935 theManager.AddGroupData("Irregular Turned Part Outer Diameter Profile Relief(s)", "(239, 136, 190)", aFeatureData, theCount)
936 elif mtk.DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.CompareType(theIssue):
937 aTSICRIssue = mtk.DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.Cast(theIssue)
938 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
939 "Expected Minimum Radius", "mm", aTSICRIssue.ExpectedMinRadius(),
940 "Actual Radius", "mm", aTSICRIssue.ActualRadius(),
941 theShapeIdVector)
942 theManager.AddGroupData("Small Radius Turned Part Internal Corner(s)", "(127, 130, 187)", aFeatureData, theCount)
943 elif mtk.DFMMachining_SquareEndKeywayIssue.CompareType(theIssue):
944 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
945 theManager.AddGroupData("Square End Keyway(s)", "(157, 160, 207)", aFeatureData, theCount)
946 elif mtk.DFMMachining_NonSymmetricalAxialSlotIssue.CompareType(theIssue):
947 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
948 theManager.AddGroupData("Non Symmetrical Axial Slot(s)", "(130, 170, 200)", aFeatureData, theCount)
949
950 @staticmethod
951 def __AddMoldingIssue(theManager: FeatureGroupManager, theIssue: mtk.DFMBase_Issue, theCount: int, theShapeIdVector):
952 if mtk.DFMMolding_HighRibIssue.CompareType(theIssue):
953 aHRIssue = mtk.DFMMolding_HighRibIssue.Cast(theIssue)
954 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
955 "Expected Maximum Height", "mm", aHRIssue.ExpectedMaxHeight(),
956 "Actual Height", "mm", aHRIssue.ActualHeight(),
957 theShapeIdVector)
958 theManager.AddGroupData("High Rib(s)", "(284, 36, 12)", aFeatureData, theCount)
959 elif mtk.DFMMolding_HighScrewBossIssue.CompareType(theIssue):
960 aHSBIssue = mtk.DFMMolding_HighScrewBossIssue.Cast(theIssue)
961 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
962 "Expected Maximum Height", "mm", aHSBIssue.ExpectedMaxHeight(),
963 "Actual Height", "mm", aHSBIssue.ActualHeight(),
964 theShapeIdVector)
965 theManager.AddGroupData("High Screw Boss(es)", "(16, 75, 95)", aFeatureData, theCount)
966 elif mtk.DFMMolding_IrregularCoreDepthScrewBossIssue.CompareType(theIssue):
967 aICDSBIssue = mtk.DFMMolding_IrregularCoreDepthScrewBossIssue.Cast(theIssue)
968 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
969 "Actual Height", "mm", aICDSBIssue.ActualHeight(),
970 "Actual Core Depth", "mm", aICDSBIssue.ActualCoreDepth(),
971 theShapeIdVector)
972 theManager.AddGroupData("Irregular Core Depth Screw Boss(es)", "(56, 176, 95)", aFeatureData, theCount)
973 elif mtk.DFMMolding_IrregularCoreDiameterScrewBossIssue.CompareType(theIssue):
974 aICDSBIssue = mtk.DFMMolding_IrregularCoreDiameterScrewBossIssue.Cast(theIssue)
975 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
976 "Expected Minimum Outer Diameter", "mm", aICDSBIssue.ExpectedMinCoreDiameter(),
977 "Expected Maximum Outer Diameter", "mm", aICDSBIssue.ExpectedMaxCoreDiameter(),
978 "actual core diameter", "mm", aICDSBIssue.ActualCoreDiameter(),
979 theShapeIdVector)
980 theManager.AddGroupData("Irregular Core Diameter Screw Boss(es)", "(195, 195, 195)", aFeatureData, theCount)
981 elif mtk.DFMMolding_IrregularThicknessRibIssue.CompareType(theIssue):
982 aITRIssue = mtk.DFMMolding_IrregularThicknessRibIssue.Cast(theIssue)
983 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
984 "Expected Minimum Thickness", "mm", aITRIssue.ExpectedMinThickness(),
985 "Expected Maximum Thickness", "mm", aITRIssue.ExpectedMaxThickness(),
986 "Actual Thickness", "mm", aITRIssue.ActualThickness(),
987 theShapeIdVector)
988 theManager.AddGroupData("Irregular Thickness Rib(s)", "(68, 114, 250)", aFeatureData, theCount)
989 elif mtk.DFMMolding_IrregularWallThicknessIssue.CompareType(theIssue):
990 aIWTIssue = mtk.DFMMolding_IrregularWallThicknessIssue.Cast(theIssue)
991 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
992 "Expected Maximum Wall Thickness", "mm", aIWTIssue.ExpectedMaxThickness(),
993 "Expected Minimum Wall Thickness", "mm", aIWTIssue.ExpectedMinThickness(),
994 "Actual Wall Thickness", "mm", aIWTIssue.ActualThickness(),
995 theShapeIdVector)
996 theManager.AddGroupData ("Irregular Wall(s)", "(23, 11, 19)", aFeatureData, theCount)
997 elif mtk.DFMMolding_IrregularWallThicknessScrewBossIssue.CompareType(theIssue):
998 aIWTSBIssue = mtk.DFMMolding_IrregularWallThicknessScrewBossIssue.Cast(theIssue)
999 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
1000 "Expected Maximum Thickness", "mm", aIWTSBIssue.ExpectedMaxThickness(),
1001 "Expected Minimum Thickness", "mm", aIWTSBIssue.ExpectedMinThickness(),
1002 "Actual Thickness", "mm", aIWTSBIssue.ActualThickness(),
1003 theShapeIdVector)
1004 theManager.AddGroupData("Irregular Wall Thickness Screw Boss(es)", "(13, 12, 245)", aFeatureData, theCount)
1005 elif mtk.DFMMolding_LargeWallThicknessIssue.CompareType(theIssue):
1006 aLWTIssue = mtk.DFMMolding_LargeWallThicknessIssue.Cast(theIssue)
1007 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1008 "Expected Maximum Wall Thickness", "mm", aLWTIssue.ExpectedMaxThickness(),
1009 "Actual Wall Thickness", "mm", aLWTIssue.ActualThickness(),
1010 theShapeIdVector)
1011 theManager.AddGroupData ("Large Wall(s)", "(101, 22, 129)", aFeatureData, theCount)
1012 elif mtk.DFMMolding_SmallBaseRadiusRibIssue.CompareType(theIssue):
1013 aSBRRIssue = mtk.DFMMolding_SmallBaseRadiusRibIssue.Cast(theIssue)
1014 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1015 "Expected Minimum Base Radius", "mm", aSBRRIssue.ExpectedMinBaseRadius(),
1016 "Actual Base Radius", "mm", aSBRRIssue.ActualBaseRadius(),
1017 theShapeIdVector)
1018 theManager.AddGroupData ("Small Base Radius Rib(s)", "(13, 12, 90)", aFeatureData, theCount)
1019 elif mtk.DFMMolding_SmallBaseRadiusScrewBossIssue.CompareType(theIssue):
1020 aSBRSBIssue = mtk.DFMMolding_SmallBaseRadiusScrewBossIssue.Cast(theIssue)
1021 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1022 "Expected Minimum Base Radius", "mm", aSBRSBIssue.ExpectedMinBaseRadius(),
1023 "Actual Base Radius", "mm", aSBRSBIssue.ActualBaseRadius(),
1024 theShapeIdVector)
1025 theManager.AddGroupData ("Small Base Radius Screw Boss(es)", "(56, 18, 23)", aFeatureData, theCount)
1026 elif mtk.DFMMolding_SmallDraftAngleRibIssue.CompareType(theIssue):
1027 aSDARIssue = mtk.DFMMolding_SmallDraftAngleRibIssue.Cast(theIssue)
1028 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1029 "Expected Minimum Draft Angle", "deg", aSDARIssue.ExpectedMinDraftAngle() * 180. / math.pi,
1030 "Actual Draft Angle", "deg", aSDARIssue.ActualDraftAngle() * 180. / math.pi,
1031 theShapeIdVector)
1032 theManager.AddGroupData("Small Draft Angle Rib(s)", "(189, 200, 13)", aFeatureData, theCount)
1033 elif mtk.DFMMolding_SmallDistanceBetweenRibsIssue.CompareType(theIssue):
1034 aSDBRIssue = mtk.DFMMolding_SmallDistanceBetweenRibsIssue.Cast(theIssue)
1035 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1036 "Expected Minimum Distance", "mm", aSDBRIssue.ExpectedMinDistanceBetweenRibs(),
1037 "Actual Distance", "mm", aSDBRIssue.ActualDistanceBetweenRibs(),
1038 theShapeIdVector)
1039 theManager.AddGroupData("Small Distance Between Ribs Issue(s)", "(11, 90, 111)", aFeatureData, theCount)
1040 elif mtk.DFMMolding_SmallDraftAngleScrewBossIssue.CompareType(theIssue):
1041 aSDASBIssue = mtk.DFMMolding_SmallDraftAngleScrewBossIssue.Cast(theIssue)
1042 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1043 "Expected Minimum Draft Angle", "deg", aSDASBIssue.ExpectedMinDraftAngle() * 180. / math.pi,
1044 "Actual Draft Angle", "deg", aSDASBIssue.ActualDraftAngle() * 180. / math.pi,
1045 theShapeIdVector)
1046 theManager.AddGroupData("Small Draft Angle Screw Boss(es)", "(27, 101, 27)", aFeatureData, theCount)
1047 elif mtk.DFMMolding_SmallHoleBaseRadiusScrewBossIssue.CompareType(theIssue):
1048 aSHBRSBIssue = mtk.DFMMolding_SmallHoleBaseRadiusScrewBossIssue.Cast(theIssue)
1049 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1050 "Expected Minimum Hole Base Radius", "mm", aSHBRSBIssue.ExpectedMinHoleBaseRadius(),
1051 "Actual Hole Base Radius", "mm", aSHBRSBIssue.ActualHoleBaseRadius(),
1052 theShapeIdVector)
1053 theManager.AddGroupData("Small Hole Base Radius Screw Boss(es)", "(98, 8, 2)", aFeatureData, theCount)
1054 elif mtk.DFMMolding_SmallDraftAngleWallIssue.CompareType(theIssue):
1055 aSDAWIssue = mtk.DFMMolding_SmallDraftAngleWallIssue.Cast(theIssue)
1056 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1057 "Expected Minimum Draft Angle", "deg", aSDAWIssue.ExpectedMinDraftAngle() * 180. / math.pi,
1058 "Actual Draft Angle", "deg", aSDAWIssue.ActualDraftAngle() * 180. / math.pi,
1059 theShapeIdVector)
1060 theManager.AddGroupData("Small Draft Angle Wall(s)", "(101, 67, 33)", aFeatureData, theCount)
1061 elif mtk.DFMMolding_NonChamferedScrewBossIssue.CompareType(theIssue):
1062 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
1063 theManager.AddGroupData("Non Chamfered Screw Boss(es)", "(38, 38, 10)", aFeatureData, theCount)
1064 elif mtk.DFMMolding_SmallWallThicknessIssue.CompareType(theIssue):
1065 aSWTIssue = mtk.DFMMolding_SmallWallThicknessIssue.Cast(theIssue)
1066 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1067 "Expected Minimum Wall Thickness", "mm", aSWTIssue.ExpectedMinThickness(),
1068 "Actual Wall Thickness", "mm", aSWTIssue.ActualThickness(),
1069 theShapeIdVector)
1070 theManager.AddGroupData ("Small Wall(s)", "(14, 209, 199)", aFeatureData, theCount)
1071 elif mtk.DFMMolding_SmallDistanceBetweenBossesIssue.CompareType(theIssue):
1072 aSDBBIssue = mtk.DFMMolding_SmallDistanceBetweenBossesIssue.Cast(theIssue)
1073 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1074 "Expected Minimum Distance Between Bosses", "mm", aSDBBIssue.ExpectedMinDistanceBetweenBosses(),
1075 "Actual Distance Between Bosses", "mm", aSDBBIssue.ActualDistanceBetweenBosses(),
1076 theShapeIdVector)
1077 theManager.AddGroupData ("Small Distance Between Bosses Issue(s)", "(255, 102, 0)", aFeatureData, theCount)
1078
1079 @staticmethod
1080 def __AddSheetMetalIssue(theManager: FeatureGroupManager, theIssue: mtk.DFMBase_Issue, theCount: int, theShapeIdVector):
1081 if mtk.DFMSheetMetal_FlatPatternInterferenceIssue.CompareType(theIssue):
1082 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString0(theShapeIdVector)
1083 theManager.AddGroupData("Flat Pattern Interference(s)", "(115, 251, 253)", aFeatureData, theCount)
1084 elif mtk.DFMSheetMetal_IrregularCornerFilletRadiusNotchIssue.CompareType(theIssue):
1085 aICFRNIssue = mtk.DFMSheetMetal_IrregularCornerFilletRadiusNotchIssue.Cast(theIssue)
1086 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1087 "Expected Corner Fillet Radius", "mm", aICFRNIssue.ExpectedCornerFilletRadius(),
1088 "Actual Corner Fillet Radius", "mm", aICFRNIssue.ActualCornerFilletRadius(),
1089 theShapeIdVector)
1090 theManager.AddGroupData("Irregular Corner Fillet Radius Notch(es)", "(239, 136, 190)", aFeatureData, theCount)
1091 elif mtk.DFMSheetMetal_IrregularDepthExtrudedHoleIssue.CompareType(theIssue):
1092 aIDEHIssue = mtk.DFMSheetMetal_IrregularDepthExtrudedHoleIssue.Cast(theIssue)
1093 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
1094 "Expected Minimum Extruded Height", "mm", aIDEHIssue.ExpectedMinExtrudedHeight(),
1095 "Expected Maximum Extruded Height", "mm", aIDEHIssue.ExpectedMaxExtrudedHeight(),
1096 "Actual Extruded Height", "mm", aIDEHIssue.ActualExtrudedHeight(),
1097 theShapeIdVector)
1098 theManager.AddGroupData("Irregular Depth Extruded Hole(s)", "(50, 120, 210)", aFeatureData, theCount)
1099 elif mtk.DFMSheetMetal_IrregularRadiusOpenHemBendIssue.CompareType(theIssue):
1100 aIROHBIssue = mtk.DFMSheetMetal_IrregularRadiusOpenHemBendIssue.Cast(theIssue)
1101 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1102 "Expected Radius", "mm", aIROHBIssue.ExpectedRadius(),
1103 "Actual Radius", "mm", aIROHBIssue.ActualRadius(),
1104 theShapeIdVector)
1105 theManager.AddGroupData("Irregular Radius Open Hem Bend(s)", "(188, 121, 11)", aFeatureData, theCount)
1106 elif mtk.DFMSheetMetal_InconsistentRadiusBendIssue.CompareType(theIssue):
1107 aIRBIssue = mtk.DFMSheetMetal_InconsistentRadiusBendIssue.Cast(theIssue)
1108 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1109 "Expected Radius", "mm", aIRBIssue.ExpectedRadius(),
1110 "Actual Radius", "mm", aIRBIssue.ActualRadius(),
1111 theShapeIdVector)
1112 theManager.AddGroupData("Inconsistent Radius Bend(s)", "(0, 35, 245)", aFeatureData, theCount)
1113 elif mtk.DFMSheetMetal_IrregularSizeBendReliefIssue.CompareType(theIssue):
1114 aISBRIssue = mtk.DFMSheetMetal_IrregularSizeBendReliefIssue.Cast(theIssue)
1115 anExpectedRelief = aISBRIssue.ExpectedMinBendRelief()
1116 aFirstActualRelief = aISBRIssue.FirstActualRelief()
1117 aSecondActualRelief = aISBRIssue.SecondActualRelief()
1118 aFeatureData = ""
1119 if (not aFirstActualRelief.IsNull()) and (not aSecondActualRelief.IsNull()):
1120 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString3(
1121 "Expected Minimum Relief Size (LxW)", "mm", Pair(anExpectedRelief.Length(), anExpectedRelief.Width()),
1122 "First Actual Relief Size (LxW)", "mm", Pair(aFirstActualRelief.Length(), aFirstActualRelief.Width()),
1123 "Second Actual Relief Size (LxW)", "mm", Pair(aSecondActualRelief.Length(), aSecondActualRelief.Width()),
1124 theShapeIdVector)
1125 elif aFirstActualRelief.IsNull():
1126 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1127 "Expected Minimum Relief Size (LxW)", "mm", Pair(anExpectedRelief.Length(), anExpectedRelief.Width()),
1128 "Actual Relief Size (LxW)", "mm", Pair(aSecondActualRelief.Length(), aSecondActualRelief.Width()),
1129 theShapeIdVector)
1130 else:
1131 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1132 "Expected Minimum Relief Size (LxW)", "mm", Pair(anExpectedRelief.Length(), anExpectedRelief.Width()),
1133 "Actual Relief Size (LxW)", "mm", Pair(aFirstActualRelief.Length(), aFirstActualRelief.Width()),
1134 theShapeIdVector)
1135 theManager.AddGroupData("Irregular Size Bend Relief(s)", "(22, 65, 124)", aFeatureData, theCount)
1136 elif mtk.DFMSheetMetal_IrregularSizeNotchIssue.CompareType(theIssue):
1137 aISNIssue = mtk.DFMSheetMetal_IrregularSizeNotchIssue.Cast(theIssue)
1138 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1139 "Expected Size (LxW)", "mm", Pair(aISNIssue.ExpectedLength(), aISNIssue.ExpectedWidth()),
1140 "Actual Size (LxW)", "mm", Pair(aISNIssue.ActualLength(), aISNIssue.ActualWidth()),
1141 theShapeIdVector)
1142 theManager.AddGroupData("Irregular Size Notch(s)", "(255, 254, 145)", aFeatureData, theCount)
1143 elif mtk.DFMSheetMetal_IrregularSizeTabIssue.CompareType(theIssue):
1144 aISTIssue = mtk.DFMSheetMetal_IrregularSizeTabIssue.Cast(theIssue)
1145 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1146 "Expected Size (LxW)", "mm", Pair(aISTIssue.ExpectedLength(), aISTIssue.ExpectedWidth()),
1147 "Actual Size (LxW)", "mm", Pair(aISTIssue.ActualLength(), aISTIssue.ActualWidth()),
1148 theShapeIdVector)
1149 theManager.AddGroupData("Irregular Size Tab(s)", "(240, 155, 89)", aFeatureData, theCount)
1150 elif mtk.DFMSheetMetal_LargeDepthBeadIssue.CompareType(theIssue):
1151 aLDBIssue = mtk.DFMSheetMetal_LargeDepthBeadIssue.Cast(theIssue)
1152 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1153 "Expected Maximum Depth", "mm", aLDBIssue.ExpectedMaxDepth(),
1154 "Actual Depth", "mm", aLDBIssue.ActualDepth(),
1155 theShapeIdVector)
1156 theManager.AddGroupData("Large Depth Bead(s)", "(129, 127, 38)", aFeatureData, theCount)
1157 elif mtk.DFMSheetMetal_SmallDepthLouverIssue.CompareType(theIssue):
1158 aSDLIssue = mtk.DFMSheetMetal_SmallDepthLouverIssue.Cast(theIssue)
1159 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1160 "Expected Minimum Depth", "mm", aSDLIssue.ExpectedMinDepth(),
1161 "Actual Depth", "mm", aSDLIssue.ActualDepth(),
1162 theShapeIdVector)
1163 theManager.AddGroupData("Small Depth Louver(s)", "(190, 127, 58)", aFeatureData, theCount)
1164 elif mtk.DFMSheetMetal_NonStandardSheetSizeIssue.CompareType(theIssue):
1165 aNSSSIssue = mtk.DFMSheetMetal_NonStandardSheetSizeIssue.Cast(theIssue)
1166 aNesrestStandardSize = aNSSSIssue.NearestStandardSheetSize()
1167 anActualSize = aNSSSIssue.ActualSheetSize()
1168 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1169 "Nearest Standard Size (LxW)", "mm", Pair(aNesrestStandardSize.Length(), aNesrestStandardSize.Width()),
1170 "Actual Size (LxW)", "mm", Pair(anActualSize.Length(), anActualSize.Width()),
1171 theShapeIdVector)
1172 theManager.AddGroupData("Non Standard Sheet Size(s)", "(0, 0, 0)", aFeatureData, theCount)
1173 elif mtk.DFMSheetMetal_NonStandardSheetThicknessIssue.CompareType(theIssue):
1174 aNSSTIssue = mtk.DFMSheetMetal_NonStandardSheetThicknessIssue.Cast(theIssue)
1175 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1176 "Nearest Standard Thickness", "mm", aNSSTIssue.NearestStandardSheetThickness(),
1177 "Actual Thickness", "mm", aNSSTIssue.ActualSheetThickness(),
1178 theShapeIdVector)
1179 theManager.AddGroupData("Non Standard Sheet Thickness(s)", "(0, 0, 0)", aFeatureData, theCount)
1180 elif mtk.DFMSheetMetal_SmallDiameterHoleIssue.CompareType(theIssue):
1181 aSDHIssue = mtk.DFMSheetMetal_SmallDiameterHoleIssue.Cast(theIssue)
1182 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1183 "Expected Minimum Diameter", "mm", aSDHIssue.ExpectedMinDiameter(),
1184 "Actual Diameter", "mm", aSDHIssue.ActualDiameter(),
1185 theShapeIdVector)
1186 theManager.AddGroupData("Small Diameter Hole(s)", "(115, 43, 245)", aFeatureData, theCount)
1187 elif mtk.DFMSheetMetal_SmallLengthFlangeIssue.CompareType(theIssue):
1188 aSLFIssue = mtk.DFMSheetMetal_SmallLengthFlangeIssue.Cast(theIssue)
1189 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1190 "Expected Minimum Length", "mm", aSLFIssue.ExpectedMinLength(),
1191 "Actual Length", "mm", aSLFIssue.ActualLength(),
1192 theShapeIdVector)
1193 theManager.AddGroupData("Small Length Flange(s)", "(88, 19, 94)", aFeatureData, theCount)
1194 elif mtk.DFMSheetMetal_SmallLengthHemBendFlangeIssue.CompareType(theIssue):
1195 aSLHBFIssue = mtk.DFMSheetMetal_SmallLengthHemBendFlangeIssue.Cast(theIssue)
1196 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1197 "Expected Minimum Length", "mm", aSLHBFIssue.ExpectedMinLength(),
1198 "Actual Length", "mm", aSLHBFIssue.ActualLength(),
1199 theShapeIdVector)
1200 theManager.AddGroupData("Small Length Hem Bend Flange(s)", "(70, 139, 51)", aFeatureData, theCount)
1201 elif mtk.DFMSheetMetal_SmallRadiusBendIssue.CompareType(theIssue):
1202 aSRBIssue = mtk.DFMSheetMetal_SmallRadiusBendIssue.Cast(theIssue)
1203 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1204 "Expected Minimum Radius", "mm", aSRBIssue.ExpectedMinRadius(),
1205 "Actual Radius", "mm", aSRBIssue.ActualRadius(),
1206 theShapeIdVector)
1207 theManager.AddGroupData("Small Radius Bend(s)", "(161, 251, 142)", aFeatureData, theCount)
1208 elif mtk.DFMSheetMetal_SmallDistanceBetweenFeaturesIssue.CompareType(theIssue):
1209 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenFeaturesIssue.Cast(theIssue)
1210 aFeatureData = MTKConverter_Report.__WriteFeatureDataToString2(
1211 "Expected Minimum Distance", "mm", aSDIssue.ExpectedMinDistanceBetweenFeatures(),
1212 "Actual Distance", "mm", aSDIssue.ActualDistanceBetweenFeatures(),
1213 theShapeIdVector)
1214 theManager.AddGroupData(MTKConverter_Report.__SmallDistanceIssueName(aSDIssue),
1215 MTKConverter_Report.__SmallDistanceIssueColor(aSDIssue),
1216 aFeatureData, theCount)
1217
1218 @staticmethod
1219 def __GetShapesId(theShape: mtk.ModelData_Shape, theType):
1220 aShapeIdVector = []
1221 aShapeIt = mtk.ModelData_ShapeIterator(theShape, theType)
1222 for aShape in aShapeIt:
1223 aShapeIdVector.append(aShape.Id())
1224 return aShapeIdVector
1225
1226 @staticmethod
1227 def __AddShapesId(theShape: mtk.ModelData_Shape, theType, theShapesIdVec):
1228 aShapeIt = mtk.ModelData_ShapeIterator(theShape, theType)
1229 for aShape in aShapeIt:
1230 theShapesIdVec.append(aShape.Id())
1231
1232 @staticmethod
1233 def __SortFeatures(theFeatures: mtk.MTKBase_FeatureList, theOrderedFeatureList: OrderedFeatureList):
1234 for aFeature in theFeatures:
1235 if mtk.MTKBase_CompositeFeature.CompareType(aFeature):
1236 aCompositeFeature = mtk.MTKBase_CompositeFeature.Cast(aFeature)
1237 MTKConverter_Report.__SortFeatures(aCompositeFeature.FeatureList(), theOrderedFeatureList);
1238 continue
1239
1240
1241 if mtk.MTKBase_ShapeFeature.CompareType(aFeature):
1242 aShapeFeature = mtk.MTKBase_ShapeFeature.Cast(aFeature)
1243 aShapeType = mtk.ShapeType_Face
1244 if (mtk.SheetMetal_Cutout.CompareType(aFeature)
1245 or (mtk.SheetMetal_Hole.CompareType(aFeature) and not mtk.SheetMetal_ComplexHole.CompareType(aFeature))
1246 or mtk.SheetMetal_Notch.CompareType(aFeature) or mtk.SheetMetal_Tab.CompareType(aFeature)):
1247 aShapeType = mtk.ShapeType_Edge
1248 aShapeIdVector = MTKConverter_Report.__GetShapesId(aShapeFeature.Shape(), aShapeType)
1249 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1250
1251
1252 elif mtk.DFMMachining_DrillingIssue.CompareType(aFeature):
1253 anIssue = mtk.DFMMachining_DrillingIssue.Cast(aFeature)
1254 aShapeIdVector = MTKConverter_Report.__GetShapesId(anIssue.Hole().Shape(), mtk.ShapeType_Face)
1255 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1256
1257
1258 elif mtk.DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.CompareType(aFeature):
1259 aNSRMPFFIssue = mtk.DFMMachining_NonStandardRadiusMilledPartFloorFilletIssue.Cast(aFeature)
1260 aShapeIdVector = MTKConverter_Report.__GetShapesId(aNSRMPFFIssue.FloorFillet(), mtk.ShapeType_Face)
1261 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1262 elif mtk.DFMMachining_DeepPocketIssue.CompareType(aFeature):
1263 aDCIssue = mtk.DFMMachining_DeepPocketIssue.Cast(aFeature)
1264 aShapeIdVector = MTKConverter_Report.__GetShapesId(aDCIssue.Pocket().Shape(), mtk.ShapeType_Face)
1265 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1266 elif mtk.DFMMachining_HighBossIssue.CompareType(aFeature):
1267 aHBIssue = mtk.DFMMachining_HighBossIssue.Cast(aFeature)
1268 aShapeIdVector = MTKConverter_Report.__GetShapesId(aHBIssue.Boss().Shape(), mtk.ShapeType_Face)
1269 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1270 elif mtk.DFMMachining_LargeMilledPartIssue.CompareType(aFeature):
1271 aShapeIdVector = []
1272 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1273 elif mtk.DFMMachining_SmallRadiusMilledPartInternalCornerIssue.CompareType(aFeature):
1274 aMSICRIssue = mtk.DFMMachining_SmallRadiusMilledPartInternalCornerIssue.Cast(aFeature)
1275 aShapeIdVector = MTKConverter_Report.__GetShapesId(aMSICRIssue.Shape(), mtk.ShapeType_Face)
1276 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1277 elif mtk.DFMMachining_NonPerpendicularMilledPartShapeIssue.CompareType(aFeature):
1278 aNPMPSIssue = mtk.DFMMachining_NonPerpendicularMilledPartShapeIssue.Cast(aFeature)
1279 aShapeIdVector = MTKConverter_Report.__GetShapesId(aNPMPSIssue.Shape(), mtk.ShapeType_Face)
1280 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1281 elif mtk.DFMMachining_MilledPartExternalEdgeFilletIssue.CompareType(aFeature):
1282 aMPEEFIssue = mtk.DFMMachining_MilledPartExternalEdgeFilletIssue.Cast(aFeature)
1283 aShapeIdVector = MTKConverter_Report.__GetShapesId(aMPEEFIssue.Fillet(), mtk.ShapeType_Face)
1284 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1285 elif mtk.DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.CompareType(aFeature):
1286 aIRMPFFIssue = mtk.DFMMachining_InconsistentRadiusMilledPartFloorFilletIssue.Cast(aFeature)
1287 aShapeIdVector = MTKConverter_Report.__GetShapesId(aIRMPFFIssue.FloorFillet(), mtk.ShapeType_Face)
1288 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1289 elif mtk.DFMMachining_NarrowRegionInPocketIssue.CompareType(aFeature):
1290 aNRIPIssue = mtk.DFMMachining_NarrowRegionInPocketIssue.Cast(aFeature)
1291 aShapeIdVector = []
1292 MTKConverter_Report.__AddShapesId(aNRIPIssue.InnerFeature(), mtk.ShapeType_Face, aShapeIdVector)
1293 MTKConverter_Report.__AddShapesId(aNRIPIssue.NarrowRegionSidewall(), mtk.ShapeType_Face, aShapeIdVector)
1294 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1295 elif mtk.DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.CompareType(aFeature):
1296 aLDRSIPIssue = mtk.DFMMachining_LargeDifferenceRegionsSizeInPocketIssue.Cast(aFeature)
1297 aShapeIdVector = []
1298 MTKConverter_Report.__AddShapesId(aLDRSIPIssue.InnerFeature(), mtk.ShapeType_Face, aShapeIdVector)
1299 MTKConverter_Report.__AddShapesId(aLDRSIPIssue.MinRegionPocketSidewall(), mtk.ShapeType_Face, aShapeIdVector)
1300 MTKConverter_Report.__AddShapesId(aLDRSIPIssue.MaxRegionPocketSidewall(), mtk.ShapeType_Face, aShapeIdVector)
1301 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1302 elif mtk.DFMMachining_SmallWallThicknessIssue.CompareType(aFeature):
1303 aSWTIssue = mtk.DFMMachining_SmallWallThicknessIssue.Cast(aFeature)
1304 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSWTIssue.Shape(), mtk.ShapeType_Face)
1305 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1306
1307
1308 elif mtk.DFMMachining_SmallDepthBlindBoredHoleReliefIssue.CompareType(aFeature):
1309 aBBHRIssue = mtk.DFMMachining_SmallDepthBlindBoredHoleReliefIssue.Cast(aFeature)
1310 aShapeIdVector = MTKConverter_Report.__GetShapesId(aBBHRIssue.BlindBoredHole(), mtk.ShapeType_Face)
1311 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1312 elif mtk.DFMMachining_DeepBoredHoleIssue.CompareType(aFeature):
1313 aISBHIssue = mtk.DFMMachining_DeepBoredHoleIssue.Cast(aFeature)
1314 aShapeIdVector = MTKConverter_Report.__GetShapesId(aISBHIssue.Shape(), mtk.ShapeType_Face)
1315 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1316 elif mtk.DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.CompareType(aFeature):
1317 aODPRIssue = mtk.DFMMachining_IrregularTurnedPartOuterDiameterProfileReliefIssue.Cast(aFeature)
1318 aShapeIdVector = MTKConverter_Report.__GetShapesId(aODPRIssue.Face(), mtk.ShapeType_Face)
1319 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1320 elif mtk.DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.CompareType(aFeature):
1321 aTSICRIssue = mtk.DFMMachining_SmallRadiusTurnedPartInternalCornerIssue.Cast(aFeature)
1322 aShapeIdVector = MTKConverter_Report.__GetShapesId(aTSICRIssue.Shape(), mtk.ShapeType_Face)
1323 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1324 elif mtk.DFMMachining_SquareEndKeywayIssue.CompareType(aFeature):
1325 aSEKIssue = mtk.DFMMachining_SquareEndKeywayIssue.Cast(aFeature)
1326 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSEKIssue.Keyway().Shape(), mtk.ShapeType_Face)
1327 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1328 elif mtk.DFMMachining_NonSymmetricalAxialSlotIssue.CompareType(aFeature):
1329 aNSASIssue = mtk.DFMMachining_NonSymmetricalAxialSlotIssue.Cast(aFeature)
1330 aShapeIdVector = MTKConverter_Report.__GetShapesId(aNSASIssue.AxialSlot().Shape(), mtk.ShapeType_Face)
1331 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1332 elif mtk.DFMMachining_LargeTurnedPartIssue.CompareType(aFeature):
1333 aShapeIdVector = []
1334 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1335 elif mtk.DFMMachining_LongSlenderTurnedPartIssue.CompareType(aFeature):
1336 aShapeIdVector = []
1337 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1338
1339
1340 elif mtk.DFMMolding_IrregularCoreDepthScrewBossIssue.CompareType(aFeature):
1341 aICDSBIssue = mtk.DFMMolding_IrregularCoreDepthScrewBossIssue.Cast(aFeature)
1342 aShapeIdVector = MTKConverter_Report.__GetShapesId(aICDSBIssue.ScrewBoss().Shape(), mtk.ShapeType_Face)
1343 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1344 elif mtk.DFMMolding_IrregularCoreDiameterScrewBossIssue.CompareType(aFeature):
1345 aICDSBIssue = mtk.DFMMolding_IrregularCoreDiameterScrewBossIssue.Cast(aFeature)
1346 aShapeIdVector = MTKConverter_Report.__GetShapesId(aICDSBIssue.ScrewBoss().Shape(), mtk.ShapeType_Face)
1347 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1348 elif mtk.DFMMolding_IrregularThicknessRibIssue.CompareType(aFeature):
1349 aITRIssue = mtk.DFMMolding_IrregularThicknessRibIssue.Cast(aFeature)
1350 aShapeIdVector = MTKConverter_Report.__GetShapesId(aITRIssue.Rib().Shape(), mtk.ShapeType_Face)
1351 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1352 elif mtk.DFMMolding_IrregularWallThicknessIssue.CompareType(aFeature):
1353 aIWTssue = mtk.DFMMolding_IrregularWallThicknessIssue.Cast(aFeature)
1354 aShapeIdVector = MTKConverter_Report.__GetShapesId(aIWTIssue.Shape(), mtk.ShapeType_Face)
1355 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1356 elif mtk.DFMMolding_IrregularWallThicknessScrewBossIssue.CompareType(aFeature):
1357 aIWTSBIssue = mtk.DFMMolding_IrregularWallThicknessScrewBossIssue.Cast(aFeature)
1358 aShapeIdVector = MTKConverter_Report.__GetShapesId(aIWTSBIssue.ScrewBoss().Shape(), mtk.ShapeType_Face)
1359 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1360 elif mtk.DFMMolding_SmallBaseRadiusRibIssue.CompareType(aFeature):
1361 aSBRRIssue = mtk.DFMMolding_SmallBaseRadiusRibIssue.Cast(aFeature)
1362 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSBRRIssue.Rib().Shape(), mtk.ShapeType_Face)
1363 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1364 elif mtk.DFMMolding_SmallBaseRadiusScrewBossIssue.CompareType(aFeature):
1365 aSBRSBIssue = mtk.DFMMolding_SmallBaseRadiusScrewBossIssue.Cast(aFeature)
1366 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSBRSBIssue.ScrewBoss().Shape(), mtk.ShapeType_Face)
1367 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1368 elif mtk.DFMMolding_LargeWallThicknessIssue.CompareType(aFeature):
1369 aLWTssue = mtk.DFMMolding_LargeWallThicknessIssue.Cast(aFeature)
1370 aShapeIdVector = MTKConverter_Report.__GetShapesId(aLWTssue.Shape(), mtk.ShapeType_Face)
1371 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1372 elif mtk.DFMMolding_HighScrewBossIssue.CompareType(aFeature):
1373 aHRIssue = mtk.DFMMolding_HighScrewBossIssue.Cast(aFeature)
1374 aShapeIdVector = MTKConverter_Report.__GetShapesId(aHRIssue.ScrewBoss().Shape(), mtk.ShapeType_Face)
1375 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1376 elif mtk.DFMMolding_HighRibIssue.CompareType(aFeature):
1377 aHRIssue = mtk.DFMMolding_HighRibIssue.Cast(aFeature)
1378 aShapeIdVector = MTKConverter_Report.__GetShapesId(aHRIssue.Rib().Shape(), mtk.ShapeType_Face)
1379 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1380 elif mtk.DFMMolding_SmallDraftAngleRibIssue.CompareType(aFeature):
1381 aSMARIssue = mtk.DFMMolding_SmallDraftAngleRibIssue.Cast(aFeature)
1382 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSMARIssue.Rib().Shape(), mtk.ShapeType_Face)
1383 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1384 elif mtk.DFMMolding_SmallDistanceBetweenRibsIssue.CompareType(aFeature):
1385 aSDBRIssue = mtk.DFMMolding_SmallDistanceBetweenRibsIssue.Cast(aFeature)
1386 aShapeIdVector = []
1387 MTKConverter_Report.__AddShapesId(aSDBRIssue.FirstRib().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1388 MTKConverter_Report.__AddShapesId(aSDBRIssue.SecondRib().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1389 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1390 elif mtk.DFMMolding_SmallHoleBaseRadiusScrewBossIssue.CompareType(aFeature):
1391 aSHBRSBIssue = mtk.DFMMolding_SmallHoleBaseRadiusScrewBossIssue.Cast(aFeature)
1392 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSHBRSBIssue.ScrewBoss().Shape(), mtk.ShapeType_Face)
1393 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1394 elif mtk.DFMMolding_SmallDraftAngleWallIssue.CompareType(aFeature):
1395 aSDAWIssue = mtk.DFMMolding_SmallDraftAngleWallIssue.Cast(aFeature)
1396 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSDAWIssue.Shape(), mtk.ShapeType_Face)
1397 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1398 elif mtk.DFMMolding_NonChamferedScrewBossIssue.CompareType(aFeature):
1399 aWTCSBIssue = mtk.DFMMolding_NonChamferedScrewBossIssue.Cast(aFeature)
1400 aShapeIdVector = MTKConverter_Report.__GetShapesId(aWTCSBIssue.ScrewBoss().Shape(), mtk.ShapeType_Face)
1401 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1402 elif mtk.DFMMolding_SmallWallThicknessIssue.CompareType(aFeature):
1403 aSWTssue = mtk.DFMMolding_SmallWallThicknessIssue.Cast(aFeature)
1404 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSWTssue.Shape(), mtk.ShapeType_Face)
1405 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1406 elif mtk.DFMMolding_SmallDistanceBetweenBossesIssue.CompareType(aFeature):
1407 aSDBBIssue = mtk.DFMMolding_SmallDistanceBetweenBossesIssue.Cast(aFeature)
1408 aShapeIdVector = []
1409 MTKConverter_Report.__AddShapesId(aSDBBIssue.FirstBoss().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1410 MTKConverter_Report.__AddShapesId(aSDBBIssue.SecondBoss().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1411 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1412
1413
1414 elif mtk.DFMSheetMetal_FlatPatternInterferenceIssue.CompareType(aFeature):
1415 aFPIIssue = mtk.DFMSheetMetal_FlatPatternInterferenceIssue.Cast(aFeature)
1416 aShapeIdVector = [aFPIIssue.FirstFace().Id(), aFPIIssue.SecondFace().Id()]
1417 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1418 elif mtk.DFMSheetMetal_IrregularCornerFilletRadiusNotchIssue.CompareType(aFeature):
1419 aICFRNIssue = mtk.DFMSheetMetal_IrregularCornerFilletRadiusNotchIssue.Cast(aFeature)
1420 aShapeIdVector = MTKConverter_Report.__GetShapesId(aICFRNIssue.Notch().Shape(), mtk.ShapeType_Edge)
1421 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1422 elif mtk.DFMSheetMetal_IrregularDepthExtrudedHoleIssue.CompareType(aFeature):
1423 aIDEHIssue = mtk.DFMSheetMetal_IrregularDepthExtrudedHoleIssue.Cast(aFeature)
1424 aShapeIdVector = MTKConverter_Report.__GetShapesId(aIDEHIssue.Hole().Shape(), mtk.ShapeType_Face)
1425 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1426 elif mtk.DFMSheetMetal_IrregularRadiusOpenHemBendIssue.CompareType(aFeature):
1427 aIROHBIssue = mtk.DFMSheetMetal_IrregularRadiusOpenHemBendIssue.Cast(aFeature)
1428 aShapeIdVector = MTKConverter_Report.__GetShapesId(aIROHBIssue.Bend().Shape(), mtk.ShapeType_Face)
1429 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1430 elif mtk.DFMSheetMetal_InconsistentRadiusBendIssue.CompareType(aFeature):
1431 aIRBIssue = mtk.DFMSheetMetal_InconsistentRadiusBendIssue.Cast(aFeature)
1432 aShapeIdVector = MTKConverter_Report.__GetShapesId(aIRBIssue.Bend().Shape(), mtk.ShapeType_Face)
1433 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1434 elif mtk.DFMSheetMetal_IrregularSizeBendReliefIssue.CompareType(aFeature):
1435 aISBRIssue = mtk.DFMSheetMetal_IrregularSizeBendReliefIssue.Cast(aFeature)
1436 aFirstActualRelief = aISBRIssue.FirstActualRelief()
1437 aSecondActualRelief = aISBRIssue.SecondActualRelief()
1438 aShapeIdVector = []
1439 MTKConverter_Report.__AddShapesId(aISBRIssue.Bend().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1440 if not aFirstActualRelief.IsNull():
1441 MTKConverter_Report.__AddShapesId(aFirstActualRelief.Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1442 if not aSecondActualRelief.IsNull():
1443 MTKConverter_Report.__AddShapesId(aSecondActualRelief.Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1444 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1445 elif mtk.DFMSheetMetal_IrregularSizeNotchIssue.CompareType(aFeature):
1446 aISNIssue = mtk.DFMSheetMetal_IrregularSizeNotchIssue.Cast(aFeature)
1447 aShapeIdVector = MTKConverter_Report.__GetShapesId(aISNIssue.Notch().Shape(), mtk.ShapeType_Edge)
1448 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1449 elif mtk.DFMSheetMetal_IrregularSizeTabIssue.CompareType(aFeature):
1450 aISTIssue = mtk.DFMSheetMetal_IrregularSizeTabIssue.Cast(aFeature)
1451 aShapeIdVector = MTKConverter_Report.__GetShapesId(aISTIssue.Tab().Shape(), mtk.ShapeType_Edge)
1452 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1453 elif mtk.DFMSheetMetal_LargeDepthBeadIssue.CompareType(aFeature):
1454 aLDBIssue = mtk.DFMSheetMetal_LargeDepthBeadIssue.Cast(aFeature)
1455 aShapeIdVector = MTKConverter_Report.__GetShapesId(aLDBIssue.Bead().Shape(), mtk.ShapeType_Face)
1456 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1457 elif mtk.DFMSheetMetal_SmallDepthLouverIssue.CompareType(aFeature):
1458 aSDLIssue = mtk.DFMSheetMetal_SmallDepthLouverIssue.Cast(aFeature)
1459 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSDLIssue.Louver().Shape(), mtk.ShapeType_Face)
1460 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1461 elif mtk.DFMSheetMetal_NonStandardSheetSizeIssue.CompareType(aFeature):
1462 aShapeIdVector = []
1463 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1464 elif mtk.DFMSheetMetal_NonStandardSheetThicknessIssue.CompareType(aFeature):
1465 aShapeIdVector = []
1466 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1467 elif mtk.DFMSheetMetal_SmallDiameterHoleIssue.CompareType(aFeature):
1468 aSDHIssue = mtk.DFMSheetMetal_SmallDiameterHoleIssue.Cast(aFeature)
1469 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSDHIssue.Hole().Shape(), mtk.ShapeType_Edge)
1470 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1471 elif mtk.DFMSheetMetal_SmallLengthFlangeIssue.CompareType(aFeature):
1472 aSLFIssue = mtk.DFMSheetMetal_SmallLengthFlangeIssue.Cast(aFeature)
1473 aFlange = aSLFIssue.Flange().FeatureList()
1474 aShapeIdVector = []
1475 for aFlangeFace in aFlange:
1476 if mtk.MTKBase_ShapeFeature.CompareType(aFlangeFace):
1477 aShapeFeature = mtk.MTKBase_ShapeFeature.Cast(aFlangeFace)
1478 MTKConverter_Report.__AddShapesId(aShapeFeature.Shape(), mtk.ShapeType_Face, aShapeIdVector)
1479 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1480 elif mtk.DFMSheetMetal_SmallLengthHemBendFlangeIssue.CompareType(aFeature):
1481 aSLHBFIssue = mtk.DFMSheetMetal_SmallLengthHemBendFlangeIssue.Cast(aFeature)
1482 aFlange = aSLHBFIssue.Flange().FeatureList()
1483 aShapeIdVector = []
1484 for aFlangeFace in aFlange:
1485 if mtk.MTKBase_ShapeFeature.CompareType(aFlangeFace):
1486 aShapeFeature = mtk.MTKBase_ShapeFeature.Cast(aFlangeFace)
1487 MTKConverter_Report.__AddShapesId(aShapeFeature.Shape(), mtk.ShapeType_Face, aShapeIdVector)
1488 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1489 elif mtk.DFMSheetMetal_SmallRadiusBendIssue.CompareType(aFeature):
1490 aSRBIssue = mtk.DFMSheetMetal_SmallRadiusBendIssue.Cast(aFeature)
1491 aShapeIdVector = MTKConverter_Report.__GetShapesId(aSRBIssue.Bend().Shape(), mtk.ShapeType_Face)
1492 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1493 elif mtk.DFMSheetMetal_SmallDistanceBetweenBendAndLouverIssue.CompareType(aFeature):
1494 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenBendAndLouverIssue.Cast(aFeature)
1495 aShapeIdVector = []
1496 MTKConverter_Report.__AddShapesId(aSDIssue.Bend().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1497 MTKConverter_Report.__AddShapesId(aSDIssue.Louver().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1498 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1499 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndBendIssue.CompareType(aFeature):
1500 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndBendIssue.Cast(aFeature)
1501 aShapeIdVector = []
1502 MTKConverter_Report.__AddShapesId(aSDIssue.Hole().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1503 MTKConverter_Report.__AddShapesId(aSDIssue.Bend().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1504 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1505 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndEdgeIssue.CompareType(aFeature):
1506 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHoleAndEdgeIssue.Cast(aFeature)
1507 aShapeIdVector = []
1508 MTKConverter_Report.__AddShapesId(aSDIssue.Hole().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1509 aShapeIdVector.append(aSDIssue.Edge().Id())
1510 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1511 elif mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHolesIssue.CompareType(aFeature):
1512 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenExtrudedHolesIssue.Cast(aFeature)
1513 aShapeIdVector = []
1514 MTKConverter_Report.__AddShapesId(aSDIssue.FirstHole().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1515 MTKConverter_Report.__AddShapesId(aSDIssue.SecondHole().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1516 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1517 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndBendIssue.CompareType(aFeature):
1518 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndBendIssue.Cast(aFeature)
1519 aShapeIdVector = []
1520 MTKConverter_Report.__AddShapesId(aSDIssue.Hole().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1521 MTKConverter_Report.__AddShapesId(aSDIssue.Bend().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1522 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1523 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndCutoutIssue.CompareType(aFeature):
1524 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndCutoutIssue.Cast(aFeature)
1525 aShapeIdVector = []
1526 MTKConverter_Report.__AddShapesId(aSDIssue.Hole().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1527 MTKConverter_Report.__AddShapesId(aSDIssue.Cutout().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1528 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1529 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndEdgeIssue.CompareType(aFeature):
1530 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndEdgeIssue.Cast(aFeature)
1531 aShapeIdVector = []
1532 MTKConverter_Report.__AddShapesId(aSDIssue.Hole().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1533 aShapeIdVector.append(aSDIssue.Edge().Id())
1534 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1535 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndLouverIssue.CompareType(aFeature):
1536 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndNotchIssue.Cast(aFeature)
1537 aShapeIdVector = []
1538 MTKConverter_Report.__AddShapesId(aSDIssue.Hole().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1539 MTKConverter_Report.__AddShapesId(aSDIssue.Louver().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1540 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1541 elif mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndNotchIssue.CompareType(aFeature):
1542 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenHoleAndNotchIssue.Cast(aFeature)
1543 aShapeIdVector = []
1544 MTKConverter_Report.__AddShapesId(aSDIssue.Hole().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1545 MTKConverter_Report.__AddShapesId(aSDIssue.Notch().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1546 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1547 elif mtk.DFMSheetMetal_SmallDistanceBetweenHolesIssue.CompareType(aFeature):
1548 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenHolesIssue.Cast(aFeature)
1549 aShapeIdVector = []
1550 MTKConverter_Report.__AddShapesId(aSDIssue.FirstHole().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1551 MTKConverter_Report.__AddShapesId(aSDIssue.SecondHole().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1552 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1553 elif mtk.DFMSheetMetal_SmallDistanceBetweenNotchAndBendIssue.CompareType(aFeature):
1554 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenNotchAndBendIssue.Cast(aFeature)
1555 aShapeIdVector = []
1556 MTKConverter_Report.__AddShapesId(aSDIssue.Notch().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1557 MTKConverter_Report.__AddShapesId(aSDIssue.Bend().Shape(), mtk.ShapeType_Face, aShapeIdVector)
1558 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1559 elif mtk.DFMSheetMetal_SmallDistanceBetweenNotchesIssue.CompareType(aFeature):
1560 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenNotchesIssue.Cast(aFeature)
1561 aShapeIdVector = []
1562 MTKConverter_Report.__AddShapesId(aSDIssue.FirstNotch().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1563 MTKConverter_Report.__AddShapesId(aSDIssue.SecondNotch().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1564 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1565 elif mtk.DFMSheetMetal_SmallDistanceBetweenTabsIssue.CompareType(aFeature):
1566 aSDIssue = mtk.DFMSheetMetal_SmallDistanceBetweenTabsIssue.Cast(aFeature)
1567 aShapeIdVector = []
1568 MTKConverter_Report.__AddShapesId(aSDIssue.FirstTab().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1569 MTKConverter_Report.__AddShapesId(aSDIssue.SecondTab().Shape(), mtk.ShapeType_Edge, aShapeIdVector)
1570 theOrderedFeatureList.Append(aFeature, aShapeIdVector)
1571
1572 @staticmethod
1573 def __WriteFeatures(theWriter: JSONWriter, theGroupName: str, theSubgroupName: str,
1574 theFeatures: mtk.MTKBase_FeatureList, theMessageForEmptyList: str):
1575 theWriter.OpenSection(theSubgroupName)
1576 theWriter.WriteData("name", theGroupName)
1577
1578 if theFeatures.IsEmpty():
1579 theWriter.WriteData("message", theMessageForEmptyList);
1580 else:
1581 aSortedFeatures = OrderedFeatureList()
1582 MTKConverter_Report.__SortFeatures(theFeatures, aSortedFeatures)
1583
1584 aFGManager = FeatureGroupManager()
1585 for i in range(aSortedFeatures.Size()):
1586 aFeature = aSortedFeatures.GetFeature(i)
1587 aCount = aSortedFeatures.GetFeatureCount(i)
1588 aShapeIDVec = aSortedFeatures.GetFeatureShapeIDs(i)
1589
1590 if mtk.MTKBase_ShapeFeature.CompareType(aFeature):
1591 MTKConverter_Report.__AddShapeFeature(aFGManager, mtk.MTKBase_ShapeFeature.Cast(aFeature),
1592 aCount, aShapeIDVec)
1593 elif mtk.DFMMachining_DrillingIssue.CompareType(aFeature):
1594 MTKConverter_Report.__AddDrillingIssue(aFGManager, mtk.DFMMachining_DrillingIssue.Cast(aFeature),
1595 aCount, aShapeIDVec)
1596 elif mtk.DFMMachining_MillingIssue.CompareType(aFeature):
1597 MTKConverter_Report.__AddMillingIssue(aFGManager, mtk.DFMMachining_MillingIssue.Cast(aFeature),
1598 aCount, aShapeIDVec)
1599 elif (mtk.DFMSheetMetal_BendIssue.CompareType(aFeature)
1600 or mtk.DFMSheetMetal_FlatPatternInterferenceIssue.CompareType(aFeature)
1601 or mtk.DFMSheetMetal_HoleIssue.CompareType(aFeature)
1602 or mtk.DFMSheetMetal_IrregularCornerFilletRadiusNotchIssue.CompareType(aFeature)
1603 or mtk.DFMSheetMetal_IrregularDepthExtrudedHoleIssue.CompareType(aFeature)
1604 or mtk.DFMSheetMetal_IrregularSizeNotchIssue.CompareType(aFeature)
1605 or mtk.DFMSheetMetal_IrregularSizeTabIssue.CompareType(aFeature)
1606 or mtk.DFMSheetMetal_LargeDepthBeadIssue.CompareType(aFeature)
1607 or mtk.DFMSheetMetal_SmallDepthLouverIssue.CompareType(aFeature)
1608 or mtk.DFMSheetMetal_NonStandardSheetSizeIssue.CompareType(aFeature)
1609 or mtk.DFMSheetMetal_NonStandardSheetThicknessIssue.CompareType(aFeature)
1610 or mtk.DFMSheetMetal_SmallDistanceBetweenFeaturesIssue.CompareType(aFeature)):
1611 MTKConverter_Report.__AddSheetMetalIssue(aFGManager, mtk.DFMBase_Issue.Cast(aFeature),
1612 aCount, aShapeIDVec)
1613 elif (mtk.DFMMolding_IrregularCoreDiameterScrewBossIssue.CompareType(aFeature)
1614 or mtk.DFMMolding_IrregularCoreDepthScrewBossIssue.CompareType(aFeature)
1615 or mtk.DFMMolding_IrregularThicknessRibIssue.CompareType(aFeature)
1616 or mtk.DFMMolding_IrregularWallThicknessIssue.CompareType(aFeature)
1617 or mtk.DFMMolding_IrregularWallThicknessScrewBossIssue.CompareType(aFeature)
1618 or mtk.DFMMolding_SmallBaseRadiusRibIssue.CompareType(aFeature)
1619 or mtk.DFMMolding_SmallBaseRadiusScrewBossIssue.CompareType(aFeature)
1620 or mtk.DFMMolding_LargeWallThicknessIssue.CompareType(aFeature)
1621 or mtk.DFMMolding_HighRibIssue.CompareType(aFeature)
1622 or mtk.DFMMolding_HighScrewBossIssue.CompareType(aFeature)
1623 or mtk.DFMMolding_SmallDraftAngleRibIssue.CompareType(aFeature)
1624 or mtk.DFMMolding_SmallDistanceBetweenRibsIssue.CompareType(aFeature)
1625 or mtk.DFMMolding_SmallHoleBaseRadiusScrewBossIssue.CompareType(aFeature)
1626 or mtk.DFMMolding_SmallDraftAngleWallIssue.CompareType(aFeature)
1627 or mtk.DFMMolding_NonChamferedScrewBossIssue.CompareType(aFeature)
1628 or mtk.DFMMolding_SmallWallThicknessIssue.CompareType(aFeature)
1629 or mtk.DFMMolding_SmallDistanceBetweenBossesIssue.CompareType(aFeature)):
1630 MTKConverter_Report.__AddMoldingIssue(aFGManager, mtk.DFMBase_Issue.Cast(aFeature),
1631 aCount, aShapeIDVec)
1632 elif mtk.DFMBase_Issue.CompareType(aFeature):
1633 MTKConverter_Report.__AddTurningIssue(aFGManager, mtk.DFMBase_Issue.Cast(aFeature),
1634 aCount, aShapeIDVec)
1635
1636 theWriter.WriteData("totalFeatureCount", aFGManager.TotalFeatureCount())
1637 theWriter.OpenArraySection("featureGroups")
1638 aFGManager.Write(theWriter)
1639 theWriter.CloseArraySection()
1640
1641 theWriter.CloseSection()
1642
1643 return True
1644
1645 @staticmethod
1646 def __MachiningProcessName(theOperation):
1647 aProcessMap = {
1648 mtk.Machining_OT_Milling: "CNC Machining Milling",
1649 mtk.Machining_OT_LatheMilling: "CNC Machining Lathe+Milling"
1650 }
1651
1652 if theOperation in aProcessMap:
1653 return aProcessMap[theOperation]
1654 else:
1655 return "CNC Machining"
1656
1657 @staticmethod
1658 def __HasShapes(thePart: mtk.ModelData_Part, theType):
1659 aBodyList = thePart.Bodies()
1660 for aBody in aBodyList:
1661 aShapeIt = mtk.ModelData_ShapeIterator(aBody, theType)
1662 if aShapeIt.HasNext():
1663 return True
1664 return False
1665
1666 @staticmethod
1667 def __WriteThicknessNode(theWriter: JSONWriter, theParamName: str, theParamValue: int,
1668 thePoints: wt_proc.PointPair, theNodeName: str):
1669 aFirstPoint = thePoints.First
1670 aSecondPoint = thePoints.Second
1671 theWriter.OpenSection(theNodeName)
1672 theWriter.WriteData("name", theParamName)
1673 theWriter.WriteData("units", "mm")
1674 theWriter.WriteData("value", theParamValue)
1675 theWriter.WriteData("firstPoint", Point(aFirstPoint.X(), aFirstPoint.Y(), aFirstPoint.Z()))
1676 theWriter.WriteData("secondPoint", Point(aSecondPoint.X(), aSecondPoint.Y(), aSecondPoint.Z()))
1677 theWriter.CloseSection()
1678
1679 @staticmethod
1680 def __WriteUnfoldedPartFeatures(theWriter: JSONWriter, theData: sm_proc.MTKConverter_UnfoldedPartData):
1681 theWriter.OpenSection("featureRecognitionUnfolded")
1682 theWriter.WriteData("name", "Feature Recognition")
1683
1684 if theData.myIsInit:
1685 aStream = io.StringIO()
1686 aWriter = JSONWriter(aStream, 4)
1687
1688 aWriter.WriteData("parametersCount", 3)
1689 aWriter.OpenArraySection("parameters")
1690 MTKConverter_Report.__WriteParameter(aWriter, "Length", "mm", theData.myLength)
1691 MTKConverter_Report.__WriteParameter(aWriter, "Width", "mm", theData.myWidth)
1692 MTKConverter_Report.__WriteParameter(aWriter, "Thickness", "mm", theData.myThickness)
1693 MTKConverter_Report.__WriteParameter(aWriter, "Perimeter", "mm", theData.myPerimeter)
1694 aWriter.CloseArraySection()
1695
1696 theWriter.WriteRawData(aStream.getvalue())
1697 aStream.close()
1698 else:
1699 theWriter.WriteData("message", "Unfolded part wasn't generated.")
1700
1701 theWriter.CloseSection()
1702
1703 @staticmethod
1704 def __WritePartProcessData(theWriter: JSONWriter, theProcessData):
1705 aRes = False
1706 theWriter.WriteData("partId", theProcessData.myPart.Uuid())
1707
1708 anErrorMsg = "An error occurred while processing the part."
1709 if type(theProcessData) is mach_proc.MTKConverter_MachiningData:
1710 theWriter.WriteData("process", MTKConverter_Report.__MachiningProcessName(theProcessData.myOperation))
1711 if not theProcessData.myFeatureList.IsEmpty():
1712 MTKConverter_Report.__WriteFeatures(theWriter, "Feature Recognition", "featureRecognition",
1713 theProcessData.myFeatureList, "")
1714 MTKConverter_Report.__WriteFeatures(theWriter, "Design for Manufacturing", "dfm", theProcessData.myIssueList,
1715 "Part contains no DFM improvement suggestions.")
1716 aRes = True
1717 elif not MTKConverter_Report.__HasShapes(theProcessData.myPart, mtk.ShapeType_Solid):
1718 anErrorMsg = "The part can't be analyzed due to lack of: BRep representation or solids in BRep representation."
1719 elif type(theProcessData) is mold_proc.MTKConverter_MoldingData:
1720 theWriter.WriteData("process", "Molding Analysis")
1721 if not theProcessData.myFeatureList.IsEmpty():
1722 MTKConverter_Report.__WriteFeatures(theWriter, "Feature Recognition", "featureRecognition",
1723 theProcessData.myFeatureList, "")
1724 MTKConverter_Report.__WriteFeatures(theWriter, "Design for Manufacturing", "dfm", theProcessData.myIssueList,
1725 "Part contains no DFM improvement suggestions.")
1726 aRes = True
1727 elif not MTKConverter_Report.__HasShapes(theProcessData.myPart, mtk.ShapeType_Solid):
1728 anErrorMsg = "The part can't be analyzed due to lack of: BRep representation or solids in BRep representation."
1729 elif type(theProcessData) is sm_proc.MTKConverter_SheetMetalData:
1730 theWriter.WriteData("process", "Sheet Metal")
1731 if theProcessData.myIsSheetMetalPart:
1732 MTKConverter_Report.__WriteFeatures(theWriter, "Feature Recognition", "featureRecognition",
1733 theProcessData.myFeatureList, "Part contains no features.")
1734 MTKConverter_Report.__WriteFeatures(theWriter, "Design for Manufacturing", "dfm", theProcessData.myIssueList,
1735 "Part contains no DFM improvement suggestions.")
1736
1737 anUnfoldedPartData = theProcessData.myUnfoldedPartData
1738 MTKConverter_Report.__WriteUnfoldedPartFeatures(theWriter, anUnfoldedPartData)
1739 if anUnfoldedPartData.myIsInit:
1740 MTKConverter_Report.__WriteFeatures(theWriter, "Design for Manufacturing", "dfmUnfolded",
1741 anUnfoldedPartData.myIssueList,
1742 "Unfolded part contains no DFM improvement suggestions.")
1743 aRes = True
1744 elif (not MTKConverter_Report.__HasShapes(theProcessData.myPart, mtk.ShapeType_Solid)
1745 and (not MTKConverter_Report.__HasShapes (theProcessData.myPart, mtk.ShapeType_Shell))):
1746 anErrorMsg = "The part can't be analyzed due to lack of: BRep representation, solids and shells in BRep representation."
1747 else:
1748 anErrorMsg = "The part wasn't recognized as a sheet metal part."
1749 elif type(theProcessData) is wt_proc.MTKConverter_WallThicknessData:
1750 theWriter.WriteData("process", "Wall Thickness Analysis")
1751 if theProcessData.myIsInit:
1752 MTKConverter_Report.__WriteThicknessNode (theWriter, "Minimum Thickness", theProcessData.myMinThickness,
1753 theProcessData.myMinThicknessPoints, "minThickness")
1754 MTKConverter_Report.__WriteThicknessNode (theWriter, "Maximum Thickness", theProcessData.myMaxThickness,
1755 theProcessData.myMaxThicknessPoints, "maxThickness")
1756 aRes = True
1757 elif not MTKConverter_Report.__HasShapes (theProcessData.myPart.Bodies(), cadex.ModelData_ST_Solid):
1758 anErrorMsg = "The part can't be analyzed due to lack of: BRep representation, solids in BRep representation."
1759 else:
1760 anErrorMsg = "Unrecognized process"
1761
1762 if not aRes:
1763 theWriter.WriteData("error", anErrorMsg)
1764