previous arrowprevious arrow
next arrownext arrow
PlayPause
previous arrownext arrow
Shadow

Wir realisieren Ihre CAD-Projekte

im AutoCAD, Inventor, Revit und Autodesk Forge Platform

Umfeld
Wir helfen Ihnen bei der Realisierung Ihrer Projekte.

Blog - CAD-Becker.de

Beiträge zu AutoCAD und dessen Vertikalprodukte.
Tipps und Tricks, viele Neuigkeiten aus der Autodesk Welt.
2 Minuten Lesezeit (439 Worte)

Visual Lisp To C# - (Vlax-ldata-list) in .Net C# übersetzt

Anzeige

Aktuelle Top-Angebote der Telekom, Online-Vorteile, Attraktive Prämien

​Die Vlax-ldata-list Anweisung ist, nachdem wir die Anweisung Vlax-ldata-get in C# realisiert haben relativ einfach zu realisieren.

Vlax-ldata-list listet alle Datensätze eines Dictionaries auf.

In diesem Posting zeige ich, wie ein Dictionary, das mit Vlax-ldata-put erstellt wurde ausgelesen werden kann.

Database m_DataBase = m_Document.Database;

using (Transaction m_Transaction = 
   m_DataBase.TransactionManager.StartTransaction())
{
    DBDictionary m_Node = 
        (DBDictionary)m_Transaction.GetObject(
        m_Document.Database.NamedObjectsDictionaryId, 
        OpenMode.ForWrite);
    if (m_Node.Contains(DictionaryName) == true)
    {
        string m_Key = string.Empty;

        DBDictionary m_DBDictionary = 
            (DBDictionary)m_Transaction.GetObject(
                m_Node.GetAt(DictionaryName), 
                OpenMode.ForWrite);
                        
        foreach(
            DBDictionaryEntry m_DBDictionaryEntry 
                in 
            m_DBDictionary)
        {
                    
                    
        }
    }
} 

​Der Trick ist ganz einfach.

Wir iterieren durch das benannte Dictionary und erhalten Objekte vom Datentyp "DBDictionaryEntry". Diese Objekte enthalten den Key und die Objekt-ID des Datensatzes.

Innerhalb der foreach-Schleife lesen wir den Datensatz aus und speichern ihn in ein System.Collections.Generic.Dictionary<string, ResultBuffer> Datentyp.

Die Methode "ReadRecordFromNamedDictionary" liest das ImpDBObject aus dem Dictionary-Datensatz anhand des Keys und der ObjectId.

