fixes 0003165: Color information lost in STEP export
This commit is contained in:
@@ -198,7 +198,7 @@ private:
|
||||
}
|
||||
|
||||
#if 1
|
||||
Import::ImportOCAF ocaf(hDoc, pcDoc, file.fileNamePure());
|
||||
Import::ImportOCAFCmd ocaf(hDoc, pcDoc, file.fileNamePure());
|
||||
ocaf.loadShapes();
|
||||
#else
|
||||
Import::ImportXCAF xcaf(hDoc, pcDoc, file.fileNamePure());
|
||||
@@ -206,6 +206,23 @@ private:
|
||||
#endif
|
||||
pcDoc->recompute();
|
||||
hApp->Close(hDoc);
|
||||
|
||||
std::map<Part::Feature*, std::vector<App::Color> > colorMap = ocaf.getPartColorsMap();
|
||||
if (!colorMap.empty()) {
|
||||
Py::List list;
|
||||
for (auto it : colorMap) {
|
||||
Py::Tuple tuple(2);
|
||||
tuple.setItem(0, Py::asObject(it.first->getPyObject()));
|
||||
|
||||
App::PropertyColorList colors;
|
||||
colors.setValues(it.second);
|
||||
tuple.setItem(1, Py::asObject(colors.getPyObject()));
|
||||
|
||||
list.append(tuple);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
throw Py::Exception(Base::BaseExceptionFreeCADError, e.GetMessageString());
|
||||
|
||||
@@ -478,6 +478,18 @@ void ImportOCAF::createShape(const TopoDS_Shape& aShape, const TopLoc_Location&
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
ImportOCAFCmd::ImportOCAFCmd(Handle(TDocStd_Document) h, App::Document* d, const std::string& name)
|
||||
: ImportOCAF(h, d, name)
|
||||
{
|
||||
}
|
||||
|
||||
void ImportOCAFCmd::applyColors(Part::Feature* part, const std::vector<App::Color>& colors)
|
||||
{
|
||||
partColors[part] = colors;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
ExportOCAF::ExportOCAF(Handle(TDocStd_Document) h, bool explicitPlacement)
|
||||
: pDoc(h)
|
||||
, keepExplicitPlacement(explicitPlacement)
|
||||
|
||||
@@ -77,6 +77,21 @@ private:
|
||||
static const int HashUpper = INT_MAX;
|
||||
};
|
||||
|
||||
class ImportExport ImportOCAFCmd : public ImportOCAF
|
||||
{
|
||||
public:
|
||||
ImportOCAFCmd(Handle(TDocStd_Document) h, App::Document* d, const std::string& name);
|
||||
std::map<Part::Feature*, std::vector<App::Color> > getPartColorsMap() const {
|
||||
return partColors;
|
||||
}
|
||||
|
||||
private:
|
||||
void applyColors(Part::Feature* part, const std::vector<App::Color>& colors);
|
||||
|
||||
private:
|
||||
std::map<Part::Feature*, std::vector<App::Color> > partColors;
|
||||
};
|
||||
|
||||
class ImportExport ExportOCAF
|
||||
{
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user