4 Replies Latest reply on Feb 6, 2015 10:50 AM by Elmar Klammer

    Drawings stuck in 'Draft Quality' and unknown feature tree icon...

    Lee Gregory

      Dear all,

       

      I know this may have been resolved before, but I am yet to find a conclusive answer on these forums.

       

      I have a drawing with a medium sized assembly (6100 parts) in. I have 7 views in total including 3 CS views.

       

      All of these views seem to be stuck in Draft Quality with no option to turn it off. The "View > Display > Draft Quality HLR/HLV" is greyed out, therfore I am unable to change this. My page is set to high quality in Page Setup.

       

      When I print I get the standard "Next time you open, views will be high quality etc..." However, when I re-open the drawing, this remains the same.

       

      I also have this 'egg timer' on my drawing views in my feature tree. I don't know what this means either. SEE ATTACHED JPEGEggTimer.JPG

       

      I am well and truly stuck and have no more options but to ask you guys.

       

      CAN ANYONE HELP ME GET THESE DRAWING VIEWS BACK TO HIGH QUALITY?

       

      I am running SW2009.

       

      ANY HELP IS GREATLY APPRECIATED. THANKS IN ADVANCE.

        • Re: Drawings stuck in 'Draft Quality' and unknown feature tree icon...
          Deepak Gupta

          Make a copy of the drawing and then open the copy to see if that helps.

           

          Suppress a lot of components in the assembly to make the assembly lighter and then open the drawing. You might see some error but click OK and see if that helps. Do make sure to keep a copy of assembly and other files before trying.

          • Re: Drawings stuck in 'Draft Quality' and unknown feature tree icon...
            Andy Sanders

            The egg timer means SW is crunching away at updating the views.  That's probably why you can't change anything yet until the egg timer goes away.

             

            Do they ever go away?  Can you leave it be for 5-10 min just to see what happens?

             

            You may want to look at "lightening" the geometry, as Deepak said.  That should cut down on the crunching SW has to do to generate the views.

            • Re: Drawings stuck in 'Draft Quality' and unknown feature tree icon...
              pablo gutierrez

              dude, try to load up your drawings in lightweight mode or large assembly mode.

              you can also change the settings in the system options so you can update the views manually..  

              update drawing view.JPG

              • Re: Drawings stuck in 'Draft Quality' and unknown feature tree icon...
                Elmar Klammer

                Hello,

                 

                Just an updated to this problem that might resolve the issue. If you have imported parts inside your assembly that have faults then the drawing will permanently be stuck in draft quality. Look for all imported parts and run a check (tools -> check) to see if there are any faults listed. Note: that SW does not indicate if  an imported part has errors. It seems that running import diagnostics and resolving issues is needed if you require drawings to resolve fully down stream. Another option to try is under System options where you can check "ignore self-intersection check for some sheet metal features" under the "performance" section.

                 

                Maybe it helps someone. Below is the vba code from solidworks api site somewhat altered. It will highlight the error faces and select them and print a numbered list to the immediate window so you can do all this semi automated. A good start anyways.

                 

                Thanks to hawkridge & sw support for this info....

                 

                '----------------------------------------------------------------------------

                ' Preconditions: Part or assembly is open.

                '

                ' Postconditions: None

                '----------------------------------------------------------------------------

                Option Explicit

                Function GetStringFromID(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, vPIDarr As Variant) As String

                    Dim vPID                        As Variant

                    For Each vPID In vPIDarr

                        Debug.Assert vbByte = VarType(vPID)

                        GetStringFromID = GetStringFromID & Format(vPID, "###000")

                    Next vPID

                End Function

                Sub ProcessFaultEntity _
                ( _
                swApp As SldWorks.SldWorks, _
                swModel As SldWorks.ModelDoc2, _
                swEdge As SldWorks.Edge, _
                swFaultEnt As SldWorks.FaultEntity _
                )

                    Dim swModExt                As SldWorks.ModelDocExtension

                    Dim vPIDarr                 As Variant

                    Dim nCount                  As Long

                    Dim swEnt                   As SldWorks.Entity

                    Dim bRet                    As Boolean

                    Dim i                       As Long

                   

                    nCount = swFaultEnt.count: If 0 = nCount Then Exit Sub

                   

                    Set swModExt = swModel.Extension

                   

                    vPIDarr = swModExt.GetPersistReference3(swEdge): Debug.Assert Not IsEmpty(vPIDarr)

                    'Debug.Print "    Edge ID = " & GetStringFromID(swApp, swModel, vPIDarr)

                   

                    For i = 0 To nCount - 1

                        Set swEnt = swFaultEnt.Entity(i)

                       

                        If Not swEnt Is Nothing Then

                            bRet = swEnt.Select4(True, Nothing): Debug.Assert bRet

                        End If

                       

                        Debug.Print "      Fault[" & i & "]                         = " & swFaultEnt.ErrorCode(i)

                    Next i

                End Sub

                Sub main()

                    Dim swApp                   As SldWorks.SldWorks

                    Dim swModel                 As SldWorks.ModelDoc2

                    Dim swPart                  As SldWorks.PartDoc

                    Dim vBodyArr                As Variant

                    Dim vBody                   As Variant

                    Dim swBody                  As SldWorks.Body2

                    Dim nRetval1                As Long

                    Dim nRetval2                As Long

                    Dim vEdgeArr                As Variant

                    Dim vEdge                   As Variant

                    Dim swEdge                  As SldWorks.Edge

                    Dim swFaultEnt              As SldWorks.FaultEntity

                    Dim i                      As Long

                    Dim bRet                    As Boolean

                    Set swApp = Application.SldWorks

                    Set swModel = swApp.ActiveDoc

                    Set swPart = swModel

                    Dim ii As Integer

                    Debug.Print "File = " & swModel.GetPathName

                   

                    vBodyArr = swPart.GetBodies2(swAllBodies, True): Debug.Assert Not IsEmpty(vBodyArr)
                   
                    ii = 1

                    For Each vBody In vBodyArr

                        Set swBody = vBody

                     

                       ' Debug.Print "  Body[" & swBody.GetType & "] --> " & swBody.GetSelectionId

                       

                        nRetval1 = swBody.Check ' obsolete method

                        nRetval2 = swBody.Check2 ' obsolete method
                       
                       

                             If nRetval2 <> 0 Then
                            
                        Debug.Print ii & "  " & " Body[" & swBody.GetType & "] --> " & swBody.GetSelectionId

                        Debug.Print " Body2::Check (1 if valid; 0 if not)   = " & nRetval1

                        Debug.Print " Body2::Check2(number of faults)       = " & nRetval2
                       
                        swBody.Select True, -1
                       
                        ii = ii + 1

                        End If

                        vEdgeArr = swBody.GetEdges
                       
                        On Error Resume Next

                        For Each vEdge In vEdgeArr

                            Set swEdge = vEdge

                            Set swFaultEnt = swEdge.Check

                            ProcessFaultEntity swApp, swModel, swEdge, swFaultEnt

                        Next vEdge

                    Next vBody

                End Sub