Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
Переопределение линии
 
Хочу повесить на кнопку макрос создающий линию с определенными свойствами (цвет, толщина).
Но в документации по API есть примеры создания только с жеско заданными координатами, а хотелось бы создавать линию с помощью мышки.
Есть один пример который, как мне кажется, смог бы прояснить ситуацию. А именно методы TFlex.PickPointMouseMove. Но я не могу его запустить.
Этот пример:
Код
using System;
using System.Windows.Forms;
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
using TFlex.Model.Model3D;

namespace NewMacroNamespace
{
   public class NewMacroClass
   {
 
public static void PickPoint()
{
    PickPointParameters  par = new PickPointParameters();
    //выбор только размеров
    SelectionFilter filter = new SelectionFilter();
    filter.Enable(ObjectType.Dimension);
    par.Filter = filter;
    par.Prompt = "Выбрать размер";
    par.MouseMove += new TFlex.PickPointMouseMove(PickPointMouseMove);//событие перемещения мыши //строка 23!!
    PickPointResult res = TFlex.Application.PickPoint(par);//получить точку в одном из видов активного документа
    string mess = "Объект не выбран";
    if (res.SelectedObject != null)
    {
        mess = string.Empty;
        string val = string.Empty;
        ObjectProperty[] arr = res.SelectedObject.GetProperties();//массив свойств выбранного объекта
        for (int i = 0; i < arr.Length; i++)
        {
            switch(arr[i].Type)
            {
                case (ObjectPropertyType.IntProperty):
                        val = res.SelectedObject.GetIntProperty(arr[i].Name).Value.ToString();
                    break;
                case (ObjectPropertyType.RealProperty):
                        val = res.SelectedObject.GetRealProperty(arr[i].Name).Value.ToString();
                    break;
                case (ObjectPropertyType.TextProperty):
                        val = res.SelectedObject.GetTextProperty(arr[i].Name);
                    break;
            }
            mess += arr[i].Name + ": " + val +"\r\n";    
        }
    }
    MessageBox.Show(mess);
}   

   }
}
При попытке компиляции вылазит ошибка:
'Модуль 1' (23,51) : ошибка CS0118: "TFlex.PickPointMouseMove" является "тип", но используется как "переменная"

Правильно ли я выбрал пример? Если да, то в чем ошибка? Если нет, то куда копать?
Да пребудет с тобой Sila.
 
Наверно темой ошибся...? :idontnow:
Да пребудет с тобой Sila.
 
А не проще создать свою линию с цветом и толщиной и обойтись без апи?
 
Цитата
Sila Musli пишет:
А не проще создать свою линию с цветом и толщиной и обойтись без апи?
Я рисую схемы, в которых этих линий сотни.
Если я вместо 15 кликов буду делать 3, то трудоемкость сократится в 5 раз!
Но мне этого мало, ибо ими еще управлять надо. Я только не соображу как...

А вот рабочий код, выводящий координаты клика:
Код
 public static void PickPoint()
{
    PickPointParameters  par = new PickPointParameters();
   PickPointResult res = TFlex.Application.PickPoint(par);
    string x,y = "";
   x = res.PaperPoint.X.ToString();
   y = res.PaperPoint.Y.ToString();
    MessageBox.Show(x+":"+y);
}   
Да пребудет с тобой Sila.
 
Только вот эти координаты не "прилипают" к привязкам, как при создании базовой линии.
Видимо не там копал...
Да пребудет с тобой Sila.
 
[QUOTE]Я рисую схемы, в которых этих линий сотни.
Если я вместо 15 кликов буду делать 3, то трудоемкость сократится в 5 раз!
Но мне этого мало, ибо ими еще управлять надо. Я только не соображу как... [/QUOTE]
А можно подробнее про алгоритм который планируется запрограммировать? Что то я не соображу как 3 клика будут передавать параметры линий. Было бы лучше если опишешь свою задачу.

ЗЫ: что за ерунда с цитатами?
Изменено: Дмитрий - 31.03.2014 22:51:57
 
Ещё раз повторюсь, проще уйти от программирования, но наверное, чтобы проводить линии, нужно написать кад в каде....
 
Цитата
Дмитрий пишет:
А можно подробнее про алгоритм который планируется запрограммировать? Что то я не соображу как 3 клика будут передавать параметры линий. Было бы лучше если опишешь свою задачу.
Нужна спецификация которая заполнялась бы автоматически при построении схемы.
Необходимо заполнять спецификацию следующими типами линий: трубы и провода. По 3-4 вида каждого типа.

То, что хочется сделать уже сейчас:
1-й клик. Из панели выбираем инструмент, допустим "труба 25", которая представляет из себя: линию определенного цвета. Возможно будут еще параметры для спецификации...
2-й клик. Выбираем мышкой начало линии.
3-й клик. Выбираем мышкой конец линии.
4а. После построения линии автоматом добавляем её идентификатор в переменную pipe25, выражение которой: get("0x3000019;0x3000016;0x1000007;0x3000018","LENGTH")
4б. Либо ведем базу данных, в которой храним все линии и ведем общее количество п.м. каждого типа.
5. Собственно профит!
Как происходит это сейчас?
Само построение схемы не сильно отличается от желаемого процесса, но вот спецификацию заполнять вручную утомительно и чревато серьезными ошибками.
Да пребудет с тобой Sila.
 
