FastFiber

Xref status

Gestart door EddyBeerke, vr 13 06 2008, 16:30:07

Vorige topic - Volgende topic

EddyBeerke

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.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

sschevers

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

EddyBeerke

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?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

willyver

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
Met vriendelijke groet,
Willy

HofCAD

#4
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.
ACADcadabra

roy_043

Van VBA heb ik nauwelijks verstand. Maar m.b.v. van dit LISP-voorbeeld, dit VBA-voorbeeld en deze info over error-handling 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.

sschevers

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

willyver

Bedankt voor de antwoorden.
Ik ga het eens proberen met de lisp-routine.

Met vriendelijke groet,
Willy
Met vriendelijke groet,
Willy