<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -54,6 +54,8 @@ import org.openscience.cdk.interfaces.IMolecule;
 import org.openscience.cdk.interfaces.IPseudoAtom;
 import org.openscience.cdk.io.formats.IResourceFormat;
 import org.openscience.cdk.io.formats.MDLFormat;
+import org.openscience.cdk.io.setting.BooleanIOSetting;
+import org.openscience.cdk.io.setting.IOSetting;
 import org.openscience.cdk.tools.LoggingTool;
 import org.openscience.cdk.tools.manipulator.ChemFileManipulator;
 
@@ -77,6 +79,8 @@ public class MDLWriter extends DefaultChemObjectWriter {
 
     private final static LoggingTool logger = new LoggingTool(MDLWriter.class);
 
+    private BooleanIOSetting forceWriteAs2DCoords;
+
     private BufferedWriter writer;
     
     /**
@@ -91,6 +95,7 @@ public class MDLWriter extends DefaultChemObjectWriter {
     	} else {
     	    writer = new BufferedWriter(out);
     	}
+        initIOSettings();
     }
 
     /**
@@ -155,6 +160,7 @@ public class MDLWriter extends DefaultChemObjectWriter {
      * @see #accepts(Class)
      */
 	public void write(IChemObject object) throws CDKException {
+		customizeJob();
 		try {
 			if (object instanceof IChemFile) {
 				writeChemFile((IChemFile)object);
@@ -238,7 +244,7 @@ public class MDLWriter extends DefaultChemObjectWriter {
         for (int f = 0; f &lt; container.getAtomCount(); f++) {
         	IAtom atom = container.getAtom(f);
         	line = &quot;&quot;;
-        	if (atom.getPoint3d() != null) {
+            if (atom.getPoint3d() != null &amp;&amp; !forceWriteAs2DCoords.isSet()) {
         		line += formatMDLFloat((float) atom.getPoint3d().x);
         		line += formatMDLFloat((float) atom.getPoint3d().y);
         		line += formatMDLFloat((float) atom.getPoint3d().z) + &quot; &quot;;
@@ -415,6 +421,25 @@ public class MDLWriter extends DefaultChemObjectWriter {
         return s;
     }
 
+    private void initIOSettings() {
+        forceWriteAs2DCoords = new BooleanIOSetting(
+            &quot;ForceWriteAs2DCoordinates&quot;,
+            IOSetting.LOW,
+            &quot;Should coordinates always be written as 2D?&quot;,
+            &quot;false&quot;
+        );
+    }
+
+    public void customizeJob() {
+        fireIOSettingQuestion(forceWriteAs2DCoords);
+    }
+
+    public IOSetting[] getIOSettings() {
+        IOSetting[] settings = new IOSetting[1];
+        settings[0] = forceWriteAs2DCoords;
+        return settings;
+    }
+
 }
 
 </diff>
      <filename>src/main/org/openscience/cdk/io/MDLWriter.java</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>56852f8bd541bb84412e50cf451e0bfc881d7e82</id>
    </parent>
  </parents>
  <author>
    <name>Egon Willighagen</name>
    <email>egonw@users.sourceforge.net</email>
  </author>
  <url>http://github.com/egonw/cdk/commit/0e6aa2cf14df67eb89c91a3a41131ed18f3b05d2</url>
  <id>0e6aa2cf14df67eb89c91a3a41131ed18f3b05d2</id>
  <committed-date>2009-11-01T06:55:22-08:00</committed-date>
  <authored-date>2009-06-11T11:24:38-07:00</authored-date>
  <message>Added writer IO option to force writing of 2D coordinates if 3D coordinates are present too, which now are preferably outputted.

Signed-off-by: Rajarshi  Guha &lt;rajarshi.guha@gmail.com&gt;</message>
  <tree>4be0dc49c5897a0604e2eb2822d28d0cd7709974</tree>
  <committer>
    <name>Rajarshi  Guha</name>
    <email>rajarshi.guha@gmail.com</email>
  </committer>
</commit>
