CDW в PDF КОМПАС V14

Автор AndreySt, 12.11.13, 15:25:41

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

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

Вы реестр открывали?
Уверены, что есть такой ключ?
Из этого всего:
Registry:=TRegistry.Create;
Registry.RootKey:=HKEY_LOCAL_MACHINE;
if Registry.OpenKeyReadOnly('C:\Program Files\ASCON\KOMPAS-3D v19\Libs\ImpExp\dwgdxfExp')  then
path2:=Registry.ReadString('path');
Вам нужно:
path2:='C:\Program Files\ASCON\KOMPAS-3D v19\Libs\ImpExp\dwgdxfExp.rtw';
Если newkompasapi<>nil то
pconverter:=newkompasapi.Converter[path2];
PS. Пользуйтесь отладчиком.
Простые программы для ЧПУ, пишу библиотекой разверток, для 3D обработки, есть Esprit.

EKosarev

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

Вы используете готовое решение, которое делали не Вы, Вы пытаетесь открыть, а не создавать в реестре ключ, затем пытаться прочитать значение, которого нет, т.к. нет такого ключа?
Для того, чтобы дойти до версии нужно сначала сделать рабочий код, а еще лучше изучить язык программирования, пройтись по примерам в SDK.
Приложение делать или библиотеку, решать Вам, но библиотека будет иметь больше возможностей и работать будет быстрее.

EKosarev

вот у меня проблема с рабочим кодом начинается с того, что я не понимаю где этот момент, где я могу повлиять на версию DXF. к чему идти, когда знаешь конечную цель немного проще)

я не совсем понимаю как читать sdk если честно, а из примеров только dllContr запустить смог. Вообщем это была одна из основных причин почему я начал делать именно EXE потому что пример этот такого же типа.

Можете проблему запуска примера Step1 показать.

EKosarev

ну я открываю ее нажимаю запуск сразу же появляется окно could not find program kompas.exe не может найти компас 

Изучите среду программирования.
Проблема указать?
Host_app.png

EKosarev

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

Какая среда разработки?
Под какую разрядность компилируется библиотека?
Какой разрядности КОМПАС-3D?
Я не экстрасенс, но похоже не совпадают разрядности.

EKosarev

#149
в Delphi 7 разрабатываю
разрядность компаса 64
Delphi 32
просто Delphi на 64 поставить надо? 

У меня Delphi XE10.2, что у Вас я не знаю.
По правильному, нужно настроить проект, добавить 64-разрядную платформу.
Возможность создавать 64-разрядные приложения появилась начиная с Delphi XE2, а про Delphi 32, я в первый раз слышу.

EKosarev


Delphi 32, это я хотел сказать что Delphi 32-разрядный

#152
Возможность создавать 64-разрядные приложения появилась начиная с Delphi XE2, в Delphi 7 возможна только разработка 32-разрядных приложений.
Тут два варианта, менять среду разработки или ставить 32-разрядный КОМПАС-3D.

AlinaM

Всем привет!
Нашла на форуме данную тему, которая максимально близко подхоидт к моему вопросу. Часть кода в свое время помогло в сохранении PDF. Но возник вопрос!
Каким образом, при программном сохранении в PDF, я могу указать/изменить параметры в окне Фильтры?
[см. скриншот]
PDF_filters.jpg
Смотрела объекты в Pdf2d.dll, но ничего похожего на то что нужно не нашла. Сталкивался ли кто нибудь с этим вопросом? Подскажите, пожалуйста, есть ли решения этой задачи?

Tallin

Здравствуйте!
Пишу внешнее приложение (exe) по конвертации cdw в pdf на С++ VisualStudio.
KompasObjectPtr kompas;
IApplicationPtr newKompasAPI, kompasApp; // Компас Application 7     
IConverterPtr iConverter;// = NULL;

kompas.CreateInstance(L"KOMPAS.Application.5");
kompas->Visible = true;

BSTR fl = SysAllocString(L"D:\\prj_Kompas\\Чертеж.cdw");
newKompasAPI = kompas->ksGetApplication7();
ksDocument2DPtr Document2D;
Document2D = (ksDocument2DPtr)kompas->Document2D();
Document2D->ksOpenDocument(fl, false);

newKompasAPI = kompas->ksGetApplication7();

BSTR pdfLibPath = _bstr_t(kompas->ksSystemPath(sptBIN_FILE)) + _bstr_t(L"\\Pdf2d.dll");
iConverter = newKompasAPI->GetConverter(_variant_t(pdfLibPath));

newKompasAPI->get_Converter(_variant_t(pdfLibPath), &iConverter);

const IPdf2dParamPtr paramConv(iConverter->ConverterParameters(0));

paramConv->PutColorType(3);    //цветные линии

iConverter->Convert(_T(""), L"D:\\prj_Kompas\\pdf3.pdf", 0, FALSE);


Вроде можно сказать что все работает, Компас открывается, открывает чертеж и переводит его в pdf.
Но не могу установить параметры конвертации "iConverter->ConverterParameters(0)". Как только задаю "paramConv->PutColorType(3)" программа вылетает.
При отладке вижу что функция "IConverter::ConverterParameters" создает и возвращает какой-то результат, но "const IPdf2dParamPtr paramConv" все равно ноль.
Наверное неправильно принимаю результат из функции "IConverter::ConverterParameters", может к другому типу его привести нужно?

При этом такой-же код при создании rtw библиотеки работал без проблем.
Помогите пожалуйста!

P.S.
А есть какая-нибудь документация по Pdf2d.dll ?

UU

Как вариант задать свойства в визуальном режиме, а потом прочитать и будете знать, какие знания и для чего.

Tallin

Цитата: UU от 21.03.24, 06:28:25Как вариант задать свойства в визуальном режиме, а потом прочитать и будете знать, какие знания и для чего.
Дело не в том что я не знаю какие свойства для чего, а в том что я не могу их установить, приложение вылетает на этапе установки свойств.

UU

Без компьютера, мне тяжело, что то Вам посоветовать, ели я правильно понимаю, у Вас некоторые знания принимаются.
Тогда можно предложить, что это битовый флаг и установить его можно значениями 0,1,2,4,8...

Tallin

Цитата: Tallin от 20.03.24, 20:36:40Здравствуйте!
Пишу внешнее приложение (exe) по конвертации cdw в pdf на С++ VisualStudio.
Проблему решил. Библиотека Pdf2d.dll у меня не была зарегистрирована в Windows. После регистрации всё заработало.
Про регистрацию вроде даже в этой ветке писалось, но я как-то невнимательно отнесся к этому, вобщем сам виноват.