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

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

Программное редактирование динблока в реальном времени

Ответ
Поиск в этой теме
Непрочитано 05.10.2009, 08:25 #1
Программное редактирование динблока в реальном времени
Krieger
 
инженер (КМ)
 
Красноярск
Регистрация: 30.10.2004
Сообщений: 3,837

Вставить динблок программно и потом отредактировать его свойства можно. Хочется делать это в динамике. Т.е. вставили блок и как-то сразу без участия пользователя хватаем за какую либо определенную его динамическую ручку, чтобы дальше ведя курсор он соответсвенно своим параметрам изменялся. Или отслеживать курсор относительно точки вставки и постоянно перестраивать динблок чтобы пользователь видел результат в реальном времени.
Такое возможно? Кто-нибудь делал?
__________________
Делай хорошо, плохо само получится.
Просмотров: 5053
 
Непрочитано 05.10.2009, 08:40
#2
Кулик Алексей aka kpblc
Moderator

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


Меняй значение дин.параметра, выполняй регенерацию или обновление примитива, потом аналог
Код:
[Выделить все]
(defun lsp-delay (pse / oldtim newtim tim)
  (setq oldtim (getvar "TDUSRTIMER") ;SET INITIAL TIME
        tim    0
        ) ;SET ELAPSED TIME TO 0
  (while (< tim pse)
    (setq newtim (getvar "TDUSRTIMER") ;GET NEW TIME
          tim    (* (- newtim oldtim) 86400000.0) ;FIND ELAPSED TIME
          ) ;_ end of setq
;    (grtext -2 (itoa (fix (/ tim 1000)))) ;SHOW ELAPSED TIME
    ) ;_ end of while
  (princ)
  ) ;_ end of defun
И по идее этого достаточно.
Источник кода не помню
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.10.2009, 08:53
#3
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


И чего этот код делает?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 05.10.2009, 10:25
#4
Кулик Алексей aka kpblc
Moderator

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


Как бы пауза, в миллисекундах. "Примерно ровно" вычисляет
Код:
[Выделить все]
(defun test (/ start end aa)
  (setq aa (getvar "date"))
  (princ (strcat "\nTime : " (rtos (setq start (* 86400.0 (- aa (fix aa)))) 2 14)))
  (lsp-delay 5000)
  (setq aa (getvar "date"))
  (princ (strcat "\nTime : " (rtos (setq end (* 86400. (- aa (fix aa)))) 2 14)))
  (princ (strcat "\nDiff : " (rtos (- end start) 2 4)))
  (princ)
  ) ;_ end of defun
Вернет, к примеру:
Код:
[Выделить все]
_$ (test)

Time : 37473.77602010966
Time : 37478.79099994898
Diff : 5.0150
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.10.2009, 14:22
#5
Serge_BN

инженер
 
Регистрация: 18.04.2007
Оренбург
Сообщений: 71


Цитата:
Сообщение от Krieger Посмотреть сообщение
...вставили блок и как-то сразу без участия пользователя хватаем за какую либо определенную его динамическую ручку, чтобы дальше ведя курсор он соответсвенно своим параметрам изменялся...
Правильно.Вот и некоторые заказчики тоже говорят:"Ну нахрена эти инженеры-проектировщики нужны. Только сидят, штаны протирают, бумагу переводят. Да еще деньги плати им. Нет чтоб щелкнул пару раз и проект готов. Че там думать, щелкать надо быстрее."
Serge_BN вне форума  
 
Автор темы   Непрочитано 06.10.2009, 17:33
#6
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Что к чему...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.10.2009, 08:37
#7
Serge_BN

инженер
 
Регистрация: 18.04.2007
Оренбург
Сообщений: 71


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Как бы пауза, в миллисекундах. "Примерно ровно"...
Time : 37473.77602010966
Time : 37478.79099994898
Diff : 5.0150
Для того,
Цитата:
Сообщение от Krieger Посмотреть сообщение
...чтобы пользователь видел результат в реальном времени.
Такое возможно? Кто-нибудь делал?
Serge_BN вне форума  
 
Автор темы   Непрочитано 13.10.2009, 08:09
#8
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Меняй значение дин.параметра, выполняй регенерацию или обновление примитива, потом аналог
Так, ну вроде получилось что-то. Курсор отслеживаю по grread в функции while. В принципе и без паузы lsp-delay работает, но я так понимаю она нужна для экономии ресурсов.
А что делать с привязками при работе с grread, как их включить?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 13.10.2009, 08:21
#9
Кулик Алексей aka kpblc
Moderator

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


Евгений Елпанов (по-моему, на caduser'e) вроде обрабатывал привязки вместе с grread. К сожалению, точно не помню ни адреса, ни кода
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.11.2009, 11:54
#10
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Kpblc
Можно ли померить DynDraw от Ривилиса и твою _kpblc-block-dyn-change-values? Я попробовал использовать её в callback-функции, но кад вылетает с фатальной ошибкой.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 02.11.2009, 12:02
#11
Кулик Алексей aka kpblc
Moderator

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


вот чего-чего, а причину отследить не могу Надо по идее полный код смотреть, а у меня со временем напряг
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.11.2009, 12:13
#12
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


В смысле, ты попробовал и у тебя тоже вылетает?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 02.11.2009, 12:51
#13
Кулик Алексей aka kpblc
Moderator

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


Нет. В смысле: надо смотреть полный код и его тщательно анализировать. А у меня сейчас шансов на это никаких
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.11.2009, 12:18
#14
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Евгений Елпанов (по-моему, на caduser'e) вроде обрабатывал привязки вместе с grread. К сожалению, точно не помню ни адреса, ни кода
Действительно, я выкладывал такую программу на болоте.

По поводу глюка автокада, при изменении определений блоков с одновременным использованием DynDraw - подтверждаю! Я не смог побороть плавающую ошибку с вылетом автокада в версиях 2007+. В этом году, был вынужден полностью переписать DynDraw на лиспе...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 03.11.2009, 12:28
#15
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Так решили проблему?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 03.11.2009, 12:37
#16
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Krieger Посмотреть сообщение
Так решили проблему?
Я же сказал, решить с DynDraw не смог!
Пришлось для своего коммерческого проекта, написать новую программу, аналог DynDraw. Т.е. в цикле grread поддержка своих курсоров, привязок, выпадающих меню, клавиатурных сокращений, работы с выпадающими меню и кнопками в тулбарах. Все это без выхода из цикла, с одновременным запуском своих подпрограмм.

ps. Эта программа не может быть опубликована на форуме. Пример использования, можно увидеть на видео роликах, на моем сайте...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное редактирование динблока в реальном времени

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Google SketсhUp в помощь архитекторам. Как и где приобрести программу? Igla Прочее. Программное обеспечение 14 03.07.2009 17:02
Редактирование группы текстовых объектов с минимальной затратой времени FedoZZZ AutoCAD 1 10.12.2008 01:57
NanoСПДС gest Другие CAD системы 401 15.07.2008 14:50
автокад 2002 - Не работает кнопка панорамирование в реальном времени paradoxvaha Вертикальные решения на базе AutoCAD 2 05.03.2008 10:52