Добрый день всем!!!
Пишу в Delphi для Kompas 9. Столкнулся с такой проблемой. У меня имеется несколько файлов *.frw. Я создаю новый чертеж. Как вставить фрагмент в новый чертеж зная путь и имя фрагментов? Посоветуйте чтонить. Буду рад увидеть кусочек кода.
Вставка фрагмента на чертеж(правда сделано для компас 5.11 но думаю и для 9го будет нормально)
procedure InsertFragment;
var
phan: ksPhantom;
type1: ksType1;
frag: ksFragment;
x, y, ang: double;
par: ksPlacementParam;
docPar: ksDocumentParam;
doc : ksDocument2D;
KompasApi : KompasObject;
begin
KompasApi := KompasObject(Kompas.KompasAPI);
doc := ksDocument2D(kompasAPI.ActiveDocument2D);
docPar := ksDocumentParam(KompasApi.GetParamStruct(ko_DocumentParam));
phan := ksPhantom(KompasApi.GetParamStruct(ko_Phantom));
frag := ksFragment(doc.GetFragment);
par := ksPlacementParam(KompasApi.GetParamStruct(ko_PlacementParam));
par.Init;
phan.phantom := 1;
type1 := ksType1(phan.GetPhantomParam);
type1.xBase := 0;type1.yBase := 0;
type1.angle := 0;
type1.scale_ := 1;
type1.gr := frag.ksReadFragmentToGroupEx('C:\WorkFolder\temp.frw', false, par, false);
if type1.gr = 0 then
exit;
phan.phantom := 1;
doc.ksCursor(nil, x, y,phan);
if type1.gr <> 0 then begin
doc.ksMoveObj(type1.gr,x,y);
doc.ksStoreTmpGroup(type1.gr);
end;
DeleteFile('C:\WorkFolder\temp.frw');
end;
//если что не понятно пиши
Всё работает спасибо! Но не совсем то что хотелось. Если использовать контекстное меню "Вставить внешний фрагмент" наш фрагмент вращаеться. А в коде такого нет. Как это можно организовать???И вообще возможно ли это?
Буду очень рад получить кусочек кода. :shu:
попробуй вместо ksCursor использовать ksPlacement
Спасибо Большое всё работает!!!!!
Очень благодарен тебе!!! :o:
Всегда пожалуйста! :) Рад помочь
Добрый день! Есть такой вопрос. В приведенной выше процедуре использую doc.ksRotateObj вместо doc.ksMoveObj вставляемый фрагмент поворачивается как надо, но ставится не в том месте в котором кликаю. Что не так?
И еще вопросик. У doc.ksRotateObj есть параметр "angle", что это за параметр? Очень жду ответа.
Добрый день!!! <<<Очень жду ответа>>>. Вопрос задан выше...
Цитата: Fischer от 21.03.08, 12:56:58
Добрый день! Есть такой вопрос. В приведенной выше процедуре использую doc.ksRotateObj вместо doc.ksMoveObj вставляемый фрагмент поворачивается как надо, но ставится не в том месте в котором кликаю. Что не так?
И еще вопросик. У doc.ksRotateObj есть параметр "angle", что это за параметр? Очень жду ответа.
ksRotateObj - поворот объекта вокруг точки, соответственно angle угол поворота
ksMoveObj - сдвиг объекта, координаты x, y - вектор сдвига
Эти процедуры можнл использовать совместно.
Например, сначала сдвинули объект, а затем повернули его
Спасибо огромное!!! Получилось!!!
Здравсвуйте! А как сделать чтобы с помощью этой процедуры фрагмент вставлялся как единое целое? :shu:
Очень жду ответа!!!
Добрый день всем!!!
Возник такой вопрос??? Как можно сделать чтобы с помощью процедуры указанной выше фрагмент вставлялся как единое целое?
Хотелось бы кусочек рабочего кода :shu:
Очень нужен ответ!
Нужно создать макроэлемент ksMacro и добавить туда группу ksAddObjectToMacro.
А можно подробнее... Очень нужен ответ!
Подскажите кто - нибудь Плиззз!!!!!!!!!!!1
Цитата: Fischer от 28.03.08, 11:14:06
А можно подробнее... Очень нужен ответ!
Уважаемый, а справкой sdk.hlp не пробывали воспользоваться?
В часности разделами ksMacro и ksAddObjectToMacro? Там есть и описания и примеры :o:
Нет не пробовали >:(
Возьми и почитай
Цитата: Fischer от 28.03.08, 13:05:55
Возьми и почитай
Вобще-то так регулярно и делаю, и не совсем поняла Вашего негатива.
Если конкретнее, что именно вам не понятно?
Функциями ksMacro /EndObj создаете пустой именованный макрообъект. Например так:
ksMacro (1);
reference macro=EndObj();
Ваш фрагмент добавляете в этот макрообъект
ksAddObjectToMacro (macro,type1.gr);
Я бы еще посоветовала пользваться функциями SetMacroParam и GetMacroParam, при необходимости запоминать какие-то доболнительные параметры. Например, тот же путь к файлу
Благодарен за ответ! :o:
Taro, Благодарен тебе за ответ!!!
Fischer, всегда пожалуйста :) :shu:
Добрый день появился такой вопрос, как фрагмент вставить в цикле? вставить у меня его получилось, но как сделать так чтобы он вставлялся несколько раз через определенное расстояние со сдвигом по х???????? :?: ::)
все вопрос отпал я все написал сам :o: