Изъять параметры готовой 3Д-модели и изменить

Автор seregaa, 16.12.09, 21:45:32

« назад - далее »

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

seregaa

Уважаемые !!!! Такой вопрос .... Каким образом можно с открывшегося файла 3Д-модели КОМПАСА изъять все главные параметры модели .. и изменить...???? Желательно если есть какие-то идеи по написанию кода.. выложить на Делфи!!!
Заранее всем спасибо!!!

Ведун

Какие именно параметры? Внешние переменные? Или еще что-нибудь?

Посмотрите эту тему: http://forum.ascon.ru/index.php/topic,4669.0.html

seregaa

дело в том, что : например... есть 3Д модель сделанная в КОМПАСЕ мной .. сразу  скажу она параметризирована!!!!... вот вопрос в том можно ли считать все ети переменные .. а потом измениить эти значения...???

Ведун


seregaa


seregaa

И еще один вопрос.... все это будет работатьесли я все это дело делаю через ActiveX .. ???? тоесть у меня на форме уже встоен компонент компаса...ну я думаю вы меня поняли..

Ведун

На счет ActiveX - не знаю, я работаю с Компас напрямую, т.е. библиотека обращается к Компас, а не работает со своей формой.

Для начала: Через Компас все переменные назначаем внешними, далее уже из делфи:
Объявим тип для переменной:

//объявим тип для переменной, в которой хранятся
     //переменные 3d детали
type
  TPartVar = record
  VarName : string; // имя переменной
  VarValue : real; // значение переменной
  VarNote : string; // комментарий к переменной
end;
...


Назначим переменные:

...
  var
    iDoc : ksDocument3D;                //ссылка на документ
    Vr : ksVariableCollection;          //список внешних переменных
    iPart : ksPart;                     //для ссылки на деталь
    Univar : ksVariable;                //внешняя перменная
    iFeature: ksFeature;
    filename : string;                  //имя файла и путь к нему
    PathToSave : string;
...


Далее если документ уже открыт и активен:

...
//получим ссылку на деталь и на массив внешних переменных
  iPart := ksPart(iDoc.GetPart(pTop_Part));
  iFeature := ksFeature(iPart.GetFeature);
  Vr := ksVariableCollection(iFeature.VariableCollection);
//проведем замену
//читаем переменную с требуемым именем, если оно заранее известно
  Univar := ksVariable (Vr.GetByName('H2',true,true));
//меняем значение переменной
  Univar.value :=  6.5;
  iPart.Update;
  iPart.RebuildModel;
....
....//столько раз сколько у Вас переменных
iDoc.RebuildDocument;//перестроим, аналог F5 в Компас
...


Вот с ActiveX - не подскажу, ну может хоть это поможет.

seregaa


Ведун

Не за что!
Напишите потом хоть работает ли это с ActiveX...

seregaa

ну да ... канешно !!! попробую как оно с ActiveХ ..  :um:

bergovin

Кстит когда я работал с переменными, компас почемуто не различал информационные от обычных (хотя свойство такое есть) и все делал обычными. Когда я писал программу, я хотел отсеять информационные но у меня ничего не получилость - пришлость извращаться - назначил информационным имена начинающиеся с "ii" - только так решил проблему.

Скажите у вам такого нет? Компас различает информационные и обычные, чтоб их можно было исключить при переборе?

ЗЫ У меня компас 11+SP1

Андрей Прохоров

А нельзя извлечь массу 3d модели прямо из файла не открывая в компасе? всем  заранее спасибо!

Ведун

На сколько я знаю, не открыв этот документ прочитать его характеристики не получится.
Поищите по форуму, где-то это уже спрашивали.
И, кроме того, вы можете открыть документ через компас, даже не показывая окна на экране.

Андрей Прохоров


Sergey

(SDK)

Открыть на редактирование документ-модель (деталь или сборку).

Синтаксис Automation:
Интерфейс: ksDocument3D
Метод: BOOL Open (BSTR fileName, BOOL invisible);

Синтаксис COM:
Интерфейс: IDocument3D
Метод: BOOL Open (LPOLESTR fileName, BOOL invisible);

Входные параметры:
fileName   - имя файла открываемого документа,
invisible   - признак режима редактирования документа (TRUE – невидимый режим, FALSE - видимый режим)


Ведун

Еще имеется возможность сам Компас запустить в фоновом режиме. Т.е. окна компаса не будет видно вообще.