• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

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

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

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

Slaviation

Цитата: yarikv от 03.04.07, 00: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 !