-
Notifications
You must be signed in to change notification settings - Fork 329
DXF export issue #1767
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
Comments
@antonysigma could you provide a MRE? |
@adam-urbanczyk , here you are. Thanks in advance! Python version: import cadquery as cq
from ocp_vscode import (
set_port,
show_object,
)
viewpoint = {
'top': (0, 0, 1),
'left': (1, 0, 0),
'front': (0, 1, 0),
}
def exportDXF3rdAngleProjection(my_part, prefix: str) -> None:
for name, direction in viewpoint.items():
cq.exporters.exportDXF(
my_part.rotateAboutCenter(direction, 90),
f"{prefix}{name}.dxf",
# Note: exportDXF is missing the following parameter.
#opt={
# "projectionDir": direction,
#},
doc_units=6,
)
def exportSVG3rdAngleProjection(my_part, prefix: str) -> None:
for name, direction in viewpoint.items():
cq.exporters.export(
my_part,
f'{prefix}{name}.svg',
opt={
'projectionDir': direction,
},
)
if __name__ == '__main__':
# Build the part
width = 10
depth = 10
height = 10.0
# !!! Test projection of fillets to arc segments in DXF. !!!
baseplate = (
cq.Workplane("XY") #
.box(width, depth, height)
.edges("|Z")
.fillet(2.0)
)
hole_dia = 3.0
# !!! Test projection of countersunk to arc segments in DXF. !!!
drilled = (
baseplate.faces(">Z") #
.workplane()
.cskHole(hole_dia, hole_dia * 2, 82.0)
)
# Expected DXF output to be identical to SVG output
exportSVG3rdAngleProjection(drilled, "")
exportDXF3rdAngleProjection(drilled, "")
# Initialize the ocp_vscode viewer
if False:
set_port(3939)
show_object(drilled) |
Hi @adam-urbanczyk , Do we need a simplier MRE for debugging? Actually, a side view of a cylinder will also reproduce issue. Also, whom should I tag here to get more visibility? -Antony |
Good that you poked. I'll take a look. |
OK, so DXF export only exports 2D sections and (at least currently) it does not do projections like export SVG (the use case for DXF export so far was generating file for laser cutting). It is mentioned in passing in the docstring. I'll add a note to the docs to make it clearer. |
Thank you for the clarifications. Applying UNIX principles (i.e. build one command line app to do one job and do it well), I suppose I will use Cadquery to export STEP, and then write an external script to convert STEP files to 2D projections in DXF format. Thanks! |
Hello, just wanted to chime in here. I have created my own DXF export class to do a lot of particular stuff like adding views, paperspace layouts, scaling, dimensions, hatching and BOMs. I hope I get some free time on my hands to lift the basic stuff out of it and hopefully it will be accepted to be in CadQuery. Exporting a DXF file is becoming a bit more complex because some extra steps are involved.
The question is, how are you going to convert a 3D STEP file into a 2D DXF? you can write something yourself, but way easier is to use CadQuery and write you own DXF exporter, because you have already your 3D model. Take a look at https://github.com/CadQuery/cadquery/blob/master/cadquery/occ_impl/exporters/dxf.py to see how the "3D lines" are converted into "DXF lines" |
@Jopie01 adding dimensions was requested quite some time ago, so if you have something a PR would be nice. |
Great! I am not a developer, but I can help review code, especially the If there's a PR, I can in turn contribute a simple example code to showcase 2D projections. Similar to the MRE that I posted at the top of this issue.
In the past (2010s), I imported the STEP file manually into FreeCAD's TechDraw extension, and then generated 2D projections manually. Now that we are in 2020s, maybe we can I can script the
Again, I am a user, not a developer. I believe what makes Cadquery attractive (over build123d) is the fluentAPI and declarative programming APIs. Paraphrasing Cadquery's Readme, 3D part as a hardware should follow the hardware engineer's logic, not following the (Python idiomatic) software engineer's logic. However, this in turn impacts the developer experience because most users do not speak idiomatic Python, especially compared to Build123d users. So, most of us are unable to contribute imperative software code back to the Cadquery's repo. |
@adam-urbanczyk Let us know if we should close this issue, and then move the discussion (baremetal 2D projection support with ellipses and arcs) to elsewhere. |
Originally posted by @antonysigma in #122
The text was updated successfully, but these errors were encountered: