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

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

Добавить Purge и audit в лисп

Ответ
Поиск в этой теме
Непрочитано 20.11.2014, 12:48
Добавить Purge и audit в лисп
Svolo4
 
Регистрация: 29.02.2008
Сообщений: 115

Добрый день. Есть лисп (автор VVA), который удаляет из файла словари
Код:
[Выделить все]
 (defun C:DR ( / notdelete)
  ;;;notdelete список неудаляемых словарей
  (setq notdelete '("ACAD_IMAGE_DICT" "ACAD_IMAGE_VARS"))
	(mapcar
	'(lambda(d)
	(vl-catch-all-apply '(lambda()(if (not(member d notdelete))(dictremove (namedobjdict) d)))))
	(mapcar 'cdr(vl-remove-if-not '(lambda(x)(= (car x) 3))(entget(namedobjdict))))
	)
  )
Как сделать так, чтобы после выполнения команды DR запускался purge с удалением вложенных элементов и после audit с исправлением ошибок?
Просмотров: 25988
 
Непрочитано 08.08.2024, 11:29
#41
cancanchuc

инженер-конструктор
 
Регистрация: 12.10.2011
Краснодар
Сообщений: 20


Всем добрый день!
Подскажите как добавить исключения в файл очистки, чтобы не удалялись элементы программы VetCAD++?
cancanchuc вне форума  
 
Непрочитано 08.08.2024, 15:57
#42
Кулик Алексей aka kpblc
Moderator

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


Для начала было бы неплохо вообще эти элементы определить. Хоть как-то
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.08.2024, 20:10
#43
cancanchuc

инженер-конструктор
 
Регистрация: 12.10.2011
Краснодар
Сообщений: 20


В этом то и вопрос. Может здесь есть те, кто определил как эти элементы называются.
cancanchuc вне форума  
 
Непрочитано 08.08.2024, 20:41
#44
Кулик Алексей aka kpblc
Moderator

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


Offtop: Тут уж проще будет автора VetCAD спросить, наверное
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.08.2024, 20:53
#45
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:

Вот что написал мне автор Веткада:
"Добрый день!
Пока нет возможности посмотреть файлы детальнее, но если нужно
исключить словари веткада, то это должно быть просто. Они все
начинаются на VETCAD, если мне память не изменяет.
Поэтому исключающий if может выглядеть так:
(if (and (not (wcmatch (strcase d) "ACAD_*"))
(not (wcmatch d "AcDb*"))
(not (wcmatch (strcase d) "VETCAD*"))
) ;_ end of and
(dictremove (namedobjdict) d)
) ;_ end of if"
https://www.proektant.org/index.php/...html#msg316290
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 09.08.2024, 09:10
#46
Кулик Алексей aka kpblc
Moderator

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


Как вариант чистки, без проверок и тестов.
Код:
[Выделить все]
 (vl-load-com)
(defun c:like-full-purge (/ adoc fun_purge-and-audit) 

  (defun fun_purge-and-audit (adoc / sysvars) 
    (repeat 3 (vla-purgeall adoc))
    (setq sysvars (mapcar 
                    (function 
                      (lambda (x / temp) 
                        (setq temp (getvar (car x)))
                        (setvar (car x) (cdr x))
                        (cons (car x) temp)
                      )
                    )
                    '(("cmdecho" . 0)
                      ("menuecho" . 0)
                      ("nomutt" . 1)
                     )
                  )
    )
    (vl-catch-all-apply 
      (function 
        (lambda () 
          (vl-cmdf "_.-purge" "_e")
          (vl-cmdf "_.-purge" "_z")
        )
      )
    )
    (foreach item sysvars 
      (setvar (car item) (cdr item))
    )
    (vla-auditinfo adoc ::vlax-true)
    (repeat 3 (vla-purgeall adoc))
  )

  (vl-load-com)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (fun_purge-and-audit adoc)
  (vlax-for dict (vla-get-dictionaries adoc) 
    (if 
      (or (not (vlax-property-available-p dict 'name)) 
          (not (wcmatch (vla-get-name dict) "ACAD_*,AcDb*"))
          (not (wcmatch (strcase (vla-get-name dict)) "VETCAD*"))
      )
      (vl-catch-all-apply 
        (function 
          (lambda () 
            (vla-delete dict)
          )
        )
      )
    )
  )
  (fun_purge-and-audit adoc)
  (vla-endundomark adoc)
  (princ)
)
Offtop: Я просто не помню, вычищает vla-purgeall пустые тексты и нулевую длину или нет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Добавить Purge и audit в лисп



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды? overband LISP 43 07.02.2013 14:47
результат работ команд purge и audit lex0101 Программирование 23 13.02.2012 08:34
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08
Нужен лисп (добавить вершину в полилинию) Димас LISP 39 04.07.2006 11:08