Доступ к внешним переменным 2D чертежа

Автор azx, 29.03.21, 09:15:42

« предыдущая - следующая »

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

azx

29.03.21, 09:15:42 Последнее редактирование: 29.03.21, 09:47:27 от azx
Простите, может вопрос глупый, но только начал разбираться с API Компаса.
Есть параметрический чертеж в 2D, управляемый переменными, нужные переменные установлены как внешние (2 шт: lop и lmk). В программке на Delphi подключаю Компас и открываю этот чертеж. Далее хочу получить доступ к списку внешних переменных чертежа с целью изменить их значение и затем перестроить чертеж:
var Variable: ksVariable;
  VariableArray:ksDynamicArray;
...
VariableArray:=ksDynamicArray(Document2D.ksGetDocVariableArray(0));
Memo1.Lines.Add(format('Количество %d',[VariableArray.ksGetArrayCount]));
Memo1.Lines.Add(format('Тип %s',[VariableArray.ksGetArrayType]));
if VariableArray.ksGetArrayItem(0,Variable)=1 then
  Memo1.Lines.Add(format('Переменная %d ',[Variable.name]));
В итоге в Memo1 получаю:
ЦитироватьКоличество 2
Тип 10
Строка с текстом "Переменная" не появляется, условие не выполняется. То есть VariableArray.ksGetArrayItem(0,Variable) отрабатывается неверно. Пока не поставил условие if, выдавалась ошибка объект Variable не создавался.

Вопрос. Почему не создается переменная Variable? Может есть другой способ получить доступ к внешним переменным чертежа? Что об этом почитать?

Спасибо

graphdark

Цитата: azx от 29.03.21, 09:15:42Что об этом почитать?
Я по этой статье и примерам все делал.

Sabahs

Цитата: graphdark от 01.04.21, 11:38:51Я по этой статье и примерам все делал.
Я работаю по этом - SDK -c:\Program Files\ASCON\KOMPAS-3D v20\SDK\Samples\

azx

Цитата: graphdark от 01.04.21, 11:38:51Я по этой статье и примерам все делал.
Спасибо. Посмотрел. К сожалению в статье о доступе к переменным в 3D документе, а там несколько иначе все происходит, чем в 2D.

graphdark

Цитата: azx от 02.04.21, 13:19:28Спасибо. Посмотрел. К сожалению в статье о доступе к переменным в 3D документе, а там несколько иначе все происходит, чем в 2D.
Просто нонсенс рисовать чертежи без модели. А уж тем более пытаться программно чертеж нарисовать. Привет 80е.

azx

Цитата: graphdark от 02.04.21, 14:00:42Просто нонсенс рисовать чертежи без модели. А уж тем более пытаться программно чертеж нарисовать. Привет 80е.
Есть множество задач, в которых 3d вообще не нужно. Мне же нужно не вычерчивать программно весь чертеж, а управлять внешними переменными, о чем и тема. Привет!

СВ

15.04.21, 15:18:09 #6 Последнее редактирование: 15.04.21, 17:21:42 от СВ
Есть множество задач, в которых ... не нужно не только вычерчивать программно весь чертеж, но и не нужно управлять внешними переменными.
Основная тема для переменных (для "программного черчения")- это однотипные детали/узлы  с большим количеством типоразмеров/исполнений, типа болты/гайки/крышки/кольца ... Ваша тема?
Чем эти 2Д-переменные отличаются о 3Д-переменных? Чем прямое управление ими (с прописанными нужными зависимостями) хуже программного?
Переменные.png

p3452

Цитата: СВ от 15.04.21, 15:18:09Чем прямое управление ими (с прописанными нужными зависимостями) хуже программного?
1. Что Вы будите делать с вашими "переменными", если таких чертежей сотни?
2. Программная реализация позволяет даже НЕ ИМЕТЬ (хранить) эти "чертежи" (для архива и синих печатей - растры или pdf), а создавать их в любой момент времени с любыми заданными параметрами-переменными.

СВ

 Так всё зависит от задачи, а о ней - ни слова. (Можно создать программу (с единственной всем известной "красной кнопкой") хоть по полному проектированию самолёта, только пока её напишешь, самолёты исчезнут...) Предполагаю, что как только начинающий конструктор, способный (и сильно склонный) к программированию, узнаёт о "волшебных возможностях программирования", он тут же бросается создавать эту кнопку. И дело это, в общем то, хорошее, тут не поспоришь.