Ein Kristall wird in einem schwebenden Entwurf aufgebaut: Entwurf starten, mit den Settern füllen, dann validiert Commit() alles, baut den Kristall und übernimmt ihn in einem Schritt als aktuellen Kristall (GUI und alle offenen Simulatoren aktualisieren sich wie beim Laden einer CIF-Datei). Ein fehlgeschlagenes Commit() meldet alle Validierungsfehler gesammelt, ändert nichts und behält den Entwurf, sodass er korrigiert und erneut committet werden kann.
Funktion
Beschreibung
Crystal.BeginCreate(name)
Entwurf für einen neuen Kristall starten
Crystal.BeginEdit()
Entwurf vom aktuellen Kristall starten (Zelle, Raumgruppe, Atome und Orientierung werden übernommen)
Crystal.LoadCifText(cifText)
Entwurf aus CIF-Text starten (der Inhalt einer .cif-Datei, kein Pfad)
Crystal.SetName(name)
Entwurf umbenennen
Crystal.SetCellInAng(a, b, c, alpha, beta, gamma)
Zellkonstanten in Å und Grad. Jeder Aufruf ersetzt die ganze Zelle; ausgelassene Argumente werden aus den Raumgruppen-Constraints abgeleitet (für kubische Kristalle genügt a), und explizite Werte, die ihnen widersprechen, lösen einen Fehler aus
Crystal.SetSpaceGroup(symbol)
Raumgruppe per Symbol (HM kurz/voll oder Hall; Leerzeichen und _ werden ignoriert). Bei mehreren Einstellungen die Einstellung anhängen ('Fd-3m:2', 'R-3c:H', 'P21/c:b1') — mehrdeutige Symbole lösen einen Fehler mit Kandidatenliste aus
Crystal.SetSpaceGroupByNumber(itNumber, setting)
Raumgruppe per IT-Nummer (1–230); setting ('1', '2', 'H', 'R', 'b1', …) wählt unter mehreren Einstellungen
Crystal.AddAtom(label, element, x, y, z, occ, bIso)
Atom der asymmetrischen Einheit hinzufügen: Elementsymbol, Bruchkoordinaten, Besetzung (0 < occ ≤ 1, Standard 1) und isotropes B in Ų (Standard 0). Äquivalente Lagen, Wyckoff-Buchstaben und Multiplizitäten werden automatisch abgeleitet
Nach einem erfolgreichen Commit() startet das nächste BeginEdit() vom aktualisierten Kristall — Änderungen akkumulieren sich; für absolute Scans die Basiswerte wie oben vor der Schleife lesen. Um den committeten Kristall in die Kristallliste einzutragen, CrystalList.Add() aufrufen.
Orientierung aus neun Matrixelementen setzen (vor der Anwendung geprüft und reorthonormalisiert)
Eulerwinkel sind an Gimbal-Positionen (θ = 0 oder 180°) nicht eindeutig: GetEuler() nach Euler() reproduziert dieselbe Lage, aber nicht unbedingt dieselben Zahlen. Zum exakten Speichern und Wiederherstellen der Orientierung Dir.GetRotationMatrix() / Dir.SetRotationMatrix() verwenden. Die vollständige Konvention ist in Rotationsgeometrie beschrieben.
Steuert Spot ID v2 aus einem Makro heraus: ein Bild oder eine Reflexliste laden, die Reflexe detektieren, nach Orientierungen suchen und die Kandidaten auslesen — ohne das Fenster anzufassen. FindSpots() und Identify() kehren erst zurück, wenn die Arbeit erledigt ist, und lassen sich daher direkt aneinanderreihen.
Eine Datei laden, wie es File > Load tut: .csv wird als Reflexliste gelesen (ein Bild muss zuvor geladen sein), jede andere Endung als Beugungsbild (dm3, dm4, mrc, ipa, tif und weitere unterstützte Formate). Ohne filename öffnet sich ein Dateidialog
SpotID.FindSpots()
Die Reflexe im geladenen Bild detektieren und anpassen, wie es die Schaltfläche Find spots tut
SpotID.Identify()
Nach Orientierungen suchen, die die detektierten Reflexe erklären, wie es die Schaltfläche Identify spots tut, und die Anzahl der Kandidaten zurückgeben. Geprüft werden die in der Kristallliste des Hauptfensters ausgewählten Kristalle
SpotID.CandidateList()
Die Liste der Orientierungskandidaten als CSV-Text zurückgeben
SpotID.SpotList()
Die beobachteten Reflexe als CSV-Text zurückgeben, mit denselben Spalten wie File > Save. Zusammen mit File.SaveText() entsteht eine Datei, die LoadFile() wieder einlesen kann
CandidateList() liefert je Kandidat: Kristallname, die Z-X-Z-Eulerwinkel (Grad), die neun Elemente R11–R33 der Rotationsmatrix (Kristall- zu Laborsystem, auf Spaltenvektoren angewandt), das mittlere Residuenquadrat (nm⁻²) und die Zuordnung der beobachteten Reflexe zu hkl-Indizes. Die Kandidaten sind nach der Anzahl zugeordneter Reflexe (absteigend) und danach nach dem Residuum (aufsteigend) sortiert. Zahlen werden in der Invariant Culture geschrieben, das Dezimaltrennzeichen ist also immer ein Punkt.
Steuert die Strukturansicht aus einem Makro. SaveImage() und Export3DModel() öffnen das Fenster bei Bedarf zuerst, da das 3D-Modell beim Anzeigen des Fensters aufgebaut wird.
Funktion
Beschreibung
StructureViewer.Open()
Das Strukturansicht-Fenster öffnen
StructureViewer.Close()
Das Strukturansicht-Fenster schließen
StructureViewer.SaveImage(filename)
Die gerenderte Hauptansicht als PNG speichern, in der Pixelgröße des Felds Size (W×H); ohne filename öffnet sich ein Dialog
Die dargestellte Struktur für den 3D-Druck exportieren, wie Export 3D Model (3MF/STL) im Datei-Menü. Die Endung bestimmt das Format (.stl einfarbig / .3mf nach Element gefärbt); nur filename ist erforderlich — die übrigen Standardwerte entsprechen dem Dialog (größte Abmessung 80 mm, Zellkanten ⌀2,4 mm, Bindungen auf ⌀1,2 mm verdickt). Mit fixedScaleInMMperNm > 0 entstehen mehrere Modelle im selben Maßstab
Diese drei Bildsimulationsklassen teilen sich viele Mitglieder. Um Wiederholungen zu vermeiden, verwenden die folgenden Tabellen Platzhalter:
# : gemeinsam für HRTEM, STEM und Potential. Ersetzen Sie # durch HRTEM, STEM oder Potential (z. B. STEM.Simulate(), Potential.AccVol).
$ : nur gemeinsam für HRTEM und STEM. Ersetzen Sie $ durch HRTEM oder STEM.
Mit einem expliziten Klassennamen geschriebene Mitglieder (STEM.… / HRTEM.…) gehören nur zu dieser Klasse. Die Potential-Klasse fügt keine eigenen Mitglieder hinzu; sie verwendet nur die #-Mitglieder.