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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Переопределение линии
 
Хочу повесить на кнопку макрос создающий линию с определенными свойствами (цвет, толщина).
Но в документации по 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.
Страницы: Пред. 1 2
Ответы
 
Цитата
Sila Musli пишет:
Говорил же Вам, дайте пример и будет решение, возможно всё проще чем Вы думаете. А Дмитрий-Ванга однако))
Вы просили у меня пример ДО того как Дмитрий его скинул! :)
Гдеж я бы его взял!? :)
Да пребудет с тобой Sila.
 
Цитата
Belanchuk пишет:
Цитата
Sila Musli пишет:
Говорил же Вам, дайте пример и будет решение, возможно всё проще чем Вы думаете. А Дмитрий-Ванга однако))
Вы просили у меня пример ДО того как Дмитрий его скинул!
Гдеж я бы его взял!?
Сделали бы?
Толком не остыл...
 
Цитата
Sila Musli пишет:
Цитата
Belanchuk пишет:
Цитата
Sila Musli пишет:
Говорил же Вам, дайте пример и будет решение, возможно всё проще чем Вы думаете. А Дмитрий-Ванга однако))
Вы просили у меня пример ДО того как Дмитрий его скинул!
Гдеж я бы его взял!?
Сделали бы?
Разве я бы стал создавать эту тему? :)
Да пребудет с тобой Sila.
 
У нас у сетевиков (ВК, электрика, ОВ) похожие вроде задачи. Те же трубы и спецификация. Я им предложил делать это через фрагменты. Фрагмент вставляется по вектору привязки. Длина (внешняя переменная) задается на чертеже с использованием манипуляторов. При стыковке фрагментов друг с другом можно использовать коннекторы для передачи информации от одного фрагмента другому. Все работает. И без программирования.
 
Цитата
Павел Перфильев пишет:
У нас у сетевиков (ВК, электрика, ОВ) похожие вроде задачи. Те же трубы и спецификация. Я им предложил делать это через фрагменты. Фрагмент вставляется по вектору привязки. Длина (внешняя переменная) задается на чертеже с использованием манипуляторов. При стыковке фрагментов друг с другом можно использовать коннекторы для передачи информации от одного фрагмента другому. Все работает. И без программирования.
1. Спасибо за методичку по созданию собственной библиотеки! :)
2. Для размещения фрагмента трубы вектором привязки пользоваться неудобно, даже используя манипуляторы.
Примеры:
http://yadi.sk/d/9Ob4W6f8Lm9q5 - сборка.
http://yadi.sk/d/70vX6J3bLm9q7 - манипулятор линия.
http://yadi.sk/d/fzqc1xy1Lm9qB - манипулятор окружность.
3. Коннекторы передают не только значения переменных, но и вектор направления (угол наклона), что совсем неприемлимо.
4. Вариант Дмитрия максимально удобен без использования API.
Да пребудет с тобой Sila.
 
Уважаемый Belanchuk
Методичка наверное очень древняя. Подходы уже переработаны.
По сути. Позвольте не согласиться с Вами. спользование узлов привязки - я практически только ими и пользуюсь при проектировании строительных конструций на основе проката. Но работаю на подоснове (сетка осей здания) В случае же схем использование узлов предполагает создание большого числа линий построений. Что на мой взгляд не есть хорошо. Вектор же привязки в совокупности с манипуляторами как раз позволяет уйти от лишних построений. Пример (без коннекторов) см. вложение. Во фрагменте есть небольшой нюанс в задании длины трубы. Только что закончил проект тепловой сети. И схему сети и план сети делал фрагментами на основе предлагаемого подхода. А для построения профиля еще используем коннекторы - достаточно эффективно получается. Правда сети не мой профиль. Просто помог коллеге, зашивается он. А идеи по манипуляторам и коннекторам я ему уже давно подкинул. Но вот сейчас сам проверил. И появились определенные мысли по совершенствованию. Сроки всегда жмут, приходится как-то выкручиваться.
Страницы: Пред. 1 2