Что не так с API 5

Автор streamdown, 26.02.25, 09:25:05

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

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

streamdown

Всем привет.
Простейший код, и не работает. Всё, что можно получить от iDocument либо null либо пустая строка.
var app = kompas.ksGetApplication7() as IApplication;
 IKompasDocument3D document3D = (IKompasDocument3D)app.ActiveDocument;
 ksDocument3D iDocument = (ksDocument3D)kompas.Document3D();

 var filename5 = iDocument.fileName;
 var filename7 = document3D.PathName;

 Подскажите хоть куда копать?

streamdown


UU

Так должно быть.
ksDocument3D iDocument = (ksDocument3D)kompas.ActiveDocument3D();
+ Благодарностей: 1

streamdown

Цитата: UU от 26.02.25, 09:51:06Так должно быть
Спасибо! А в чём разница-то?

UU

Один метод для создания документа, другой для получения активного документа.

streamdown

Аа..неоднозначно :) что без логичного "New..."
Но - спасибо

Lemieux

Цитата: streamdown от 26.02.25, 10:03:27Аа..неоднозначно :) что без логичного "New..."
Но - спасибо
Там в API много нелогичного, странных названий интерфейсов, методов. Такая же байда творится и в API ядра C3D.

Vi2

Цитата: UU от 26.02.25, 10:00:12Один метод для создания документа, другой для получения активного документа.

ActiveDocument - Получить текущий активный документ
...
Примечание:
Свойство позволяет получить или *установить текущий документ, если ни один документ не открыт*.
Совершенно не для создания документа, а только если ничего не было открыто в Компасе.

ActiveDocument3D - Получить указатель на интерфейс текущего документа трехмерной модели
...
Примечание:
Если документ трехмерной модели не активен, функция возвращает NULL.

UU

Уважаемый Vi2, Вы вопрос ТС внимательно почитайте, а потом цитировать будете.

Doom2

UU да там жесть просто что написано - ошибка на ошибке   :o:
так только я могу делать!

ksDocument3D iDocument = (ksDocument3D)kompas.ActiveDocument3D();
var filename5 = iDocument.fileName;

Vi2

Цитата: UU от 26.02.25, 18:34:19Уважаемый Vi2, Вы вопрос ТС внимательно почитайте, а потом цитировать будете.
Это не повод вводить в заблуждение. Собачиться нет никакого желания.

Doom2

Цитата: Vi2 от 26.02.25, 22:03:43Это не повод вводить в заблуждение

А за что ему значок дали? за выдающиеся услуги ?