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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Лисп (создание фильтров)

Лисп (создание фильтров)

Ответ
Поиск в этой теме
Непрочитано 13.07.2005, 23:26 #1
Лисп (создание фильтров)
Torero
 
Инженер-конструктор
 
Минск, Беларусь
Регистрация: 25.09.2004
Сообщений: 315

Еслть ли у кого лисп делающий все необх фильтры.... Ну или хотя-бы 2 -3 чтобы можно было откоректировать... Лучше чтобы перед созданием удалялись все старые фильры...
__________________
Постинг воспринимать как личное мнение.
Просмотров: 3878
 
Непрочитано 14.07.2005, 01:33
#2
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Имеешь в виду фильтры слоев?
"Делать" их довольно просто - достаточно что нибудь притащить из другого файла и все фильтры притащатся (в 2002 работает, а потом кажется это исправили).

Вот тут есть моя программка от 2004-12-03 16:16:17, которая оставляет только нужные фильтры, остальные удаляет. Для создания фильтров "с нуля" не делал.
vk вне форума  
 
Непрочитано 14.07.2005, 03:38 Re: Лисп (создание фильтров)
#3
Залётный


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


Цитата:
Сообщение от Torero
Еслть ли у кого лисп делающий все необх фильтры.... Ну или хотя-бы 2 -3 чтобы можно было откоректировать... Лучше чтобы перед созданием удалялись все старые фильры...
Для удаления фильтров пользуюсь daps.lsp от Crans Chris.

Взята отсюда:
http://discussion.autodesk.com/threa...sageID=1128314

Для создания фильтров пользуюсь MlayerF.lsp от Kojacek.

Взята отсюда:
http://discussion.autodesk.com/threa...sageID=1169460


Всё работает без проблем.
Залётный вне форума  
 
Автор темы   Непрочитано 14.07.2005, 08:52
#4
Torero

Инженер-конструктор
 
Регистрация: 25.09.2004
Минск, Беларусь
Сообщений: 315


Я такую фишку хочу сделать:
По команде лисп удаляет все старые фильтры, создает новые фильтры, создает новые слои, переносит созданные слои в фильтры. Но по сути перевод в фильтры не нужен... Проги посмотрю на работе... Спасибо.
__________________
Постинг воспринимать как личное мнение.
Torero вне форума  
 
Автор темы   Непрочитано 15.07.2005, 08:53
#5
Torero

Инженер-конструктор
 
Регистрация: 25.09.2004
Минск, Беларусь
Сообщений: 315


Я не разобрался как эти программы запускать...
__________________
Постинг воспринимать как личное мнение.
Torero вне форума  
 
Автор темы   Непрочитано 16.07.2005, 13:53
#6
Torero

Инженер-конструктор
 
Регистрация: 25.09.2004
Минск, Беларусь
Сообщений: 315


TO VK

В твоей программе какая-то ошибка. Автокад 2005 пишет:
; error: no function definition: VLAX-
__________________
Постинг воспринимать как личное мнение.
Torero вне форума  
 
Непрочитано 16.07.2005, 15:20
#7
Залётный


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


Цитата:
Сообщение от Torero
Я не разобрался как эти программы запускать...
Сначала хочу извиниться. Первый линк ошибочный. Поэтому начну со второго.

1. Создание фильтров.
Это код, который я использую:

;-----------------------------
;;;
;;; Function can define a named layer filter
;;; by Jacek (kojacek) kojacek@poczta.onet.pl (2000)
;;;
(defun dict:MlayerF (NAME FILTER / LayTbl ExtDict LayColl
ExtDictData GrpList NewDict
Temp XdLst XrecData NewXRec
)
(setq LayTbl (cdr (assoc 330 (entget (tblobjname "LAYER" "0")))))
(setq ExtDict (cdr (assoc 360 (entget LayTbl))))
(if
(not ExtDict)
(progn
(vl-load-com)
(setq LayColl (vla-get-layers (vla-get-activedocument
(vlax-get-acad-object))))
(setq ExtDict (vla-GetExtensionDictionary LayColl))
(setq ExtDict (vlax-vla-object->ename ExtDict))
)
)
(setq ExtDictData (entget ExtDict))
(while ExtDictData
(setq Temp
(if (= (caar ExtDictData) 3)
(list (cons (cdr (car ExtDictData))
(cdr (cadr ExtDictData))))
)
ExtDictData (cdr ExtDictData)
)
(setq GrpList (append GrpList Temp))
)
(if
(or (not GrpList)
(not (cdr (assoc "ACAD_LAYERFILTERS" GrpList))))
(progn
(setq DictList (list (cons 0 "DICTIONARY")
(cons 100 "AcDbDictionary")))
(setq NewDict (entmakex DictList))
(setq NewDict (dictadd ExtDict "ACAD_LAYERFILTERS" NewDict))
)
(setq NewDict (cdr (assoc "ACAD_LAYERFILTERS" GrpList)))
)
(setq ExtDictData Nil Temp Nil GrpList Nil)
(setq ExtDictData (entget NewDict))
(while ExtDictData
(setq Temp
(if (= (caar ExtDictData) 3)
(list (cons (cdr (car ExtDictData))
(cdr (cadr ExtDictData))))
)
ExtDictData (cdr ExtDictData)
)
(setq GrpList (append GrpList Temp))
)
(if
(or (not GrpList)
(not (cdr (assoc FILTER GrpList)))
)
(progn
(setq XdLst (list (cons 0 "XRECORD")
(cons 100 "AcDbXrecord")))
(setq XrecData
(append XdLst
(list (cons 1 NAME)(cons 1 FILTER)(cons 1 "*")(cons 1 "*")
(cons 70 0)(cons 1 "*")(cons 1 "*")))
)
(setq NewXRec (entmakex XRecData))
(dictadd NewDict Name NewXRec)
)
Nil
)
)
(dict:MLayerF "PLBG" "P-*,*|P-*,PZ-*,*|PZ-*,PZZ-*,*|PZZ-*,*|PE-*")
(dict:MLayerF "ELEC" "E-*,*|E-*,EZ-*,*|EZ-*,EZZ-*,*|EZZ-*,*|EE-*")
;---------------------------

Он создаёт два фильтра - PLBG и ELEC (см две последнии линии кода).
Фильтр PLBG показывает слои, которые в оригинальном и референс черетежах начинаются с P- , PZ- и PZZ-
Фильтр ELEC показывает слои, которые в оригинальном и референс черетежах начинаются с E- , EZ- и EZZ-
Можно создать фильтров сколько угодно.

Сохраняешь файл в директории включённой в путь поиска AutoCAD, например, с именем FILTERS01.lsp.
Запускаешь из меню [FILTERS]^C^C^C(LOAD "FILTERS01.LSP").

2. Удаление фильтров.
Довольно давно на Autodesk(овском) сайте нашёл код, которым и пользуюсь (кто автор не помню):

;-------------------------
(defun C:LayerFiltersDelete ()
(vl-Load-Com)
(vl-Catch-All-Apply
'(lambda ()
(vla-Remove (vla-GetExtensionDictionary
(vla-Get-Layers
(vla-Get-ActiveDocument
(vlax-Get-Acad-Object))))
"ACAD_LAYERFILTERS")))
(princ "\nAll layer filters have been deleted.")
(princ))

(defun C:LFD () (C:LayerFiltersDelete))
:--------------------------------

Сохранил с именем LFD.lsp
Когда необходимо делаю appload и запускаю из командной строки.

3. По поводу первого линка в моём предыдущем постинге, может пригодится.
Эта программа удаляет установки бумаги. Я её использую в своём меню перед тем, как импортировать новые.

Удачи!
Залётный вне форума  
 
Автор темы   Непрочитано 16.07.2005, 17:57
#8
Torero

Инженер-конструктор
 
Регистрация: 25.09.2004
Минск, Беларусь
Сообщений: 315


Спасибо... В принципе с программкими я разобрался, тока не знал как одному фильтру присвоить разные критерии... Спасибо...
Хотелось бы еще VK услышать... Мне его прога понравилась именно за то что она оставляет указанные фильтры...[/b]
__________________
Постинг воспринимать как личное мнение.
Torero вне форума  
 
Непрочитано 16.07.2005, 23:28
#9
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


>Torero

Программа практически не отлаживалась, сам пользуюсь ей довольно редко. К сожалению на своих чертежах не могу воспроизвести эту сбойную ситуацию. Если не сложно, замыль нечищеный фрагмент чертежа, где эта прога дает ошибку. Ну и имена фильтров, которые необходимо оставить. Попробую разобраться.

Хотя, по идее, такого
Цитата:
; error: no function definition: VLAX-
сообщения об ошибке быть не должно. В программе используются функции (vlax-release-object), (vlax-for), (vlax-variant-value), (vlax-safearray-get-element), (vlax-safearray->list). А функции (vlax-) нет в программе. Не затесался ли куда то лишний пробел или конец строки случайно?

Кстати, в виде текстового (.LSP) файла эта прога лежит на http://vkle.bazarov.net/afd.zip
vk вне форума  
 
Автор темы   Непрочитано 17.07.2005, 19:03
#10
Torero

Инженер-конструктор
 
Регистрация: 25.09.2004
Минск, Беларусь
Сообщений: 315


>VK
Ты был парв насчет пробелов, спасибо... )
__________________
Постинг воспринимать как личное мнение.
Torero вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Лисп (создание фильтров)