Перейти к публикации

Рекомендованные сообщения

Здравствуйте, уважаемые адепты CREO. Вопрос не простой, но как по мне, очень интересный.

Есть деталь part1.prt с размером d1=10 h7.

Возникла потребность средствами web.link получить этот размер полностью. Т.е. и значение и допуск.

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

Уверен, что здесь есть люди, смыслящие в данном вопросе.

 

<html>

<head>
<title>Web.Link Models Test</title>

<script src="../jscript/pfcUtils.js">
</script>
<script src="../jscript/wl_header.js">
document.writeln ("Error loading Pro/Web.Link header!");
</script>

<script  src="../jscript/pfcSelectionExamples.js">
 document.writeln ("Error loading script!");
</script>

<script language="JavaScript">

var name = document.pwl.pwlMdlCurrentGet().MdlNameExt; // Имя модели
var dim = document.pwl.pwlDimensionInfoGetByName(name,"d1",201); //Значение размера d1

window.onload = function() 
{
n.innerHTML=name;
d.innerHTML=dim.DimValue;
};


</script>
</head>

<body>

<p id='n'></p>
<p id='d'></p>

</body>
</html>

 

 

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


Смотрите документацию и пример dimensions.html

var ret = document.pwl.pwlDimensionInfoGetByName(
                  document.get_value_name.ModelNameExt.value,
                  document.get_value_name.DimName.value,
                  DimType);
    if (!ret.Status)
    {
        alert("pwlDimensionInfoGetByName failed (" + ret.ErrorCode + ")");
        return ;
    }
    document.get_value_name.DimValue.value = ret.DimName + " (#" +
        ret.DimID + "):  " + ret.DimValue +
        ((ret.DimStyle == parseInt(document.pwlc.PWL_ANGULAR_DIM)) ?
         " degrees" : "") + " (-" + ret.TolMinus + "/+" + ret.TolPlus + ")";

Функция возвращает объект, который содержит и значение размера и допуски.

Ссылка на сообщение
Поделиться на других сайтах
В 17.09.2018 в 11:58, Onizuka сказал:

Смотрите документацию и пример dimensions.html

Функция возвращает объект, который содержит и значение размера и допуски.

Спасибо, действительно нашел! 

var tolTable=document.pwl.pwlDimensionInfoGetByName(name,"d1",201).DimensionToleranceObject;

Однако возник новый, очередной вопрос: как узнать цвет аннотации, в частности данного размера. Такого свойства в объекте-размере я не нашел.

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

Изменено пользователем Andrwich1310
Ссылка на сообщение
Поделиться на других сайтах
11 час назад, Andrwich1310 сказал:

Однако возник новый, очередной вопрос: как узнать цвет аннотации, в частности данного размера.

Нужно отталкиваться от того зачем вам это надо? Так как цвет размера в Creo задается общими настройками и зависит от типа размера (слабы, сильный, управляемый, управляющий и тд). Те произвольный цвет на размер не назначит, а поэтому не понятно зачем вам получать этот цвет.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Onizuka сказал:

Нужно отталкиваться от того зачем вам это надо? 

В общем, существует пресс-форма. На детали которой в чертеже проставляются размеры. Именно проставляются, а не проявляются с модели. Часть этих размеров являются формообразующими (особо ответвенными). Эти размеры имеют другой цвет(заведомо известный и определенный, к примеру #000000 ). Т.е. отличный от цвета по умолчанию.

Задача: получить список этих "перекрашенных" размеров. 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Andrwich1310 сказал:

Часть этих размеров являются формообразующими (особо ответвенными). Эти размеры имеют другой цвет(заведомо известный и определенный, к примеру #000000 )

 

А каким образом в Creo данные проставленные размеры отмечаются особо ответственными?

Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, Onizuka сказал:

А каким образом в Creo данные проставленные размеры отмечаются особо ответственными?

По умолчанию цвет проставленных размеров к примеру синий. Пользователь на вкладке "Формат" применяет к некоторым, по его мнению ответственным размерам стиль, который меняет цвет размеров на, к примеру, красный. Далее вызывается Web.link, он перебирает все размеры на чертеже и если размер красный, web.link записывает значение этого размера в <div>

Ссылка на сообщение
Поделиться на других сайтах
56 минут назад, Andrwich1310 сказал:

Пользователь на вкладке "Формат" применяет цвет размеров

Хм.. Тогда нужно извлекать цвет текста размера.

Ищите как использовать

pfcAnnotationTextStyle GetNoteTextStyle() 

 

Ссылка на сообщение
Поделиться на других сайтах
В 19.09.2018 в 15:35, Onizuka сказал:

Ищите как использовать

Честно потратив два дня на поиски, добился лишь получения цвета заметки, как раз-таки с использованием GetNoteTextStyle().

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

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

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

Я пишу на "чистом" TOOLKIT. Со всеми хитростями Web.Link не знаком.

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

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Onizuka сказал:

Напишите сюда кусок кода

Вот код на получение цвета из заметки:

var ret = drawing.ListDetailItems(pfcCreate("pfcDetailType").DETAIL_NOTE,0).Item(i).GetNoteTextStyle().GetColor();

Все достаточно просто и понятно.

 

А вот кода на получение объекта-размера:

var session = pfcGetProESession ();
var drawing = session.CurrentModel;
var drwmodels = drawing.ListModels();
var modelitemtype = pfcCreate("pfcModelItemType");
var drwmodel = drwmodels.Item(0);
var showndims = drawing.ListShownDimensions(drwmodel, modelitemtype.ITEM_DIMENSION);

var ret=showndims.Item(0);

 

В отличие от объекта - заметки, никакого к примеру GetDimTextStyle().GetColor() , увы нет. (По крайней мере я не нашел. А я искал)

Закрадывается впечатление, что Web.Link просто-напросто не умеет получать цвет текста размера. 

С другой стороны Web.Link способен извлекать и более специфичные свойства объектов...

 

 

 

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

@Andrwich1310

У API для Creo довольна неплохая архитектура, основанная на объектно-ориентированном подходе. Многие объекты имеют единого родителя и наследуют методы и функции друг друга. Например, объект заметки используется для отображения текста в аннотации, таблице, размерах и тд.

Дак вот....

Заметка и размер имеют единого родителя ModelItem. Те методы заметки должны сработать для извлечения свойств текста размера.

Пробуйте

var myDim = document.pwl.pwlDimensionInfoGetByName(name,"d1",201).DimensionObject;
var color = myDim.GetNoteTextStyle().GetColor() 

Еще как вариант инициализировать объект размера через ModelItem

var myID = document.pwl.pwlDimensionInfoGetByName(name,"d1",201).DimID;
//Затем инициализировать по ID
pfcModelItem	GetItemById	(pfcModelItemType Type, number Id)

И у полученного ModelItem вызвать GetNoteTextStyle().

Изменено пользователем Onizuka
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

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

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




×
×
  • Создать...