7fd59977 |
1 | //-------------------------------------------------------------------- |
2 | // |
3 | // File Name : IGESDimen_FlagNote.cxx |
4 | // Date : |
5 | // Author : CKY / Contract Toubro-Larsen |
6 | // Copyright : MATRA-DATAVISION 1993 |
7 | // |
8 | //-------------------------------------------------------------------- |
9 | |
10 | #include <IGESDimen_ToolFlagNote.ixx> |
11 | #include <IGESData_ParamCursor.hxx> |
12 | #include <gp_XYZ.hxx> |
13 | #include <IGESDimen_LeaderArrow.hxx> |
14 | #include <IGESDimen_GeneralNote.hxx> |
15 | #include <IGESDimen_HArray1OfLeaderArrow.hxx> |
16 | #include <IGESData_Dump.hxx> |
17 | #include <Interface_Macros.hxx> |
18 | |
19 | |
20 | IGESDimen_ToolFlagNote::IGESDimen_ToolFlagNote () { } |
21 | |
22 | |
23 | void IGESDimen_ToolFlagNote::ReadOwnParams |
24 | (const Handle(IGESDimen_FlagNote)& ent, |
25 | const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const |
26 | { |
27 | //Standard_Boolean st; //szv#4:S4163:12Mar99 moved down |
28 | |
29 | gp_XYZ lowerLeft; |
30 | Standard_Real angle; |
31 | Handle(IGESDimen_GeneralNote) note; |
32 | Standard_Integer nbval; |
33 | Handle(IGESDimen_HArray1OfLeaderArrow) leaders; |
34 | |
35 | PR.ReadXYZ (PR.CurrentList(1, 3), "Lower Left Corner Co-ords", lowerLeft); //szv#4:S4163:12Mar99 `st=` not needed |
36 | |
37 | PR.ReadReal(PR.Current(), "Rotation Angle", angle); //szv#4:S4163:12Mar99 `st=` not needed |
38 | |
39 | PR.ReadEntity(IR, PR.Current(), "General Note Entity", |
40 | STANDARD_TYPE(IGESDimen_GeneralNote), note); //szv#4:S4163:12Mar99 `st=` not needed |
41 | |
42 | Standard_Boolean st = PR.ReadInteger(PR.Current(), "Number of Leaders", nbval); |
43 | if (st && nbval > 0) |
44 | { |
45 | leaders = new IGESDimen_HArray1OfLeaderArrow(1, nbval); |
46 | |
47 | for (Standard_Integer i = 1; i <= nbval; i++) |
48 | { |
49 | Handle(IGESDimen_LeaderArrow) anentity; |
50 | //st = PR.ReadEntity(IR, PR.Current(), "Leaders", |
51 | //STANDARD_TYPE(IGESDimen_LeaderArrow), anentity); //szv#4:S4163:12Mar99 moved in if |
52 | if (PR.ReadEntity(IR, PR.Current(), "Leaders", STANDARD_TYPE(IGESDimen_LeaderArrow), anentity)) |
53 | leaders->SetValue(i, anentity); |
54 | } |
55 | } |
56 | else if (nbval < 0) |
57 | PR.AddFail("Number of Leaders: Less than zero"); |
58 | |
59 | DirChecker(ent).CheckTypeAndForm(PR.CCheck(),ent); |
60 | ent->Init(lowerLeft, angle, note, leaders); |
61 | } |
62 | |
63 | void IGESDimen_ToolFlagNote::WriteOwnParams |
64 | (const Handle(IGESDimen_FlagNote)& ent, IGESData_IGESWriter& IW) const |
65 | { |
66 | IW.Send(ent->LowerLeftCorner().X()); |
67 | IW.Send(ent->LowerLeftCorner().Y()); |
68 | IW.Send(ent->LowerLeftCorner().Z()); |
69 | IW.Send(ent->Angle()); |
70 | IW.Send(ent->Note()); |
71 | Standard_Integer upper = ent->NbLeaders(); |
72 | IW.Send(upper); |
73 | for (Standard_Integer i = 1; i <= upper; i ++) |
74 | IW.Send(ent->Leader(i)); |
75 | } |
76 | |
77 | void IGESDimen_ToolFlagNote::OwnShared |
78 | (const Handle(IGESDimen_FlagNote)& ent, Interface_EntityIterator& iter) const |
79 | { |
80 | iter.GetOneItem(ent->Note()); |
81 | Standard_Integer upper = ent->NbLeaders(); |
82 | for (Standard_Integer i = 1; i <= upper; i ++) |
83 | iter.GetOneItem(ent->Leader(i)); |
84 | } |
85 | |
86 | void IGESDimen_ToolFlagNote::OwnCopy |
87 | (const Handle(IGESDimen_FlagNote)& another, |
88 | const Handle(IGESDimen_FlagNote)& ent, Interface_CopyTool& TC) const |
89 | { |
90 | gp_XYZ lowerLeft = (another->LowerLeftCorner()).XYZ(); |
91 | Standard_Real angle = another->Angle(); |
92 | DeclareAndCast(IGESDimen_GeneralNote, note, |
93 | TC.Transferred(another->Note())); |
94 | Standard_Integer nbval = another->NbLeaders(); |
95 | |
96 | Handle(IGESDimen_HArray1OfLeaderArrow) leaders; |
97 | |
98 | if ( nbval > 0 ) |
99 | { |
100 | leaders = new IGESDimen_HArray1OfLeaderArrow(1, nbval); |
101 | for (Standard_Integer i = 1; i <= nbval; i++) |
102 | { |
103 | DeclareAndCast(IGESDimen_LeaderArrow, new_ent, |
104 | TC.Transferred(another->Leader(i))); |
105 | leaders->SetValue(i, new_ent); |
106 | } |
107 | } |
108 | ent->Init(lowerLeft, angle, note, leaders); |
109 | } |
110 | |
111 | IGESData_DirChecker IGESDimen_ToolFlagNote::DirChecker |
112 | (const Handle(IGESDimen_FlagNote)& /* ent */ ) const |
113 | { |
114 | IGESData_DirChecker DC (208, 0); |
115 | DC.Structure(IGESData_DefVoid); |
116 | DC.LineFont(IGESData_DefAny); |
117 | DC.LineWeight(IGESData_DefValue); |
118 | DC.Color(IGESData_DefAny); |
119 | DC.UseFlagRequired(1); |
120 | return DC; |
121 | } |
122 | |
123 | void IGESDimen_ToolFlagNote::OwnCheck |
124 | (const Handle(IGESDimen_FlagNote)& /* ent */, |
125 | const Interface_ShareTool& , Handle(Interface_Check)& /* ach */) const |
126 | { |
127 | } |
128 | |
129 | void IGESDimen_ToolFlagNote::OwnDump |
130 | (const Handle(IGESDimen_FlagNote)& ent, const IGESData_IGESDumper& dumper, |
131 | const Handle(Message_Messenger)& S, const Standard_Integer level) const |
132 | { |
133 | Standard_Integer sublevel = (level > 4) ? 1 : 0; |
134 | |
135 | S << "IGESDimen_FlagNote" << endl; |
136 | S << "LowerLeftCorner : "; |
137 | IGESData_DumpXYZL(S,level, ent->LowerLeftCorner(), ent->Location()); |
138 | S << endl << "Rotation Angle: " << ent->Angle() << endl; |
139 | S << "General Note Entity : "; |
140 | dumper.Dump(ent->Note(),S, sublevel); |
141 | S << endl; |
142 | S << "Number of Leaders : " << ent->NbLeaders() << " Leaders : "; |
143 | IGESData_DumpEntities(S,dumper ,level,1, ent->NbLeaders(),ent->Leader); |
144 | S << endl; |
145 | } |