I’ve implemented Snap-to-Grid feature in eCAD today. It was quite easy, just had to round off the mouse position in the scene to the grid points.
So I created a new function to calculate the round off and set a temporary point in the eventFilter() so that it will calculate according to the grid size.
And this temporary point has been used wherever the mouse’s scene position has been used.
Now I’m going to implement dimensioning.
I observed one little issue, that mouse axes disappeared when we are zoomed in. So on my code walkthrough I saw that the QGraphicsColorizeEffect significantly lowers the performance of QGraphicsView, in short the whole eCAD.
And when I removed that effect the performance shoot up as well as the axes appeared.
So this color of axes must be set in some different manner and for now this issue has been resolved.
Now i’m working on Snap-to-Grid feature that eCAD lacks.
We have been solving eCAD issues back to back. I’ve also added mouse-axes preview while drawing entities which is quite useful for a user working in a CAD environment.
Once again I used eventFilter function to draw those axes preview. And I had to use QGraphicsEffect on them to give a different effect to them.
Solved three issues as well.
- Corrected the Menu Check for both script and console widgets
- Fixed the issue of grid option for respective view
- Changed Origin from qgraphicsitem to a background item.
Every time I work in eCAD, it seems I find one or another bug. Maybe that’s because I’m always on the lookout for something to improve in it.
From last 2 days Kamalpreet and I have been working on correcting the coordinates of our CAD. It has the coordinates as ‘computer graphics’ with origin at the top left of the screen. But we usually work in a CAD software with more ‘drawing’ or ‘graph’ like sense with origin at the bottom left of the screen.
And today we solved it. We had to scale the scene by flipping the y-axis and then two of our entities, i.e Text and Image, had to be flipped as well.
I also solved an issue of empty text items saved in the scene.
We are now solving bugs and issues. After helping Kamalpreet in correcting the bounding rect() of ellipse entity, I have fixed the issue of line weight.
Earlier the width/weight of the entities drawn on scene changed as we zoom in/out of the scene.
Now it remains consistent, which is a pretty useful to get an overview of the drawings in CAD.
I’ve also implemented ‘Delete Entity’ feature which lets the user click on the entity to delete it.
At last we have successfully implemented live preview of the entities in eCAD. Kamalpreet and I have looked in this issue on and off since we started this project.
And today we did it. We tried to administer several different logic potions to our patient to get a live preview of an entity. We have searched a lot, asked as well on forums but never got the solution we wanted.
And that solution was gawking right at our faces and we never took notice. Sometimes things are way more simple than we reckon they are.
Now our eCAD looks more lively. 🙂
Today Kamalpreet and I solved another older issue we had in eCAD regarding selection of entities.
Earlier if there were multiple entities overlapping each other, user can’t select the entity beneath the other one because the bounding rectangle was obscuring the other.
And now by overloading the shape function we have been to adjust the bounding rectangle of the entity and now only the boundary of the entities are selectable.
This has been implemented for circle and line entities. Arc and ellipse will also be done in a day or so, just need to figure out a way to adjust their shape as well.