Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve FreeCAD Hidden Line Removal #69

Open
WandererFan opened this issue Mar 31, 2022 · 8 comments
Open

Improve FreeCAD Hidden Line Removal #69

WandererFan opened this issue Mar 31, 2022 · 8 comments

Comments

@WandererFan
Copy link

WandererFan commented Mar 31, 2022

Outline

FreeCAD's Technical Drawing module (TechDraw) relies heavily on the OpenCascade Hidden Line Removal algorithms. These algorithms can be very slow, do not provide progress reporting and do not provide any linkage between the input shape and the output.

Details

The TechDraw module provides projections, section views and detail views of 3D model components and assemblies developed in FreeCAD modules such as Part, PartDesign and Draft.

Expected Outcome

a) develop new code for projecting shapes and creating the geometry for technical drawings.
-or-
b) modify the existing OpenCascade code as an enhancement.

Project Properties

Both OpenCascade and TechDraw are written in C++.

Skills

The student should have a good knowledge of C++ and be familar with graphics topics such as the painters algorithm, face detection and hidden line removal.
Knowledge of technical drawing standards and previous exposure to Qt will be helpful. Familiarity with OpenCascade is a definite plus.

Difficulty

Hard

Size

long

Additional Information

@aothms
Copy link

aothms commented Mar 31, 2022

Not the best place to discuss, but this is a topic that is also very dear to us in IfcOpenShell.

One other limitation of the occt hidden line renderer is that it does edge-face intersections, so it results in overlapping and non-piecewise connected edges that cannot be filled. In IfcOpenShell we work around this by feeding the output into CGAL's Arrangement_2 class to find cells that can be colored.

linkage between the input shape and the output.

I think you can do this with the methods in HLRBRep_HLRToShape that take a TopoDS_Shape argument, such as HLRBRep_HLRToShape::VCompound(const TopoDS_Shape&)

@yorikvanhavre
Copy link
Contributor

Why not make this a joint FreeCAD/IfcOpenShell project? With mentoring from both projects? ;)

@aothms
Copy link

aothms commented Apr 5, 2022

Sounds good to me! We don't have a lot of mentors on our side with deep knowledge of C++ open cascade so we have to balance this with what else is coming in, but other than that, sure!

@yorikvanhavre
Copy link
Contributor

I think this is no problem, we can do most of the mentoring on the FreeCAD side I guess.

@yorikvanhavre
Copy link
Contributor

@brlcad I'll transfer all the remaining FreeCAD issues to FreeCAD's repo, except for those that are not 100% FreeCAD, if that's OK for you? So we don't create confusion for the potential interested...

@brlcad
Copy link
Contributor

brlcad commented Feb 23, 2023

@yorikvanhavre Sounds good! I already closed many (most?) of them out simply because I saw you had them listed on your wiki project ideas page. I kept the two joint IFCOpenShell ones open. You're also of course welcome to keep using this space for FreeCAD's ideas too, if you want. It would be good to have some space for continuing to exchange ideas, discussions, and share code..

@yorikvanhavre
Copy link
Contributor

Definitely! I'll link back everything to here anyway, so we keep enabling potential cross-project projects...

@ayushgupta9906
Copy link

I want to work on this issue. Please Assign this to me.
Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants