Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Guppendilter und LayerID's

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Guppendilter und LayerID's (1279 mal gelesen)
Gora1000
Mitglied
Ingenieur


Sehen Sie sich das Profil von Gora1000 an!   Senden Sie eine Private Message an Gora1000  Schreiben Sie einen Gästebucheintrag für Gora1000

Beiträge: 23
Registriert: 21.08.2013

erstellt am: 26. Okt. 2019 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


2019-10-2607_54_30-AutodeskAutoCAD2019-layer_auslesen.dwg.png


Debugger.png


layer_auslesen.dwg

 
Morgen Zusammen,

ich versuche schon seit einiger Zeit die Layernamen aus den Gruppefiltern im Layermanager mit Autocad 2019 auszulesen. Einen Beitrag habe ich dazu hier:
https://ww3.cad.de/foren/ubb/Forum259/HTML/002244.shtml
gefunden. Allerdings funktioniert es nicht so wie im Beitrag zum Schluss beschrieben. Das Problem liegt aus meiner Sicht an Xrecord welcher die LayerId's zurückgeben sollte. Das erläutere ich etwas später.

Zuerst: Ich verwende folgendes Beispiel:

Code:
Sub readfilter()
        Dim oDict As AcadDictionary
        Dim TrackingoDict As AcadDictionary
        Dim LayFlt As Variant
        Dim oXrec As AcadXRecord
        Dim strLayer As String
        Dim objLayer As AcadLayer
        Dim DataLayer As String
        Dim ArraySize As Long
        Set oDict = ThisDrawing.Layers.GetExtensionDictionary("ACLYDICTIONARY")
        'Set oDict = ThisDrawing.Layers.GetExtensionDictionary("ACAD_LAYERFILTERS")
        Set TrackingoDict = oDict
On Error Resume Next
    For Each LayFlt In oDict
            Set oXrec = TrackingoDict.GetObject(LayFlt.Name)
            Dim z As String
            z = ThisDrawing.Utility.GetObjectIdString(LayFlt, False)
            oXrec.GetXRecordData xtype, XValue
        For i = 3 To UBound(XValue)
            DataLayer = XValue(i)(0)
            Set objLayer = ThisDrawing.ObjectIdToObject(DataLayer)
        Next
    Next LayFlt
End Sub


Die DWG-Datei ist im Anhang.
Lässt man nun den Debugger laufen (Dabei wie im Beitrag unter der oben erwähnten URL beschieben "Alle" filter aktiviert) und schaut sich die Ergebnisse von XValue an, dann sehen wir, dass der Gruppenfilter erkannt wird und es zwei weitere Einräge in XValue gibt, die die LayerID' ethalten sollen. In der Codezeile
Code:
Set objLayer = ThisDrawing.ObjectIdToObject(DataLayer)
wird versucht das Layerobjekt abzugreifen. Das Ergebniss ist allerdings Nothing. Die Zahlen, die in XValue enthalten sind, sind auch negative Zahlen. Die Id's sollten aus meiner Sicht die Form und die Länge, wie die Variable z haben.

Ich hoffe ich konnte das Problem soweit verständlich erläutern und es hat evtl. der eine oder andere einen Tipp für mich.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Gora1000
Mitglied
Ingenieur


Sehen Sie sich das Profil von Gora1000 an!   Senden Sie eine Private Message an Gora1000  Schreiben Sie einen Gästebucheintrag für Gora1000

Beiträge: 23
Registriert: 21.08.2013

erstellt am: 31. Okt. 2019 13:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hat den keiner eine Idee, einen Ansatz, etwas was mich weiter bringen würde.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 31. Okt. 2019 13:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Gora1000 10 Unities + Antwort hilfreich

Naja,
VBA ist ein längst totgeschriebenes Pferd und nicht mehr nativer Bestandteil von AutoDESK CAD Produkten,
daher schwindet auch die Anwenderschaft und Layout-Gruppenfilter sind zudem recht exotisch was die Programmierung angeht,
also noch ein Fakt der die Helfergruppe eingrenzt.

Dennoch sollte man eigentlich immer "alles" in der Hilfe oder im www finden.
Hilft dir dieser Thread weiter? Klick!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Gora1000
Mitglied
Ingenieur


Sehen Sie sich das Profil von Gora1000 an!   Senden Sie eine Private Message an Gora1000  Schreiben Sie einen Gästebucheintrag für Gora1000

Beiträge: 23
Registriert: 21.08.2013

erstellt am: 31. Okt. 2019 13:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hey danke für die Antwort.
genau aus diesem Thread habe ich mein Beipiel aufgebaut. Nach letztem Beitrag aus dem Thread funktioniert es bei silcono. Wende ich seinen Code an läuft es nicht.
Könntest du seinen Code ausprobieren?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 31. Okt. 2019 16:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Gora1000 10 Unities + Antwort hilfreich

Was nicht plugNplay läuft bereitet mir selbst viel Arbeit in VBA (=Zeit),
da wirst du auf andere Hilfe warten müssen.

Aber wenn du dich selbst in VBA und der VBAIDE auskennst wirst du es bestimmt auch selbst hinbekommen - Daumendrück.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 04. Nov. 2019 16:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Gora1000 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Gora1000:
Morgen Zusammen,

ich versuche schon seit einiger Zeit die Layernamen aus den Gruppefiltern im Layermanager mit Autocad 2019 auszulesen. Einen Beitrag habe ich dazu hier:
[ URL=http://INTERNETADRESSEHIER ]https://ww3.cad.de/foren/ubb/Forum259/HTML/002244.shtml[/URL]
gefunden. Allerdings funktioniert es nicht so wie im Beitrag zum Schluss beschrieben. Das Problem liegt aus meiner Sicht an Xrecord welcher die LayerId's zurückgeben sollte. Das erläutere ich etwas später.


Bitte zukünftig das "INTERNETADRESSEHIER" durch die richtige Adresse ersetzen, dann funktioniert der Link auch

Zitat:
Original erstellt von cadffm:
Naja,
VBA ist ein längst totgeschriebenes Pferd und nicht mehr nativer Bestandteil von AutoDESK CAD Produkten,
daher schwindet auch die Anwenderschaft und Layout-Gruppenfilter sind zudem recht exotisch was die Programmierung angeht,
also noch ein Fakt der die Helfergruppe eingrenzt.

Dennoch sollte man eigentlich immer "alles" in der Hilfe oder im www finden.
Hilft dir dieser Thread weiter? Klick!



"längst totgeschriebenes Pferd" ist etwas übertrieben, warum soll man die alten funktionierenden (kleinen) Programme nicht mehr nutzen?
( Klick ist die gleiche Adresse wie bei INTERNETADRESSEHIER )

Aber solche Spezialanwendungen mit Zugriff auf Dictionary sind natürlich schon eine Spezialsache. Mal sehen ob ich abends mal einen Blick darauf werfen kann ...

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz