Node Object

CDXML Name:n
CDX Constant Name:kCDXObj_Node
CDX Constant Value:0x8004
Contained by objects:kCDXObj_Fragment
First written/read in:ChemDraw 4.0


A Node object is the basic building block of CDX chemical objects. At its most basic level, a Node is "a thing at the end of a bond." Most commonly, a Node will represent a single atom, but it may have other chemical meanings according to the value of the kCDXProp_Node_Type property.

When looking at a Node, there are really two places to find most types of information. Consider a node with the atom label (a contained Text object) CH2. The Text object contains the three characters 'C', 'H', and '2'. You could take the Text object itself and -- with no other information -- figure out that this node represents a carbon atom and two attached hydrogens. For such a simple case, that sort of analysis is easy, but things can get very complicated very quickly.

For that reason, ChemDraw will always write redundant information. It is always safe to ignore the label entirely when interpreting ChemDraw-generated files. Instead, you can find out that this node is a carbon by looking at the kCDXProp_Node_Element property, and you can find the number of attached hydrogens by looking at the kCDXProp_Atom_NumHydrogens property.

All Nodes must be contained in Fragment objects; they cannot be stored directly in Page or Fragment objects. This redundancy extends across all node types.

When reading files, ChemDraw does two things. If a contained Text object is present, ChemDraw uses that object as is as the Node's label, and ignores the chemical properties entirely. If a Text object is not present, ChemDraw then looks to the chemical properties and creates an atom label on the fly, if appropriate. Accordingly, programs writing their own CDX files are welcome to write either a Text object or a collection of chemical properties, whichever is most convenient. Of course, they can write out both, too, just like ChemDraw does -- but they do not have to do so.

Most Node objects have no required properties or objects, but nodes representing multicenter attachments or variable attachment points require the kCDXProp_Node_Attachments property.

Value Name CDXML Name
0x8003 kCDXObj_Fragment fragment
A collection of nodes and their connectivity (bonds).
0x8006 kCDXObj_Text t
An arbitrary block of (possibly styled) text.
0x8011 kCDXObj_ObjectTag objecttag
Arbitrarily named property, one or more of which can be attached to any ChemDraw object.

Value Name CDXML Name Type
n/a n/a id UINT16
A unique identifier for an object, used when other objects refer to it.
0x000A kCDXProp_ZOrder Z INT16
Back-to-front ordering index in 2D drawing.
0x000F kCDXProp_IgnoreWarnings IgnoreWarnings CDXBooleanImplied
Signifies whether chemical warnings should be suppressed on this object.
0x0010 kCDXProp_ChemicalWarning Warning CDXString
A warning concerning possible chemical problems with this object.
0x0011 kCDXProp_Visible Visible CDXBoolean
The object is visible if non-zero.
0x0200 kCDXProp_2DPosition p CDXPoint2D
The 2D location (in the order of vertical and horizontal locations) of an object.
0x0201 kCDXProp_3DPosition xyz CDXPoint3D
The 3D location (in the order of X-, Y-, and Z-locations in right-handed coordinate system) of an object in CDX coordinate units. The precise meaning of this attribute varies depending on the type of object.
0x0301 kCDXProp_ForegroundColor color UINT16
The foreground color of an object represented as the two-based index into the object's color table.
0x0302 kCDXProp_BackgroundColor bgcolor INT16
The background color of an object represented as the two-based index into the object's color table.
0x0400 kCDXProp_Node_Type NodeType INT16
The type of a node object. This is an enumerated property.
0x0401 kCDXProp_Node_LabelDisplay LabelDisplay INT8
The characteristics of node label display. This is an enumerated property.
0x0402 kCDXProp_Node_Element Element INT16
The atomic number of the atom representing this node.
0x0403 kCDXProp_Atom_ElementList ElementList CDXElementList
A list of atomic numbers.
0x0404 kCDXProp_Atom_Formula Formula CDXFormula
The composition of a node representing a fragment whose composition is known, but whose connectivity is not. For example, C4H9 represents a mixture of the 4 butyl isomers.
0x0420 kCDXProp_Atom_Isotope Isotope INT16
The absolute isotopic mass of an atom (2 for deuterium, 14 for carbon-14).
0x0421 kCDXProp_Atom_Charge Charge INT8
The atomic charge of an atom.
0x0422 kCDXProp_Atom_Radical Radical UINT8
The atomic radical attribute of an atom. This is an enumerated property.
0x0423 kCDXProp_Atom_RestrictFreeSites FreeSites UINT8
Indicates that up to the specified number of additional substituents are permitted on this atom.
0x0424 kCDXProp_Atom_RestrictImplicitHydrogens ImplicitHydrogens CDXBooleanImplied
Signifies that implicit hydrogens are not allowed on this atom.
0x0425 kCDXProp_Atom_RestrictRingBondCount RingBondCount INT8
The number of ring bonds attached to an atom. This is an enumerated property.
0x0426 kCDXProp_Atom_RestrictUnsaturatedBonds UnsaturatedBonds INT8
Indicates whether unsaturation should be present or absent. This is an enumerated property.
0x0427 kCDXProp_Atom_RestrictRxnChange RxnChange CDXBooleanImplied
If present, signifies that the reaction change of an atom must be as specified.
0x0428 kCDXProp_Atom_RestrictRxnStereo RxnStereo INT8
The change of stereochemistry of an atom during a reaction. This is an enumerated property.
0x0429 kCDXProp_Atom_AbnormalValence AbnormalValence CDXBooleanImplied
Signifies that an abnormal valence for an atom is permitted.
0x042B kCDXProp_Atom_NumHydrogens NumHydrogens UINT16
The number of (explicit) hydrogens in a labeled atom consisting of one heavy atom and (optionally) the symbol H (e.g., CH3).
0x042E kCDXProp_Atom_HDot HDot CDXBooleanImplied
Signifies the presence of an implicit hydrogen with stereochemistry specified equivalent to an explicit H atom with a wedged bond.
0x042F kCDXProp_Atom_HDash HDash CDXBooleanImplied
Signifies the presence of an implicit hydrogen with stereochemistry specified equivalent to an explicit H atom with a hashed bond.
0x0430 kCDXProp_Atom_Geometry Geometry INT8
The geometry of the bonds about this atom. This is an enumerated property.
0x0431 kCDXProp_Atom_BondOrdering BondOrdering CDXObjectIDArray
An ordering of the bonds to this node, used for stereocenters, fragments, and named alternative groups with more than one attachment.
0x0432 kCDXProp_Node_Attachments Attachments CDXObjectIDArrayWithCounts
Required for multi- and variable attached nodes. For multicenter attachment nodes or variable attachment nodes, a list of IDs of the nodes which are multiply or variably attached to this node.
0x0433 kCDXProp_Atom_GenericNickname GenericNickname CDXString
The name of the generic nickname.
0x0434 kCDXProp_Atom_AltGroupID AltGroupID CDXObjectID
The ID of the alternative group object that describes this node.
0x0435 kCDXProp_Atom_RestrictSubstituentsUpTo SubstituentsUpTo UINT8
Indicates that substitution is restricted to no more than the specified value.
0x0436 kCDXProp_Atom_RestrictSubstituentsExactly SubstituentsExactly UINT8
Indicates that exactly the specified number of substituents must be present.
0x0437 kCDXProp_Atom_CIPStereochemistry AS INT8
The node's absolute stereochemistry according to the Cahn-Ingold-Prelog system. This is an enumerated property.
0x0438 kCDXProp_Atom_Translation Translation INT8
Provides for restrictions on whether a given node may match other more- or less-general nodes. This is an enumerated property.
0x0439 kCDXProp_Atom_AtomNumber AtomNumber CDXString
Atom number, as text.
0x043A kCDXProp_Atom_ShowQuery ShowAtomQuery CDXBoolean
Show the query indicator if non-zero.
0x043B kCDXProp_Atom_ShowStereo ShowAtomStereo CDXBoolean
Show the stereochemistry indicator if non-zero.
0x043C kCDXProp_Atom_ShowAtomNumber ShowAtomNumber CDXBoolean
Show the atom number if non-zero.
0x043D kCDXProp_Atom_LinkCountLow LinkCountLow INT16
Low end of repeat count for link nodes.
0x043E kCDXProp_Atom_LinkCountHigh LinkCountHigh INT16
High end of repeat count for link nodes.
0x043F kCDXProp_Atom_IsotopicAbundance IsotopicAbundance INT8
Isotopic abundance of this atom's isotope. This is an enumerated property.
0x0440 kCDXProp_Atom_ExternalConnectionType ExternalConnectionType INT8
Type of external connection, for atoms of type kCDXNodeType_ExternalConnectionPoint. This is an enumerated property.
0x0441 kCDXProp_Atom_GenericList GenericList CDXGenericList
A list of generic nicknames.
0x0445 kCDXProp_Atom_ShowEnhancedStereo ShowAtomEnhancedStereo CDXBoolean
Show the enhanced stereochemistry indicator if non-zero.
0x0446 kCDXProp_Atom_EnhancedStereoType EnhancedStereoType UINT8
The type of enhanced stereochemistry present on this atom. This is an enumerated property.
0x0447 kCDXProp_Atom_EnhancedStereoGroupNum EnhancedStereoGroupNum UINT16
The group number associated with Or and And enhanced stereochemistry types.
0x0807 kCDXProp_LineWidth LineWidth CDXCoordinate
The default line width.
0x080A kCDXProp_LabelStyle (not used) CDXFontStyle
The default style for atom labels..
0x081A kCDXProp_LabelStyleFont LabelFont INT16
The default font family for atom labels.
0x081C kCDXProp_LabelStyleSize LabelSize INT16
The default font size for atom labels.
0x081E kCDXProp_LabelStyleFace LabelFace INT16
The default font style for atom labels.


CDX Documentation index