Приветствую Вас, Гость! Регистрация RSS

DelphiVS

Понедельник, 29.04.2024
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Программирование » Компас » Подключение библиотек компаса к делфи (как библиотеку 2D компаса подключить к делфи)
Подключение библиотек компаса к делфи
novichek5Дата: Вторник, 04.05.2010, 14:26 | Сообщение # 1
Новичек
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
Кто подскажет как библиотеку фрагментов, созданную в компасе подключить к делфи?чтобы не искать ее в менеджере библиотек, а которая бы вызывалась автоматически через окно делфи
 
MaxaДата: Вторник, 11.05.2010, 06:28 | Сообщение # 2
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
Что именно вы имеет ввиду?
1. чтобы библиотека включалась в компасе по нажатию на кнопку в Delphi?
2. чтобы выбор вставки фрагмента был из Delphi?
 
MaxaДата: Вторник, 11.05.2010, 08:43 | Сообщение # 3
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
Вот например интерфейс выбора фрагмента через делфи.
Только пока не вставляется cry , но проблема вставки найдется biggrin

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;
begin
kompas:=getactiveoleobject('kompas.application.5');
//выберем библиотеку фрагментов
fl:=kompas.GetFragmentLibrary;
j1:=1;
buf:=fl.ksChoiceFragmentFromLib('c:\ELECTRO.LFR',j1);
if j1=3 then
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;
req:=kompas.getparamstruct(10);
j:=0;
while j<>-1 do
begin
angle:=0;
j:=d2d.ksPlacement(req,x,y,angle,rub);
if j=-1 then
dp:=d2d.ksCopyObj(p,0,0,x, y,1,angle);
end;
end
else
showmessage('Ошибка создания описания вставки фрагмента');
end
else
showmessage('Следует выбирать фрагмент');

 
novichek5Дата: Вторник, 11.05.2010, 08:54 | Сообщение # 4
Новичек
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
А например по нажатию кнопки в окне делфи запускается библиотека в компасе,а при выборе необходимого в бибилиотеке, выходит окошко делфи, в котором выбираются необходимые данные, по котором идет расчет и результат выдается в делфи в виде текста))))))))))))
 
MaxaДата: Вторник, 11.05.2010, 12:31 | Сообщение # 5
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
Именно в этом коде запускается библиотека в компасе а при выборе необходимого:

в данном случаем вставляет, но также можно и другие действия делать, например считать название
какие именно данные вам надо вывести в делфи в виде текста?

P.S. Код рабочий, ошибка была не в коде

 
novichek5Дата: Вторник, 11.05.2010, 13:04 | Сообщение # 6
Новичек
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
опечатка выводить данные не в делфи а в компасе в виде текста

Добавлено (11.05.2010, 13:04)
---------------------------------------------
почему то выдает ошибку на этой строке kompas:=getactiveoleobject('kompas.application.5');

пишет undeclared identifier "getactiveoleobject"

 
MaxaДата: Среда, 12.05.2010, 07:07 | Сообщение # 7
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
извиняюсь, в uses прописать comobj
а нельзя ли написать какие параметры надо считать, я мог бы и примерчик с текстом скинуть
 
novichek5Дата: Среда, 12.05.2010, 10:54 | Сообщение # 8
Новичек
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
давайте я вам напишу задание, чтобы было все понятно...есть библиотека фрагментов, созданная в компасе.вот она ниже
Прикрепления: _4.lfr (217.6 Kb)
 
novichek5Дата: Среда, 12.05.2010, 11:18 | Сообщение # 9
Новичек
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
необходимо , чтобы она запускалась в компасе ну к примеру по нажатию кнопки в окне делфи.Далее запустилась, выбираешь например установочную базу, щелкаешь по ней, чтобы ее вытащить из библиотеки и вставить в нужное место чертежа, тут при этом нажатии появляется окно делфи, в котором выбираешь нужную схемку, там же прилагается краткое описание схемки. эти схемки можно выбирать, пусть будет 2.Вот они

Добавлено (12.05.2010, 11:03)
---------------------------------------------
нажимаем расчет в этом окошке и по формулам, которые около схем..внизу окна выдается значение, нажимаем далее это окошко сменяется другим в котором выбираеются необходимые виды закрепления и исходя из этого выбираются значения....все есть в этом вордовском документе

Добавлено (12.05.2010, 11:10)
---------------------------------------------
выглядит это примерно как в ниже приведенной программе

Добавлено (12.05.2010, 11:17)
---------------------------------------------
программа

Добавлено (12.05.2010, 11:18)
---------------------------------------------
((((почему то не отправляется она.....вот и конечный результат в виде там трех строк выдается на чертеже в углу как результат расчета

Прикрепления: _Microsoft_Word.doc (164.5 Kb)
 
MaxaДата: Среда, 12.05.2010, 13:11 | Сообщение # 10
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
вот пример на 2 кнопки
по нажатию на первую выбираем фрагмент
по нажатию на вторую, строим фрагмент и дописывааем три строчки, в остальном надеюсь вы догадаетесь и найдете решение сами biggrin

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.

 
novichek5Дата: Среда, 12.05.2010, 14:34 | Сообщение # 11
Новичек
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
спасибо)
 
MaxaДата: Четверг, 13.05.2010, 05:13 | Сообщение # 12
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
обращайтесь smile
 
VladukДата: Суббота, 29.01.2011, 23:02 | Сообщение # 13
Новичек
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
у меня не понимает данной строки
kompas: = getactiveoleobject ('kompas.application.5'); что дописать надо, чтобы понял?
 
MaxaДата: Воскресенье, 30.01.2011, 19:59 | Сообщение # 14
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
Пропишите в uses ComObj;
 
ПетровичДата: Среда, 16.11.2011, 14:19 | Сообщение # 15
Новичек
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
привет всем, не подскажете как прописывать деталь в компасе через делфи...конкретно как правильно писать окружности линии и т.п.
 
Форум » Программирование » Компас » Подключение библиотек компаса к делфи (как библиотеку 2D компаса подключить к делфи)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: