• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Вставка детали в сборку

Автор andr1987, 02.02.16, 12:53:46

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

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

andr1987

Добрый день!

Есть, казалось бы тривиальная, задачка написания функции вставки детали из файла в сборку. По тому, что предлагает API, написал следующее:

var assy = Kompas.Document3D() as ksDocument3D;
var part = KompasApp7.Documents.Open( pathToPart, false );
if ( part != null )
{
   part.Active = true;
   var ksPart = Kompas.Document3D();
   assyDocument.SetPartFromFile( pathToPart, ksPart );
}

функция SetPartFromFile возвращает false, чтобы я не делал... Пожалуйста, подскажите, где ошибка и что нужно поправить (желательно с примером на C#).

Пробуйте так:
if ( part != null )
{
   assyDocument.SetPartFromFile( pathToPart, Part );
}

#programmer

Вот рабочий пример вставки детали в сборку (С#):

KompasObject ikompas = (KompasObject)Marshal.GetActiveObject("Kompas.Application.5");

ksDocument3D idoc = ikompas.ActiveDocument3D();

ksPart part = (ksPart)idoc.GetPart((int)Part_Type.pNew_Part);
part.fileName = "pathToPart";

ksRequestInfo3D info = (ksRequestInfo3D)idoc.GetRequestInfo(part);
info.prompt = "Укажите точку для вставки модели";

info.CreatePhantom();
ksPart phantom = (ksPart)info.GetIPhantom();

if (idoc.UserGetPlacementAndEntity(3))
{
   ksPlacement place = (ksPlacement)info.GetPlacement();
    part.SetPlacement(place);
                // Изменм положение детали
    part.UpdatePlacementEx(true);            
   
   idoc.SetPartFromFileEx("pathToPart", part, true, true);
   
   part.RebuildModel();
    part.Update();
    idoc.RebuildDocument();
   
   idoc.Save();

    ikompas.ksMessageBoxResult();
    ikompas.ksResultNULL();
}
+ Благодарностей: 3