Цитата
Sila Musli пишет:
Ещё раз повторюсь, проще уйти от программирования, но наверное, чтобы проводить линии, нужно написать кад в каде....
Не представляю как при указанной задаче можно уйти от программирования.
Буду рад советам!
Да пребудет с тобой Sila.
 
Эх, в толковых исходниках бы покопаться! ~~:-
Да пребудет с тобой Sila.
 
В "Руководство по T-FLEX CAD Open API" есть примеры:

1. "Вывод графического изображения на экран"
'Модуль 1' (24,45) : ошибка CS0246: Не удалось найти имя типа или пространства имен "CustomCommand" (пропущена директива using или ссылка на сборку?)
'Модуль 1' (26,55) : ошибка CS0234: Имя типа или пространства имен "CommandState" отсутствует в пространстве имен "TFlex.Command" (пропущена ссылка на сборку?)
'Модуль 1' (49,52) : ошибка CS0234: Имя типа или пространства имен "CommandState" отсутствует в пространстве имен "TFlex.Command" (пропущена ссылка на сборку?)

2. "Выбор объекта в окне"
'Модуль 1' (28,51) : ошибка CS0118: "TFlex.PickPointMouseMove" является "тип", но используется как "переменная"

Одно дело если ошибки из-за особенностей моей системы...
Совсем другое дело когда примеры из Руководства оказываются с ошибками.
Да пребудет с тобой Sila.
 
А наводящий вопрос: ты в программировании разбираешься? К примеру с использованием C#? Спецификацию можно получить без API, зачем сразу обновлять я не пойму, но раз надо то надо. И можешь выложить пример простой схемы в несколько элементов и спецификации на это всё?
Изменено: Дмитрий - 01.04.2014 10:54:03
 
Цитата
Дмитрий пишет:
А наводящий вопрос: ты в программировании разбираешься? К примеру с использованием C#? Спецификацию можно получить без API, зачем сразу обновлять я не пойму, но раз надо то надо. И можешь выложить пример простой схемы в несколько элементов и спецификации на это всё?
При наличии грамотных доков смогу разобраться... C# очень похож на Java. Но вот с доками беда.
Как можно получить спецификацию с записью суммы длин линий?
Я нашел только два подхода: get(id1,id2;"LENGTH") и записи в базу данных. Оба подхода требуют использования API. Если есть еще подходы, прошу поделиться.
Да пребудет с тобой Sila.
 
Пример https://db.tt/Csahk8rb
Ну и по докам C# http://msdn.microsoft.com/
Изменено: Дмитрий - 01.04.2014 11:45:55
 
Хочется увидеть пример того, что должно получиться в итоге.
 
Цитата
Дмитрий пишет:
Пример https://db.tt/Csahk8rb
Ну и по докам C# http://msdn.microsoft.com/
Вот оно! :)
Я делал почти аналогичный фрагмент! Только не смог догнать как переменную фрагмента в спецификацию сборки засунуть!
API копать начал... :)
Теперь все ясно! :)
Ты просто гуру! :)
Второй плюсик дать не могу. :)
А по докам я имел в виду доки TFlexAPI. Надеюсь когданить/ктонить официальный отпишется по ошибкам примеров...
Да пребудет с тобой Sila.
 
Цитата
Belanchuk пишет:
Цитата
Дмитрий пишет:
Пример https://db.tt/Csahk8rb
Ну и по докам C# http://msdn.microsoft.com/
Вот оно!
Я делал почти аналогичный фрагмент! Только не смог догнать как переменную фрагмента в спецификацию сборки засунуть!
API копать начал...
Теперь все ясно!
Ты просто гуру!
Второй плюсик дать не могу.
А по докам я имел в виду доки TFlexAPI. Надеюсь когданить/ктонить официальный отпишется по ошибкам примеров...
Хочется увидеть пример того, что должно получиться в итоге.

Да и описанные выше ошибки из серии забытых using, но я сам плохо в этом разбираюсь.
 
Цитата
Belanchuk пишет:
Цитата
Дмитрий пишет:
Пример https://db.tt/Csahk8rb
Ну и по докам C# http://msdn.microsoft.com/
Вот оно!
Я делал почти аналогичный фрагмент! Только не смог догнать как переменную фрагмента в спецификацию сборки засунуть!
API копать начал...
Теперь все ясно!
Ты просто гуру!
Второй плюсик дать не могу.
А по докам я имел в виду доки TFlexAPI. Надеюсь когданить/ктонить официальный отпишется по ошибкам примеров...
Говорил же Вам, дайте пример и будет решение, возможно всё проще чем Вы думаете. А Дмитрий-Ванга однако))
 
Цитата
Sila Musli пишет:
Говорил же Вам, дайте пример и будет решение, возможно всё проще чем Вы думаете. А Дмитрий-Ванга однако))
Чо это? Со зрением всё в порядке (тьфу-тьфу-тьфу) и будущее не предсказываю :) Так, прохожу курсы телепатии :)
 
"Хочется увидеть пример того, что должно получиться в итоге."
Ок, как сделаю - скину.

"Да и описанные выше ошибки из серии забытых using, но я сам плохо в этом разбираюсь."
Первый пример дан полностью, со всеми необходимыми using.
Изменено: Belanchuk - 01.04.2014 17:25:25
Да пребудет с тобой Sila.
Страницы: 1 2 След.