- DX = i * step * Vec.X();
- DY = i * step * Vec.Y();
- DZ = i * step * Vec.Z();
- aVec.SetCoord( DX, DY, DZ );
- aTrsf1.SetTranslation(aVec);
- aTrsf2.SetRotation(AX1, j*ang*PI180);
+ if (j == 0) { // NPAL19665
+ TopLoc_Location aLocRes (aTrsf1 * aTrsfOrig);
+ B.Add(aCompound, anOriginal.Located(aLocRes));
+ }
+ else {
+ aTrsf2.SetRotation(AX1, j*ang*PI180);
+ //TopLoc_Location aLocRes (aTrsf2 * aTrsf1 * aTrsfOrig); // gp_Trsf::Multiply() has a bug
+ gp_Trsf aTrsfNew (aTrsfOrig);
+ aTrsfNew.PreMultiply(aTrsf1);
+ aTrsfNew.PreMultiply(aTrsf2);
+ TopLoc_Location aLocRes (aTrsfNew);
+ B.Add(aCompound, anOriginal.Located(aLocRes));
+ }