Sergey___1978

Изучаем Toolkit

199 сообщений в этой теме

Что-то я не понял вопроса. Зачем раскидывать по слоям?

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

Встроенный принтер не устраивал из-за искажения шрифта размеров.

Можно по подробнее про слои.

Слои, это типа когда текстовая информация раздельно, графика отдельно? Если это имелось ввиду, то ни к чему мне это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


Хочу создать средство быстрого создания технологической модели при помощи Toolkit.

порядок действий:

1. копирую в буфер имя исходной модели.

2. создаю новую модель того же типа(лист или твердотелка) с именем исходной модели + "_TEX"

3. заполняю обозначение для технологической модели (oboznachenie+" ТЕХ").

4. добавляю фичер совместные данные - объединение/наследование - выбираю исходную модель. Ориентация по умолчанию.

5. Создаю карту эскизов. имя +_КЕ.

6. Заполняю обозначение для карты эскизов (oboznachenie+" КЭ")

Как правильно такое сорганизовать на тулките? Макросами + xStarter сделал, но на разных деталях(по сложности) нужны разные задержкт скрипта и не всегда все действия отрабатываются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В WF3 пишу такую строку:

ProMessageDisplay(MSGFIL,"-Zakaz_msg");

 

При компиляции выходит ошибка:

1>d:\project_vs2005\ex1\ex1\ex1.cpp(2568) : error C2660: 'ProMessageDisplay' : function does not take 2 arguments

 

На WF5 все нормально откомпилилось и выполнилось.

 

Подводишь на функцию мышь, выходит:

ProError ProMessageDisplay(void).

 

Почему?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сам разобрался.

 

Use the preprocessor definition PRO_USE_VAR_ARGS and PRO_USE_VAR_ARG.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Допустим я в чертеже выделил несколько размеров.

Что-то не могу разобратся как в Тулките записать их в массив   ProDimension *p_dims;

Ковыряю ProSelection.h, не могу понять как их закинуть в этот массив.

Вроде как, ларчик просто должен открываться.

Может кто сталкивался и есть кусок готового кода?

 

 


С вариантом когда выходит запрос на выделение вроде разобрался.

Этот вариант не очень устраивает.

Хочется заранее выделить, нажать кнопку макроса и кое-что сделать с текстом в этих размерах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветствую.

Подскажите, пожалуйста, как добавить кнопки в ленту Creo 2.0? Желательно для VB. NET.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я тут на досуге набросал пару функций :smile: (на C) :

 

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

post-1614-0-59509800-1392316752.jpg

post-1614-0-16691500-1392316759.jpg

drawing_date.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветствую.

Подскажите, пожалуйста, как добавить кнопки в ленту Creo 2.0? Желательно для VB. NET.

C:\Program Files\PTC\Creo 2.0\Common Files\M080\vbapi\vbug.pdf

C:\Program Files\PTC\Creo 2.0\Common Files\M080\vbapi\vbapi_examples\pfcCommandExamples.vb

Ищите в примере

'Add menu button
    '======================================================================
    'Function   :   addInputButton
    'Purpose    :   This function demonstrates the usage of UI functions to
    '               add a new button to ProE Windows Menu. This is 
    '               accessible to user only if part is present
    '======================================================================
    Public Sub addInputButton()
 
Почему то в примере не используется метод IpfcUICommand.Designate(), а он нужен. Обратите на это внимание в user's guide.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день, гуру Pro/TOOLKIT!

 

Подскажите, пожалуйста, как уменьшить размер получаемой DLL, написанной на С/С++ в Visual Studio.

У меня пустой скомпилированный проект получается на 17 мб.

 

Установка опции /MD в настройках проекта не помогает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня так же на 64 битах получается, где-то 16 Мб.

На 32 битном по божески, где-то 1 Мб, тот же код.

На 64-х битном по любому код больше будет, чем на 32-х.

Но заметил, что размер dll в дальнейшем практически не растет, сколько кода там не пиши.

