CADsite forum

AutoCAD => VBA => Topic gestart door: EddyBeerke op vr 13 06 2008, 16:30:07

Titel: Xref status
Bericht door: EddyBeerke op vr 13 06 2008, 16:30:07
Wie weet hoe je in VBA de status van een Xref aanspreekt?
Ik wil een routine maken waarbij ik een lijst maak v/d Xref's en hun status:
BV:

Naam: Xref1
Path: c:\Map\Xref1.dwg
Status: Loaded  

Naam: Xref2
Path: c:\Map\Xref2.dwg
Status: Unloaded

Naam: Xref3
Path: c:\Map\Xref3.dwg
Status: Unreferenced  


Ik krijg wel de naam en path te pakken, nu de rest nog.
Titel: Re: Xref status
Bericht door: sschevers op di 05 08 2008, 13:27:15
Deze kun via vba niet achterhalen. Je kunt alleen de methodes Load, Unload en Detach toepassen. Overigens zijn dit de methodes voor acadBlock.

greetz

stephan
Titel: Re: Xref status
Bericht door: EddyBeerke op vr 22 08 2008, 14:24:01
Citaat van: sschevers op di 05 08 2008, 13:27:15
Deze kun via vba niet achterhalen. Je kunt alleen de methodes Load, Unload en Detach toepassen. Overigens zijn dit de methodes voor acadBlock.

greetz

stephan

Hoe doet acad dat dan, in de manager zie je dat namelijk wel?
Titel: Re:Xref status
Bericht door: willyver op di 30 03 2010, 15:08:34
Is dit echt niet te doen.
Ik moet voor meer dan 4000 dwg's kijken of de xref wel of niet aanwezig en kijken
of die wel of niet aanwezig is of dat alleen het pad niet klopt.

Met vriendelijke groet,
Willy
Titel: Re:Xref status
Bericht door: HofCAD op di 30 03 2010, 16:25:27
Citaat van: willyver op di 30 03 2010, 15:08:34
Is dit echt niet te doen.
Ik moet voor meer dan 4000 dwg's kijken of de xref wel of niet aanwezig en kijken
of die wel of niet aanwezig is of dat alleen het pad niet klopt.

Met vriendelijke groet,
Willy
Beste Willy,

Heb je ook naar
http://www.cadsite.be/smf/index.php?topic=2647.msg13610#msg13610
gekeken.

Met vriendelijke groet, HofCAD CSI.

PS: Ook gekeken naar AdRefMan.exe in de AutoCAD map.
Titel: Re:Xref status
Bericht door: roy_043 op di 30 03 2010, 19:39:01
Van VBA heb ik nauwelijks verstand. Maar m.b.v. van dit LISP-voorbeeld (http://discussion.autodesk.com/forums/thread.jspa?threadID=517441), dit VBA-voorbeeld (http://www.kxcad.net/autodesk/autocad/AutoCAD_ActiveX_and_VBA_Reference/ex_xrefdatabase.htm) en deze info over error-handling (http://www.cpearson.com/excel/ErrorHandling.htm) kom ik tot deze test-code:
Sub Example_XRefDatabase()
    Dim tempBlock As AcadBlock
    Dim msgXrefAll As String, msgXrefFound As String, msg As String
   
    msgXrefAll = vbCrLf
    msgXrefFound = vbCrLf
   
    For Each tempBlock In ThisDrawing.Blocks
        If tempBlock.IsXRef Then
            msgXrefAll = msgXrefAll & tempBlock.Name & vbCrLf
            On Error GoTo ErrHandler:
            ' msg wordt gebruikt als dummie, als de xref niet is gevonden dan ontstaat een fout (die wordt afgevangen)
            msg = tempBlock.XRefDatabase.Blocks.Count
            msgXrefFound = msgXrefFound & tempBlock.Name & vbCrLf
ResumeLoop:
        End If
    Next
       
    ' Display Block information for the XRefDatabase
    MsgBox "Externally referenced blocks attached to this drawing: " & msgXrefAll & vbCrLf & "Found: " & msgXrefFound
   
Exit Sub
   
ErrHandler:
    Resume ResumeLoop:

End Sub


Geen geweldige code, maar mijn conclusie is dat het wel mogelijk is om te controleren of Xrefs worden gevonden. En in combinatie met Count moet het mogelijk zijn om ook de rest van de "status" te achterhalen.
Titel: Re:Xref status
Bericht door: sschevers op wo 31 03 2010, 08:28:07
Zoals ik al eerder aangaf via vba is het niet mogelijk om de status te achterhalen. De zaken die Hofcad via lisp doet kun je eenvoudig weg niet met VBA voor elkaar krijgen. Wil je de status wel achterhalen dan zul je moeten overstapppen naar de .Net omgeving. Dan heb je de "volledige api" (Afhankelijk van welke versie van autocad je gebruikt. Ik zit nog op acad 2007 en daar zijn nog niet alle arx functies geimplemnteerd) tot je beschikking.

@Eddy
Niet alle functionaliteit van autocad is vrijgeven onder VBA. Het uitvragen van de status van Xref's is er een van.

greetz

stephan
Titel: Re:Xref status
Bericht door: willyver op wo 31 03 2010, 10:27:57
Bedankt voor de antwoorden.
Ik ga het eens proberen met de lisp-routine.

Met vriendelijke groet,
Willy