// TDF_Reference - from ReferenceAttribute, the context
void Model_AttributeSelection::setValue(const ResultPtr& theContext,
- const boost::shared_ptr<GeomAPI_Shape>& theSubShape)
+ const std::shared_ptr<GeomAPI_Shape>& theSubShape)
{
- const boost::shared_ptr<GeomAPI_Shape>& anOldShape = value();
+ const std::shared_ptr<GeomAPI_Shape>& anOldShape = value();
bool isOldShape =
(theSubShape == anOldShape || (theSubShape && anOldShape && theSubShape->isEqual(anOldShape)));
if (isOldShape) return; // shape is the same, so context is also unchanged
owner()->data()->sendAttributeUpdated(this);
}
-boost::shared_ptr<GeomAPI_Shape> Model_AttributeSelection::value()
+std::shared_ptr<GeomAPI_Shape> Model_AttributeSelection::value()
{
- boost::shared_ptr<GeomAPI_Shape> aResult;
+ std::shared_ptr<GeomAPI_Shape> aResult;
if (myIsInitialized) {
Handle(TNaming_NamedShape) aSelection;
if (selectionLabel().FindAttribute(TNaming_NamedShape::GetID(), aSelection)) {
TopoDS_Shape aSelShape = aSelection->Get();
- aResult = boost::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape);
+ aResult = std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape);
aResult->setImpl(new TopoDS_Shape(aSelShape));
}
}
}
ResultPtr Model_AttributeSelection::context() {
- return boost::dynamic_pointer_cast<ModelAPI_Result>(myRef.value());
+ return std::dynamic_pointer_cast<ModelAPI_Result>(myRef.value());
}
-void Model_AttributeSelection::setObject(const boost::shared_ptr<ModelAPI_Object>& theObject)
+void Model_AttributeSelection::setObject(const std::shared_ptr<ModelAPI_Object>& theObject)
{
ModelAPI_AttributeSelection::setObject(theObject);
myRef.setObject(theObject);
} else if (aContext->groupName() == ModelAPI_ResultConstruction::group()) {
// construction: identification by the results indexes, recompute faces and
// take the face that more close by the indexes
- boost::shared_ptr<GeomAPI_PlanarEdges> aWirePtr =
- boost::dynamic_pointer_cast<GeomAPI_PlanarEdges>(
- boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(aContext)->shape());
+ std::shared_ptr<GeomAPI_PlanarEdges> aWirePtr =
+ std::dynamic_pointer_cast<GeomAPI_PlanarEdges>(
+ std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(aContext)->shape());
if (aWirePtr && aWirePtr->hasPlane()) {
TDF_Label aLab = myRef.myRef->Label();
// getting a type of selected shape
TopAbs_ShapeEnum aShapeType = (TopAbs_ShapeEnum)(aTypeAttr->Get());
// selected indexes will be needed in each "if"
Handle(TDataStd_IntPackedMap) aSubIds;
- boost::shared_ptr<GeomAPI_Shape> aNewSelected;
+ std::shared_ptr<GeomAPI_Shape> aNewSelected;
bool aNoIndexes =
!aLab.FindAttribute(TDataStd_IntPackedMap::GetID(), aSubIds) || aSubIds->Extent() == 0;
// for now working only with composite features
FeaturePtr aContextFeature = owner()->document()->feature(aContext);
CompositeFeaturePtr aComposite =
- boost::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
+ std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
if (!aComposite || aComposite->numberOfSubs() == 0) {
return false;
}
if (aShapeType == TopAbs_FACE) {
// If this is a wire with plane defined thin it is a sketch-like object
- std::list<boost::shared_ptr<GeomAPI_Shape> > aFaces;
+ std::list<std::shared_ptr<GeomAPI_Shape> > aFaces;
GeomAlgoAPI_SketchBuilder::createFaces(aWirePtr->origin(), aWirePtr->dirX(),
aWirePtr->dirY(), aWirePtr->norm(), aWirePtr, aFaces);
if (aFaces.empty()) // no faces, update can not work correctly
return false;
// if there is no edges indexes, any face can be used: take the first
- boost::shared_ptr<GeomAPI_Shape> aNewSelected;
+ std::shared_ptr<GeomAPI_Shape> aNewSelected;
if (aNoIndexes) {
aNewSelected = *(aFaces.begin());
} else { // searching for most looks-like initial face by the indexes
for(int a = 0; a < aSubNum; a++) {
if (aSubIds->Contains(aComposite->subFeatureId(a))) {
FeaturePtr aSub = aComposite->subFeature(a);
- const std::list<boost::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
- std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aRes;
+ const std::list<std::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
+ std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aRes;
for(aRes = aResults.cbegin(); aRes != aResults.cend(); aRes++) {
ResultConstructionPtr aConstr =
- boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
+ std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
if (aConstr->shape() && aConstr->shape()->isEdge()) {
const TopoDS_Shape& aResShape = aConstr->shape()->impl<TopoDS_Shape>();
TopoDS_Edge anEdge = TopoDS::Edge(aResShape);
}
}
// iterate new result faces and searching for these edges
- std::list<boost::shared_ptr<GeomAPI_Shape> >::iterator aFacesIter = aFaces.begin();
+ std::list<std::shared_ptr<GeomAPI_Shape> >::iterator aFacesIter = aFaces.begin();
double aBestFound = 0; // best percentage of found edges
for(; aFacesIter != aFaces.end(); aFacesIter++) {
int aFound = 0, aNotFound = 0;
if (aSubIds->IsEmpty() || aSubIds->Contains(aComposite->subFeatureId(a))) {
// found the appropriate feature
FeaturePtr aFeature = aComposite->subFeature(a);
- std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
+ std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
aFeature->results().cbegin();
for(;aResIter != aFeature->results().cend(); aResIter++) {
ResultConstructionPtr aRes =
- boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
+ std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
if (aRes && aRes->shape() && aRes->shape()->isEdge()) { // found!
selectConstruction(aContext, aRes->shape());
owner()->data()->sendAttributeUpdated(this);
else if (aSubIds->Contains(aFeatureID + kSTART_VERTEX_DELTA)) aVertexNum = 2;
// found the feature with appropriate edge
FeaturePtr aFeature = aComposite->subFeature(a);
- std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
+ std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
aFeature->results().cbegin();
for(;aResIter != aFeature->results().cend(); aResIter++) {
ResultConstructionPtr aRes =
- boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
+ std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
if (aRes && aRes->shape()) {
if (aRes->shape()->isVertex() && aVertexNum == 0) { // found!
selectConstruction(aContext, aRes->shape());
int aVIndex = 1;
for(TopExp_Explorer aVExp(anEdge, TopAbs_VERTEX); aVExp.More(); aVExp.Next()) {
if (aVIndex == aVertexNum) { // found!
- boost::shared_ptr<GeomAPI_Shape> aVertex(new GeomAPI_Shape);
+ std::shared_ptr<GeomAPI_Shape> aVertex(new GeomAPI_Shape);
aVertex->setImpl(new TopoDS_Shape(aVExp.Current()));
selectConstruction(aContext, aVertex);
owner()->data()->sendAttributeUpdated(this);
void Model_AttributeSelection::selectBody(
- const ResultPtr& theContext, const boost::shared_ptr<GeomAPI_Shape>& theSubShape)
+ const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape)
{
// perform the selection
TNaming_Selector aSel(selectionLabel());
TopoDS_Shape aNewShape = theSubShape ? theSubShape->impl<TopoDS_Shape>() : TopoDS_Shape();
TopoDS_Shape aContext;
- ResultBodyPtr aBody = boost::dynamic_pointer_cast<ModelAPI_ResultBody>(myRef.value());
+ ResultBodyPtr aBody = std::dynamic_pointer_cast<ModelAPI_ResultBody>(myRef.value());
if (aBody)
aContext = aBody->shape()->impl<TopoDS_Shape>();
else {
- ResultConstructionPtr aConstr = boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(myRef.value());
+ ResultConstructionPtr aConstr = std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(myRef.value());
if (aConstr) {
aContext = aConstr->shape()->impl<TopoDS_Shape>();
} else {
}
void Model_AttributeSelection::selectConstruction(
- const ResultPtr& theContext, const boost::shared_ptr<GeomAPI_Shape>& theSubShape)
+ const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape)
{
FeaturePtr aContextFeature = owner()->document()->feature(theContext);
CompositeFeaturePtr aComposite =
- boost::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
+ std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
if (!aComposite || aComposite->numberOfSubs() == 0) {
return; // saving of context is enough: result construction contains exactly the needed shape
}
- boost::shared_ptr<Model_Data> aData = boost::dynamic_pointer_cast<Model_Data>(owner()->data());
+ std::shared_ptr<Model_Data> aData = std::dynamic_pointer_cast<Model_Data>(owner()->data());
TDF_Label aLab = myRef.myRef->Label();
// identify the reuslts of sub-object of the composite by edges
const TopoDS_Shape& aSubShape = theSubShape->impl<TopoDS_Shape>();
const int aSubNum = aComposite->numberOfSubs();
for(int a = 0; a < aSubNum; a++) {
FeaturePtr aSub = aComposite->subFeature(a);
- const std::list<boost::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
- std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aRes = aResults.cbegin();
+ const std::list<std::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
+ std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aRes = aResults.cbegin();
// there may be many shapes (circle and center): register if at least one is in selection
for(; aRes != aResults.cend(); aRes++) {
ResultConstructionPtr aConstr =
- boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
+ std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
if (!aConstr->shape()) {
continue;
}