Как работать с методом Close в Компас-3D v21

Автор Yahooo05, 12.04.23, 05:46:46

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Yahooo05

Добрый день!

Условно такой код на C#
KompasObject _kompas5 = System.Runtime.InteropServices.Marshal.GetActiveObject("Kompas.Application.5") as KompasObject;
IApplication _kompas7 = _kompas5.ksGetApplication7() as IApplication;

textBox2.Clear();

textBox2.AppendText("docs in session cnt: " + _kompas7.Documents.Count.ToString() + Environment.NewLine);

textBox2.AppendText("open doc <filename>" + Environment.NewLine);
IKompasDocument doc = _kompas7.Documents.Open("filename", true, false);
textBox2.AppendText("docs in session cnt: " + _kompas7.Documents.Count.ToString() + Environment.NewLine);

textBox2.AppendText("close doc <filename>" + Environment.NewLine);
doc.Close(DocumentCloseOptions.kdPromptToSaveChanges);
textBox2.AppendText("docs in session cnt: " + _kompas7.Documents.Count.ToString() + Environment.NewLine);

System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
textBox2.AppendText("docs in session cnt: " + _kompas7.Documents.Count.ToString() + Environment.NewLine);

в Компас v20 работает нормально (до открытия 0 документов и после закрытия 0 документов). А в Компас v21 документ визуально закрывается, но ссылку на него компас держит (до открытия 0 документов, а после закрытия 1 документ).

Как закрыть документ, чтобы в Компасе и в Documnets.Count было одинаковое количество?