I'm gonna guess that your results will improve if you select bodies rather than faces. I can understand the face thing failing, because if you're selecting faces, SW doesn't know it's all one thing necessarily, and the split line has to be continuous.
I can't duplicate your error, but I do get an error if I don't have faces selected properly.
Just try to select bodies from the Surface Bodies folder at the top of the tree rather than selecting faces from the graphics window, or using the Filter Surface Bodies selection filter option. I'm guessing that this will work better and mean fewer picks to make it work.
Matt's absolutely correct; make the selections using the Surface body folder so that you capture the entire surface body definition. Otherwise when using sketches (projection mode) its perfectly fine to pick from the screen.
Interesting. My examples do not reproduce the error if I select bodies or any combination of bodies and faces. I will report if I have this issue with selecting bodies, as that is my preferred selection method whenever possible, yet I have run into this issue many times. Your tips should save me some time; thank you!
I'm running at 2048 x 1536. I cropped the screenshot so you wouldn't see the rest of my oh-so-interesting desktop.
I have found one example where the splitting entity is selected as a body, but the faces/bodies to split are selected as faces, and the split line fails, returning "cannot create an edge which does not split a face"
In this example, I would only have to copy the face, split it, and replace the original with the split faces. Not much, but still more work than I want to do for a simple split line.
NOSPLIT3.jpg 234.2 KB
Another example of a split line with a simple, single-face cylinder selected as a body for the trim tool and multiple faces to split. It fails.
All Day I Dream About Split...lines working?
NOSPLIT-BODYSELECTION.jpg 235.6 KB
Body selection notwithstanding,
Who at SW cares? My needle is pegged on nobody.
nosplit-dbf.jpg 283.9 KB
You're not the first one to lose his composure over this crap. You can beat your head til its a bloody stump, but that won't change anything. Shaming SW into action won't work either. Been there, tried it, gave up.
The last example you show isn't fair. You've got a complex edge on a complex surface line to face and expecting it to split? You're a newbie, right? No way, I wouldn't do paid work like that. You have to extend that red body a little where it intersects the blue.
There's two things you can do:
- cry yourself dry
- go get another surface modeler that works.
The second example, yeah, that's common. Why this obsession with Split Line? Why not work in surfaces and use Trim? Both suck about equally, but with with trim you have other options.
You've gotta know some work arounds. You're simply naive if you expect this stuff to do what you tell it to do.
The red body is tangent at the intersecting edge and as such extending does not help. I should have stated that when I posted the image.
Trim fails in this case due to geo. conditions, verification on. I have used surface bodies with the same results (or lack thereof). Again, I should have stated that when I posted the image. Alternatively, you could have pointed out my omission asked for more information.
You should know that I have workarounds. My previous posts state this clearly.
I'm not sure why you re-phrased the last line of my previous post as if you were telling me something I did not already know. I will make noise, and SolidWorks will hear it. Who at SW will listen? My needle is pegged on nobody. Are you offended that I am pointing out an area where I am failing to motivate SolidWorks into corrective action simply because you have failed and given up in that same regard?
I have had this discussion with you before. My reasons for posting on this forum are twofold:
1. To increase my and others' knowledge of SolidWorks.
2. To provide feedback to SolidWorks when and if it is helpful
In my opinion this topic falls under both:
1. If there are workarounds I am not aware of, responses to this thread may bring them to my attention.
2. This issue is clearly a limitation in SolidWorks; IF they care, they may do something about it. After all, the squeaky wheel gets the grease. This is not to say that if I never started this topic, SolidWorks would never have known about it.
Your first post was clearly helpful. I thanked you because I appreciate the valuable knowledge you have and your willingness to share it with others. I look up to you as someone who has been in the trenches, helping to make SolidWorks what it is today. Your condescension towards me is eroding that well-deserved respect. I know, you could just be having a bad day, but come on, mate! At least try to be helpful. I am not needlessly jamming the board by posting every time this happens; only when the suggested workarounds have started to run dry, so to speak.
You have attempted to illustrate my lack of composure while belittling my skills as a user of SolidWorks, and implying that I am naive. This split line issue IS very frustrating for me, and I have done my best to draw upon my calmness of mind in order to substitute dry humor for frustrated expression. You don't need to help, or even laugh, but you don't need to be so rude either.
The example you show won't work because of the tolerance between the edge of the surface body and the edge (or split line) on your solid body. You need to avoid these situations in SW because one is Non-manifold (open surface) and the other is manifold (closed body) and SW has a hard time distinguishing which side the resultant material (Boolean) ends up on. Of course in the perfect CAD system, this shouldn't occur but this phenomen occurs in almost every other CAD system to some degree depending on the absolute or relative tolerance of the part/system.. Why not make it a very high tolerance you might ask - if we did then that would take more or much more time to compute the result (the mathematicians call it parameterizing the boundary or edge) so we try to find a good default tolerance to keep the performance up.
The classic case of this problem is when you create a swept rectangular body along a somewhat swoopy spline. Then create a split line on the top face of the swoopy rectilinear shape. Now use that split line as the sweep path of a new surface who's profile is a simple 3 point spline - now try to cut away the rectilinear shape with the newly created surface - it might work, it might not. If it does work, inspect the edge that used to be the split line. You'll probably find that it is a "dirty edge" meaning that there are many segments that are the original split line and then many other edges that are a result of the surface cut. They don't exactly coincide because of the tolerance of the sweep surface command and the overall default tolerance of SW. I've attached a part as an example of how to use our heal edges command to clean up these dirty edges.
So In the image that you show where the red surface body is intersecting the blue solid part, just don't include the top face of the solid and you'll be okay - that edge coinciding with the surface body edge is probably why your split is failing.
resolving dirty edges.zip 52.3 KB
I'm not sure what to do with the file you posted. I used the supressed surface sweep to cut the solid, and indeed it generates a broken up "dirty" edge. When I try to heal these, SW says that the face has no edges that can be healed. Is that the point?
I should say that dirty edges are what motivated me to use a less than optimal split feature in this instance. All other methods I know about failed with verified rebuild on, and generated seriously dirty edges with it off. I checked for invalid geometry, but there was none to report. I used heal edges, but it altered the edge too much and the result was unnaceptable. What is worse, both the healed edge and the unhealed dirty edge got even more jagged and even partially lost tangency between its faces once mirrored!
Regarding the heal edge tool, I usually end up trying it, seeing what it does, and deleting it because it is too heavy handed and adjustments often do nothing. What I mean by that is that once I click on "heal edges", if I want to change a tolerance, I usually have to rebuild and re-edit the feature, or build a new one entirely. This makes it very hard to dial out the heavy edge healing and simply "merge" tangent edges the way it would in a perfect world. An example of this is a 2-edge projected circular hole in an arbitrary surface. I have seen heal edges delete the hole, but usually it just goes way out of round. Sure, I can back off my settings, but the featre doesn't update so well. I should add that this is most common with imported geometry, but also appears with native geometry. To be fair though, heal edges has saved me a few times and is always an option I at least try to use.
The top face of the solid body is already split at the intersection of the red and blue bodies on the top face. I do not need to split that face. I tried selections of solid and surfaces, surfaces only, surfaces with surface faces, surfaces with solid faces, surface faces only, solid faces only (after thickening the split tool); I even copied the faces to split as an isolated body. I'm not surprised that the final image I posted failed, but one of my other options should have worked.
How possible would it be to make the system tolerances user controllable for a single session? I often need to max out the resolution slider in performance options just to get things to work. Some more headroom might be usefull, resources permitting.
The heal edge default tolerances are pretty good and if they are changed drastically it might be resulting in the things you're seeing - I rarely change its values. It's for really, I mean really microscopic edges; that's what it is best for - when I use it, it is usually on import parts that have problems. In fact, there was a forum user recently that had a file that you could not cut through. Turns out it was an import part from "another" surface modeling system. SolidWorks had imported it and put a solid import in the FM but something was obviously corrupt about the body. Sure enough - heal edges on some adjacent faces in the model made things right.
Will, if you're just cognizance of the issues that you've experienced and things that you're learning and model in a way that you're not introducing "ambiguity" (i.e. surface body edges on other surface body edges - except in the case of knit of course) you'll be better off because not only will you be making better models they will rebuild faster also.
Our developers decide/set the default tolerance in SW from the parasolid kernel. We have never given the user the ability to control it and I think that was the right decision. 12 years ago when I was doing surfacing in ProE we did have the ability to set the "relative" tolerance from the default ProE tolerance of .0012 (don't ask me why I remember that number) It was great for bring in import models that were really messed up or not exported correctly, but the down side is that once you got the model in you had to maintain that part file at a custom model tolerance and that would make regens go slower and the higher tolerance would actually cause new problems. Not to mention that once you were done with your work you'd have to pass the file to others and now they'd have to deal with the non-default tolerance built into the file - remember it's all parametric/history based. Also another nasty result of relative model tolerance is that if you're building something really big, like the wing span of a Jet, and in the same part file try to dimension the rivet hole to 2 places (inches) the feature will probably fail.
I think this discussion about tolerance is important and valuable. Can you define what it really means? In manufacturing tolerance is the distance from the theoretical "as designed" to the actual, based on some sort of datum reference.
In CAD models, what does tolerance mean? What is the datum reference?
ok thanks Mark,
In the Moi forum ( I trialled this recently) I saw a discussion about how it had an accuracy of 0.005 and if a model was a larger one this messed up the boundaries.
Sounds much the same issue although I admit my CAD innards know-how is limited.
I guess this is related to the precision in windows and in respect of anything you might then want to perform - as in further feature calcs - on the part afterward.
I wonder if this is any different if you use 64 bit rather than 32 bit?
Could users still not be allowed discretion to use a 'higher tolerance' setting in some instances? I am not sure what that might mean - 5 or 10x?...
The file could be tagged as being so and flagged in the FM...
I am sorry I dont know enough to know whether a situation like Will's should be worked around or whether it identifies something that might be accomodated in SW programming
As Matt says it would be nice to know more about the tolerance.
This is some of the detail that typically doesnt make it to the help notes but assists people to understand what it is they are really doing or why it doesnt happen
Mark, what is the tolerance?
and as Will asks could SW have an option to use a higher tolerance if the user desired? or does this make problems elsewhere?
someone with a faster pc might be happy to trade some performance for better fits..
thanks for continuing to chat with users on the forum - we need more like you here
..maybe even someone will answer my .net question over the coming year
I read eagerly regarding possible work-arounds for split line,... I am relatively new at SW about 6 months now, and have
just recently had 2011 SP3 and simulation installed. All self taught, and it has been a steep curve,...
I find that in simulation - using split while loading surfaces reliably chokes SW, I need to use task manager to kill
the application because exit then fails,... This is really a crash. I do get an error window stating " the object invoked has disconnected from the client",
or something very similar to that. This is a Windows error I believe and demonstrates that SW has a good solid bug, nothing "sometimes" about it.
Probably a un-initailized pointer.
Maybe this is good so it will get some attention, I have sent in the report thru our VAR. It is troublesome to read that SW seems to ignore problems.
I have been searching for a work around. In the previous cases that I ran into this I was able to
build separate bodies in the part and un-check merge - the split point then revolves and breaks the surface.
However this strategy does not always work. I get the same crash like behavior if I add a sketch to the part
and use that instead of an intersect surface. I have spent many hours at it and I am hoping that there is a work around.
It seems to me that when two entities, say two circlular curves, or two lines meet which are colinear - then SW
simplifies the result into one entity. The reverse should happen if you use a split, one entity becomes two. My bet is that
the simplification or decomposition of two entities into one is not supressed when an explicit split is introduced.
Anyway - if you have alternate workaround ideas I would appreciate hearing.
I think the topology regarding boundary-representation (like Solidworks uses for just about anything if I'm not mistaking) is a very complex one, generated by lots of mathematics. Doing cuts like this just seems to clash with that a bit, I'm not saying it's not an issue, I'm just saying it's sort of the nature of the beast.
I could be absolutely wrong here, of course, but I'm just giving you my thoughts on the matter
As to the split-line functionality, I have seen many instances in 2008 where using multiple surface bodies to split a single solid face fail. These were in no way ambiguous intersections and the surface bodies formed closed loops. The workaround has been to offset the solid face (0.0) and then split the resulting surface body. I have sent many examples to my VAR.
As far as tolerances go, making them adjustable ultimately affects the size of the model envelope available to build in. I believe now that the largest size model you can build in SW is 100 meters (or it could be 1000, I forget, but lets just say it's 100 for arguments sake). If you want to increase the tolerance by a factor of 10, then your model will now only be able to be 10 meters max. I too am a Pro-E user and we tend to run our models with a higher accuracy than the default. This comes into play when you have small details on a relatively large model that is based mostly on complex surfaces. The thing about Pro-E is that is has two modes of accuracy: relative, and absolute. Relative is the default and is a ratio of the diagonal measure of the model envelope. An example would be if you start with a small protrusion and put a hole through it which is very close to an edge of it; then make another protrusion off the side of that that is 100 times the size of the original; then reorder that hole after the big protrusion, that hole may fail do to the accuracy actually changing on you as you model. Absolute accuracy is just that, set according to your model units and does not change with model size, but will affect how large a model you can produce. Parts that are merged into each other (kind of like the combine command in SW) MUST have the same accuracy set.
Tell me if I'm wrong Mark B, but I believe SW accuracy is absolute (set relative to units and not model size).
Your "absolutely" right - SW uses absolute accuracy because we did not want to deal with the issue of relative accuracy as does proe in its default mode. Thanks for the ProE discription.
Currently the largest part model you can build in SW is 1000M.
We freed up the restriction from 2008 to 2009 in assemblies thou. Now you can assembly any number of 1000m objects to total more than 1000m.
ok Mark so assuming most swoopy stuff modelling is going to be <10m and probably a whole lot of folks doing stuff <1m then there is some scope for a 'higher tolerance mode'?..