tag:blogger.com,1999:blog-17889588.post7085811680981061603..comments2024-03-13T07:14:55.283+01:00Comments on chem-bla-ics: CDK-JChemPaint #1: rendering moleculesEgon Willighagenhttp://www.blogger.com/profile/07470952136305035540noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-17889588.post-78178843989666900812011-06-09T13:55:21.523+02:002011-06-09T13:55:21.523+02:00Thanks for the post, these code snippets are reall...Thanks for the post, these code snippets are really useful.Joe fosternoreply@blogger.comtag:blogger.com,1999:blog-17889588.post-61821380411462484742010-06-27T19:15:36.717+02:002010-06-27T19:15:36.717+02:00Thanks, Egon! In its time maybe I will start one. ...Thanks, Egon! In its time maybe I will start one. For now I am a newbie in java. <br />Thanks again and let your code run smoothly :)Паша Мусієнкоhttps://www.blogger.com/profile/11598729634873324626noreply@blogger.comtag:blogger.com,1999:blog-17889588.post-31119138368130809402010-06-27T18:40:58.644+02:002010-06-27T18:40:58.644+02:00Happy to hear you got it worked out. I'm quite...Happy to hear you got it worked out. I'm quite busy right now; finishing some stuff with deadlines today.<br /><br />You should start a blog :) Thanx for the code snippet; I'm sure others will find it useful too!Egon Willighagenhttps://www.blogger.com/profile/07470952136305035540noreply@blogger.comtag:blogger.com,1999:blog-17889588.post-10922225458717540052010-06-27T18:38:40.795+02:002010-06-27T18:38:40.795+02:00I have managed to render molecules with canvas adj...I have managed to render molecules with canvas adjustable to molecules dimensions. These tutorials helped me - <a href="http://sourceforge.net/apps/mediawiki/cdk/index.php?title=Renderer_Tutorial-Molecule_Table" rel="nofollow">Renderer Tutorial-Molecule Table</a> and <a href="http://sourceforge.net/apps/mediawiki/cdk/index.php?title=Renderer_Tutorial-Editing_a_molecule" rel="nofollow">Renderer Tutorial-Editing a molecule</a><br />I don't know if someone it might help but the following is the code snippet from this article a bit reworked<br /><br /><br />import java.util.List;<br /><br />import java.awt.*;<br />import java.awt.image.*;<br /><br />import javax.imageio.*;<br /><br />import org.openscience.cdk.*;<br />import org.openscience.cdk.interfaces.*;<br />import org.openscience.cdk.layout.*;<br />import org.openscience.cdk.renderer.*;<br />import org.openscience.cdk.renderer.font.*;<br />import org.openscience.cdk.renderer.generators.*;<br />import org.openscience.cdk.renderer.visitor.*;<br />import org.openscience.cdk.templates.*;<br /><br />int WIDTH = 1;<br />int HEIGHT = 1;<br /><br />// the draw area and the image should be the same size<br />Rectangle drawArea = new Rectangle(0, 0, WIDTH, HEIGHT);<br /><br /><br />IMolecule triazole = MoleculeFactory.make123Triazole();<br />StructureDiagramGenerator sdg = new StructureDiagramGenerator();<br />sdg.setMolecule(triazole);<br /> try {<br />sdg.generateCoordinates();<br />} catch (Exception ex) {}<br />triazole = sdg.getMolecule();<br /><br />// generators make the image elements<br />List generators = new ArrayList();<br />generators.add(new BasicSceneGenerator());<br />generators.add(new BasicBondGenerator());<br />generators.add(new BasicAtomGenerator());<br /><br />// the renderer needs to have a toolkit-specific font manager<br />AtomContainerRenderer renderer =<br /> new AtomContainerRenderer(generators, new AWTFontManager());<br /><br />// the call to 'setup' only needs to be done on the first paint<br />renderer.setup(triazole, drawArea);<br /><br />Rectangle diagramRectangle = renderer.calculateDiagramBounds(triazole);<br />Rectangle result = renderer.shift(drawArea, diagramRectangle);<br /><br />HEIGHT = (int) (result.getHeight() + result.y);<br />WIDTH = (int) (result.getWidth() + result.x);<br /><br />// paint the background<br />Image image = new BufferedImage(<br /> WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB<br />);<br />Graphics2D g2 = (Graphics2D)image.getGraphics();<br />g2.setColor(Color.WHITE);<br />g2.fillRect(0, 0, WIDTH, HEIGHT);<br /><br />// the paint method also needs a toolkit-specific renderer<br />renderer.paint(triazole, new AWTDrawVisitor(g2));<br /><br />ImageIO.write((RenderedImage)image, "PNG", new File("triazole.png"));Паша Мусієнкоhttps://www.blogger.com/profile/11598729634873324626noreply@blogger.comtag:blogger.com,1999:blog-17889588.post-61139399583509731662010-06-27T16:42:25.341+02:002010-06-27T16:42:25.341+02:00Dear Egon, I am trying now to render the molecules...Dear Egon, I am trying now to render the molecules with adjustable dimensions. In your example they are fixed - 600x600 px. <br />I would appreciate any information of yours on how to do it. Thanks in advance.<br />Paul.Паша Мусієнкоhttps://www.blogger.com/profile/11598729634873324626noreply@blogger.comtag:blogger.com,1999:blog-17889588.post-41192562532142478102010-06-27T16:23:24.676+02:002010-06-27T16:23:24.676+02:00I actually did. I have downloaded CDK 1.3.4. It he...I actually did. I have downloaded CDK 1.3.4. It helped. :)Паша Мусієнкоhttps://www.blogger.com/profile/11598729634873324626noreply@blogger.comtag:blogger.com,1999:blog-17889588.post-22460572120100167382010-06-27T15:40:05.076+02:002010-06-27T15:40:05.076+02:00Dear Паша Мусієнко,
please download CDK 1.3.5. Yo...Dear Паша Мусієнко,<br /><br />please download CDK 1.3.5. You need the 1.3.x series instead of the 1.2.x series you tried.<br /><br />I hope that helps.Egon Willighagenhttps://www.blogger.com/profile/07470952136305035540noreply@blogger.comtag:blogger.com,1999:blog-17889588.post-75601350205720221282010-06-27T14:26:08.382+02:002010-06-27T14:26:08.382+02:00Thank you Egon for your article. With your help I ...Thank you Egon for your article. With your help I was able to render the molecule. I also tried to do it with the help of tutorial by Gilleain but I could not manage to do that. I used cdk v.1.2.4 and cdk-jchemaint-15 and Java could not load BasicBondGenerator class.Паша Мусієнкоhttps://www.blogger.com/profile/11598729634873324626noreply@blogger.com