void DraftDxfRead::OnReadInsert(const double* point, const double* scale, const char* name, double rotation) { std::cout << "Inserting block " << name << " rotation " << rotation << " pos " << point[0] << "," << point[1] << "," << point[2] << std::endl; for(std::map<std::string,std::vector<Part::TopoShape*> > ::const_iterator i = layers.begin(); i != layers.end(); ++i) { std::string k = i->first; std::string prefix = "BLOCKS "; prefix += name; prefix += " "; if(k.substr(0, prefix.size()) == prefix) { BRep_Builder builder; TopoDS_Compound comp; builder.MakeCompound(comp); std::vector<Part::TopoShape*> v = i->second; for(std::vector<Part::TopoShape*>::const_iterator j = v.begin(); j != v.end(); ++j) { const TopoDS_Shape& sh = (*j)->_Shape; if (!sh.IsNull()) builder.Add(comp, sh); } if (!comp.IsNull()) { Part::TopoShape* pcomp = new Part::TopoShape(comp); Base::Matrix4D mat; mat.scale(scale[0],scale[1],scale[2]); mat.rotZ(rotation); mat.move(point[0],point[1],point[2]); pcomp->transformShape(mat,true); AddObject(pcomp); } } } }
// Create a Box and Place it a coords (x,y,z) MeshObjectRef PlaceBox(float x, float y, float z) { MeshObjectRef mesh = new Mesh::MeshObject(*globalBox); Base::Matrix4D m; m.move(x,y,z); mesh->getKernel().Transform(m); return mesh; }
PyObject* MeshPy::translate(PyObject *args) { float x,y,z; if (!PyArg_ParseTuple(args, "fff",&x,&y,&z)) return NULL; PY_TRY { Base::Matrix4D m; m.move(x,y,z); getMeshObjectPtr()->getKernel().Transform(m); } PY_CATCH; Py_Return; }
void ComplexGeoData::applyTranslation(const Base::Vector3d& mov) { Base::Matrix4D mat; mat.move(mov); setTransform(mat * getTransform()); }