Dazu bitte den vorherigen Post anschauen. 

 
public static bool ReadFromNamedDictionary(
    string DictionaryName, 
    out System.Collections.Generic.Dictionary<string, ResultBuffer> List)
{
    m_Succeed = false;
    ResultBuffer m_ResultBuffer = null;
    System.Collections.Generic.Dictionary<string, ResultBuffer> m_List =
        new Dictionary<string, ResultBuffer>();
    Document m_Document = 
        Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
    using (m_Document.LockDocument())
    {
        using (Transaction m_Transaction = 
                    m_Document.Database.TransactionManager.StartTransaction())
        {
            DBDictionary m_Node = (DBDictionary)m_Transaction.GetObject(
                m_Document.Database.NamedObjectsDictionaryId, 
                OpenMode.ForWrite);
            if (m_Node.Contains(DictionaryName) == true)
            {
                string m_Key = string.Empty;

                DBDictionary m_DBDictionary = 
                    (DBDictionary)m_Transaction.GetObject(
                            m_Node.GetAt(DictionaryName), 
                            OpenMode.ForWrite);
                        
                foreach(DBDictionaryEntry m_DBDictionaryEntry in m_DBDictionary)
                {
                    m_Key = m_OBjectId.Key;
                        bool m_Succeed = 
                                CADBecker.AutoCAD.Dictionary.ReadRecordFromNamedDictionary(
                        DictionaryName,
                        m_OBjectId.Value,
                        m_Key,
                        out m_ResultBuffer
                        );
                    m_List.Add(m_Key, m_ResultBuffer);
                }
            }
        }
    }

    List = m_List;
    return m_Succeed;
} 
public static bool ReadRecordFromNamedDictionary(
    string DictionaryName,
    string Key,
    out ResultBuffer ResultBuffer
    )
{
    m_Succeed = false;
    ResultBuffer m_Resultbuffer = null;

    Document m_Document = Application.DocumentManager.MdiActiveDocument;
    using (Transaction m_Transaction = m_Document.Database.TransactionManager.StartTransaction())
    {
        DBDictionary m_DBDictionary =
            (DBDictionary)m_Transaction.GetObject(
                    m_Document.Database.NamedObjectsDictionaryId, 
                    OpenMode.ForRead);
        if (m_DBDictionary != null)
        {
            ObjectId m_DictObjectId = m_DBDictionary.GetAt("dict");
            DBDictionary m_Dictionary = (DBDictionary)m_Transaction.GetObject(
                                                m_DictObjectId, 
                                                OpenMode.ForRead);

            ObjectId hObjectID = m_Dictionary.GetAt("cay");
            DBObject m_ImpDBObjectAsDBObject = (DBObject)m_Transaction.GetObject(
                                                    hObjectID, 
                                                    OpenMode.ForRead);
            m_Resultbuffer = new ResultBuffer();
            AdsName m_EName = new AdsName();
            acdbGetAdsName64(out m_EName, m_ImpDBObjectAsDBObject.ObjectId);
            IntPtr m_IntPrResult = acdbEntGetX(m_EName, m_Resultbuffer.UnmanagedObject);
                    
            if (m_IntPrResult != IntPtr.Zero) 
            {
                m_Resultbuffer = ResultBuffer.Create(m_IntPrResult, true);
            }
        }
        m_Transaction.Commit();
        m_Succeed = true;
    }

    ResultBuffer = m_Resultbuffer;
    return m_Succeed;
}
 

Copyright

© Copyright 2019 by CAD-Becker.de

Wie ein 100-jähriger deutscher Hersteller für das ...
Visual Lisp To C# - (Vlax-ldata-get) in .Net C# üb...

Ähnliche Beiträge

 

Über mich

  Dipl.-Ing.
Jürgen A. Becker
Versorgungstechnik

 

 

Suchen

Abonniere Blog

Kalender

Warte kurz, während wir den Kalender laden

Tag-Cloud

