Помогите с построением 3D модели (Delphi)

Автор yarikv, 30.01.07, 01:16:40

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

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

Slaviation

Цитата: yarikv от 02.04.07, 23:18:44
Цитироватьесли грани, то
Result:= (ksEntity(_iEntity).type_ = o3d_face);


по этому коду выбираются все типы граней.
а если нужно чтобы выбиралась только плоская или цилиндрическая грань?


iEntity :=  ksEntity(_iEntity);
if iEntity .type_ = o3d_face then
begin
  iDef := ksFaceDefinition( iEntity.GetDefinition)
  Result:= iDef.IsPlanar; //или IsCylinder
end;

yarikv

Вот написал библиотеку для определения диаметров различных объектов: грани, ребра, резьба. может кому пригодится:)
хотелось бы знать в каких версиях компаса она будет работать.
отдельное спасибо Slaviation за помощь в освоении этого нелегкого дела!!!

yarikv

попутно вопрос:
при обращении к функции UserSelectEntity может быть возвращен результат NULL в случае отказа от команды.
Эту функцию вызываю в следующем виде
iEntity1:=ksEntity(iDoc3D.UserSelectEntity(nil, 'SELECTFILTERPROC', strPromt, hinstance, nil));
т.е в случае отказа NULL присваивается переменной iEntity1?

yarikv

в ходе темы интересовал вопрос определения каталога, откуда была запущена библиотека. недавно наткнулся на функцию делфи GetCurrentDir, которая этот вопрос с успехом решает без дополнительных построений.
еще можно пользоваться процедурой GetDir.

Maxagg

Вопрос, а как все это реализовать во внешнем приложении.
В библиотеке у меня все работает, а вот во внешнем не срабатывает

Maxagg

Если не  указывать эти строчки
iRequestInfo3D.SetCallBack('SELECTCALLBACKPROC',hinstance, nil);
iRequestInfo3D.SetFilterCallBack('SELECTFILTERPROC',hinstance, nil);
то вроде как все выбирает, только без фильтра
иначе пусто

функции прописал в модуле
function  SELECTFILTERPROC(iEntity: ksEntity): Boolean; stdcall; export;
begin
  Result:=true;
end;

function SELECTCALLBACKPROC(iEntity: ksEntity;iRequestInfo3D:ksRequestInfo3D):integer; stdcall; Export;
begin
  Result:=1;
end;

Exports     
SELECTFILTERPROC name 'SELECTFILTERPROC',
SELECTCALLBACKPROC name 'SELECTCALLBACKPROC';

Помогите плиз советом


Georg

Помогите пожалуйста! Можно ли в эскизе использовать ksCursor для указания точки построения?

Вот кусок кода:

----------------------------------------------------------------------------------------------------
//Создаем эскиз - 2D документ
iSketchEntity.Create;

//Входим в режим редактирования эскиза
iSketchDoc2D:=ksDocument2D(iSketchDef.BeginEdit);

//Параметры, определяющие инерактивное взаимодействие с пользователем
//посредством метода ksCursor
iReqInfo:= ksRequestInfo(iKompas.GetParamStruct(ko_RequestInfo));

iReqInfo.Init;
//Тектс в строке сообщения
iReqInfo.commandsString:= 'Укажите точку построения';
//Запрос координат курсора
if iSketchDoc2D.ksCursor (iReqInfo, xi, yi, nil) =  0 then
    strPromt:='ksCursor - Результат = 0';

--------------------------------------------------------------------------------------------------

У меня ksCursor все время выдает результат 0 !