Add checkbox to control automatic line constraints
Signed-off-by: Sergiusz Bazanski <q3k@q3k.org>pull/380/head
parent
b2418a0324
commit
9e512882d1
|
@ -33,6 +33,8 @@ New constraint features:
|
|||
in the text window.
|
||||
* When selecting an entity, the constraints applied to it can be selected
|
||||
in the text window.
|
||||
* It is now possible to turn off automatic creation of horizontal/vertical
|
||||
constraints on line segments.
|
||||
|
||||
New export/import features:
|
||||
* Three.js: allow configuring projection for exported model, and initially
|
||||
|
|
|
@ -93,6 +93,11 @@ void TextWindow::ScreenChangeCheckClosedContour(int link, uint32_t v) {
|
|||
SS.GW.Invalidate();
|
||||
}
|
||||
|
||||
void TextWindow::ScreenChangeAutomaticLineConstraints(int link, uint32_t v) {
|
||||
SS.automaticLineConstraints = !SS.automaticLineConstraints;
|
||||
SS.GW.Invalidate();
|
||||
}
|
||||
|
||||
void TextWindow::ScreenChangeShadedTriangles(int link, uint32_t v) {
|
||||
SS.exportShadedTriangles = !SS.exportShadedTriangles;
|
||||
SS.GW.Invalidate();
|
||||
|
@ -301,6 +306,9 @@ void TextWindow::ShowConfiguration() {
|
|||
Printf(false, " %Fd%f%Ll%s check sketch for closed contour%E",
|
||||
&ScreenChangeCheckClosedContour,
|
||||
SS.checkClosedContour ? CHECK_TRUE : CHECK_FALSE);
|
||||
Printf(false, " %Fd%f%Ll%s enable automatic line constraints%E",
|
||||
&ScreenChangeAutomaticLineConstraints,
|
||||
SS.automaticLineConstraints ? CHECK_TRUE : CHECK_FALSE);
|
||||
Printf(false, " %Fd%f%Ll%s show areas of closed contours%E",
|
||||
&ScreenChangeShowContourAreas,
|
||||
SS.showContourAreas ? CHECK_TRUE : CHECK_FALSE);
|
||||
|
|
|
@ -1283,26 +1283,27 @@ void GraphicsWindow::ToggleBool(bool *v) {
|
|||
}
|
||||
|
||||
bool GraphicsWindow::SuggestLineConstraint(hRequest request, Constraint::Type *type) {
|
||||
if(LockedInWorkplane()) {
|
||||
Entity *ptA = SK.GetEntity(request.entity(1)),
|
||||
*ptB = SK.GetEntity(request.entity(2));
|
||||
if(!(LockedInWorkplane() && SS.automaticLineConstraints))
|
||||
return false;
|
||||
|
||||
Expr *au, *av, *bu, *bv;
|
||||
Entity *ptA = SK.GetEntity(request.entity(1)),
|
||||
*ptB = SK.GetEntity(request.entity(2));
|
||||
|
||||
ptA->PointGetExprsInWorkplane(ActiveWorkplane(), &au, &av);
|
||||
ptB->PointGetExprsInWorkplane(ActiveWorkplane(), &bu, &bv);
|
||||
Expr *au, *av, *bu, *bv;
|
||||
|
||||
double du = au->Minus(bu)->Eval();
|
||||
double dv = av->Minus(bv)->Eval();
|
||||
ptA->PointGetExprsInWorkplane(ActiveWorkplane(), &au, &av);
|
||||
ptB->PointGetExprsInWorkplane(ActiveWorkplane(), &bu, &bv);
|
||||
|
||||
const double TOLERANCE_RATIO = 0.02;
|
||||
if(fabs(dv) > LENGTH_EPS && fabs(du / dv) < TOLERANCE_RATIO) {
|
||||
*type = Constraint::Type::VERTICAL;
|
||||
return true;
|
||||
} else if(fabs(du) > LENGTH_EPS && fabs(dv / du) < TOLERANCE_RATIO) {
|
||||
*type = Constraint::Type::HORIZONTAL;
|
||||
return true;
|
||||
}
|
||||
double du = au->Minus(bu)->Eval();
|
||||
double dv = av->Minus(bv)->Eval();
|
||||
|
||||
const double TOLERANCE_RATIO = 0.02;
|
||||
if(fabs(dv) > LENGTH_EPS && fabs(du / dv) < TOLERANCE_RATIO) {
|
||||
*type = Constraint::Type::VERTICAL;
|
||||
return true;
|
||||
} else if(fabs(du) > LENGTH_EPS && fabs(dv / du) < TOLERANCE_RATIO) {
|
||||
*type = Constraint::Type::HORIZONTAL;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -70,6 +70,8 @@ void SolveSpaceUI::Init() {
|
|||
drawBackFaces = settings->ThawBool("DrawBackFaces", true);
|
||||
// Check that contours are closed and not self-intersecting
|
||||
checkClosedContour = settings->ThawBool("CheckClosedContour", true);
|
||||
// Enable automatic constrains for lines
|
||||
automaticLineConstraints = settings->ThawBool("AutomaticLineConstraints", true);
|
||||
// Draw closed polygons areas
|
||||
showContourAreas = settings->ThawBool("ShowContourAreas", false);
|
||||
// Export shaded triangles in a 2d view
|
||||
|
@ -241,6 +243,8 @@ void SolveSpaceUI::Exit() {
|
|||
settings->FreezeBool("ShowContourAreas", showContourAreas);
|
||||
// Check that contours are closed and not self-intersecting
|
||||
settings->FreezeBool("CheckClosedContour", checkClosedContour);
|
||||
// Enable automatic constrains for lines
|
||||
settings->FreezeBool("AutomaticLineConstraints", automaticLineConstraints);
|
||||
// Export shaded triangles in a 2d view
|
||||
settings->FreezeBool("ExportShadedTriangles", exportShadedTriangles);
|
||||
// Export pwl curves (instead of exact) always
|
||||
|
|
|
@ -590,6 +590,7 @@ public:
|
|||
bool drawBackFaces;
|
||||
bool showContourAreas;
|
||||
bool checkClosedContour;
|
||||
bool automaticLineConstraints;
|
||||
bool showToolbar;
|
||||
Platform::Path screenshotFile;
|
||||
RgbaColor backgroundColor;
|
||||
|
|
1
src/ui.h
1
src/ui.h
|
@ -425,6 +425,7 @@ public:
|
|||
static void ScreenChangeBackFaces(int link, uint32_t v);
|
||||
static void ScreenChangeShowContourAreas(int link, uint32_t v);
|
||||
static void ScreenChangeCheckClosedContour(int link, uint32_t v);
|
||||
static void ScreenChangeAutomaticLineConstraints(int link, uint32_t v);
|
||||
static void ScreenChangePwlCurves(int link, uint32_t v);
|
||||
static void ScreenChangeCanvasSizeAuto(int link, uint32_t v);
|
||||
static void ScreenChangeCanvasSize(int link, uint32_t v);
|
||||
|
|
Loading…
Reference in New Issue