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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp _.redrawall через ActivX

Lisp _.redrawall через ActivX

Ответ
Поиск в этой теме
Непрочитано 04.04.2013, 15:37 #1
Lisp _.redrawall через ActivX
sdv79
 
Инженер ЭОМ
 
Москва
Регистрация: 05.03.2009
Сообщений: 215

Подскажите как реализовать .redrawall через ActivX для модели.
В справке для Document object нашел только Regen Method. Это не устраивает.
Просмотров: 2166
 
Непрочитано 04.04.2013, 15:45
#2
Кулик Алексей aka kpblc
Moderator

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


(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acallviewports)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.04.2013, 15:57
#3
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


Разве (vla-regen (vla-get-act ... не тоже самое что (command "_regen")?
sdv79 вне форума  
 
Непрочитано 04.04.2013, 16:02
#4
Кулик Алексей aka kpblc
Moderator

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


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

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


Смотрел, только активное окно и все окна. Поэтому и сразу откинул посчитал ресурсоемкое, redrawall работает мгновенно. Что делать?
sdv79 вне форума  
 
Непрочитано 04.04.2013, 16:12
#6
Кулик Алексей aka kpblc
Moderator

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


"Подумал" что ресурсоемкое или "доказал"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.04.2013, 16:14
#7
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


)) Увидел в справке, подумал-откинул. Увидел Ваше сообщение и написал, проверил и удостоверился. Машина зависает.
(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
sdv79 вне форума  
 
Непрочитано 04.04.2013, 16:50
#8
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


А функция (redraw) чем не подходит?
skkkk вне форума  
 
Автор темы   Непрочитано 04.04.2013, 16:56
#9
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


Работа с ком. строкой не нравится. Нравятся тихие команды, например, предпочту (vla-insertblock вместо (command "_.insert".
Поэтому ищу альтернативу _redraw в ActivX. Кто знает, помогите.
sdv79 вне форума  
 
Непрочитано 04.04.2013, 17:02
#10
Кулик Алексей aka kpblc
Moderator

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


Из описания команды _.redrawall:
Цитата:
Refreshes the display of all viewports
Обрати внимание - ВСЕХ видовых экранов.
Цитата:
Сообщение от sdv79 Посмотреть сообщение
Машина зависает
Файл в студию. И код, который приводит к "зависанию".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.04.2013, 17:24
#11
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


Факт 100%, тормозит (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
Код:
[Выделить все]
 
(defun c:reg ()
 (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
)
(defun c:red ()
 (command "_.redrawall")
)
Вложения
Тип файла: rar Освещение поликлиники (4,5,6,7,8,9 этажи) (ЭО).rar (4.06 Мб, 19 просмотров)
sdv79 вне форума  
 
Непрочитано 04.04.2013, 17:28
#12
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от sdv79 Посмотреть сообщение
Работа с ком. строкой не нравится.
Я имею в виду функцию (redraw) , а не команду _redraw
Из описания функции redraw у Полещука:
Цитата:
Если опущены оба аргумента, то перерисовываются все объекты, видимые в текущем видовом экране.
skkkk вне форума  
 
Автор темы   Непрочитано 04.04.2013, 18:10
#13
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


skkkk (redraw) спасибо, но не подходит для работы с окнами.
Возможно в другой связке все будет ок. У меня окно, когда нажимаю на кнопку обновить, старые блоки+мвыноска удаляются. При (redraw) команде экран не обновляется.

Заметил, что данные для командной строки тоже не обновляются пока работаешь с окном, как с эти справится?

skkkk Вставленную цитату набирали или есть возможность скопировать с электронной версии
(у меня есть книга-бумага и в элект. версии как картинка. Часто не хватает возможности сразу выделить и применить. Если у вас таковая, поделитесь экземпляром)

Код:
[Выделить все]
 
 ((= Return# 4) ; нажата кнопка ОБНОВИТЬ

 (cond ; избавляемся от предыдущей расстановки светильников и выноски, дублирую в обновить
  ((and
    (=(type selection_set) (function pickset)) 
    (>= (sslength selection_set) 1)
;;;    (or
;;;     (= _button 4)
;;;     (= _button 5) ; расставить СП
;;;    ) ;/ or
    ) ;/ and
    (foreach a (mapcar(function vlax-ename->vla-object)(mapcar(function cadr)(ssnamex selection_set)))
;;;     (setq a (car (mapcar(function vlax-ename->vla-object)(vl-remove-if(function listp)(mapcar(function cadr)(ssnamex selection_good))))) )
     (vla-delete  a)
  ) ;/ foreach
 ))
 (setq selection_set nil)
 (redraw)
 ; (command "_.redrawall")
 (terpri) ; поднимаю сообщение вверх по ком. строке
  
  (if(null side_X)
;|1|; (alert "Укажите помещение")
;|2|; (c:Return#_4)
  ) ;/ if
  (princ "Данные обновлены") ; вот это не попадает в ком строку, а надо 
; причем после закрытия окна, в ком. строке запись появляется, столько,
; сколько раз нажали кнопку обновить.
 ) ;/ (= Return# 4)


Последний раз редактировалось sdv79, 04.04.2013 в 18:46.
sdv79 вне форума  
 
Непрочитано 04.04.2013, 19:35
#14
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Offtop:
Цитата:
Сообщение от sdv79 Посмотреть сообщение
Вставленную цитату набирали или есть возможность скопировать с электронной версии
набирал...благо десятипалый метод рулит
P.S. Но есть же еще диск с листингами.
skkkk вне форума  
 
Автор темы   Непрочитано 04.04.2013, 19:39
#15
sdv79

Инженер ЭОМ
 
Регистрация: 05.03.2009
Москва
Сообщений: 215
Отправить сообщение для sdv79 с помощью Skype™


skkkk Понятно.
sdv79 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp _.redrawall через ActivX

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 4555 24.03.2024 13:44
Умер разработчик языка программирования Lisp andr_g LISP 1 27.10.2011 08:36
Как настроить выход в интернет с комуникатора через блютуз и ПК KonGo Разное 15 01.04.2010 18:46
Как получить цвет фона модели ACAD через LISP? EfremenkoDO LISP 3 24.03.2010 12:09
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19