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

spline closed attribute error #190

Closed
Illicitl opened this issue Dec 3, 2022 · 3 comments
Closed

spline closed attribute error #190

Illicitl opened this issue Dec 3, 2022 · 3 comments

Comments

@Illicitl
Copy link

Illicitl commented Dec 3, 2022

When I read the dxf, dxfspline's closed property is wrong, autocad view is closed, but read false, also, the location of the dxftext is wrong.

error.zip

@brettfo
Copy link
Member

brettfo commented Dec 3, 2022

Spline Closed Property

Sure enough debugging the file you attached shows all splines as having the IsClosed flag set to false, but looking at the DXF file in a text editor (lines 2221-2222) shows that code 70 is 0 and according to the spec this is the correct interpretation of that flags field.

image

The file has 809 SPLINE entities, and of those, the first and last control points of 775 of them have the same value which means that while the IsClosed flag is set to false, in reality it might as well be considered true.

Question:

I'd like this library to accurately represent the file as read from disk, so I'm going to leave the IsClosed flag to false, but I'd still like your app to be able to understand if the spline looks like it's closed. This could be easily accomplished with an extension method, but I'd like your feedback on what that should look like. My initial thought is something like this:

public static bool IsSplineClosed(this DxfSpline spline)
{
    return spline.IsClosed || (spline.ControlPoints.First().Point == spline.ControlPoints.Last().Point);
}

Text Location Wrong

Can you give me an example of a TEXT entity having the wrong location, with both the correct and incorrect values so I can investigate?

@Illicitl
Copy link
Author

Illicitl commented Dec 4, 2022

Sorry, actually I'm not sure, because when I read this dxf with this library, I read the closed property is wrong, but when I save it as a new dxf with autocad, and read it again with this library, the closed property is normal, and so is the text in this dxf.

@brettfo
Copy link
Member

brettfo commented Dec 4, 2022

I think it's still an interesting case where the flags don't report that the spline is closed, but it reality it is. I've added an extension method AppearsClosed() to DxfSpline that does basically what I proposed above; returns true if either the flag reports that it is closed, or if the first and last control points are equal.

@brettfo brettfo closed this as completed Dec 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants