I have a library with hundreds of cells. All of the cells have one or more zero length elements at their origins. In V8i, to create a graphic cell that only the origin was snappable, these were needed. In CONNECT, they are no longer needed an as part of a complete cleanup of our cell libraries, I want to remove them. In some cells, there are zero length linestrings while others are lines, and I have found a few with some of each.
I am very rusty with my VBA skills. I looked at element enumerators to select elements and I can skip over elements that fail my length test. But I cannot figure out how to delete the element once it is found.
My current code needs a selection set to start, but I am not sure that is the correct approach. Note - this code is only looking at lines. I believe adding line strings to the mix is trivial. At least, it seems easier than deleting the elements once they pass my tests.
Sub DeleteZeroWtLine() Dim oEnumerator As ElementEnumerator Set oEnumerator = ActiveModelReference.GetSelectedElements Do While oEnumerator.MoveNext Dim oElement As Element Set oElement = oEnumerator.Current If oElement.Type = msdElementTypeLine Then If oElement.AsLineElement.Length = 0 Then ' Need code to delete any elements that get to this point End If End If Loop ActiveModelReference.UnselectAllElements End Sub
Looking at the scan criteria approach will probably speed up the process, but I believe it will leave me with the same question - how to delete the current element in an enumerator?
Here's a macro to find and delete zero-length lines...
Regards, Jon Summers LA Solutions
Answer Verified By: caddcop
Deleting a visible element in VBA
This code should be work
ActiveModelReference.RemoveElement oEnumerator.Current
That did the trick. I also realized my code had an error but its fixed now. Had <> instead of = in my if test for zero length. I had started to look at multiple tests and started with not zero and never changed it when I decided to keep it simple'
Charles (Chuck) Rheault CADD Manager
MDOT State Highway Administration
You know, I looked on your VBA page and must have missed this one! I knew where to look, but just missed it.