If you’ve been working a while in SOLIDWORKS, you know the drill. You open a drawing, and there they are: those hanging, useless dimensions that lost their reference points. They’re referred to as dangling dimensions, and one or two will not hurt anything, but a whole group can take a neat drawing and make it into a confusing mess. They’re not just visual eyesores; they’re an early symptom of unwanted errors.
But what if you could nuke them all in one click? Well… now you can, by following along with this guide. This guide is going to explore a simple macro for all SolidWorks delete dangling dimensions. You can utilize a simple, convenient macro that addresses this very problem by zapping all your dangling dimensions for you.
Key Features
- Deletes all dangling dimensions from active drawings.
- Works with any SOLIDWORKS version, thanks to late-binding.
- User confirmation required before deletion.
How The Macro Works Behind the Scenes?
The VBA macro follows a clear, logical route to make sure that it only targets what you want it to. Here’s a step-by-step breakdown of how it works:
- It Checks for the Document: It first checks whether the current document is a drawing. If you have something open like an assembly or a part, it will warn you and terminate, so you don’t even use it where it shouldn’t be used. This is also a good thing to keep in mind if you ever wonder how to cancel macros inc before they land you in trouble.
- It Scans for Dangles: The macro searches every view in your drawing, looking for any annotations SOLIDWORKS has tagged as “dangling.” It only calls out those dimensions that have lost their reference.
- It Asks for Authorization: You get a message of approval prior to deletion being done. That is your final chance to approve the action and prevent modifications from being inadvertently made, which is really a great safety feature, especially if you are working on something intricate and would like to prevent modifications from being made by accident, as if you have to delete configuration SolidWorks drawings in a particular way.
- It’s Version-Agnostic: Because it uses late-binding, the macro does not use explicit references and works perfectly across different versions without your involvement in code.es and works perfectly across different versions without your involvement in code.
Code:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
' Delete all dangling dimensions ' Conditions = Active document must be drawing ' Results = Dangling dimensions deleted ' www.bluebyte.biz Dim swApp As Object Dim swModel As Object Dim swDraw As Object Dim swSheet As Object Dim swView As Object Dim boolstatus As Boolean Dim swAnn As Object Dim swDispDim As Object Dim vSheetNames As Variant Public Enum swDocumentTypes_e swDocNONE = 0 ' Used to be TYPE_NONE swDocPART = 1 ' Used to be TYPE_PART swDocASSEMBLY = 2 ' Used to be TYPE_ASSEMBLY swDocDRAWING = 3 ' Used to be TYPE_DRAWING End Enum Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc If swModel Is Nothing Then swApp.SendMsgToUser ("Macro failed because there is no active drawing document.") ElseIf swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then swApp.SendMsgToUser ("Macro failed because active document is not a drawing.") Else Set swDraw = swModel swModel.ClearSelection2 (True) vSheetNames = swDraw.GetSheetNames For i = 0 To UBound(vSheetNames) swDraw.ActivateSheet vSheetNames(i) Set swSheet = swDraw.Sheet(vSheetNames(i)) Set swView = swDraw.GetFirstView Do While Not swView Is Nothing Set swAnn = swView.GetFirstAnnotation3 Do While Not swAnn Is Nothing If swAnn.IsDangling Then swAnn.Select2 True, -1 End If Set swAnn = swAnn.GetNext3 Loop Set swView = swView.GetNextView Loop boolstatus = swModel.DeleteSelection(True) If boolstatus Then swModel.ClearSelection2 (True) End If Next i End If End Sub |
Bottom Line
Should you need to automate your SOLIDWORKS workflows even further, from dimension management to automating other drawing processes, Blue Byte Systems Inc. is here to help. We specialize in custom add-ins and automation utilities designed to your specifications. Contact us today!