-
-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Add support for 3D/CAD file formats preview #34794
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
Add support for 3D/CAD file formats preview #34794
Conversation
I think we need a pure frontend "render plugin" mechanism
I don't think we should hard-code too many file types in backend. |
eba2b22
to
057ee0e
Compare
057ee0e
to
448effb
Compare
Can we merge "initPdfViewer" into the new framework? I think it can also benefit from the new design. |
Feel free to make more improvements. |
I think a full screen preview of the 3d file is missing. |
OK, I'll find time to improve it. |
Yeah, this is already in the plan. |
bim, dae,brep,igs,stp,ply,off,wrl,ifc,3mf file extensions are rendered as plain text. Please make it as draft. |
It is already supported. Including STL, see my comment. This PR can't auto render them because there is no accurate detection yet. In the future, if we have a better detection, then we can auto render them. |
Merge this as-is and propose following up PRs, or switch to WIP to wait for more changes? |
Merge it first. I'll submit a PR for other optimizations or adjustments later. |
More details about the problem: It needs more logic to make it overall right, we need to distinguish the ambiguous filename extensions. For example: "*.obj, *.off, *.step" might be or not be a 3D model file. So when it is a text file, we can't assume that "we only render it by 3D plugin", otherwise the end users would be impossible to view its real content when the file is not a 3D model. |
ref: https://www.spatial.com/glossary/what-is-an-stp-file I've just checked for information on this, and the .step and .stp files are standard ISO file formats (ISO 10303-242:2014), and I think we can check from the contents of the file. $ cat as1_pe_203.stp
ISO-10303-21;
HEADER;
FILE_DESCRIPTION((''),'2;1');
FILE_NAME('AS1_PE_ASM','2008-09-04T',('mmeadows'),(''),
'PRO/ENGINEER BY PARAMETRIC TECHNOLOGY CORPORATION, 2008340',
'PRO/ENGINEER BY PARAMETRIC TECHNOLOGY CORPORATION, 2008340','');
FILE_SCHEMA((
'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF'));
ENDSEC;
DATA;
#16=DIRECTION('',(0.E0,1.E0,0.E0));
#17=VECTOR('',#16,2.E1);
#18=CARTESIAN_POINT('',(4.E1,-2.E1,-7.5E1));
#19=LINE('',#18,#17);
...
#2874=REPRESENTATION('centroid',(#2872),#2841);
#2875=PROPERTY_DEFINITION_REPRESENTATION(#2873,#2874);
ENDSEC;
END-ISO-10303-21; |
I don't want you to implement it in this pull request, but I want to provide some clues about it |
const viewer = new OV.EmbeddedViewer(container, { | ||
backgroundColor: new OV.RGBAColor(59, 68, 76, 0), | ||
defaultColor: new OV.RGBColor(65, 131, 196), | ||
edgeSettings: new OV.EdgeSettings(false, new OV.RGBColor(0, 0, 0), 1), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this will look good on dark theme, you need different colors on dark theme, e.g. use getColor()
from web_src/js/features/codeeditor.ts
to get the color values from CSS variables. Likely declare new color variables.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for pointing it out. I will improve it later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the background, you can likely re-use --color-code-bg
, e.g. getColor('--color-code-bg')
, converting to this OV.RGBAColor
of course.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
* giteaofficial/main: Fix modal + form abuse (go-gitea#34921) [skip ci] Updated translations via Crowdin Follow file symlinks in the UI to their target (go-gitea#28835) Fix issue filter (go-gitea#34914) Fix: RPM package download routing & missing package version count (go-gitea#34909) Add support for 3D/CAD file formats preview (go-gitea#34794)
#34775
