Question

Fixing Wipeout Blocks Draworder in Civil3D 2008

Asked by: daviper

I wanted to be able to award points so I started a new post.  I tried this code from another thread as it is exactly what I wanted to do however I recieve an error actually moving the wipeout backwards toward the end of the code...  I pasted the snippet of code here and the complete code below.  I would really appriciate help with this as it makes using Civil3D quite a bit more of a pain!  Thank you

            For Each ents In blockObj
            If ents.ObjectName = "AcDbWipeout" Then
                Set arr(0) = ThisDrawing.ObjectIdToObject(ents.ObjectID)
                'Move the wipeout object to the bottom
                sentityObj.MoveToBottom arr
                'MsgBox ents.ObjectName
            End If
        Next
_________________________________________________________

Private Sub cmdFixWipeoutBlock_Click()
 
    Dim blockObj As AcadBlock
    Dim eDictionary As AcadDictionary
    Dim sentityObj As Object
    Dim ents As AcadEntity
    Dim arr(0) As AcadObject
    
    For Each blockObj In ThisDrawing.Blocks
    'Set blockObj = ThisDrawing.Blocks(bname)
        'Gxet an extension dictionary and, if necessary, add a SortentsTable object**this is done "inside" the block.
        Set eDictionary = blockObj.GetExtensionDictionary '***this was the key
        ' Prevent failed GetObject calls from throwing an exception
        On Error Resume Next
        Set sentityObj = eDictionary.GetObject("ACAD_SORTENTS")
        If Err.Number <> 0 Then
            If sentityObj Is Nothing Then
                ' No SortentsTable object, so add one
                Set sentityObj = eDictionary.AddObject("ACAD_SORTENTS", "AcDbSortentsTable")
            End If
            Err.Clear   '   just a way to get error numbers if/when they occur
        End If
        On Error GoTo 0
        For Each ents In blockObj
            If ents.ObjectName = "AcDbWipeout" Then
                Set arr(0) = ThisDrawing.ObjectIdToObject(ents.ObjectID)
                'Move the wipeout object to the bottom
                sentityObj.MoveToBottom arr
                'MsgBox ents.ObjectName
            End If
        Next
    Next
    ThisDrawing.Regen acActiveViewport
    'clean up anything that may be left over
    Set sentityObj = Nothing
    Set eDictionary = Nothing
    Set blockObj = Nothing
    Set ents = Nothing
 
End Sub

                                  
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:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2008-02-15 at 14:05:37ID23167461
Tags

AutoDesk

,

Civil3D

,

2008

,

VBA

Topics

CAD & Architecture Software

,

AutoCAD Software

,

Visual Basic Programming

Participating Experts
2
Points
500
Comments
11

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. ASP Component - Msgbox
    Hello. I have created a .dll file including the following function: Public Function Age(FieldToTest) If Not IsNumeric(FieldToTest) Then MsgBox "Please enter a valid age", vbOKOnly, "Age verification" Age = False ElseIf CInt(FieldTo...
  2. Stuck a bit on this one. Feel that I am getting towards the g…
    Hi, Stuck a bit on this one. Feel that I am getting towards the goal but in a rather long-winded way. Have studied this for the last few hours and know that there is an easier loop to conduct all this code but cannot see it!!!!! Trying to work out the days let in a month betw...
  3. Calling MsgBox
    How do I call multiple MsgBox Messages in one shot. If I have four codes that execute behind an After Update Event and each code has a MsgBox in it . I prefer that the MsgBoxes all display at once with one OK button. At the moment, listed below is the way the MsgBoxes current...
  4. Autocad 2007 VBA-Draw order in a Block
    I'm trying to make sure my wipeouts are set behind everything in my blocks. I'm going to eventually work this into happening on insert but for now I'd just like to get it to happen at all by selecting the block. I've figured out how to use the AcDbSortentsTable to move objec...
  5. MsgBox Length
    Hi Experts I have a very short question... The maximun MsgBox Length is 1013 characters long, So i was wondering if there is a way to make it longer. For example: everytime i try to add more than 2,000 characters to a msgbox, i get an error any ide an how to do this withou...
  6. Alternative to MsgBox?
    I like how MsgBox stops all further processing until it's clicked but I don't like how it pops that little msgbox in the middle of the screen, which I then have bring to the front if there is a window covering it. Is there a way to do something like a msgbox but keep it on my...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: robberbaronPosted on 2008-02-19 at 02:28:27ID: 20927056

1/ what error do you get ?
2/ I guess you are using the code from http://discussion.autodesk.com/thread.jspa?threadID=537596
3/ You are trying to order the entities within a block. I would suspect that this is not possible without redefining the block.  Surely draworder is set within the block.  You may be able to do an inplace edit for the block ?  But dont want to do this for 4 copies of the same block just placed at different locations which is a likely scenario for using wipeouts.

4/
I dont understand why you are using
               Set arr(0) = ThisDrawing.ObjectIdToObject(ents.ObjectID)
rather than
               set arr(0)=ents

doesnt this get the object that has a nominated ID, yet you get that id from the object ?

 

by: daviperPosted on 2008-02-20 at 09:37:33ID: 20940003

I get a VBA Error

Run-time error '-2145386493 (80200003)

Invalid Input

and either way I run the code I get this error on this line..

sentityObj.MoveToBottom arr

I will say that it does work on all wipeout objects NOT in the block for the entire drawing.  I added the drawing and changed the extension from Block-Fix.dwg to Block-Fix.jpg.  So :) you will need to change it back if you would like to see the drawing I am testing with.  I am doing this in Civil 3D 2008 and not Autocad 2008 but for this purpose I can not see that being any part of the issue.