Мне кажется 17Мб это не критично для памяти  несколько Гб.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно, будет разница в размере в зависимости от конфигурации Debug и Release.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно, будет разница в размере в зависимости от конфигурации Debug и Release.

Конфигурация Relase и на 32 и на 64.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, забыл сказать что dll для 64 бит.

 

 

конфигурации Debug и Release.

 

Опции в любой конфигурации настраиваются. Те просто так переключаться с одной на другую, думаю, нет смысла. Нужно знать какую конкретно опцию изменить.

 

Насколько я понимаю, библиотека TOOLKIT линкуется статически к конечной dll. Те содержимое библиотеки TOOLKIT включается в dll.

 

У меня есть пример готовой dll, написанной для Pro/e. Ее размер всего 1,5 Мб. Правда она для 32 бит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще раз обдумал свой вопрос. Похоже, что уменьшить размер для 64 бит DLL не возможно.

Те чтобы уменьшить размер, нужно подключать библиотеку TOOLKIT динамически. А для этого нужно, чтобы у TOOLKIT была динамически подключаемая библиотека - DLL.

 

Поскольку библиотеки TOOLKIT существует только в виде LIB (файлов) - для статической линковки, то и уменьшить размер не получится.

 

Вот такие выводы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Разница в конфигурациях Release и Debug есть, я несколько раз встречал в литературе и здесь на форуме.

 

Вот, цитата с первого найденного источника:

объяснить пожалуйста разница между Debug И Release?
и почему после компиляции Debug->Dll fail 460kb а Release->17кб.

 

http://www.cyberforum.ru/cpp-beginners/thread663282.html

Изменено пользователем VIKT0R

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я согласен что разница есть. Но, теоретически, можно изменить настройки в этих конфигурациях так, что они будут абсолютно одинаковыми.

Для "стандартных" десктопны приложений и dll эти конфигурации настроены так, что в Release отключен вывод различной информации для отладки. По этому при компиляции на Release происходит уменьшение размера.

К сожалению, для TOOLKIT простой смены кофигурации оказалось недостаточно.

Разница в конфигурациях Release и Debug есть, я несколько раз встречал в литературе и здесь на форуме.

 

Вот, цитата с первого найденного источника:

объяснить пожалуйста разница между Debug И Release?
и почему после компиляции Debug->Dll fail 460kb а Release->17кб.

 

http://www.cyberforum.ru/cpp-beginners/thread663282.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Делаю приложение по типу как у Solvera для вставки технических требований.

Текстовый блок получилось вставить и даже менять свойства текста.

                             //ProDtlnotetextSlantSet(note_text,15);
                            //ProDtlnotetextThicknessSet(note_text,1.0);
                            //ProDtlnotetextWidthSet(note_text,2.0);
                            //ProDtlnotetextHeightSet(note_text,14.20454545);
                           //ProDtlnotetextFontSet(note_text,L"Arial");
                          //ProDtlnotetextUlineSet (note_text,PRO_B_TRUE);
       //err = ProDtlnotedataAngleSet(note_data, 15.0);
        //ProDtlnotedataJustifSet(note_data, PRO_HORZJUST_CENTER, PRO_VERTJUST_MIDDLE);         
        //ProDtlnotedataReadonlySet(note_data,PRO_B_TRUE);

 

 

Только вот с одним свойством разобратся не могу, "Шаг строк" называется.

По умолчанию стоит 0,5. Хочу принудительно назначить ему значение 1,0.

Может поможет кто?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Делаю приложение по типу как у Solvera для вставки технических требований.

Текстовый блок получилось вставить и даже менять свойства текста.

                             //ProDtlnotetextSlantSet(note_text,15);

                            //ProDtlnotetextThicknessSet(note_text,1.0);

                            //ProDtlnotetextWidthSet(note_text,2.0);

                            //ProDtlnotetextHeightSet(note_text,14.20454545);

                           //ProDtlnotetextFontSet(note_text,L"Arial");

                          //ProDtlnotetextUlineSet (note_text,PRO_B_TRUE);

       //err = ProDtlnotedataAngleSet(note_data, 15.0);

        //ProDtlnotedataJustifSet(note_data, PRO_HORZJUST_CENTER, PRO_VERTJUST_MIDDLE);         

        //ProDtlnotedataReadonlySet(note_data,PRO_B_TRUE);

 

 

Только вот с одним свойством разобратся не могу, "Шаг строк" называется.

По умолчанию стоит 0,5. Хочу принудительно назначить ему значение 1,0.

Может поможет кто?

Попробуйте использовать опции чертежа.

Перед создание задать нужную опцию.

Создать заметку.

Затем вернуть обратно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо. Я тоже подумал про опции. После праздников буду пробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чо-то не могу найти я этой опции в опциях чертежа.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сделай макрос для задания опции.

Создай заметку.

Затем макрос обратно.

 

Toolkit

 

Drawing Setup
 
ProInputFileRead()
ProOutputFileWrite()
ProDrawingSetupOptionGet()
ProDrawingSetupOptionSet()
ProMdlDetailOptionGet()
ProMdlDetailOptionSet()

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Таких функций у меня вообще нет:

ProMdlDetailOptionGet()
ProMdlDetailOptionSet()

WF5.

 

Мне не понятно какой параметр в настройках чертежа отвечает за опцию "Шаг строк", не вижу я его там.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Думаю, что нужно добавить заметку в буфер выделения (Selection Buffer), а затем запускать макрос.

 

PS: У вас случайно нет парочки картинок, как сделано у Solvera? Хотелось бы посмотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот скриншот проги.


Там все просто, пользователь формирует тестовый блок из занесенных в базу шаблонов.

У них там сделана возможность вставлять заметку прямо в модель, а в чертеже показывать ее в виде например &TT в текстовой заметке. Можно напрямую в чертеж, как я хочу сейчас сделать.


Я сделал примерно вот такую функцию для вставки ТТ, остался один вопрос, как выделить созданную в чертеже заметку?

 

 

//Вставить ТТ
int Insert_tt()
{
  ProMdl mdl1;
  ProModelitem p_modelitem1;
  ProMdldata mdldata1;
  ProError status;
  //берем данные текущей открытой модели
  status=ProMdlCurrentGet(&mdl1); 
  if (status!=PRO_TK_NO_ERROR) {return (status);} //выход из функции, если нет модели
  //берем данные модели
  p_modelitem1.owner=mdl1;
  ProMdlDataGet(mdl1,&mdldata1);
  if (mdldata1.type[0]=='D')
  {

    //чтение файла c техническими требованиями
    FILE *TT_file;
    wchar_t TT_filename[255];
    ProLine TT_text[100];
    ProLine wstr1;
    char str1[255];
    int i1;
    wcscpy(TT_filename,L"D:\\temp\\tt.txt");
    TT_file=fopen(ProWstringToString(str1,TT_filename),"rt");
    i1=0;
    while(!feof(TT_file))
    {
      fgetws(wstr1,255,TT_file);
      wcscpy(TT_text[i1],wstr1);
      i1++;
    }
    fclose(TT_file);

    ProDrawing drawing;
    ProDtlnote note; 
    ProDtlnoteline *note_lines;
    ProDtlnotedata note_data;
    ProError err;
    ProDtlattach location, *leaders = NULL;
    int status = 0, i, sheet, n_leaders;

    ProMdlCurrentGet((ProMdl*)&drawing);
    err = ProDtlnotedataAlloc (drawing, &note_data);

    //Позиция, куда вставлять ТТ
    ProVector location1;
    ProMouseButton mouse_button;
    err = ProMousePickGet (PRO_LEFT_BUTTON, &mouse_button,location1);
    err = ProDtlattachAlloc (PRO_DTLATTACHTYPE_FREE, NULL, location1, NULL, &location);
    err = ProDtlnotedataAttachmentSet (note_data, location);
    err = ProDtlattachFree (location);

    //Перенос строк в специальную структуру
    ProDtlnoteline note_line;
    int j, line_count = 0, n_texts;
    double widht;
    ProDtlnotetext *texts, note_text;
    err = ProArrayAlloc (0, sizeof (ProDtlnoteline), 1, (ProArray*)&note_lines);
    for (j = 0; j < i1; j++)
    {
      err = ProDtlnotelineAlloc (&note_line);
      err = ProDtlnotetextAlloc (&note_text);
      err = ProDtlnotetextStringSet (note_text, TT_text[j]);
      err = ProDtlnotelineTextAdd (note_line, note_text);
      err = ProDtlnotetextFree (note_text);
      err = ProArrayObjectAdd ((ProArray*)&note_lines, PRO_VALUE_UNUSED, 1, &note_line);
      err = ProDtlnotelineTextsCollect (note_line, &texts);
      err = ProDtlnotelineTextsSet (note_lines[line_count], texts);
      err = ProArraySizeGet ((ProArray)texts, &n_texts);
      for (i = 0; i < n_texts; i++)
        err = ProDtlnotetextFree (texts);
     err = ProArrayFree ((ProArray*)&texts);
     line_count++;
    }
    err = ProDtlnoteldataLinesSet (note_data, note_lines); 
    err = ProArrayFree ((ProArray*)&note_lines);

    err = ProDtlnotedataLeadersSet (note_data, NULL);
    ProDtlnotedataElbowlengthSet(note_data,PRO_B_TRUE,2.0);
    err = ProDtlnoteCreate (drawing, NULL, note_data, &note);
    err = ProDtlnoteShow (&note);



int id1=0;
ProDtlnoteDataGet (&note, NULL, PRODISPMODE_NUMERIC, &note_data);
ProDtlnotedataIdGet(note_data, &id1);

 

 

//---------------------------------------------------------------------------------------------

//А дальше ступор с выделением заметки, чо-то не могу допереть что делать?

//Я так понимаю надо получить modelitem этой заметки, дальнейшие действия в смутном представлении.

//---------------------------------------------------------------------------------------------

 

err = ProDtlnotedataFree (note_data);


//запуск макроса, который меняет шаг строк
ProMacroLoad(L"~ Command `ProCmdEditProperties` ;~ Select `note_text_asynch` `tab_main`1 `lay_style`;~ Activate `note_text_asynch` `chk_usedeflinespc`0 ;~ Update `note_text_asynch` `inp_linespc` `1`;~ Activate `note_text_asynch` `psh_ok`;");
}
return(0);
}

post-26163-0-00052500-1399365781_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Терпение и труд все перетрут:

 

 

ProModelitem modelitem2;
err = ProModelitemInit(drawing, id1, PRO_NOTE, &modelitem2);
ProSelection p_selection1;
ProSelectionAlloc(NULL,&modelitem2,&p_selection1);
ProSelbufferSelectionAdd (p_selection1);

 

Вопрос исчерпан.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Терпение и труд все перетрут:

 

 

ProModelitem modelitem2;

err = ProModelitemInit(drawing, id1, PRO_NOTE, &modelitem2);

ProSelection p_selection1;

ProSelectionAlloc(NULL,&modelitem2,&p_selection1);

ProSelbufferSelectionAdd (p_selection1);

 

Вопрос исчерпан.

Мне кажется, можно в ProSelectionAlloc использовать переменную note (типа ProDtlnote) в качестве modelitem, так как по сути ProModelitem и ProDtlnote одна и та же структура

 

typedef struct pro_model_item

{

ProType type;

int id;

ProMdl owner;

} ProModelitem, ProGeomitem, ProExtobj, ProFeature, ProProcstep,

ProSimprep, ProExpldstate, ProLayer, ProDimension, ProDtlnote,

 

ps: Спасибо за картинку. У Солвера есть еще какие-нибудь интересные/полезные приложения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

извини. если что лишнего наваял. просто Я не прогер. а всего лишь конструктор. спасибо за буфер подсказал.

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

интерфейс примитивный у этой проги был. не дружественный. потому и пришлось свою делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

извини. если что лишнего наваял.

Ну что вы! Я же так для общего развития своими мыслями поделился. Ни в коем случае не хотел "носом тыкать". Разобраться в TOOLKIT на С достойно большого уважения, на мой взгляд.

Удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хочу вычленить все аннотации в  корне дерева модели в отдельный массив аннотаций, получилось следующее.

Не пойму как отсеять все внутренние и оставить только те которые в корне, не нашел нужного примера или может плохо искал.

Может подскажет кто?

 

//Действие функции, вызываемое при посещении фичеров
ProError UsrNoteAction(ProNote *note,ProError filter_status,ProAppData data)
{

    //сюда вот надо вставить какой-то фильтр

   
    ProArrayObjectAdd((ProArray*)data, -1, 1, note);
    return(PRO_TK_NO_ERROR);
}

//Функция для сканирования дерева и формирования массива аннотаций 

int UsrNotesCollect(ProMdl mdl1,ProNote **notes)
{
    //Выделяем память
    ProArrayAlloc(0, sizeof(ProNote), 1, (ProArray*)notes);
    //Все аннотации в дереве
   if (ProMdlNoteVisit(mdl1,UsrNoteAction,NULL,notes)!=PRO_TK_NO_ERROR)
   {
      ProArrayFree((ProArray*)notes);
      return(0);
   }
   return(1);
}

//Все аннотации в модели (в корне дерева)

int all_note()
{
    ProMdl mdl1;
    ProError status;
    ProNote *notes;
    UsrNotesCollect(mdl1,&notes);
    int n_notes;
    ProArraySizeGet(notes,&n_notes);
    MessageInt(n_notes);

 

    return(0);

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос снимаю, и так только с корня берет ноты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пытаюсь через тулкит просканировать все заметки в чертеже и найти ту в которой есть запись {0:&tt}.

 

wchar_t wstr1[255;

ProDtlnotetextStringGet(dtltexts[0],wstr1);

 

Почему он записывает в строковую переменную wstr1 не {0:&tt}, а реальное значение первой строки в ТТ.

Как уйти от этого, чо-то не могу допереть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Полный текст подпрограммы:

 

//сканруем все заметки в чертеже и определяем наличие заметки {0:&tt}
ProDtlnote *dtlnotes;
ProArrayAlloc(0,sizeof(ProDtlnote),1,(ProArray*)&dtlnotes);
ProDrawingDtlnoteVisit(drawing1,NULL,1,UsrDtlnoteAction,NULL,&dtlnotes);
int n_dtlnotes,nomer_dtlnote=255;
int flag_dtlnote=0;
ProDtlnotedata dtlnote_data;
ProDtlnoteline *dtllines;
ProDtlnotetext *dtltexts;
wchar_t wstr1[255];
status=ProDtlnotedataAlloc(drawing1,&dtlnote_data);
ProArraySizeGet(dtlnotes,&n_dtlnotes);
for (int i=0;i<n_dtlnotes;i++)
{
ProDtlnoteDataGet(&dtlnotes,NULL,PRODISPMODE_NUMERIC,&dtlnote_data);
ProDtlnotedataLinesCollect(dtlnote_data,&dtllines);
ProDtlnotelineTextsCollect(dtllines[0],&dtltexts);
ProDtlnotetextStringGet(dtltexts[0],wstr1);
if (wstr1[0]=='{') {MessageWstr(wstr1);}
}



ProArrayFree((ProArray*)&notes);
ProArrayFree((ProArray*)&dtlnotes);
ProDtlnotedataFree(dtlnote_data);
ProArrayFree((ProArray*)&dtllines);
ProArrayFree((ProArray*)&dtltexts);
ProDwgSheetRegenerate(drawing1,1);
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сам кажись разобрался

 

ProDtlnoteDataGet(&dtlnotes,NULL,PRODISPMODE_NUMERIC,&dtlnote_data);

 

PRODISPMODE_SYMBOLIC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пытаюсь написать макрос на тулките, который изменяет имена выносных видов и сечений по ЕСКД.

Добустим было:

&xsec_name

{1:&view_scale}

 

Надо: &xsec_name (&view_scale)

 

Написал следующее:

//Имя вида по ЕСКД

int View_name1()

{

ProMdl mdl1;

ProModelitem p_modelitem1;

ProMdldata mdldata1;

ProError status;

//берем данные текущей открытой модели

status=ProMdlCurrentGet(&mdl1);

if (status!=PRO_TK_NO_ERROR) {return (status);} //выход из функции, если нет модели

//берем данные модели

p_modelitem1.owner=mdl1;

ProMdlDataGet(mdl1,&mdldata1);

if (mdldata1.type[0]=='D') {

ProDrawing drawing1;

ProMdlCurrentGet((ProMdl*)&drawing1);

p_modelitem1.type=PRO_DRAWING;

//сканруем все заметки в чертеже и определяем наличие заметок с именами видов, котрые надо привести к виду по ЕСКД

ProDtlnote *dtlnotes;

ProArrayAlloc(0,sizeof(ProDtlnote),1,(ProArray*)&dtlnotes);

ProDrawingDtlnoteVisit(drawing1,NULL,1,UsrDtlnoteAction,NULL,&dtlnotes);

int n_dtlnotes,n_dtllines,nomer_dtlnote;

ProDtlnotedata dtlnote_data;

ProDtlnoteline *dtllines; ProDtlnotetext *dtltexts;

wchar_t wstr1[255];

char str1[255];

status=ProDtlnotedataAlloc(drawing1,&dtlnote_data);

ProArraySizeGet(dtlnotes,&n_dtlnotes);

for (int i=0;i<n_dtlnotes;i++)

{

ProDtlnoteDataGet(&dtlnotes,NULL,PRODISPMODE_SYMBOLIC,&dtlnote_data);

ProDtlnotedataLinesCollect(dtlnote_data,&dtllines);

ProArraySizeGet(dtllines,&n_dtllines);

ProDtlnotelineTextsCollect(dtllines[0],&dtltexts);

ProDtlnotetextStringGet(dtltexts[0],wstr1);

if ((wcsstr(wstr1,L"xsec_name")!=NULL)&&(n_dtllines>1))

{

int n_texts;

ProDtlnotetext *texts,dtlnote_text2;

ProDtlnoteline *dtllines2;

ProDtlnoteline note_line;

ProArrayAlloc(0,sizeof(ProDtlnoteline),1,(ProArray*)&dtllines2);

ProDtlnotelineAlloc(&note_line);

ProDtlnotetextAlloc(&dtlnote_text2);

ProDtlnotetextStringSet(dtlnote_text2,L"&xsec_name (&view_scale)");

ProDtlnotelineTextAdd(note_line,dtlnote_text2);

ProDtlnotetextFree(dtlnote_text2);

ProArrayObjectAdd((ProArray*)&dtllines2,PRO_VALUE_UNUSED,1,&note_line);

ProDtlnotelineTextsCollect(note_line,&texts);

ProDtlnotelineTextsSet(dtllines2[0],texts);

ProArraySizeGet((ProArray)texts,&n_texts);

for (int j=0;j<n_texts;j++) ProDtlnotetextFree(texts[j]);

ProArrayFree((ProArray*)&texts);

ProDtlnoteldataLinesSet(dtlnote_data,dtllines2);

ProDtlnoteErase(&dtlnotes);

ProDtlnoteModify(&dtlnotes,NULL,dtlnote_data);

ProDtlnoteShow(&dtlnotes);

}

}

}

return(0);

}

 

 

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

Может кто что посоветует?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так понимаю, что данным кодом Вы меняете текст в заметки на &xsec_name (&view_scale)?

Мне кажется, что этого не достаточно.

Насколько я помню, у заметок с именем вида нужно отключить опцию  Перенос текста и изменить ее размер, чтобы текст влазил в одну строку. Думаю, что это и надо пытаться делать в программе/макросе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для начала, я бы попробовал добавить обратные слэши:

ProDtlnotetextStringSet(dtlnote_text2,L"\&xsec_name \(\&view_scale\)");

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для начала, я бы попробовал добавить обратные слэши:

ProDtlnotetextStringSet(dtlnote_text2,L"\&xsec_name \(\&view_scale\)");

Что-то это не проканало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот что написано про эти параметры:

 

&view_name
Displays a drawing label indicating the name of the view. You
cannot use this parameter in a drawing note. Pro/ENGINEER
creates it with a view and places it in notes automatically. You can
modify its value, but you cannot call it out in another note.

 

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

Но я же получается хочу изменить в той же заметке.

Поиск в гуголе тоже чо-то пока ничего не дал.

 

Попробую покопать в этом направлении пока:

Насколько я помню, у заметок с именем вида нужно отключить опцию Перенос текста и изменить ее размер, чтобы текст влазил в одну строку. Думаю, что это и надо пытаться делать в программе/макросе.

Но что-то мне подсказывает, что это тоже тупиковый вариант. Так и придется похоже делать стандартными макросами через ProMacroLoad, но таким макаром не удасться заменить все заметки по всему черетжу одновременно и без предварительного выделения их. Команда ProMacroLoad почему то срабатывает в самом конце тулкитовской функции, в цикле не получилось ее использовать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Насколько я помню, у заметок с именем вида нужно отключить опцию Перенос текста

 

 

Что это за опция такая, где искать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу



  • Реклама

  • Сообщения

    • Александр Кушелев
      Кушелев: А Вы в курсе, что фрикопедия - ресурс западных спецслужб, с помощью которого они ведут информационную войну против России? Эту страницу написали те самые интернет-преступники, которые многократно уничтожали форум лаборатории Наномир, взламывали почту Ярослава Старухина, Анатолия Шестопалова, Виктории Соколик и угрожали мне физической расправой, названивая по ночам по телефону. Учитесь отличать черное от белого и Россию от ее забугорных "добра желателей" :) Вы сначала выводы делаете, а потом начинаете разбираться? ;) Начните с конкретных аргументов и фактов, а выводы сделаете по итогам дискуссии. *** Тем, кто тащит на форум вместо аргументов всё подряд: Скопировать на форум дезу из фрикопедии или другого диверсионного интернет-ресурса - дело нехитрое. А попробуйте своим умом поработать :)
    • Александр Кушелев
      Кушелев: Вы бы ещё отдельных букв надергали из научной статьи и составили из них нецензурное слово. После этого смело приклеивайте ярлык матершинника ;) Жаль, что Вы не прислушались к тому, что в науке ценятся аргументы и факты, а не мнения, эмоции и заявления. К сожалению в Ваших сообщениях АиФ не обнаружено... Кушелев: Есть. Проверьте отклонение от параллельности соседних рядов блоков пирамид.     Вы в курсе, что "проход" в пирамиде отклоняется от идеальной прямой на 5 мм при длине в десятки метров? Есть и более протяженные мегалитические сооружения. Например, "овечьи заборы" острова Пасхи: http://nanoworld88.narod.ru/data/115.htm     Кушелев: Вы процитировали Анатолия Шестопалова, а вывод сделали про Александра Кушелева. Самому-то не смешно? :)
    • Александр Кушелев
      А Вы уверены, что Вам понятно. Может быть "понятно", но привычно? Специалисты по структурам белков обычно говорят: "Что это за точность Пикотехнологии, если начало/конец спирали не совпадает с данными рентгеноструктурного анализа (РСА) на 4-5 аминокислотных остатков? Погрешность РСА менее ангстрема, а 5 аминокислотных остатков - это в десятки раз больше. Я их спрашиваю: Если РСА ошибется на пол ангстрема, это может означать ошибку на один атом? Ведь граница между атомами не имеет ширины... -Да, но не более, чем на один! -Прекрасно. А этот один атом может принадлежать другому аминокислотному остатку. -Конечно. -Замечательно. А этот другой аминокислотный остаток может принадлежать другому витку спирали? -Может... Это Вы намекаете, что ошибка на любую величину может означать ошибку на один виток спирали? -Ну да. А теперь обратите внимание, что РСА не может часто отличить альфа-спираль от пи-спирали, где на один виток приходится примерно 4.4 аминокислотных остатка. И в этом случае ошибка на любую величину означает ошибку на 5 аминокислотных остатков. После этого специалисты по структурам белков понимают, что ошибка на 5 аминокислотных остатков - это не ошибка Пикотехнологии, а ошибка РСА...
      А до этого им было "понятно", что РСА не может ошибиться больше, чем на один атом, один аминокислотный остаток... Так что не торопитесь делать Выводы о понятности тех направлений, которыми Вы занимаетесь. Это может быть всего лишь иллюзия... :) А Вы подумайте, может ли существовать звук без воздуха или другой звуконосной среды? Так же и электромагнитные волны  не могут существовать без среды. Отказ от среды - это то же самое, что отказ от маятника с сохранением колебаний маятника.  Что касается опыта Майкельсона, то опыт Ю.Н. Иванова (Ритмодинамика, акустический аналог опыта Майкельсона) показал, что с помощью акустического аналога спектрального эталона длины не представляется возможным зафиксировать ... обычный ветер! По логике релятивистов необходимо отказаться от звуконосной среды! Ссылки используются с разной целью. У спамеров - одна цель, у меня - другая. С помощью перекрестных ссылок и дублирования я защищаю информацию, которую целенаправленно уничтожает группа интернет-преступников, создавших и поддерживающих ряд интернет-ресурсов по борьбе с научными группами, в частности, Российскими.   Так что если преступники могут что-то делать, например, ходить, стрелять и т.д., то это вовсе не означает, что все, кто могут ходить и стрелять - преступники. :)
    • Александр Кушелев
      У меня сайт большой и неоднородный. Если Вам хочется видеть информацию на уровне научной статьи, то нет проблем: http://www.nanoworld.org.ru/data/05/20021205/index.htm Приглашали меня один раз, но речь идет о том, что большинство явлений под названием "Полтергейст" как раз относится к тому же классу резонансных явлений. Инопланетный полтергейст - класс более редких случаев. Как алмаз среди обычных камней. "Под лежачий камень вода не течет" :)
    • Сережа
      Спасибо)
      На счет бесконечного крыла у меня есть несколько вопросов по поводу теории индуктивного сопротивления...даже и не знаю у кого их спрашивать.(( Кто-нибудь шарит в этом? 
      Вообщем сколько я не продувал 2Д профиль, я получал качество не больше 25. А по экспериментальным данным пересчитанным на бесконечное крыло получается около 60. Так вообще корректно сравнивать?
      Я не  верю в то, что если взять этот профиль, сделать крыло длиной 40 метров то мы получим качество больше 25. А по теории индуктивного сопротивления получим.....
    • Семен Владимирович
      Вечер добрый. Меня зовут Семен и я занимаюсь проектом по прогнозированию времени изготовления металлических изделий по 3d-моделям на станках с ЧПУ. Наша команда создала программу на основе машинного обучения, которая, зная, как были сделаны предыдущие детали, прогнозирует время изготовления новых.   На текущем этапе нам требуются данные для обучения программы (3d-модели, время их изготовления или управляющая программа, g-code) и её тестирование на реальном производстве.   Если у вас есть хотя бы один станок с ЧПУ, и вам интересен проект по применению искусственного интеллекта в машиностроении, напишите мне в личные сообщения, на телефон +7(985)133-09-50 или на почту karpov@absolute.msk.ru
    • Maik812
      Да пущай повышает. Ну чем то помочь человеку святое дело.. даже если он  в заблуждениях  свои по уши..
    • BSV1
    • vik_q
      прэлестно! Мои поздравления. а данные на бесконечное крыло пересчитывали, или там не сильно большая разница?
    • Maik812
      Пусть пишет.. каждый уникум по своему.. и если не понимаете его или он Вас , то что того!? Лишь-бы не было причинению физ повреждений, что в инете априори не возможно.