CopyPart()

Автор Ведун, 26.11.09, 21:59:27

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

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

Ведун

Возникла проблема с использованием функции CopyPart() (Delphi 7).

Будте добры, разъяснить мне, можно ли при помощи этой функции деталь из одного файла программно импортировать в новый файл?

С созданием нового файла, естественно, проблем не возникает:

   Doc:= ksDocument3D(Kompas.Document3D);
   Doc.Create(false, FALSE);
   Doc:= ksDocument3D(Kompas.ActiveDocument3D);


А вот при попытке CopyPart() ничего не происходит.
Как осущкствить сие копирование  :?:

* SDK и примеры не помогли, подобных тем в форуме, кроме своей, не нашел.

bergovin

Насколько я понимаю из SDK, функция CopyPart - делает копию компонента в том же документе, но не в другой.
Хотя я никогда не использовал данную функцию, поэтому не ручаюсь
А вообщето, нет наверное всётаки в другой имеется ввиду (извиняюсь)

Ведун

Цитата: bergovin от 26.11.09, 22:04:42
Насколько я понимаю из SDK, функция CopyPart - делает копию компонента в том же документе, но не в другом.
Хотя я никогда не использовал данную функцию, поэтому не ручаюсь
Вот сейчас я то же подумал, перечитав еще раз SDK.

Однако проблема, все еще актуальна.

bergovin

Я бы на вашем месте создал деталь в файл, а затем - добавить из файла ( AddFromFile)

bergovin

А если у вас планируется вставлять не в сборку (а деталь)тогда- Вставить деталь-заготовку (PutStorage)

Ведун

Цитата: bergovin от 26.11.09, 22:12:24
Я бы на вашем месте создал деталь в файл, а затем - добавить из файла ( AddFromFile)
Да, но разве это работает не со сборкой?
Я уже так пробовал, по завершении процедуры появляется сообщение библиотеки о том, что недопустимая операция для файла детали.

Ведун

Цитата: bergovin от 26.11.09, 22:14:36
А если у вас планируется вставлять не в сборку (а деталь)тогда- Вставить деталь-заготовку (PutStorage)
Обязательно попробую, а История детали сохранится?

bergovin

Цитата: Ведун от 26.11.09, 22:17:00
Обязательно попробую, а История детали сохранится?
А вам как надо?

Ведун

С историей, я уже нашел в SDK, единственное:
Цитировать
type
- тип вставки детали-заготовки
(TRUE - внешней ссылкой,
FALSE - без истории),
Т.е. type должна быть WordBool, а у меня Integer. Странно.

Ведун

26.11.09, 22:28:28 #9 Последнее редактирование: 26.11.09, 22:39:23 от Ведун
Все! Благодарю, bergovin! Написал, все получилось!  ::)

doc:= ksDocument3D(Kompas.Document3D());
doc.Create(false,TRUE);
doc:= ksDocument3D(Kompas.ActiveDocument3D);
ipart := kspart(doc.GetPart(pTop_Part));
ipart.PutStorage('c:\1.m3d',1,False);
ipart.Update;
doc.RebuildDocument;


Но вот 1 всеравно должна быть TRUE.

bergovin

Цитата: Ведун от 26.11.09, 22:25:10
Т.е. type должна быть WordBool, а у меня Integer. Странно.
Что значит у вас?!  :o
Вы при вызове функции должны поставить True или False, откуда вы взяли Integer?
Хотя когда я делал вставку (правда в сборку) использовал  (VisualBasic)
Set iPart = doc.GetPart(pNew_Part)
iPartD.standardComponent = True 'убираем историю

Ведун

Цитата: bergovin от 26.11.09, 22:32:10
Что значит у вас?!  :o

ipart.PutStorage('c:\1.m3d',1,False);

Вот без этой единицы вообще ничего не работает!

bergovin

Цитата: Ведун от 26.11.09, 22:43:40
ipart.PutStorage('c:\1.m3d',1,False);

Вот без этой единицы вообще ничего не работает!
Как не работает.
Если ставить 0 (оно же False) то должно быть без истории
Если ставить 1 (оно же True) то  должно быть внешней ссылкой

Ведун

Цитата: bergovin от 26.11.09, 22:52:33
Как не работает.
Если ставить 0 (оно же False) то должно быть без истории
Если ставить 1 (оно же True) то  должно быть внешней ссылкой
Вот так работает, просто параметр type вместо WordBool имеет тип Integer и все. Не суть...

Цитата: bergovin от 26.11.09, 22:32:10
Хотя когда я делал вставку (правда в сборку) использовал  (VisualBasic)
Set iPart = doc.GetPart(pNew_Part)
iPartD.standardComponent = True 'убираем историю

bergovin!
Вы можете приложить кусок кода который у Вас для сборки? Что бы я посмотрел и разобрался что в моем не так.

bergovin

Dim iPart As Object ' ksPart
Set doc = Kompas.ActiveDocument3D
Set iPart = doc.GetPart(pNew_Part)
iPart.FileName = sPath'указываем путь к источнику
iPartD.standardComponent = True 'убираем историю

Только учтите что синтаксис VisualBasic-a

Ведун

Благодарю, разберусь!

bergovin

Цитата: Ведун от 26.11.09, 23:05:36
Благодарю, разберусь!
Не за что! Если на пользу родной стране  ;)

Ведун

Цитата: bergovin от 26.11.09, 22:14:36
А если у вас планируется вставлять не в сборку (а деталь)тогда- Вставить деталь-заготовку (PutStorage)

Это снова я!  :~ С этим вариантом все понятно, но я только сейчас заметил, деталь-то заготовка, и с переменными возник эксцес, так сказать, можно ли еще каким-нибудь способом сделать выше изложенное?

bergovin

Цитата: Ведун от 27.11.09, 00:11:47
с переменными возник эксцес
Поподробнее пожалуйсто, какой эксцес, и какие у вас задачи

Ведун

Вобщем так:

- Деталь вставилась, но как заготовка (это естественно, что просили - то и получили), а нужно как модель.
- Переменные у детали заготовки отсутствуют. А они нужны.

Вобще задача такова:
- Имеется параметризованая модель, ее нужно "копировать" в открытый документ компас со всеми переменными и т.д.