Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi DBGrid. Если в ячейке 0 то пустая ячейка https://www.cyberforum.ru/ delphi-beginners/ thread1542268.html
Всем привет. Помогите советом, как можна такое сделать, если в ячейке "0" то чтоб он не отображался а была пустая ячейка? Идеально было б через запрос (база SQLite подключена через FireDAC) Я...
Delphi Разработать программу, которая автоматически вычерчивает на форме геометрическое тело
Разработать программу, которая автоматически вычерчивает на форме геометрическое тело (параллелепипед, цилиндр, конус и другие), а также производит очистку поля. Пользователю на выбор предоставляются...
Ко всем четным элементам матрицы прибавить последний элемент соответствующей строки Delphi
. Разработать программу для решения задачи. Протестировать разработанную программу методом эквивалентного разбиения. Размерность матриц определяется пользователем. Максимальное число строк и столбцов...
Delphi Построить диаграмму выбранного пользователем вида из случайных чисел выбранного пользователем диапазона. Сгенерировать последовательность десяти случайных чисел из выбранного пользователем диапазона и построить диаграмму с помощью компонента TChart. Выбор вида диаграммы (круговая или гистограмма)... https://www.cyberforum.ru/ delphi-beginners/ thread1542240.html
Delphi Построение графиков функции указанного вида на указанном пользователем отрезке https://www.cyberforum.ru/ delphi-beginners/ thread1542238.html
Разработать программу для построения графиков функции указанного вида на указанном пользователем отрезке y=k√(ax^2+bx+c), k≠0, a≠0 где k, a, b, c, d – коэффициенты, определяемые...
Иллюстрация сортировки массива Delphi
Задание - изобразить сортировку слияниями Хочется изобразить что то наподобие ( только без стрелок) вот что у меня получилось видимо все из за того что сортировка присходит рекурсивно
Разметка при работы с кодом Delphi
Доброго времени суток. Есть несколько отвлеченный вопрос, связанный больше с удобством чтения/редактирования кода) Сейчас использую ХЕ7, и после других приветливых IDE, где подсвечивались циклы,...
Delphi Динамический массив Есть вот такое задание: 1. Описания массива с элементами типа «запись». 2. Инициализации массива. 3. Добавление записи в массив. 4. Удаление записи из массива. 5. Обновление поля записи... https://www.cyberforum.ru/ delphi-beginners/ thread1542191.html
Delphi Программа-конструктор https://www.cyberforum.ru/ delphi-beginners/ thread1542152.html
Друзья,мне нужна ваша помощь,дело в том что мне дали тяжелый проект,нужно реализовать конструктор который будет 1.Собирать код программы правильно,сохранять его,а уже потом предоставлять в...
Delphi Хук на клик мыши Приветствую. Стоит глобальный хук на мышь. В обработчике стоит так: if wParam = WM_LBUTTONUP then // залогить что нибудь. Все отрабатывает нормально, но не пойму одну вещь - в прогах... https://www.cyberforum.ru/ delphi-beginners/ thread1542067.html
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 7
0

Библиотека для КОМПАС-2D на делфи. Как выводить элементы от места клика мыши, а не по статическим координатам?

01.10.2015, 20:14. Просмотров 1165. Ответов 1
Метки (Все метки)

Есть простенькая библиотека на делфи для компаса. Ее задача - выводить изображения резисторов, конденсаторов и проч. на чертеж или эскиз в компасе. Пока библиотека выводит элемент, например, резистор, статически, начиная от координат (0,0). Как реализовать функцию, чтобы элемент выводился начиная с того места, где будет сделан клик мыши. Как перейти из окна библиотеки на рабочее поле, взять по клику мыши координаты и построить по ним элемент и вернуться обратно?
Подскажите пожалуйста как это реализовать или хотя бы где искать и в какую сторону двигаться?
Вот собственно код проекта:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
unit main;
 
interface
 
uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, LDefin2D, ksConstTLB, ksAuto, ksTLB, StdCtrls, jpeg, ExtCtrls;
 
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 // заголовки 
 procedure  LIBRARYENTRY(command: WORD); Pascal;
 procedure Run;
 procedure Rezistor;
 procedure Condensator;
 procedure Diod;
 function   LIBRARYNAME : PChar;         Pascal;
 function   LIBRARYID   : Cardinal;      Pascal;
// ссылки на КОМПАС и 2D документ
var
 Form1: TForm1;
 Kompas: KompasObject;
 iDocument2D: ksDocument2D;
 
implementation
 
{$R *.dfm}
 
var x: real;
param   : ksLDimParam;
  dPar    : ksDimDrawingParam;
  sPar    : ksLDimSourceParam;
  tPar    : ksDimTextParam;
 
 
function LIBRARYNAME: PChar; pascal;
begin
  // произвольное название библиотеки
  Result := 'RadioLib'
end;
 
function LIBRARYID: UINT; pascal;
begin
  // произвольный идентификатор то 100 и выше
  Result := 100;
end;
 
procedure LIBRARYENTRY (command:WORD); pascal;
begin
  // связываем переменную Kompas с API КОМПАСа
  Kompas := KompasObject(CreateKompasObject);
  // если все в порядке…
  if Kompas <> nil then
   begin
    // связываем переменную iDocument2D
    // с текущим 2D документом
    iDocument2D := ksDocument2D(Kompas.ActiveDocument2D());
    if iDocument2D=nil then
     // сообщение об ошибке
     Kompas.ksMessage('Текущий документ не является чертежом или фрагментом')
    else
     begin
      // своя процедура запуска библиотеки - см. ниже
      Run;
      Kompas.ksMessage('Работа библиотеки завершена');
     end;
    // освобождение памяти
    iDocument2D := nil;
    end;
    Kompas := nil
end;
 
procedure Run;
begin
  // делаем нашу форму формой КОМПАСа
Application.Handle:=kompas.ksGetHWindow;
  // закрыть доступ к компасу
  kompas.ksEnableTaskAccess(0);
  // создаем форму
form1:=TForm1.Create(Application);
  // вывод формы
  form1.ShowModal;
 // открыть доступ к компасу
 kompas.ksEnableTaskAccess(1);
 // отключаем нашу форму от КОМПАСа
Application.Handle := 0
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
case ComboBox1.ItemIndex of
  0: Rezistor;
  1: Condensator;
  2: Diod;
  else  Kompas.ksMessage('Выберите элемент!');//Edit1.Text:='Dfhbfyn yt ds,hfy';
  end;
end;
 
 
procedure Rezistor;
begin
//Image1.Picture.LoadFromFile('rezistor.jpg');
iDocument2D.ksLineSeg(0,0,0,5,1) ;
iDocument2D.ksLineSeg(-2,5,2,5,1) ;
iDocument2D.ksLineSeg(-2,5,-2,15,1) ;
iDocument2D.ksLineSeg(2,5,2,15,1) ;
iDocument2D.ksLineSeg(-2,15,2,15,1) ;
iDocument2D.ksLineSeg(0,15,0,20,1) ;
end;
 
procedure Condensator;
begin
iDocument2D.ksLineSeg(0,0,0,5,1) ;
iDocument2D.ksLineSeg(-4,5,4,5,1) ;
iDocument2D.ksLineSeg(-4,6.5,4,6.5,1) ;
iDocument2D.ksLineSeg(0,6.5,0,11.5,1) ;
end;
 
procedure Diod;
begin
iDocument2D.ksLineSeg(0,0,0,14,1) ;
iDocument2D.ksLineSeg(-2.5,9,2.5,9,1) ;
end;
 
end.


Вернуться к обсуждению:
Библиотека для КОМПАС-2D на делфи. Как выводить элементы от места клика мыши, а не по статическим координатам?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2015, 20:14
Готовые ответы и решения:

Рисование фигуры по координатам клика мыши
Здравствуйте! Нужно написать сайт, в котором по клику мыши рисовались фигуры по координатам...

Библиотека для пересохранение файлов Компас-3D
Файлы созданные в новых версиях Компаса, нельзя открыть в старых. Чтобы открыть чертеж созданный в...

1
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.