| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Линии электрических соединений

Линии электрических соединений

Ответ
Поиск в этой теме
Непрочитано 30.04.2012, 10:09 #1
Линии электрических соединений
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Прошу помощи в реализации идеи создании линии электрического соединения.

Суть такая, что нужно рисовать две линии - одну горизонтально и от нее сразу вертикальную без нажатия Enter. Нечто подобное есть в AutoCAD Electrical.
Хочется немного расширить/улучшить возможность рисования таких линий.

Более подробно:
1. Линии рисуются только ортогонально. 2. Первая линия может быть как вертикальная так и горизонтальная. 3. Начало второй линии должно начаться автоматически как только курсор выйдет за пределы X или Y.
т.е. например рисуем сначала горизонтальную линию. Тыкаем начальную точку, затем ведем в сторону на некоторое произвольное расстояние, останавливаемся, тянем курсор в верх или низ, выходим за предел Y и начинает рисоваться уже вертикальная линия. Завершаем тыком или по той же схеме продолжаем рисовать "змейку".

Вообще такое возможно то хоть реализовать в AutoCAD?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Просмотров: 16563
 
Непрочитано 30.04.2012, 11:33
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Ничерта не понял - пример рисуй.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 30.04.2012, 12:50
#3
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


На первом рисунке рисуем горизонтальную линию влево. Как только курсор (указатель) вышел за пределы (указаны пунктиром. Если что то они не рисуются Это воображаемые линии) рисование горизонтальной линии останавливается и начинается рисоваться вертикальная линия (второй рисунок), у которой также имеются пределы. Выход курсора за эти пределы будет рисовать горизонтальную линию и т.д.
Миниатюры
Нажмите на изображение для увеличения
Название: 01.JPG
Просмотров: 263
Размер:	21.4 Кб
ID:	79427  Нажмите на изображение для увеличения
Название: 02.JPG
Просмотров: 293
Размер:	30.2 Кб
ID:	79428  
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 30.04.2012, 13:33
#4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,085


Мое ржавое здравомыслие подсказывает, что замахаться можно с этим "умным" рисованием соед. линий. Такая штука реализована в PCAD'е, и от нее там кроме вреда никакой пользы И отключить нельзя Впрочем, как и все на свете, на любителя

Последний раз редактировалось kp+, 30.04.2012 в 13:39.
kp+ вне форума  
 
Автор темы   Непрочитано 30.04.2012, 15:39
#5
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Ну если грамотно все сделать то было бы неплохо... Кто бы помог наваять программку. Я даже не представляю как можно отслеживать курсор в акаде...
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 30.04.2012, 16:14
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772


Цитата:
Сообщение от Shoorup Посмотреть сообщение
как можно отслеживать курсор в акаде
grread в помощь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.04.2012, 16:54
#7
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,085


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Кто бы помог наваять программку
Можно подхомутить прогу рисования "облаков" из старой версии ET, там подобное реализовано, код должен быть открытый. только заменить дуги на прямые.
kp+ вне форума  
 
Автор темы   Непрочитано 30.04.2012, 16:55
#8
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Кулик Алексей aka kpblc, спасибо. На выходной поколупаю
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 01.05.2012, 09:46
#9
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


По моему какая-то хренотень с точки зрения использования, но интереса ради:
Код:
[Выделить все]
 (vl-load-com)
