@@ -356,7 +356,7 @@ void QGIViewDimension::draw()
356
356
// text to left of vertical dims
357
357
// text above horizontal dims
358
358
Base::Vector3d dirDist, normDist; // direction/normal vectors of distance line
359
- Base::Vector3d dirExt, normExt ;
359
+ Base::Vector3d dirExt;
360
360
Base::Vector3d dirDim, normDim;
361
361
Base::Vector3d dirIso;
362
362
dirDist = vecDist;
@@ -386,7 +386,6 @@ void QGIViewDimension::draw()
386
386
dirExt = findIsoExt (dirIso);
387
387
}
388
388
dirExt.Normalize ();
389
- normExt = Base::Vector3d (-dirExt.y ,dirExt.x , 0 ); // normal to extension lines (req'd?)
390
389
391
390
// Get magnitude of angle between dimension line and horizontal
392
391
double angle = atan2 (dirDim.y ,dirDim.x );
@@ -430,26 +429,21 @@ void QGIViewDimension::draw()
430
429
431
430
// fauxCenter is where the dimText would be if it was on the dimLine
432
431
Base::Vector3d fauxCenter = lblCenter + textOffset * textNorm;
433
- Base::Vector3d vec = fauxCenter - midDist;
434
- float sepDistDir = vec.x * textNorm.x + vec.y * textNorm.y ; // dist between distance & dimension lines
435
432
436
433
margin = Rez::guiX (2 .f );
437
434
float scaler = 1 .;
438
435
439
- float extStartOffset = (sepDistDir + distStartDelta < 0 ) ? -margin : margin;
440
- float extEndOffset = (sepDistDir < 0 ) ? -margin : margin;
441
-
436
+ // intersection of extention lines and dimension line
442
437
Base::Vector3d startIntercept = DrawUtil::Intersect2d (startDist, dirExt,
443
438
fauxCenter,dirDim);
444
439
Base::Vector3d endIntercept = DrawUtil::Intersect2d (endDist, dirExt,
445
440
fauxCenter,dirDim);
446
441
442
+ Base::Vector3d dirExtActual = (startIntercept - startDist);
443
+ dirExtActual.Normalize ();
444
+ Base::Vector3d extStartEnd = startIntercept + dirExtActual * (margin * scaler);
445
+ Base::Vector3d extEndEnd = endIntercept + dirExtActual * (margin * scaler);
447
446
448
- Base::Vector3d extStartEnd = startIntercept + dirExt * (extStartOffset * scaler); // the little bit past the dimline
449
- Base::Vector3d extEndEnd = endIntercept + dirExt * (extEndOffset * scaler);
450
-
451
- // dim1Tip is the position of 1 arrow point (lhs on a horizontal)
452
- // dim2Tail is the position of the other arrow point (rhs)
453
447
// case 1: inner placement: text between extensions & fits. arros point out from inside (default)
454
448
// case 2: inner placement2: text too big to fit. arrows point in from outside
455
449
// case 3: outer placement: text is outside extensions. arrows point in, 1 arrow tracks dimText
@@ -491,14 +485,10 @@ void QGIViewDimension::draw()
491
485
492
486
// Extension lines
493
487
QPainterPath path;
494
- Base::Vector3d dirExtActual = (extStartEnd - startDist); // TODO: dirExt is sometimes backwards.
495
- dirExtActual.Normalize ();
496
488
Base::Vector3d gap = startDist + dirExtActual * (margin * scaler); // space ext line a bt
497
489
path.moveTo (gap.x , gap.y );
498
490
path.lineTo (extStartEnd.x , extStartEnd.y );
499
491
500
- dirExtActual = (extEndEnd - endDist); // TODO: dirExt is sometimes backwards.
501
- dirExtActual.Normalize ();
502
492
gap = endDist + dirExtActual * (margin * scaler);
503
493
path.moveTo (gap.x , gap.y );
504
494
path.lineTo (extEndEnd.x , extEndEnd.y );
0 commit comments