Beispiel #1
0
        private void OpenStructure(string StName)
        {
            // Создаём OpenBabel объекты
            OBConversion obconv = new OBConversion();

            obconv.SetInFormat("cdx");    //Читаем ChemDraw файл (Потом расширить список)
            mol = new OBMol();
            obconv.ReadFile(mol, StName); //Читаем из файла

            //Пишем название
            S_Name.Text = mol.GetTitle();
            //Убираем название
            mol.SetTitle("");

            //Рисуем в файл
            obconv.SetOutFormat("_png2");
            obconv.AddOption("w", OBConversion.Option_type.OUTOPTIONS, panel1.Width.ToString());
            obconv.AddOption("h", OBConversion.Option_type.OUTOPTIONS, panel1.Height.ToString());

            Random rnd     = new Random();
            string TempPic = Functions.TempFile();

            obconv.WriteFile(mol, TempPic); // Пишем картинку в temp // Это такое колдунство // Мне стыдно, но по-другому не выходит
            obconv.CloseOutFile();


            Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);

            // Рисуем на панели
            panel1.BackgroundImage = bmp;

            Image    IM = Image.FromFile(TempPic);
            Graphics g  = Graphics.FromImage(panel1.BackgroundImage);

            g.DrawImage(IM, 0, 0);
            IM.Dispose();
            g.Dispose();
            panel1.Invalidate();

            // Высчитываем параметры

            label3.Text = "Молярная масса: " + Math.Round(mol.GetExactMass(), 4);
            label4.Text = "Брутто-формула: " + mol.GetFormula();
        }