Thank you for the response as well.

 

by: dragontoothPosted on 2008-02-22 at 12:52:25ID: 20961315

I put a check into the blockoj to check for IsLayout no more errors. I am using the trial acad 2008 so it does not pertain to civil 3d.

HTH
dragontooth

If blockObj.IsLayout Then
            For Each ents In blockObj
                If ents.ObjectName = "AcDbWipeout" Then
                    Set arr(0) = ThisDrawing.ObjectIdToObject(ents.ObjectID)
                    'Move the wipeout object to the bottom
                    sentityObj.MoveToBottom arr
                    'MsgBox ents.ObjectName
                End If
            Next
        End If

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:

Select allOpen in new window

 

by: daviperPosted on 2008-02-25 at 18:27:13ID: 20981188

I have not had a chance to try this yet, been very busy figuring out Civil3D but thank you I will try this first thing tommorow and let you know.  I appriciate the help very much!

 

by: dragontoothPosted on 2008-02-25 at 19:05:59ID: 20981294

I believe this has something to do with the block and/or  wipeout is not in the layout or in a xref, no clue where it is though. FWIW

I was learning how to draw in 3D and paper space today.... LOL who says you can't teach an old dog new tricks. ROFL

 

by: daviperPosted on 2008-02-26 at 01:03:04ID: 20982617

I tried the code and it definitly works for non block objects (but it did that before) however there is no error which is a good step for sure.

The block is a definition for a group of objects stored inside the drawing.  The block definition is not visible.  The block references are what you see in the drawing and baring special circumstances the reflect the exact definition stored within the drawing.  Xrefs get treated like blocks and there is the isxref check when working with block objects as well.

The only other thing I can think is to systematically insert ever block one by one at 0,0,0 and capture what the actual objects are and the name of the block, and then check for wipeouts and if it exists push it backward and then redefine the block with the same name.  That would update all the blocks but definitly seems like the brute force way.

 

by: daviperPosted on 2008-02-26 at 01:03:52ID: 20982621

Congrats on the 3D too.  One of the cool things about Civil3D is how as we build the model it is just all right there in well... 3D

 

by: daviperPosted on 2008-03-01 at 11:24:06ID: 31431345

I really appriciate your input.  It did help step me toward a solution but I am still having the same old issue with the blocks.  I do thank you for taking the time though and eliminating one of the errors in the code.

 

by: dragontoothPosted on 2008-03-01 at 11:31:35ID: 21023092

Thanks for the points and the grade. :)

What are the other issues you are having?

dragontooth

 

by: daviperPosted on 2008-03-01 at 14:23:51ID: 21023910

Your code was all good but the problem I was originally having and am still having is that the actual block definition is never updated.  Thus all the references to that definition in the drawing still display incorrectly.  AutoCAD has a bug in that depending on how you insert your block with a wipeout in it the wipeout looses its draw order in the block definition.  Usually with a copy and paste using the clipboard.  But in Civil3D template drawings are vital.  I have quite a few blocks in the template drawing (.dwt) that lose their wipeout draw order.  I need a command to reset this on all blocks with a wipeout when it occurs.  The code I found on the other forum and that we modified here does indead move all individual wipeouts to the back in the drawing but not in the block definitions so the block refrences are still incorrect.  If wipeouts just in the drawing were the problem I could code that or just make the fix manually in 3 or 4 easy steps.

I hope that makes sense, and that was the only reason I did not give you an A.  The original problem still persists.  Thank you

 

by: dragontoothPosted on 2008-03-01 at 14:46:47ID: 21024007

I wasn't worried about the grade, I am concerned about the problem you are having which is why I posted to begin with.
If the code moves the wipeouts to the back in each blockinsert in lieu of the block definitions then the code is wrong. If you want to post a dwg that is bigger (if you can here) so I can work on it if you want.

If you can't post the drawing and still want some help I'll give you a pointer to an e-mail address or another website that you can. Your choice.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...