#include "about.h"
#include "blockwidget.h"
+#include "dimension.h"
#include "drawingview.h"
#include "drawarcaction.h"
#include "drawcircleaction.h"
#include "generaltab.h"
#include "geometry.h"
#include "layerwidget.h"
+#include "line.h"
#include "mirroraction.h"
#include "painter.h"
#include "rotateaction.h"
for(int j=i+1; j<itemsSelected; j++)
{
Object * obj2 = drawing->document.SelectedItem(j);
- double t, u;
+ double t, u, v, w;
- if ((obj1->type != OTLine) || (obj2->type != OTLine))
- continue;
+// if ((obj1->type != OTLine) || (obj2->type != OTLine))
+// continue;
+ if ((obj1->type == OTLine) && (obj2->type == OTLine))
+ {
//printf("Testing objects for intersection (%X, %X)...\n", obj1, obj2);
- int intersects = Geometry::Intersects((Line *)obj1, (Line *)obj2, &t, &u);
+ int intersects = Geometry::Intersects((Line *)obj1, (Line *)obj2, &t, &u);
//printf(" (%s) --> t=%lf, u=%lf\n", (intersects ? "true" : "FALSE"), t, u);
- if (intersects)
+ if (intersects)
+ {
+ //printf("Connecting objects (%X, %X)...\n", obj1, obj2);
+ obj1->Connect(obj2, u);
+ obj2->Connect(obj1, t);
+ }
+ }
+ else if (((obj1->type == OTLine) && (obj2->type == OTDimension))
+ || ((obj2->type == OTLine) && (obj1->type == OTDimension)))
{
-printf("Connecting objects (%X, %X)...\n", obj1, obj2);
- obj1->Connect(obj2, u);
- obj2->Connect(obj1, t);
+printf("Testing Line<->Dimension intersection...\n");
+ Line * line = (Line *)(obj1->type == OTLine ? obj1 : obj2);
+ Dimension * dim = (Dimension *)(obj1->type == OTDimension ? obj1 : obj2);
+
+ int intersects = Geometry::Intersects(line, dim, &t, &u);
+printf(" -> intersects = %i, t=%lf, u=%lf\n", intersects, t, u);
+
+ if (intersects)
+ {
+ obj1->Connect(obj2, u);
+ obj2->Connect(obj1, t);
+ }
}
}
}