Pretty much all draw*() operations are done by the video device using whatever transformation was last used by the card.
IGUIEnvironment::drawAll () and
ISceneManager::drawAll () set video device states for you before all the different draw operations
they, then, call to the IVideoDevice. The other draw operations, however, call directly to the IVideoDevice but don't (re)set the state first. So, you may need to reset the transformations before calling draw3dBox().
According to the API:
virtual void irr::video::IVideoDriver::draw3DBox ( ...)
This method simply calls draw3DLine for the edges of the box. Note that the box is drawn using the current transformation matrix and material. So if you need to draw it independently of the current transformation, use
driver->setMaterial(someMaterial);
driver->setTransform(video::ETS_WORLD, core::IdentityMatrix);
for some properly set up material before drawing the box.
Whatever ISceneManager::setPosition/Rotation/Scale operations you call won't be used by the IVideoDevice when using IVideoDevice::draw*() operations. They're ignored by the video device.