(defun c:test( / stop hor pt pos)
  ;rec ver ((lambda (frec)
  ;           (frec (getpoint "\n Start point ") (grread T 8) T))
  ;rec ver (lambda (pt pos hor)
  (SETQ pt (getpoint "\n Start point ")
        pos (grread T 8)
        stop T)
  (while stop  
         ((lambda (ptx)
            (if (or (/= (car pos) 5)
                    (> (abs (if hor
                                (- (cadr pt) (cadr (cadr pos)))
                                (- (car pt) (car (cadr pos)))))
                       (/ (getvar 'viewsize) 10.0)))
                (progn
                 (entmakex (list '(0 . "LINE") (cons 10 pt) (cons 11 ptx)))
                 (if (= (car pos) 5)
                     ;rec ver(frec ptx (grread T 8) (not hor))
                     (SETQ pt ptx ptx (grread T 8) hor (not hor))
                     ;rec ver (redraw))
                     (SETQ stop nil)
                     ))
                (progn
                 (redraw)
                 (grdraw pt ptx 2)
                 ;rec ver (frec pt (grread T 8) hor)
                 (SETQ pos (grread T 8)))))
          (if hor
              (cons (car (cadr pos)) (cdr pt))
              (cons (car pt) (cdr (cadr pos))))))
  (REDRAW))
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 01.05.2012 в 09:56.
Дима_ вне форума  
 
Непрочитано 01.05.2012, 09:51
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Вместо grread можно использовать dyndraw от А.Ривилиса.
Do$ вне форума  
 
Непрочитано 01.05.2012, 12:00
#11
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Дима_ Посмотреть сообщение
интереса ради
оу сколько сетку, не плохо, но у меня притормаживает и по правому клику вылетает ошибка
Цитата:
Сообщение от kp+ Посмотреть сообщение
Можно подхомутить прогу рисования "облаков" из старой версии ET, там подобное реализовано, код должен быть открытый. только заменить дуги на прямые.
это scetch
gomer вне форума  
 
Автор темы   Непрочитано 02.05.2012, 12:06
#12
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Дима_, спасибо за программу! Именно эту "хрень" и надо было сделать . Немного только подточить, а смысл правильный.

При задании начальной точки вставляет линию либо нулевой длины либо пару мм. Если просто прямую нарисовать то в начальной точке появится линия с нулевой длиной.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 02.05.2012, 12:23
#13
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Shoorup Посмотреть сообщение
При задании начальной точки вставляет линию либо нулевой длины либо пару мм. Если просто прямую нарисовать то в начальной точке появится линия с нулевой длиной.
Программа "считает" что первый отрезок будет вертикальным (если надо наоборот добавь в блок SETQ - между 7 и 8 строчку "hor T", ну или выбор какое направление - (initget "Гор Верт")(SETQ ... hor (= "Гор" (getkword "Направление[Гор/Верт]"))) - вобщем там сам разберись.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 02.05.2012, 16:00
#14
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Добавил "hor T" и все стало отлично. Спасибо еще раз!
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 02.05.2012, 16:15 Shoorup
#15
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Цитата:
все стало отлично
Будь добр, выложи код!
Подобное поведение курсора (эмуляция сетки с привязкой), реализовано мной в лоб, путем использования xref c массивом точек, и установке одной из текущих привязок - узел. Работает на всем (перенос, вставка блока, полилиния), реально с мощной машиной до А2-А1, можно и блоком, но блок гораздо тяжелее. Орто при таком приеме можно не включать, шаг между точками (2,5) или любой другой.

Последний раз редактировалось perpetule, 02.05.2012 в 16:51.
perpetule вне форума  
 
Непрочитано 10.05.2012, 15:30
#16
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


А может просто полилинию использовать?
Alexeipost вне форума  
 
Непрочитано 10.05.2012, 16:48 Alexeipost
#17
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Смысл всей этой песни, не в полилинии, не в отрезке, не в 3Dполилинии, а в возможности быстро и не напряжно для нервов чертить схемки с шагом, и не абы как. Так можно вовсе обходится без привязок, чертить быстро и аккуратно. Жаль автор топика промолчал.
perpetule вне форума  
 
Непрочитано 11.05.2012, 07:51
#18
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


В автокаде сетка есть. Включается и отключается клавишей F7.
Кстати из описания проблемы в первом посте, мало что понятно.
Alexeipost вне форума  
 
Непрочитано 11.05.2012, 09:30
#19
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Цитата:
В автокаде сетка есть
, а вот привязки (не шаг) к ней нет, шаг же вымораживает все нервы.
perpetule вне форума  
 
Непрочитано 11.05.2012, 10:41
#20
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 425
<phrase 1=


Вымораживает! Поэтому и отключен!
Для того чтобы была привязка к сетке можно сделать саму сетку. Делаешь блок с нужным шагом сетки и вставляешь операцию массив. Далее вставляешь этот блок и слой блокируешь. Блок никуда не уедет и не изменится. И сетка и привязка есть! Для удобства можно отключить привязку средней точки.
Вложения
Тип файла: dwg
DWG 2007
Сетка.dwg (106.2 Кб, 3630 просмотров)
Alexeipost вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Линии электрических соединений

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Несплошные линии, X-refы и... задача Vova AutoCAD 6 20.04.2018 16:14
Осевые и штрихпунктирные линии (вывод на печать) Klop AutoCAD 3 09.01.2008 11:45
Как сгладить 2 линии. Или как сгладить только часть линии. Димас AutoCAD 3 14.03.2006 08:28
Загрузка типа линии из макроса Кулик Алексей aka kpblc Программирование 4 24.01.2005 14:57