src/toolsets/algorithmtoolset.cpp

changeset 1324
563a9b65777b
parent 1323
05b3e173c900
child 1326
69a90bd2dba2
equal deleted inserted replaced
1323:05b3e173c900 1324:563a9b65777b
154 void AlgorithmToolset::roundCoordinates() 154 void AlgorithmToolset::roundCoordinates()
155 { 155 {
156 setlocale (LC_ALL, "C"); 156 setlocale (LC_ALL, "C");
157 int num = 0; 157 int num = 0;
158 158
159 for (LDObject* obj : selectedObjects()) 159 for (LDObject* object : selectedObjects())
160 { 160 {
161 LDMatrixObject* mo = dynamic_cast<LDMatrixObject*> (obj); 161 LDMatrixObject* mo = dynamic_cast<LDMatrixObject*> (object);
162 162
163 if (mo) 163 if (mo)
164 { 164 {
165 Vertex v = mo->position(); 165 Vertex position = mo->position();
166 Matrix t = mo->transformationMatrix(); 166 Matrix matrix = mo->transformationMatrix();
167 167
168 v.apply ([&](Axis, double& a) 168 for (Axis axis : {X, Y, Z})
169 { 169 position[axis] = roundToDecimals(position[axis], config::roundPositionPrecision());
170 roundToDecimals (a, config::roundPositionPrecision()); 170
171 }); 171 for (int i : {0, 1, 2})
172 172 for (int j : {0, 1, 2})
173 applyToMatrix (t, [&](int, double& a) 173 matrix(i, j) = roundToDecimals(matrix(i, j), config::roundMatrixPrecision());
174 { 174
175 roundToDecimals (a, config::roundMatrixPrecision()); 175 mo->setPosition(position);
176 }); 176 mo->setTransformationMatrix(matrix);
177
178 mo->setPosition (v);
179 mo->setTransformationMatrix (t);
180 num += 12; 177 num += 12;
181 } 178 }
182 else 179 else
183 { 180 {
184 for (int i = 0; i < obj->numVertices(); ++i) 181 for (int i = 0; i < object->numVertices(); ++i)
185 { 182 {
186 Vertex v = obj->vertex (i); 183 Vertex vertex = object->vertex (i);
187 v.apply ([&](Axis, double& a) 184 for (Axis axis : {X, Y, Z})
188 { 185 vertex[axis] = roundToDecimals(vertex[axis], config::roundPositionPrecision());
189 roundToDecimals (a, config::roundPositionPrecision()); 186 object->setVertex(i, vertex);
190 });
191 obj->setVertex (i, v);
192 num += 3; 187 num += 3;
193 } 188 }
194 } 189 }
195 } 190 }
196 191

mercurial