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

 

By accepting you will be accessing a service provided by a third-party external to https://www.cad-becker.de/

Über mich

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

 

 

Suchen

Abonniere Blog

Kalender

Warte kurz, während wir den Kalender laden

Tag-Cloud

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

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