вот пример на 2 кнопки
по нажатию на первую выбираем фрагмент
по нажатию на вторую, строим фрагмент и дописывааем три строчки, в остальном надеюсь вы догадаетесь и найдете решение сами unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,comobj;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
libname,buf:string;
j1,i,j:integer;
insertName:string;
x,y,angle:double;
kompas,fl,rub,frag,d2d,par,type1,req,dp,obj:variant;
pDefFrg,p:longint;
procedure TForm1.Button1Click(Sender: TObject);
begin
kompas:=getactiveoleobject('kompas.application.5');
setforegroundwindow(kompas.ksGetHWindow);
//выберем библиотеку фрагментов
fl:=kompas.GetFragmentLibrary;
j1:=1;
buf:=fl.ksChoiceFragmentFromLib('c:\ELECTRO.LFR',j1);
if j1=3 then
begin
//здесь мы получаем путь к фрагменту, из которого можем определить оп имени с чем будем работать
//
form1.Caption:=buf;
end
else
showmessage('Следует выбирать фрагмент');
setforegroundwindow(form1.Handle);
//далее делаем вычисления в своей программе
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//рисуем то что выбрано
for i:=1 to length(buf) do
if buf[i]='|' then j:=i;
insertName:=copy(buf,j+1,length(buf));
rub:=kompas.getparamstruct(6);
//rub.init;
rub.phantom:=1;
type1:=rub.GetPhantomParam;
type1.xBase:= 0;
type1.yBase:= 0;
type1.scale_:= 1;
//rub.phType:= 1;
d2d:=kompas.ActiveDocument2D;
frag:=D2D.GetFragment;
pDefFrg:= frag.ksFragmentDefinition(buf,insertName,1);
if (pDefFrg<>0) then
begin
type1.gr:= d2d.ksNewGroup(1); // временная группа
par:=kompas.getparamstruct(7);
// par.init;
par.xBase:= 0;
par.yBase:= 0;
par.angle:= 0;
par.scale_:= 1 ;
p:=frag.ksInsertFragment(pDefFrg,1,par);
d2d.ksEndGroup;
dp:=d2d.ksCopyObj(p,0,0,100,150,1,0);
end
else
showmessage('Ошибка создания описания вставки фрагмента');
//пишем 3 строки
d2d.kstext(40,70,0,7,0.5,0,form1.Caption);
d2d.kstext(40,80,0,7,0.5,0,form1.Caption);
d2d.kstext(40,90,0,7,0.5,0,form1.Caption);
end;
end.