Using .NET in the Land of NOD
James E. Johnson
Application Developer for Synergis Software
© 2012 Autodesk
CP2146 - Using .NET in the Land of NOD
This class is about working with the Named Object Dictionary (NOD) and
other dictionaries that can exist in an AutoCAD® software drawing
database using .NET applications. We will look at getting and using
dictionary keys such as get/add an UnderlayDefinition key for adding
DGN, DWF™ and PDF file underlay references to the active document.
The Named Object Dictionary can contain other dictionaries like the
ACAD_MLINESTYLE and ACAD_MATERIAL dictionaries, of which we will
have code samples to show you how to use the data in those and other
drawing database dictionaries. You will leave this class with a good
understanding and with code samples for working with AutoCAD drawing
database dictionaries and know what is typically stored in the Named
Object Dictionary.
© 2012 Autodesk
Learning Objectives
At the end of this class, you will be able to:
 Describe what the Named Object Dictionary contains and how to work
with those dictionary keys.
 Add and get underlay definitions in the Named Object Dictionary.
 Work with drawing database dictionaries in a .NET application.
 Use XRecords in dictionaries to store application information within a
drawing.
© 2012 Autodesk
AutoCAD® dictionaries…

In a drawing database a dictionary is a container object which can
contain any drawing object or an XRecord.
 Dictionaries are stored either in the database under the Named Object
Dictionary or as an extension dictionary of a table record or graphical
entity.
 The named object dictionary is the master table for all of the dictionaries
associated with a database.
 Unlike symbol tables, new dictionaries can be created and added to the
named object dictionary.
© 2012 Autodesk
Describe what the Named Object Dictionary
contains and how to work with those dictionary
keys…

The Named Object Dictionary contains all drawing dictionaries.

Dictionary objects cannot contain drawing entities.

Data is placed for the entire drawing to access.
© 2012 Autodesk
Default dictionary keys in the Named Object Dictionary:









ACAD_CIP_PREVIOUS_PRODUCT_INFO
ACAD_COLOR
ACAD_DETAILVIEWSTYLE
ACAD_GROUP
ACAD_LAYOUT
ACAD_MATERIAL
ACAD_MLEADERSTYLE
ACAD_MLINESTYLE
ACAD_PLOTSETTINGS






ACAD_PLOTSTYLENAME
ACAD_SCALELIST
ACAD_SECTIONVIEWSTYLE
ACAD_TABLESTYLE
ACAD_VISUALSTYLE
AcDbVariableDictionary
© 2012 Autodesk
Code Samples…
© 2012 Autodesk
Named Object Dictionary from AutoLISP:
((-1 . <Entity name: 7ffff7038c0>) (0 . "DICTIONARY") (330 .
<Entity name: 0>) (5 . "C") (100 . "AcDbDictionary") (280 . 0) (281 .
1) (3 . "ACAD_CIP_PREVIOUS_PRODUCT_INFO") (350 . <Entity
name: 7ffff705ad0>) (3 . "ACAD_COLOR") (350 . <Entity name:
7ffff703c30>) (3 . "ACAD_DETAILVIEWSTYLE") (350 . <Entity
name: 7ffff705b30>) (3 . "ACAD_GROUP") (350 . <Entity name:
7ffff7038d0>) (3 . "ACAD_LAYOUT") (350 . <Entity name:
7ffff7039a0>) (3 . "ACAD_MATERIAL") (350 . <Entity name:
7ffff703c20>) (3 . "ACAD_MLEADERSTYLE") (350 . <Entity name:
7ffff7050f0>) (3 . "ACAD_MLINESTYLE") (350 . <Entity name:
7ffff703970>) (3 . "ACAD_PLOTSETTINGS") (350 . <Entity name:
7ffff703990>) (3 . "ACAD_PLOTSTYLENAME") (350 . <Entity
name: 7ffff7038e0>) (3 . "ACAD_SCALELIST") (350 . <Entity
name: 7ffff705060>) (3 . "ACAD_SECTIONVIEWSTYLE") (350 .
<Entity name: 7ffff705b00>) (3 . "ACAD_TABLESTYLE") (350 .
<Entity name: 7ffff703ce0>) (3 . "ACAD_VISUALSTYLE") (350 .
<Entity name: 7ffff703e10>) (3 . "AcDbVariableDictionary") (350 .
<Entity name: 7ffff703b60>))
© 2012 Autodesk
Database properties…
Several Default dictionary ID’s are available as properties to the
database…

HostApplicationServices.WorkingDatabase.LayoutDictionaryId
 HostApplicationServices.WorkingDatabase.MaterialDictionaryId
 HostApplicationServices.WorkingDatabase.MLeaderStyleDictionaryId
 HostApplicationServices.WorkingDatabase.MLStyleDictionaryId
 HostApplicationServices.WorkingDatabase.ColorDictionaryId
© 2012 Autodesk
Add and get underlay definitions in the Named
Object Dictionary…

Underlays are similar to raster images, but their content is snappable.
 UnderlayDefinition is an abstract class that handles the linkage to
external underlay content.
 An UnderlayDefinition object is referenced by zero or more
UnderlayReferences.
 UnderlayReference class is an abstract class that represents underlays
in the drawing.
© 2012 Autodesk
Add and get underlay definitions in the Named
Object Dictionary...
UnderlayDefinition derived classes:

Autodesk.AutoCAD.DatabaseServices.DgnDefinition
Autodesk.AutoCAD.DatabaseServices.DwfDefinition
Autodesk.AutoCAD.DatabaseServices.PdfDefinition

UnderlayReference derived classes:

Autodesk.AutoCAD.DatabaseServices.DgnReference
Autodesk.AutoCAD.DatabaseServices.DwfReference
Autodesk.AutoCAD.DatabaseServices.PdfReference




© 2012 Autodesk
Code Samples…
© 2012 Autodesk
Work with drawing database dictionaries in a .NET
application...

Drawing database dictionaries are accessed with the DBDictionary
class which is a database-resident object dictionary.
 A DBDictionary maintains a map between text strings and database
objects.
 An instance of this class represents a single object...
 Dictionary names honor the rules for symbol names.
 When a dictionary is erased, all the objects within it are erased.
 When a dictionary is unerased, all of its contents are unerased.
© 2012 Autodesk
Code Samples…
© 2012 Autodesk
Use XRecords in dictionaries to store application
information within a drawing…

XRecords provide storage for information in AutoCAD entities and
dictionaries.
 The XRecord class is a data storage class to allow programs a means to
store data.
 An XRecord object is capable of storing up to 2GB.
 An XRecords structure for data input and output is done with a linked list
of Resultbuffer structures.
© 2012 Autodesk
Code Samples…
© 2012 Autodesk
Thanks for Attending…
© 2012 Autodesk
Autodesk, AutoCAD* [*if/when mentioned in the pertinent material, followed by an alphabetical list of all other trademarks mentioned in the material] are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders. Autodesk reserves the right to alter product and
services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document. © 2012 Autodesk, Inc. All rights reserved.
© 2012 Autodesk