Exemple #1
0
        public override void CharacterData(CMLStack xpath, XElement element)
        {
            string s = element.Value.Trim();

            if (xpath.ToString().EndsWith("string/", StringComparison.Ordinal) && Builtin.Equals("stereo", StringComparison.Ordinal))
            {
                StereoGiven = true;
                switch (s.Trim())
                {
                case "W":
                    Debug.WriteLine("CML W stereo found");
                    BondStereo.Add("1");
                    break;

                case "H":
                    Debug.WriteLine("CML H stereo found");
                    BondStereo.Add("6");
                    break;
                }
            }
            else
            {
                base.CharacterData(xpath, element);
            }
        }
Exemple #2
0
 public override void StartElement(CMLStack xpath, XElement element)
 {
     isBond = false;
     if (xpath.ToString().EndsWith("string/", StringComparison.Ordinal))
     {
         var a_buildin = element.Attribute("buildin");
         if (a_buildin != null && a_buildin.Value.Equals("order", StringComparison.Ordinal))
         {
             isBond = true;
         }
     }
     else
     {
         base.StartElement(xpath, element);
     }
 }
Exemple #3
0
        public override void CharacterData(CMLStack xpath, XElement element)
        {
            string s = element.Value.Trim();

            Debug.WriteLine($"Start PMP chardata ({CurrentElement}) :{s}");
            Debug.WriteLine($" ElTitle: {ElementTitle}");
            if (xpath.ToString().EndsWith("string/", StringComparison.Ordinal) && Builtin.Equals("spacegroup", StringComparison.Ordinal))
            {
                string sg = "P1";
                // standardize space group names (see Crystal.java)
                if (string.Equals("P 21 21 21 (1)", s, StringComparison.Ordinal))
                {
                    sg = "P 2_1 2_1 2_1";
                }
                ((ICrystal)CurrentMolecule).SpaceGroup = sg;
            }
            else if (xpath.ToString().EndsWith("floatArray/", StringComparison.Ordinal))
            {
                switch (ElementTitle)
                {
                case "a":
                case "b":
                case "c":
                    var tokens = s.Split(' ');
                    if (tokens.Length > 2)
                    {
                        if (string.Equals(ElementTitle, "a", StringComparison.Ordinal))
                        {
                            ((ICrystal)CurrentMolecule).A = new Vector3(
                                double.Parse(tokens[0], NumberFormatInfo.InvariantInfo),
                                double.Parse(tokens[1], NumberFormatInfo.InvariantInfo),
                                double.Parse(tokens[2], NumberFormatInfo.InvariantInfo));
                        }
                        else if (string.Equals(ElementTitle, "b", StringComparison.Ordinal))
                        {
                            ((ICrystal)CurrentMolecule).B = new Vector3(
                                double.Parse(tokens[0], NumberFormatInfo.InvariantInfo),
                                double.Parse(tokens[1], NumberFormatInfo.InvariantInfo),
                                double.Parse(tokens[2], NumberFormatInfo.InvariantInfo));
                        }
                        else if (string.Equals(ElementTitle, "c", StringComparison.Ordinal))
                        {
                            ((ICrystal)CurrentMolecule).C = new Vector3(
                                double.Parse(tokens[0], NumberFormatInfo.InvariantInfo),
                                double.Parse(tokens[1], NumberFormatInfo.InvariantInfo),
                                double.Parse(tokens[2], NumberFormatInfo.InvariantInfo));
                        }
                    }
                    else
                    {
                        Debug.WriteLine("PMP Convention error: incorrect number of cell axis fractions!");
                    }
                    break;
                }
            }
            else
            {
                base.CharacterData(xpath, element);
            }
            Debug.WriteLine("End PMP chardata");
        }