Commit | Line | Data |
---|---|---|

42cf5bc1 | 1 | // Created on: 1994-08-03 |

2 | // Created by: Christophe MARION | |

3 | // Copyright (c) 1994-1999 Matra Datavision | |

4 | // Copyright (c) 1999-2014 OPEN CASCADE SAS | |

5 | // | |

6 | // This file is part of Open CASCADE Technology software library. | |

7 | // | |

8 | // This library is free software; you can redistribute it and/or modify it under | |

9 | // the terms of the GNU Lesser General Public License version 2.1 as published | |

10 | // by the Free Software Foundation, with special exception defined in the file | |

11 | // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT | |

12 | // distribution for complete text of the license and disclaimer of any warranty. | |

13 | // | |

14 | // Alternatively, this file may be used under the terms of Open CASCADE | |

15 | // commercial license or contractual agreement. | |

16 | ||

17 | #ifndef _HLRBRep_Algo_HeaderFile | |

18 | #define _HLRBRep_Algo_HeaderFile | |

19 | ||

20 | #include <Standard.hxx> | |

21 | #include <Standard_Type.hxx> | |

22 | ||

23 | #include <HLRBRep_InternalAlgo.hxx> | |

24 | #include <Standard_Integer.hxx> | |

25 | class TopoDS_Shape; | |

26 | class MMgt_TShared; | |

27 | ||

28 | ||

29 | class HLRBRep_Algo; | |

30 | DEFINE_STANDARD_HANDLE(HLRBRep_Algo, HLRBRep_InternalAlgo) | |

31 | ||

32 | //! Inherited from InternalAlgo to provide methods with Shape from TopoDS. | |

33 | //! A framework to compute a shape as seen in a projection plane. This is done by | |

34 | //! calculating the visible and the hidden parts of the shape. | |

35 | //! HLRBRep_Algo works with three types of entity: | |

36 | //! - shapes to be visualized | |

37 | //! - edges in these shapes (these edges are | |

38 | //! the basic entities which will be visualized or hidden), and | |

39 | //! - faces in these shapes which hide the edges. | |

40 | //! HLRBRep_Algo is based on the principle of comparing each edge of the shape to be | |

41 | //! visualized with each of its faces, and calculating the visible and the hidden parts of each edge. | |

42 | //! For a given projection, HLRBRep_Algo calculates a set of lines characteristic of the | |

43 | //! object being represented. It is also used in conjunction with the | |

44 | //! HLRBRep_HLRToShape extraction utilities, which reconstruct a new, simplified shape | |

45 | //! from a selection of calculation results. This new shape is made up of edges, which | |

46 | //! represent the shape visualized in the projection. | |

47 | //! HLRBRep_Algo takes the shape itself into account whereas HLRBRep_PolyAlgo | |

48 | //! works with a polyhedral simplification of the shape. When you use HLRBRep_Algo, you | |

49 | //! obtain an exact result, whereas, when you use HLRBRep_PolyAlgo, you reduce | |

50 | //! computation time but obtain polygonal segments. In the case of complicated | |

51 | //! shapes, HLRBRep_Algo may be time-consuming. | |

52 | //! An HLRBRep_Algo object provides a framework for: | |

53 | //! - defining the point of view | |

54 | //! - identifying the shape or shapes to be visualized | |

55 | //! - calculating the outlines | |

56 | //! - calculating the visible and hidden lines of the shape. | |

57 | //! Warning | |

58 | //! - Superimposed lines are not eliminated by this algorithm. | |

59 | //! - There must be no unfinished objects inside the shape you wish to visualize. | |

60 | //! - Points are not treated. | |

61 | //! - Note that this is not the sort of algorithm used in generating shading, which | |

62 | //! calculates the visible and hidden parts of each face in a shape to be visualized by | |

63 | //! comparing each face in the shape with every other face in the same shape. | |

64 | class HLRBRep_Algo : public HLRBRep_InternalAlgo | |

65 | { | |

66 | ||

67 | public: | |

68 | ||

69 | ||

70 | //! Constructs an empty framework for the | |

71 | //! calculation of visible and hidden lines of a shape in a projection. | |

72 | //! Use the function: | |

73 | //! - Projector to define the point of view | |

74 | //! - Add to select the shape or shapes to be visualized | |

75 | //! - Update to compute the outlines of the shape, and | |

76 | //! - Hide to compute the visible and hidden lines of the shape. | |

77 | Standard_EXPORT HLRBRep_Algo(); | |

78 | ||

79 | Standard_EXPORT HLRBRep_Algo(const Handle(HLRBRep_Algo)& A); | |

80 | ||

81 | //! add the Shape <S>. | |

82 | Standard_EXPORT void Add (const TopoDS_Shape& S, const Handle(MMgt_TShared)& SData, const Standard_Integer nbIso = 0); | |

83 | ||

84 | //! Adds the shape S to this framework, and | |

85 | //! specifies the number of isoparameters nbiso desired in visualizing S. | |

86 | //! You may add as many shapes as you wish. Use the function Add once for each shape. | |

87 | Standard_EXPORT void Add (const TopoDS_Shape& S, const Standard_Integer nbIso = 0); | |

88 | ||

89 | //! return the index of the Shape <S> and | |

90 | //! return 0 if the Shape <S> is not found. | |

91 | Standard_EXPORT Standard_Integer Index (const TopoDS_Shape& S); | |

92 | ||

93 | //! nullify all the results of OutLiner from HLRTopoBRep. | |

94 | Standard_EXPORT void OutLinedShapeNullify(); | |

95 | ||

96 | ||

97 | ||

98 | ||

92efcf78 | 99 | DEFINE_STANDARD_RTTIEXT(HLRBRep_Algo,HLRBRep_InternalAlgo) |

42cf5bc1 | 100 | |

101 | protected: | |

102 | ||

103 | ||

104 | ||

105 | ||

106 | private: | |

107 | ||

108 | ||

109 | ||

110 | ||

111 | }; | |

112 | ||

113 | ||

114 | ||

115 | ||

116 | ||

117 | ||

118 | ||

119 | #endif // _HLRBRep_Algo_HeaderFile |