}
}
- /*if (!aTangentFeatures.empty()) {
- std::cout << std::endl;
- std::cout << "Tangencies to base feature[" << aTangentFeatures.size() << "]: " << std::endl;
- std::map<FeaturePtr, IdToPointPair>::const_iterator anIt = aTangentFeatures.begin(),
- aLast = aTangentFeatures.end();
- for (int i = 1; anIt != aLast; anIt++, i++) {
- FeaturePtr aFeature = (*anIt).first;
- std::string anAttributeId = (*anIt).second.first;
- std::shared_ptr<GeomDataAPI_Point2D> aPointAttr = (*anIt).second.second;
-
- std::cout << i << "-" << getFeatureInfo(aFeature) << std::endl;
- std::cout << " -Attribute to correct:" << anAttributeId << std::endl;
- std::cout << " -Point attribute:" <<
- ModelGeomAlgo_Point2D::getPointAttributeInfo(aPointAttr) << std::endl;
- }
- }*/
-
std::map<AttributePtr, std::list<AttributePtr> >::const_iterator
aRefIt = aBaseRefAttributes.begin(), aRefLast = aBaseRefAttributes.end();
std::cout << std::endl << "References to attributes of base feature [" <<
// coincidence to feature
updateCoincidenceConstraintsToFeature(aCoincidenceToFeature, aFurtherCoincidences,
aFeatureResults, aSplitFeature);
- // tangency
- //updateTangentConstraintsToFeature(aTangentFeatures, aFurtherCoincidences);
updateRefAttConstraints(aBaseRefAttributes, aModifiedAttributes);
void SketchPlugin_ConstraintSplit::getConstraints(std::set<FeaturePtr>& theFeaturesToDelete,
std::set<FeaturePtr>& theFeaturesToUpdate,
- //std::map<FeaturePtr, IdToPointPair>& theTangentFeatures,
std::map<FeaturePtr, IdToPointPair>& theCoincidenceToFeature)
{
std::shared_ptr<ModelAPI_Data> aData = data();
theFeaturesToDelete.insert(aRefFeature);
else if (aRefFeatureKind == SketchPlugin_ConstraintLength::ID())
theFeaturesToUpdate.insert(aRefFeature);
- /*else if (aRefFeatureKind == SketchPlugin_ConstraintTangent::ID()) {
- if (aBaseFeature->getKind() == SketchPlugin_Circle::ID()) /// TEMPORARY limitaion
- /// until tangency between arc and line is implemented
- theFeaturesToDelete.insert(aRefFeature);
- else {
- std::string anAttributeToBeModified;
- AttributePoint2DPtr aTangentPoint;
- ObjectPtr aResult1 = aRefFeature->refattr(SketchPlugin_Constraint::ENTITY_A())->object();
- ObjectPtr aResult2 = aRefFeature->refattr(SketchPlugin_Constraint::ENTITY_B())->object();
- if (aResult1.get() && aResult2.get()) {
- FeaturePtr aCoincidenceFeature =
- SketchPlugin_ConstraintCoincidence::findCoincidenceFeature
- (ModelAPI_Feature::feature(aResult1),
- ModelAPI_Feature::feature(aResult2));
- // get the point not lying on the splitting feature
- for (int i = 0; i < CONSTRAINT_ATTR_SIZE; ++i) {
- AttributeRefAttrPtr aRefAttr = aCoincidenceFeature->refattr(ATTRIBUTE(i));
- if (!aRefAttr || aRefAttr->isObject())
- continue;
- AttributePoint2DPtr aPoint =
- std::dynamic_pointer_cast<GeomDataAPI_Point2D>(aRefAttr->attr());
- if (!aPoint)
- continue;
- if (aPoint->owner() != aBaseFeature) {
- aTangentPoint = aPoint;
- break;
- }
- }
- }
- if (aTangentPoint.get()) {
- FeaturePtr aFeature1 = ModelAPI_Feature::feature(aResult1);
- std::string anAttributeToBeModified = aFeature1 == aBaseFeature
- ? SketchPlugin_Constraint::ENTITY_A() : SketchPlugin_Constraint::ENTITY_B();
- theTangentFeatures[aRefFeature] = std::make_pair(anAttributeToBeModified, aTangentPoint);
- }
- else /// there is not coincident point between tangent constraint
- theFeaturesToDelete.insert(aRefFeature);
- }
- }
- */else if (aRefFeatureKind == SketchPlugin_ConstraintCoincidence::ID()) {
+ else if (aRefFeatureKind == SketchPlugin_ConstraintCoincidence::ID()) {
std::string anAttributeToBeModified;
AttributePoint2DPtr aCoincidentPoint;
AttributeRefAttrPtr anAttrA = aRefFeature->refattr(SketchPlugin_Constraint::ENTITY_A());
}
}
-//void SketchPlugin_ConstraintSplit::updateTangentConstraintsToFeature(
-// const std::map<std::shared_ptr<ModelAPI_Feature>, IdToPointPair>& theTangentFeatures,
-// const std::set<std::shared_ptr<GeomDataAPI_Point2D> >& theFurtherCoincidences)
-//{
-// if (theTangentFeatures.empty())
-// return;
-//
-// std::map<FeaturePtr, IdToPointPair>::const_iterator aTIt = theTangentFeatures.begin(),
-// aTLast = theTangentFeatures.end();
-//#ifdef DEBUG_SPLIT
-// std::cout << std::endl;
-// std::cout << "Tangencies to feature(modified):"<< std::endl;
-//#endif
-// for (; aTIt != aTLast; aTIt++) {
-// FeaturePtr aTangentFeature = aTIt->first;
-// std::string anAttributeId = aTIt->second.first;
-// AttributePoint2DPtr aTangentPoint = aTIt->second.second;
-// std::set<AttributePoint2DPtr>::const_iterator aFCIt = theFurtherCoincidences.begin(),
-// aFCLast = theFurtherCoincidences.end();
-// std::shared_ptr<GeomAPI_Pnt2d> aCoincPnt = aTangentPoint->pnt();
-// AttributePoint2DPtr aFeaturePointAttribute;
-// /// here we rely on created coincidence between further coincidence point and tangent result
-// for (; aFCIt != aFCLast && !aFeaturePointAttribute.get(); aFCIt++) {
-// AttributePoint2DPtr aFCAttribute = *aFCIt;
-// if (aCoincPnt->isEqual(aFCAttribute->pnt()))
-// aFeaturePointAttribute = aFCAttribute;
-// }
-// if (aFeaturePointAttribute.get()) {
-// FeaturePtr aFeature =
-// std::dynamic_pointer_cast<ModelAPI_Feature>(aFeaturePointAttribute->owner());
-// aTangentFeature->refattr(anAttributeId)->setObject(getFeatureResult(aFeature));
-// }
-//#ifdef DEBUG_SPLIT
-// std::cout << " -" << getFeatureInfo(aTangentFeature) << std::endl;
-//#endif
-// }
-//}
-
void SketchPlugin_ConstraintSplit::updateRefFeatureConstraints(
const ResultPtr& theFeatureBaseResult,
const std::list<AttributePtr>& theRefsToFeature)
/// \brief Use plugin manager for features creation
SketchPlugin_ConstraintSplit();
- /// \return map of base points and features;
- //SKETCHPLUGIN_EXPORT const std::map<AttributePtr, FilletFeatures> pointsFeaturesMap() const {
- // return myPointFeaturesMap;
- //};
-
/// Returns the AIS preview
SKETCHPLUGIN_EXPORT virtual AISObjectPtr getAISObject(AISObjectPtr thePrevious);
/// \param theCoincidenceToPoint [out] coincidence to point be connected to new feature
void getConstraints(std::set<std::shared_ptr<ModelAPI_Feature>>& theFeaturesToDelete,
std::set<std::shared_ptr<ModelAPI_Feature>>& theFeaturesToUpdate,
- //std::map<std::shared_ptr<ModelAPI_Feature>, IdToPointPair>& theTangentFeatures,
- std::map<std::shared_ptr<ModelAPI_Feature>, IdToPointPair>& theCoincidenceToFeature/*,
- std::map<std::shared_ptr<ModelAPI_Feature>, IdToPointPair>& theCoincidenceToPoint*/);
+ std::map<std::shared_ptr<ModelAPI_Feature>, IdToPointPair>& theCoincidenceToFeature);
/// Obtains references to feature point attributes and to feature,
/// e.g. for feature line: 1st container is
const std::set<ResultPtr>& theFeatureResults,
const FeaturePtr& theSplitFeature);
- /// Move tangency constraint to the nearest split feature that has a coincidence to the tangent
- /// \param theTangentFeatures tangencies to feature to be connected to nearest feature
- /// \param theFurtherCoincidences a list of points where coincidences is built
- //void updateTangentConstraintsToFeature(
- // const std::map<std::shared_ptr<ModelAPI_Feature>, IdToPointPair>& theTangentFeatures,
- // const std::set<std::shared_ptr<GeomDataAPI_Point2D> >& theFurtherCoincidences);
-
-
/// Move constraints from base feature to given feature
/// \param theFeature a base feature
/// \param theRefsToFeature list of attributes referenced to base feature
static const double PI = 3.141592653589793238463;
static const std::string OPERATION_HIGHLIGHT_COLOR() { return "128, 0, 0"; }
+static const std::string OPERATION_REMOVE_FEATURE_COLOR() { return "255, 174, 201"; }
SketchPlugin_Trim::SketchPlugin_Trim()
{
bool isConstruction = anAuxiliaryAttr.get() != NULL && anAuxiliaryAttr->value();
std::vector<int> aColor;
- aColor = Config_PropManager::color("Visualization", "operation_highlight_color",
- OPERATION_HIGHLIGHT_COLOR());
+ aColor = Config_PropManager::color("Visualization", "operation_remove_feature_color",
+ OPERATION_REMOVE_FEATURE_COLOR());
double aWidth = SketchPlugin_SketchEntity::SKETCH_LINE_WIDTH();
int aLineStyle = SketchPlugin_SketchEntity::SKETCH_LINE_STYLE();
if (isConstruction) {
aLineStyle = SketchPlugin_SketchEntity::SKETCH_LINE_STYLE_AUXILIARY();
}
anAIS->setColor(aColor[0], aColor[1], aColor[2]);
- // modification of width should be replaced to value 1 after highlight problem is fixed
- anAIS->setWidth(aWidth + 2);//1);
+ anAIS->setWidth(aWidth);
anAIS->setLineStyle(aLineStyle);
break;
}