Layout Generative Design ObjectARX Temporäre Dateien Whitepaper Industrie 4.0 Zwischenablage OSNAP Zurückgeben Beschriftungsmaßstab RAL Genertive Design Rechtsklickanpassung vlax-ldata-put NWG einfügen Netzwerk Lizenz Text Hohe Auflösung Ultra HD Vererbung Image temporäre Dateien Microsoft Surface Pro 4 Indiara SFair Objektwahl Interview BAK Plotten Schicken wir ein Schiff Fehlerbericht iLogic Client-ID Maßstab Befehl Objekteigenschaft Plotstil Plot-Maßstab Bereinig Produktschlüssel Barcode Revisionswolke Plot Schöne Zeichnung Freedom Abhängigkeiten Volvo Punktwolke Lizenz Server Speicherort Rechtsklick Koordinationsmodell 3-Legged Autorizierung AU Umschalttaste Design Automation API Optionen Transformation Security Externe Regeln AutoCAD Objektmodell Layerdialog Autodesk Gallery SecureLoad Hololens Rechner Umwelt Excel Sicherheit History Wasserstoff Schnittpunkt Return Sichtbarkeit Lisp ruft C# auf Wipeout Richtung umkehren Surface Book byLayer Maya Cloud Accelerator OAuth externe Referenz E-Mobilität Visual Lisp gefüllte Flächen Viewer Datei anhängen Inventor Command Definition Niedaks Autodesk Forge Ford Netzwerk Datentypen Variable BIM Naviswork Anmeldung Lisp Block Kabeltrasse See Watch AC$ Einfügen OSMODE Beziehungen Entleihen DevCon Vorlage cURL Plot Maßstab Gummiband Linie Attribut ViewCube Zeichnungs Name WHIPTHREAD Einheiten Update 2018 QRCode AutoCAD Request Hochgestellte Zahl Enter Befehlsübersetzung Eigenschaft Internationaler Befehlssatz DText Skalierung Sonderzeichen Seenotrettung Flüchtling Befehls Übersetzung Schraffur Taschenrechner Kopieren fehlgeschalgen ServicePack Hardwarebeschleunigung Update Schrift Personal Dienstleister Laden Microsoft Surface Book Richtung Netload Brennstoffzelle fremde Zeichnung Harp Appload Surface Linientyp https Rechte Maustaste Befehlshistory Attribut hinzufügen SV$ leere Texte löschen Petition Surface Pro 4 Geschwindigkeit Kabelrinne DPI Skaling Umgrenzung Oscar Objekte zoomen Schulung Autodesk Vlax-ldata-list Layer frieren Elektromobilität Plotstiltabellen Autodesk Fusion 360 Neu erstellen unbenannte Objekte Shift Taste Drehen angenommener Schnittpunkt MText Darmstadt RevWolke Bemaßung Cloud Timeout Schriftfeld shift Forge DevCon Texthöhe Text einrahmen defekte Zeichung Objekte wählen VLAX Surface Pro4 Recycling Anischtfenster Lizenz HTTP-Request OBO-Bettermann E-Auto Fusion Forge OFang SELECTIONOFFSCREEN Transparenz Docking Borrowlicense Zoom PUK RestSharp Übersetzung cURL nach C# Architekten assoc Sicherungsdatei Performance Fusion 360 Kobalt Objekte isolieren Autodesk CAM Einbetten AWS Befehls Definition Returntaste 2-legged XREF Objektfang Mitte zwischen zwei Punkte 3D SetByLayer Recruiter 2018 Werkzeugpalette Viren refenziert sich selbst AutoCAD 2019 Solid HSM Rechnen 3D-Druck CAD-Becker.de PDF Vorlagen Listen eTransmit OOPS Beschriftungsmaßstäbe Ansichtsfenster Youtube .Net Video Views Speichern Hybrid Architektur Überschreibung Bereinigen Datensicherheit NWD anhängen .Net Core Save folder Pantone Erhebung Claudius Peters Objekte erstellen Vlax-ldata external rules SSL-Zertifizierung Pointcloud TrustedPath Bezug Varia Batterie 3-legged Höhekote CAD-Becker AutoCAD LT NWD Layer Überschreibung Navisworks Deklaration Suchen Lynn Allen .net Autoriserung Autorisierung Casting Cloud Act Externe Referenz Farbbuch BIM 360 Zuschneiden europäische Datenschutz Richtlinie HSMWORKS Linientypfaktor Webservice bewegen Online-Seminar http Schraubverbindung Layer Hotfix STRG Volvo Ocean Race Profil internationaler Befehlssatz Öffnen Schnellzugriffs-Werkzeugkasten Microsoft vonLayer Objektfang Einstellung Farbbücher CAD Strom Benutzeroberfläche XRef License Datenverknüpfung AutoCAD Update MoveBak Command Scheinselbstständigkeit Wiederherstellen Kabeltragsystem Design Center BIM 360 API Parameter vlax-ldata-get Entertaste Flexlm Zeichnungen verschicken Referenz Powerpointfolien Personaldienstleister MAXACTVP Linienstärke Revisionswolken Auflösung C#

Kontakt

Jürgen A. Becker

CAD-Becker.de
Detmolder Str. 786
33699 Bielefeld
Germany
Telefon
+49 (5202) 9953808 
Mobil
+49 170 870 8679
E-Mail
Juergen.Becker(at)CAD-Becker.de

Menu-de