fix: Correct Z-up plane mapping for drawing tools on XY and XZ planes
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
@@ -172,19 +172,19 @@ void CircleTool::paintGL()
|
|||||||
QVector3D p1, p2;
|
QVector3D p1, p2;
|
||||||
|
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
p1.setX(centerPos.x() + radius * qCos(angle1));
|
|
||||||
p1.setY(centerPos.y());
|
|
||||||
p1.setZ(centerPos.z() + radius * qSin(angle1));
|
|
||||||
p2.setX(centerPos.x() + radius * qCos(angle2));
|
|
||||||
p2.setY(centerPos.y());
|
|
||||||
p2.setZ(centerPos.z() + radius * qSin(angle2));
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
p1.setX(centerPos.x() + radius * qCos(angle1));
|
p1.setX(centerPos.x() + radius * qCos(angle1));
|
||||||
p1.setY(centerPos.y() + radius * qSin(angle1));
|
p1.setY(centerPos.y() + radius * qSin(angle1));
|
||||||
p1.setZ(centerPos.z());
|
p1.setZ(centerPos.z());
|
||||||
p2.setX(centerPos.x() + radius * qCos(angle2));
|
p2.setX(centerPos.x() + radius * qCos(angle2));
|
||||||
p2.setY(centerPos.y() + radius * qSin(angle2));
|
p2.setY(centerPos.y() + radius * qSin(angle2));
|
||||||
p2.setZ(centerPos.z());
|
p2.setZ(centerPos.z());
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
p1.setX(centerPos.x() + radius * qCos(angle1));
|
||||||
|
p1.setY(centerPos.y());
|
||||||
|
p1.setZ(centerPos.z() + radius * qSin(angle1));
|
||||||
|
p2.setX(centerPos.x() + radius * qCos(angle2));
|
||||||
|
p2.setY(centerPos.y());
|
||||||
|
p2.setZ(centerPos.z() + radius * qSin(angle2));
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
p1.setX(centerPos.x());
|
p1.setX(centerPos.x());
|
||||||
p1.setY(centerPos.y() + radius * qCos(angle1));
|
p1.setY(centerPos.y() + radius * qCos(angle1));
|
||||||
|
|||||||
132
src/LineTool.cpp
132
src/LineTool.cpp
@@ -63,12 +63,12 @@ void LineTool::mousePressEvent(QMouseEvent *event)
|
|||||||
QVector3D currentMouseWorldPos = m_viewport->unproject(event->pos(), m_viewport->currentPlane());
|
QVector3D currentMouseWorldPos = m_viewport->unproject(event->pos(), m_viewport->currentPlane());
|
||||||
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
||||||
double mouseAngle;
|
double mouseAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
||||||
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
||||||
double refAngle;
|
double refAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||||
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||||
double relativeMouseAngle = mouseAngle - refAngle;
|
double relativeMouseAngle = mouseAngle - refAngle;
|
||||||
while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0;
|
while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0;
|
||||||
@@ -85,8 +85,8 @@ void LineTool::mousePressEvent(QMouseEvent *event)
|
|||||||
}
|
}
|
||||||
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
||||||
QVector3D finalDir;
|
QVector3D finalDir;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
||||||
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
||||||
double lineLength;
|
double lineLength;
|
||||||
if (lengthFromInput) lineLength = inputLength;
|
if (lengthFromInput) lineLength = inputLength;
|
||||||
@@ -115,8 +115,8 @@ void LineTool::mousePressEvent(QMouseEvent *event)
|
|||||||
} else {
|
} else {
|
||||||
QVector3D worldPos = m_viewport->unproject(event->pos(), m_viewport->currentPlane());
|
QVector3D worldPos = m_viewport->unproject(event->pos(), m_viewport->currentPlane());
|
||||||
if (m_viewport->isSnappingHorizontal()) {
|
if (m_viewport->isSnappingHorizontal()) {
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z());
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y());
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y());
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z());
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z());
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z());
|
||||||
} else if (m_viewport->isSnappingVertical()) {
|
} else if (m_viewport->isSnappingVertical()) {
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X());
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X());
|
||||||
@@ -165,9 +165,9 @@ void LineTool::mouseMoveEvent(QMouseEvent *event)
|
|||||||
double angle = 0;
|
double angle = 0;
|
||||||
|
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
angle = atan2(delta.z(), delta.x());
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
angle = atan2(delta.y(), delta.x());
|
angle = atan2(delta.y(), delta.x());
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
angle = atan2(delta.z(), delta.x());
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
||||||
angle = atan2(delta.z(), delta.y());
|
angle = atan2(delta.z(), delta.y());
|
||||||
}
|
}
|
||||||
@@ -219,12 +219,12 @@ void LineTool::finalizeCreation()
|
|||||||
QVector3D currentMouseWorldPos = m_viewport->unproject(m_viewport->currentMousePos(), m_viewport->currentPlane());
|
QVector3D currentMouseWorldPos = m_viewport->unproject(m_viewport->currentMousePos(), m_viewport->currentPlane());
|
||||||
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
||||||
double mouseAngle;
|
double mouseAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
||||||
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
||||||
double refAngle;
|
double refAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||||
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||||
double relativeMouseAngle = mouseAngle - refAngle;
|
double relativeMouseAngle = mouseAngle - refAngle;
|
||||||
while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0;
|
while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0;
|
||||||
@@ -241,8 +241,8 @@ void LineTool::finalizeCreation()
|
|||||||
}
|
}
|
||||||
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
||||||
QVector3D finalDir;
|
QVector3D finalDir;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
||||||
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
||||||
double lineLength;
|
double lineLength;
|
||||||
if (lengthFromInput) lineLength = inputLength;
|
if (lengthFromInput) lineLength = inputLength;
|
||||||
@@ -321,13 +321,13 @@ void LineTool::paintGL()
|
|||||||
|
|
||||||
// Quadrant snapping
|
// Quadrant snapping
|
||||||
double mouseAngle;
|
double mouseAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
||||||
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
||||||
|
|
||||||
double refAngle;
|
double refAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||||
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||||
|
|
||||||
double relativeMouseAngle = mouseAngle - refAngle;
|
double relativeMouseAngle = mouseAngle - refAngle;
|
||||||
@@ -347,8 +347,8 @@ void LineTool::paintGL()
|
|||||||
|
|
||||||
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
||||||
QVector3D finalDir;
|
QVector3D finalDir;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
||||||
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
||||||
|
|
||||||
double lineLength;
|
double lineLength;
|
||||||
@@ -380,8 +380,8 @@ void LineTool::paintGL()
|
|||||||
} else if (m_viewport->isSnappingVertex()) {
|
} else if (m_viewport->isSnappingVertex()) {
|
||||||
worldPos.setX(m_viewport->snapVertex().X()); worldPos.setY(m_viewport->snapVertex().Y()); worldPos.setZ(m_viewport->snapVertex().Z());
|
worldPos.setX(m_viewport->snapVertex().X()); worldPos.setY(m_viewport->snapVertex().Y()); worldPos.setZ(m_viewport->snapVertex().Z());
|
||||||
} else if (m_viewport->isSnappingHorizontal()) {
|
} else if (m_viewport->isSnappingHorizontal()) {
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z());
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y());
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y());
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z());
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z());
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z());
|
||||||
} else if (m_viewport->isSnappingVertical()) {
|
} else if (m_viewport->isSnappingVertical()) {
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X());
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X());
|
||||||
@@ -418,13 +418,13 @@ void LineTool::paintGL()
|
|||||||
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
||||||
|
|
||||||
double mouseAngle;
|
double mouseAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
||||||
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
||||||
|
|
||||||
double refAngleForQuadrant;
|
double refAngleForQuadrant;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||||
else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||||
|
|
||||||
double relativeMouseAngle = mouseAngle - refAngleForQuadrant;
|
double relativeMouseAngle = mouseAngle - refAngleForQuadrant;
|
||||||
@@ -441,11 +441,11 @@ void LineTool::paintGL()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
refAngle = atan2(refDir.z(), refDir.x());
|
|
||||||
lineAngle = atan2(lineVec.z(), lineVec.x());
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
refAngle = atan2(refDir.y(), refDir.x());
|
refAngle = atan2(refDir.y(), refDir.x());
|
||||||
lineAngle = atan2(lineVec.y(), lineVec.x());
|
lineAngle = atan2(lineVec.y(), lineVec.x());
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
refAngle = atan2(refDir.z(), refDir.x());
|
||||||
|
lineAngle = atan2(lineVec.z(), lineVec.x());
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
refAngle = atan2(refDir.z(), refDir.y());
|
refAngle = atan2(refDir.z(), refDir.y());
|
||||||
lineAngle = atan2(lineVec.z(), lineVec.y());
|
lineAngle = atan2(lineVec.z(), lineVec.y());
|
||||||
@@ -461,9 +461,9 @@ void LineTool::paintGL()
|
|||||||
|
|
||||||
QVector3D perpVec;
|
QVector3D perpVec;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized();
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
perpVec = QVector3D(-lineVec.y(), lineVec.x(), 0).normalized();
|
perpVec = QVector3D(-lineVec.y(), lineVec.x(), 0).normalized();
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized();
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
||||||
perpVec = QVector3D(0, -lineVec.z(), lineVec.y()).normalized();
|
perpVec = QVector3D(0, -lineVec.z(), lineVec.y()).normalized();
|
||||||
}
|
}
|
||||||
@@ -513,8 +513,8 @@ void LineTool::paintGL()
|
|||||||
for (int i = 0; i <= numSegments; ++i) {
|
for (int i = 0; i <= numSegments; ++i) {
|
||||||
double angle = refAngle + (lineAngle - refAngle) * i / numSegments;
|
double angle = refAngle + (lineAngle - refAngle) * i / numSegments;
|
||||||
QVector3D p;
|
QVector3D p;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) p = startPos + radius * QVector3D(cos(angle), 0, sin(angle));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) p = startPos + radius * QVector3D(cos(angle), sin(angle), 0);
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) p = startPos + radius * QVector3D(cos(angle), sin(angle), 0);
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) p = startPos + radius * QVector3D(cos(angle), 0, sin(angle));
|
||||||
else p = startPos + radius * QVector3D(0, cos(angle), sin(angle));
|
else p = startPos + radius * QVector3D(0, cos(angle), sin(angle));
|
||||||
vertices << p.x() << p.y() << p.z();
|
vertices << p.x() << p.y() << p.z();
|
||||||
}
|
}
|
||||||
@@ -535,11 +535,11 @@ void LineTool::paintGL()
|
|||||||
double endAngle = lineAngle;
|
double endAngle = lineAngle;
|
||||||
QVector3D radialDir_end, tangentDir_end;
|
QVector3D radialDir_end, tangentDir_end;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
radialDir_end = QVector3D(cos(endAngle), 0, sin(endAngle));
|
|
||||||
tangentDir_end = QVector3D(-sin(endAngle), 0, cos(endAngle));
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
radialDir_end = QVector3D(cos(endAngle), sin(endAngle), 0);
|
radialDir_end = QVector3D(cos(endAngle), sin(endAngle), 0);
|
||||||
tangentDir_end = QVector3D(-sin(endAngle), cos(endAngle), 0);
|
tangentDir_end = QVector3D(-sin(endAngle), cos(endAngle), 0);
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
radialDir_end = QVector3D(cos(endAngle), 0, sin(endAngle));
|
||||||
|
tangentDir_end = QVector3D(-sin(endAngle), 0, cos(endAngle));
|
||||||
} else {
|
} else {
|
||||||
radialDir_end = QVector3D(0, cos(endAngle), sin(endAngle));
|
radialDir_end = QVector3D(0, cos(endAngle), sin(endAngle));
|
||||||
tangentDir_end = QVector3D(0, -sin(endAngle), cos(endAngle));
|
tangentDir_end = QVector3D(0, -sin(endAngle), cos(endAngle));
|
||||||
@@ -555,11 +555,11 @@ void LineTool::paintGL()
|
|||||||
double startAngle = refAngle;
|
double startAngle = refAngle;
|
||||||
QVector3D radialDir_start, tangentDir_start;
|
QVector3D radialDir_start, tangentDir_start;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
radialDir_start = QVector3D(cos(startAngle), 0, sin(startAngle));
|
|
||||||
tangentDir_start = QVector3D(-sin(startAngle), 0, cos(startAngle));
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
radialDir_start = QVector3D(cos(startAngle), sin(startAngle), 0);
|
radialDir_start = QVector3D(cos(startAngle), sin(startAngle), 0);
|
||||||
tangentDir_start = QVector3D(-sin(startAngle), cos(startAngle), 0);
|
tangentDir_start = QVector3D(-sin(startAngle), cos(startAngle), 0);
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
radialDir_start = QVector3D(cos(startAngle), 0, sin(startAngle));
|
||||||
|
tangentDir_start = QVector3D(-sin(startAngle), 0, cos(startAngle));
|
||||||
} else {
|
} else {
|
||||||
radialDir_start = QVector3D(0, cos(startAngle), sin(startAngle));
|
radialDir_start = QVector3D(0, cos(startAngle), sin(startAngle));
|
||||||
tangentDir_start = QVector3D(0, -sin(startAngle), cos(startAngle));
|
tangentDir_start = QVector3D(0, -sin(startAngle), cos(startAngle));
|
||||||
@@ -584,22 +584,22 @@ void LineTool::paintGL()
|
|||||||
const float indicatorOffset = 0.02f * -m_viewport->camera()->zoom();
|
const float indicatorOffset = 0.02f * -m_viewport->camera()->zoom();
|
||||||
if (m_viewport->isSnappingHorizontal()) {
|
if (m_viewport->isSnappingHorizontal()) {
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
vertices << midPoint.x() - indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset;
|
|
||||||
vertices << midPoint.x() + indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset;
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
vertices << midPoint.x() - indicatorSize << midPoint.y() + indicatorOffset << midPoint.z();
|
vertices << midPoint.x() - indicatorSize << midPoint.y() + indicatorOffset << midPoint.z();
|
||||||
vertices << midPoint.x() + indicatorSize << midPoint.y() + indicatorOffset << midPoint.z();
|
vertices << midPoint.x() + indicatorSize << midPoint.y() + indicatorOffset << midPoint.z();
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
vertices << midPoint.x() - indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset;
|
||||||
|
vertices << midPoint.x() + indicatorSize << midPoint.y() << midPoint.z() + indicatorOffset;
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
||||||
vertices << midPoint.x() << midPoint.y() - indicatorSize << midPoint.z() + indicatorOffset;
|
vertices << midPoint.x() << midPoint.y() - indicatorSize << midPoint.z() + indicatorOffset;
|
||||||
vertices << midPoint.x() << midPoint.y() + indicatorSize << midPoint.z() + indicatorOffset;
|
vertices << midPoint.x() << midPoint.y() + indicatorSize << midPoint.z() + indicatorOffset;
|
||||||
}
|
}
|
||||||
} else { // m_isSnappingVertical
|
} else { // m_isSnappingVertical
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() - indicatorSize;
|
|
||||||
vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() + indicatorSize;
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
vertices << midPoint.x() + indicatorOffset << midPoint.y() - indicatorSize << midPoint.z();
|
vertices << midPoint.x() + indicatorOffset << midPoint.y() - indicatorSize << midPoint.z();
|
||||||
vertices << midPoint.x() + indicatorOffset << midPoint.y() + indicatorSize << midPoint.z();
|
vertices << midPoint.x() + indicatorOffset << midPoint.y() + indicatorSize << midPoint.z();
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() - indicatorSize;
|
||||||
|
vertices << midPoint.x() + indicatorOffset << midPoint.y() << midPoint.z() + indicatorSize;
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
||||||
vertices << midPoint.x() << midPoint.y() + indicatorOffset << midPoint.z() - indicatorSize;
|
vertices << midPoint.x() << midPoint.y() + indicatorOffset << midPoint.z() - indicatorSize;
|
||||||
vertices << midPoint.x() << midPoint.y() + indicatorOffset << midPoint.z() + indicatorSize;
|
vertices << midPoint.x() << midPoint.y() + indicatorOffset << midPoint.z() + indicatorSize;
|
||||||
@@ -655,13 +655,13 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa
|
|||||||
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
||||||
|
|
||||||
double mouseAngle;
|
double mouseAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
||||||
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
||||||
|
|
||||||
double refAngle;
|
double refAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||||
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
else refAngle = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||||
|
|
||||||
double relativeMouseAngle = mouseAngle - refAngle;
|
double relativeMouseAngle = mouseAngle - refAngle;
|
||||||
@@ -681,8 +681,8 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa
|
|||||||
|
|
||||||
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
double finalAngleRad = qDegreesToRadians(refAngle + snappedAngle);
|
||||||
QVector3D finalDir;
|
QVector3D finalDir;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), sin(finalAngleRad), 0);
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) finalDir = QVector3D(cos(finalAngleRad), 0, sin(finalAngleRad));
|
||||||
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
else finalDir = QVector3D(0, cos(finalAngleRad), sin(finalAngleRad));
|
||||||
|
|
||||||
if (lengthFromInput) {
|
if (lengthFromInput) {
|
||||||
@@ -714,8 +714,8 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa
|
|||||||
} else if (m_viewport->isSnappingVertex()) {
|
} else if (m_viewport->isSnappingVertex()) {
|
||||||
worldPos.setX(m_viewport->snapVertex().X()); worldPos.setY(m_viewport->snapVertex().Y()); worldPos.setZ(m_viewport->snapVertex().Z());
|
worldPos.setX(m_viewport->snapVertex().X()); worldPos.setY(m_viewport->snapVertex().Y()); worldPos.setZ(m_viewport->snapVertex().Z());
|
||||||
} else if (m_viewport->isSnappingHorizontal()) {
|
} else if (m_viewport->isSnappingHorizontal()) {
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setZ(m_firstLinePoint.Z());
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setY(m_firstLinePoint.Y());
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setY(m_firstLinePoint.Y());
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) worldPos.setZ(m_firstLinePoint.Z());
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z());
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) worldPos.setZ(m_firstLinePoint.Z());
|
||||||
} else if (m_viewport->isSnappingVertical()) {
|
} else if (m_viewport->isSnappingVertical()) {
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X());
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) worldPos.setX(m_firstLinePoint.X());
|
||||||
@@ -742,13 +742,13 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa
|
|||||||
if (angleFromInput) {
|
if (angleFromInput) {
|
||||||
if (mouseVecForText.length() > 1e-6) {
|
if (mouseVecForText.length() > 1e-6) {
|
||||||
double mouseAngle;
|
double mouseAngle;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.y(), mouseVecForText.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.y(), mouseVecForText.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.x()));
|
||||||
else mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.y()));
|
else mouseAngle = qRadiansToDegrees(atan2(mouseVecForText.z(), mouseVecForText.y()));
|
||||||
|
|
||||||
double refAngleForQuadrant;
|
double refAngleForQuadrant;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||||
else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||||
|
|
||||||
double relativeMouseAngle = mouseAngle - refAngleForQuadrant;
|
double relativeMouseAngle = mouseAngle - refAngleForQuadrant;
|
||||||
@@ -766,11 +766,11 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
refAngle = atan2(refDir.z(), refDir.x());
|
|
||||||
lineAngle = atan2(lineVec.z(), lineVec.x());
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
refAngle = atan2(refDir.y(), refDir.x());
|
refAngle = atan2(refDir.y(), refDir.x());
|
||||||
lineAngle = atan2(lineVec.y(), lineVec.x());
|
lineAngle = atan2(lineVec.y(), lineVec.x());
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
refAngle = atan2(refDir.z(), refDir.x());
|
||||||
|
lineAngle = atan2(lineVec.z(), lineVec.x());
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
refAngle = atan2(refDir.z(), refDir.y());
|
refAngle = atan2(refDir.z(), refDir.y());
|
||||||
lineAngle = atan2(lineVec.z(), lineVec.y());
|
lineAngle = atan2(lineVec.z(), lineVec.y());
|
||||||
@@ -783,9 +783,9 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa
|
|||||||
|
|
||||||
QVector3D perpVec;
|
QVector3D perpVec;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized();
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
perpVec = QVector3D(-lineVec.y(), lineVec.x(), 0).normalized();
|
perpVec = QVector3D(-lineVec.y(), lineVec.x(), 0).normalized();
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
perpVec = QVector3D(-lineVec.z(), 0, lineVec.x()).normalized();
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
||||||
perpVec = QVector3D(0, -lineVec.z(), lineVec.y()).normalized();
|
perpVec = QVector3D(0, -lineVec.z(), lineVec.y()).normalized();
|
||||||
}
|
}
|
||||||
@@ -831,8 +831,8 @@ void LineTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, const QMa
|
|||||||
QVector3D textPos3DAngle;
|
QVector3D textPos3DAngle;
|
||||||
float textOffset = 0.035f * -m_viewport->camera()->zoom();
|
float textOffset = 0.035f * -m_viewport->camera()->zoom();
|
||||||
|
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), 0, sin(midAngle));
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), sin(midAngle), 0);
|
||||||
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), sin(midAngle), 0);
|
else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) textPos3DAngle = startPos + (radius + textOffset) * QVector3D(cos(midAngle), 0, sin(midAngle));
|
||||||
else textPos3DAngle = startPos + (radius + textOffset) * QVector3D(0, cos(midAngle), sin(midAngle));
|
else textPos3DAngle = startPos + (radius + textOffset) * QVector3D(0, cos(midAngle), sin(midAngle));
|
||||||
|
|
||||||
QVector3D screenPosAngle = m_viewport->project(textPos3DAngle, modelView, projection, m_viewport->rect());
|
QVector3D screenPosAngle = m_viewport->project(textPos3DAngle, modelView, projection, m_viewport->rect());
|
||||||
|
|||||||
@@ -69,10 +69,10 @@ void RectangleTool::mousePressEvent(QMouseEvent *event)
|
|||||||
double current_w, current_h;
|
double current_w, current_h;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.y());
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.y());
|
current_h = qAbs(mouseDir.z());
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
current_w = qAbs(mouseDir.y());
|
current_w = qAbs(mouseDir.y());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.z());
|
||||||
@@ -85,10 +85,10 @@ void RectangleTool::mousePressEvent(QMouseEvent *event)
|
|||||||
worldPos = startPos;
|
worldPos = startPos;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
worldPos.setX(startPos.x() + signX * rect_w);
|
worldPos.setX(startPos.x() + signX * rect_w);
|
||||||
worldPos.setZ(startPos.z() + signZ * rect_h);
|
worldPos.setY(startPos.y() + signY * rect_h);
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
worldPos.setX(startPos.x() + signX * rect_w);
|
worldPos.setX(startPos.x() + signX * rect_w);
|
||||||
worldPos.setY(startPos.y() + signY * rect_h);
|
worldPos.setZ(startPos.z() + signZ * rect_h);
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
worldPos.setY(startPos.y() + signY * rect_w);
|
worldPos.setY(startPos.y() + signY * rect_w);
|
||||||
worldPos.setZ(startPos.z() + signZ * rect_h);
|
worldPos.setZ(startPos.z() + signZ * rect_h);
|
||||||
@@ -140,10 +140,10 @@ void RectangleTool::finalizeCreation()
|
|||||||
double current_w, current_h;
|
double current_w, current_h;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.y());
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.y());
|
current_h = qAbs(mouseDir.z());
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
current_w = qAbs(mouseDir.y());
|
current_w = qAbs(mouseDir.y());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.z());
|
||||||
@@ -156,10 +156,10 @@ void RectangleTool::finalizeCreation()
|
|||||||
worldPos = startPos;
|
worldPos = startPos;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
worldPos.setX(startPos.x() + signX * rect_w);
|
worldPos.setX(startPos.x() + signX * rect_w);
|
||||||
worldPos.setZ(startPos.z() + signZ * rect_h);
|
worldPos.setY(startPos.y() + signY * rect_h);
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
worldPos.setX(startPos.x() + signX * rect_w);
|
worldPos.setX(startPos.x() + signX * rect_w);
|
||||||
worldPos.setY(startPos.y() + signY * rect_h);
|
worldPos.setZ(startPos.z() + signZ * rect_h);
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
worldPos.setY(startPos.y() + signY * rect_w);
|
worldPos.setY(startPos.y() + signY * rect_w);
|
||||||
worldPos.setZ(startPos.z() + signZ * rect_h);
|
worldPos.setZ(startPos.z() + signZ * rect_h);
|
||||||
@@ -206,10 +206,10 @@ void RectangleTool::paintGL()
|
|||||||
double current_w, current_h;
|
double current_w, current_h;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.y());
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.y());
|
current_h = qAbs(mouseDir.z());
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
current_w = qAbs(mouseDir.y());
|
current_w = qAbs(mouseDir.y());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.z());
|
||||||
@@ -222,10 +222,10 @@ void RectangleTool::paintGL()
|
|||||||
worldPos = startPos;
|
worldPos = startPos;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
worldPos.setX(startPos.x() + signX * rect_w);
|
worldPos.setX(startPos.x() + signX * rect_w);
|
||||||
worldPos.setZ(startPos.z() + signZ * rect_h);
|
worldPos.setY(startPos.y() + signY * rect_h);
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
worldPos.setX(startPos.x() + signX * rect_w);
|
worldPos.setX(startPos.x() + signX * rect_w);
|
||||||
worldPos.setY(startPos.y() + signY * rect_h);
|
worldPos.setZ(startPos.z() + signZ * rect_h);
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
worldPos.setY(startPos.y() + signY * rect_w);
|
worldPos.setY(startPos.y() + signY * rect_w);
|
||||||
worldPos.setZ(startPos.z() + signZ * rect_h);
|
worldPos.setZ(startPos.z() + signZ * rect_h);
|
||||||
@@ -245,10 +245,10 @@ void RectangleTool::paintGL()
|
|||||||
|
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
p2.setX(p3.x()); p2.setY(p1.y()); p2.setZ(p1.z());
|
p2.setX(p3.x()); p2.setY(p1.y()); p2.setZ(p1.z());
|
||||||
p4.setX(p1.x()); p4.setY(p1.y()); p4.setZ(p3.z());
|
p4.setX(p1.x()); p4.setY(p3.y()); p4.setZ(p1.z());
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
p2.setX(p3.x()); p2.setY(p1.y()); p2.setZ(p1.z());
|
p2.setX(p3.x()); p2.setY(p1.y()); p2.setZ(p1.z());
|
||||||
p4.setX(p1.x()); p4.setY(p3.y()); p4.setZ(p1.z());
|
p4.setX(p1.x()); p4.setY(p1.y()); p4.setZ(p3.z());
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::YZ) {
|
||||||
p2.setX(p1.x()); p2.setY(p3.y()); p2.setZ(p1.z());
|
p2.setX(p1.x()); p2.setY(p3.y()); p2.setZ(p1.z());
|
||||||
p4.setX(p1.x()); p4.setY(p1.y()); p4.setZ(p3.z());
|
p4.setX(p1.x()); p4.setY(p1.y()); p4.setZ(p3.z());
|
||||||
@@ -300,10 +300,10 @@ void RectangleTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, cons
|
|||||||
double current_w, current_h;
|
double current_w, current_h;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.y());
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
current_w = qAbs(mouseDir.x());
|
current_w = qAbs(mouseDir.x());
|
||||||
current_h = qAbs(mouseDir.y());
|
current_h = qAbs(mouseDir.z());
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
current_w = qAbs(mouseDir.y());
|
current_w = qAbs(mouseDir.y());
|
||||||
current_h = qAbs(mouseDir.z());
|
current_h = qAbs(mouseDir.z());
|
||||||
@@ -316,10 +316,10 @@ void RectangleTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, cons
|
|||||||
worldPos = p1_3d;
|
worldPos = p1_3d;
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
worldPos.setX(p1_3d.x() + signX * rect_w);
|
worldPos.setX(p1_3d.x() + signX * rect_w);
|
||||||
worldPos.setZ(p1_3d.z() + signZ * rect_h);
|
worldPos.setY(p1_3d.y() + signY * rect_h);
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
worldPos.setX(p1_3d.x() + signX * rect_w);
|
worldPos.setX(p1_3d.x() + signX * rect_w);
|
||||||
worldPos.setY(p1_3d.y() + signY * rect_h);
|
worldPos.setZ(p1_3d.z() + signZ * rect_h);
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
worldPos.setY(p1_3d.y() + signY * rect_w);
|
worldPos.setY(p1_3d.y() + signY * rect_w);
|
||||||
worldPos.setZ(p1_3d.z() + signZ * rect_h);
|
worldPos.setZ(p1_3d.z() + signZ * rect_h);
|
||||||
@@ -338,15 +338,15 @@ void RectangleTool::paint2D(QPainter& painter, const QMatrix4x4& modelView, cons
|
|||||||
double w, h;
|
double w, h;
|
||||||
|
|
||||||
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XY) {
|
||||||
p2_3d.setX(p3_3d.x()); p2_3d.setY(p1_3d.y()); p2_3d.setZ(p1_3d.z());
|
|
||||||
p4_3d.setX(p1_3d.x()); p4_3d.setY(p1_3d.y()); p4_3d.setZ(p3_3d.z());
|
|
||||||
w = qAbs(p3_3d.x() - p1_3d.x());
|
|
||||||
h = qAbs(p3_3d.z() - p1_3d.z());
|
|
||||||
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
|
||||||
p2_3d.setX(p3_3d.x()); p2_3d.setY(p1_3d.y()); p2_3d.setZ(p1_3d.z());
|
p2_3d.setX(p3_3d.x()); p2_3d.setY(p1_3d.y()); p2_3d.setZ(p1_3d.z());
|
||||||
p4_3d.setX(p1_3d.x()); p4_3d.setY(p3_3d.y()); p4_3d.setZ(p1_3d.z());
|
p4_3d.setX(p1_3d.x()); p4_3d.setY(p3_3d.y()); p4_3d.setZ(p1_3d.z());
|
||||||
w = qAbs(p3_3d.x() - p1_3d.x());
|
w = qAbs(p3_3d.x() - p1_3d.x());
|
||||||
h = qAbs(p3_3d.y() - p1_3d.y());
|
h = qAbs(p3_3d.y() - p1_3d.y());
|
||||||
|
} else if (m_viewport->currentPlane() == ViewportWidget::SketchPlane::XZ) {
|
||||||
|
p2_3d.setX(p3_3d.x()); p2_3d.setY(p1_3d.y()); p2_3d.setZ(p1_3d.z());
|
||||||
|
p4_3d.setX(p1_3d.x()); p4_3d.setY(p1_3d.y()); p4_3d.setZ(p3_3d.z());
|
||||||
|
w = qAbs(p3_3d.x() - p1_3d.x());
|
||||||
|
h = qAbs(p3_3d.z() - p1_3d.z());
|
||||||
} else { // YZ
|
} else { // YZ
|
||||||
p2_3d.setX(p1_3d.x()); p2_3d.setY(p3_3d.y()); p2_3d.setZ(p1_3d.z());
|
p2_3d.setX(p1_3d.x()); p2_3d.setY(p3_3d.y()); p2_3d.setZ(p1_3d.z());
|
||||||
p4_3d.setX(p1_3d.x()); p4_3d.setY(p1_3d.y()); p4_3d.setZ(p3_3d.z());
|
p4_3d.setX(p1_3d.x()); p4_3d.setY(p1_3d.y()); p4_3d.setZ(p3_3d.z());
|
||||||
|
|||||||
Reference in New Issue
Block a user