Выделить (подсветить) эскиз

Автор bbb, 10.01.17, 10:32:48

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

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

bbb

Как выделить эскиз в сборке? Пробую так:
ksSelectionMng SelectMng = assembly.GetSelectionMng(); //assembly -ksDocument3D
SelectMng.Select(sk);  /// sk-типа Sketch, пробовал передавать sk типа ksSketchDefinition, тоже не выделяет...

sk - должен быть ksEntity приведённый к типу IDispatch.

bbb

#2
Цитата: Sabahs от 10.01.17, 10:44:49
sk - должен быть ksEntity приведённый к типу IDispatch.
А можно Sketch или ksSketchDefinition привести к ksEntity? Или придется как то по другому теперь этот эскиз искать?

UPD: Пробую получить коллекцию entity у сборки так:
ksEntityCollection entColl=assembly.EntityCollection();
entColl.GetCount() //- возвращает 0

Так преобразуйте ISketch к IDispatch, в любом случае метод Select имеет входной параметр - это интерфейс IDispatch или IUnknown.

Эскиз принадлежит сборке или детали?
PS. Если Вам нужны эскизы, то нужно сразу фильтр указывать assembly.EntityCollection(o3d_sketch);

bbb

Цитата: Sabahs от 10.01.17, 14:16:01
Так преобразуйте ISketch к IDispatch, в любом случае метод Select имеет входной параметр - это интерфейс IDispatch или IUnknown.

Эскиз принадлежит сборке или детали?
PS. Если Вам нужны эскизы, то нужно сразу фильтр указывать assembly.EntityCollection(o3d_sketch);
Эскиз принадлежит детали. Как преобразовать ISketch к IDispatch в C#?

Так и получайте его от детали, а не от сборки.
На C# не работаю.
sk:=ISketch as IDispatch;

bbb

Цитата: Sabahs от 10.01.17, 14:34:58
Так и получайте его от детали, а не от сборки.
На C# не работаю.
sk:=ISketch as IDispatch;
в С# нет интерфейса IDispatch и IUnknown

Повторяю, на C# не работаю, что и как, Вам виднее.

bbb

#8
Цитата: Sabahs от 10.01.17, 15:05:10
Повторяю, на C# не работаю, что и как, Вам виднее.
Это не интерфейс, а число из перечисления как это мне поможет не знаю...
Поэтому я пробую так:
Получаю коллекцию эскизов у детали ksEntityCollection, затем по имени нахожу нужный эскиз
ksEntity skEnt = entColl.GetByName("МойЭскиз");
SelectionMng.Select(skEnt);
эскиз находит,но все равно не выделяет...

UPD: Может быть такое что эскиз выделяется очень быстро, а потом выделение снимается когда я создаю новый эскиз? И если так, то можно ли как то оставить выделенным один эскиз и при этом создать другой?

UPD1: Убрал создание нового эскиза, теперь эскиз выделяется, но как оставить его выделенным и создать новый эскиз?

Создать новый, а после выделить старый.