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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматическая "подсветка" изменненных размеров в ручную

Автоматическая "подсветка" изменненных размеров в ручную

Ответ
Поиск в этой теме
Непрочитано 20.01.2011, 11:47 #1
Автоматическая "подсветка" изменненных размеров в ручную
Konstruktiv54
 
Новосибирск
Регистрация: 31.01.2007
Сообщений: 1,040

Добрый день, уважаемые форумчане! )
Недавно наткнулся на программку dimcheck.lsp господина Протасова Г.Н.
При ёё запуске меняется цвет у откорректированных вручную размеров.
Нельзя ли изменить её так, что бы размер подкрашивался автоматически, после его корректировки?

Вложения
Тип файла: lsp dimcheck.lsp (2.6 Кб, 75 просмотров)

Просмотров: 3349
 
Непрочитано 20.01.2011, 13:57
#2
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Или с использованием ректоров

Код:
[Выделить все]
(defun objectModified(reac data / ) ; примитив изменен
  (if (= (strcase (cdr (assoc 0 (entget (cadr data))))) "DIMENSION")
    (setq last_change_dimension_obj (cadr data))
    )
)

(defun commandEnded(reac data / ed) ; конец какой-то комады ACad
  (if (and (member (car data) (list "DDEDIT" "_DDEDIT"))
           last_change_dimension_obj
           )
    (progn
      (setq ed (entget last_change_dimension_obj))
      (if (/= (cdr (assoc 1 ed)) "")
        (progn
          (setq ed (if (assoc 62 ed)
                     (subst (cons 62 1) (assoc 62 ed) ed) ; здесь вместо 1 (красный) можно задать другой цвет
                     (append ed (list (cons 62 1))) ; здесь вместо 1 (красный) можно задать другой цвет
                     )
                )
          (entmod ed)
          (entupd last_change_dimension_obj)
          )
        )
      (setq last_change_dimension_obj nil)
      )
    )
)


; -------------------------------------------------------------------
(setq AcDb_Reac (vlr-acdb-reactor "Реактор базы: "
		  (list '(:VLR-objectModified . objectModified)
			)
		  )
      )
; -------------------------------------------------------------------

; -------------------------------------------------------------------
(setq Cmnd_Reac (vlr-command-reactor "Реактор команд: "
		  (list '(:VLR-commandEnded . commandEnded)
			)
		  )
      )
; -------------------------------------------------------------------
Этот код нужно сохранить в какай-нибудь lisp файл и добавить этот файл в автозагрузку ACad'а
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 20.01.2011, 14:00
#3
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


TararykovDG, попробуй пары тэгов [code][lisp][/lisp][/code]:
Код:
[Выделить все]
 (defun objectModified(reac data / ) ; примитив изменен
  (if (= (strcase (cdr (assoc 0 (entget (cadr data))))) "DIMENSION")
    (setq last_change_dimension_obj (cadr data))
    )
)

(defun commandEnded(reac data / ed) ; конец какой-то комады ACad
  (if (and (member (car data) (list "DDEDIT" "_DDEDIT"))
           last_change_dimension_obj
           )
    (progn
      (setq ed (entget last_change_dimension_obj))
      (if (/= (cdr (assoc 1 ed)) "")
        (progn
          (setq ed (if (assoc 62 ed)
                     (subst (cons 62 1) (assoc 62 ed) ed) ; здесь вместо 1 (красный) можно задать другой цвет
                     (append ed (list (cons 62 1))) ; здесь вместо 1 (красный) можно задать другой цвет
                     )
                )
          (entmod ed)
          (entupd last_change_dimension_obj)
          )
        )
      (setq last_change_dimension_obj nil)
      )
    )
)


; -------------------------------------------------------------------
(setq AcDb_Reac (vlr-acdb-reactor "Реактор базы: "
		  (list '(:VLR-objectModified . objectModified)
			)
		  )
      )
; -------------------------------------------------------------------

; -------------------------------------------------------------------
(setq Cmnd_Reac (vlr-command-reactor "Реактор команд: "
		  (list '(:VLR-commandEnded . commandEnded)
			)
		  )
      )
; -------------------------------------------------------------------
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 20.01.2011, 14:17
#4
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от Лиспер Посмотреть сообщение
TararykovDG, попробуй пары тэгов [code][lisp][/lisp][/code]:


Лиспер, спасибо! Я не знал, что такой фунционал добавили. В справке по применению кодов и формул об это ничего нет. Или я не нашел?
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 20.01.2011, 14:23
#5
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Offtop: TararykovDG, если идти в нормальнй редактор (который с кнопочками), там есть дополнительная кнопка - как раз на форматирование lisp-кодов. В таком случае появляется дополнительная панель, позволяющая сразу и распечатать код, и посмотреть его, и скопировать в буфер. Чрезвычайно удобно. Еще раз спасибо Admin'у
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 21.01.2011, 07:00
#6
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Во ) почти то, что доктор прописал )
А можно как нибудь его заставить реагировать на _spdedit?
(у меня СПДС стоит)
а то _ddedit пользоваться не совсем удобно...

upd: скрипт выдает ошибку, обычно при сохранении...
; ошибка: В функции *error* возникла ошибка:invalid AutoCAD command: nil
; ошибка: В функции *error* возникла ошибка:invalid AutoCAD command: nil
; ошибка: В функции *error* возникла ошибка:invalid AutoCAD command: nil
; ошибка: В функции *error* возникла ошибка:invalid AutoCAD command: nil

Последний раз редактировалось Konstruktiv54, 21.01.2011 в 07:08.
Konstruktiv54 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматическая "подсветка" изменненных размеров в ручную