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

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

Выделение размеров

Ответ
Поиск в этой теме
Непрочитано 18.04.2008, 11:21 #1
Выделение размеров
Jerald
 
Конструктор
 
Киев
Регистрация: 04.04.2007
Сообщений: 536

Можно ли одним махом выделить все размеры на чертеже?
Просмотров: 16429
 
Непрочитано 18.04.2008, 11:31
#2
stekhov


 
Регистрация: 01.07.2005
Вавилон
Сообщений: 42


Да, команда фильтра "fi"
__________________
I've got to get back to work. When I stop rowing, the slave ship just goes in circles.
stekhov вне форума  
 
Непрочитано 18.04.2008, 11:33
#3
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Можно - но самое правильное их в отдельный слой рисовать
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.04.2008, 13:20
#4
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


stekhov, лучше _.FILTER
Чтобы сработало в любом Автокаде.
Makswell вне форума  
 
Непрочитано 18.04.2008, 13:33
#5
Кулик Алексей aka kpblc
Moderator

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


_.qselect
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.04.2008, 16:53
#6
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
_.qselect
Не знаю насчёт фильтров, но вот это точно НЕ ВСЕ выделит. Потому что он различает угловые, радиусные и остальные размеры, а пункта "все размеры" там нема.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 18.04.2008, 17:09
#7
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


Всем размерам - одно место. Это естественно.
А вот как быстро (или двумя махами) определить (убедиться), все ли размеры на одном слое?

Бывает, увлекся и, не глянув на имя тек. слоя, проставил ладно бы один забытый, а ведь штук эдак несколько.
BM60 вне форума  
 
Непрочитано 18.04.2008, 17:13
#8
paradplanet


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


Цитата:
Сообщение от Bull Посмотреть сообщение
Не знаю насчёт фильтров, но вот это точно НЕ ВСЕ выделит. Потому что он различает угловые, радиусные и остальные размеры, а пункта "все размеры" там нема.
Ставишь галочку добавить к выделенному и вибераеш какие тебе нужны.
paradplanet вне форума  
 
Непрочитано 18.04.2008, 17:30
#9
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от BM60 Посмотреть сообщение
А вот как быстро (или двумя махами) определить (убедиться), все ли размеры на одном слое?
Погасив лампочку слоя размеры.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 18.04.2008, 17:31
#10
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от paradplanet Посмотреть сообщение
Ставишь галочку добавить к выделенному и вибераеш какие тебе нужны.
Так это уже не одним махом, а тремя
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 19.04.2008, 14:10
#11
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 598
<phrase 1=


Очень удобная программа http://www.caduser.ru/cgi-bin/f1/board.cgi?t=37949gn
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Автор темы   Непрочитано 22.04.2008, 12:06
#12
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


Цитата:
Сообщение от stekhov Посмотреть сообщение
Да, команда фильтра "fi"
Вызвал "fi", выпрыгнуло окно, а что дальше делать?
Jerald вне форума  
 
Автор темы   Непрочитано 22.04.2008, 12:09
#13
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Можно - но самое правильное их в отдельный слой рисовать
Ты имеешь ввиду програмно (автоматически), или "вручную"?
Jerald вне форума  
 
Непрочитано 22.04.2008, 12:20
#14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от BM60 Посмотреть сообщение
Всем размерам - одно место. Это естественно.
А вот как быстро (или двумя махами) определить (убедиться), все ли размеры на одном слое?

Бывает, увлекся и, не глянув на имя тек. слоя, проставил ладно бы один забытый, а ведь штук эдак несколько.
Одним махом (скопировать в командную строчку или повесить на кнопку)
Код:
[Выделить все]
(SSSETFIRST nil (ssget "_X" '((0 . "*DIMENSION"))))
И смотришь на панель слоев. Если там пусто, значит слои разные. Или на строчку "Слой" окна свойств. Там даже напишут "*разные*"
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 22.04.2008 в 15:29. Причина: Орфография
VVA вне форума  
 
Непрочитано 22.04.2008, 13:03
#15
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


Дык лампочку-то и пользовал. А вот кнопочкой удобней небось. Спасибо.

А тогда бы ишо (шобниченеделать), вторым махом, если они выделяются, закинуть в общий "Dim". Ща поглядим-с...
BM60 вне форума  
 
Непрочитано 22.04.2008, 13:35
#16
stekhov


 
Регистрация: 01.07.2005
Вавилон
Сообщений: 42


Цитата:
Сообщение от Jerald Посмотреть сообщение
Вызвал "fi", выпрыгнуло окно, а что дальше делать?
Гы!!!
1. в пространстве модели нажать CTRL+A
2. Как умные люди подсказывают _.FILTER
3. В открывшемся окне под словами Select Filter выбираем "Dimention", жмем "Add to list", жмём "Apply"

У меня работает.

PS
VVA Шаман!
__________________
I've got to get back to work. When I stop rowing, the slave ship just goes in circles.

Последний раз редактировалось stekhov, 22.04.2008 в 13:58.
stekhov вне форума  
 
Непрочитано 22.04.2008, 14:13
#17
alexhach


 
Регистрация: 15.10.2007
Пермский край
Сообщений: 93


to BM60.
Цитата:
Бывает, увлекся и, не глянув на имя тек. слоя, проставил ладно бы один забытый, а ведь штук эдак несколько.
Чтобы этого не происходило используй реакторы. Т.е. при выполнении команд рисования размеров, текстов и т.д., примитивы будут выполняться в своих слоях. Примерно так.
Код:
[Выделить все]
(vl-load-com)
(vlr-command-reactor 
	(setq OldLayer (getvar "CLAYER"))
	'((:vlr-commandWillStart . startCommand)))
(vlr-command-reactor 
	nil '((:vlr-commandEnded . endCommand)))
(vlr-command-reactor 
	nil '((:vlr-commandCancelled . cancelCommand)))
;******************************************************
(defun startCommand (calling-reactor startcommandInfo /
;		     thecommandstart
		     )
(setq thecommandstart (nth 0 startcommandInfo))
(cond
  ((= thecommandstart "MTEXT") (setvar "CLAYER" "ТЕКСТ"))
  ((= thecommandstart "HATCH") (setvar "CLAYER" "ШТРИХ"))
  ((= thecommandstart "BHATCH") (setvar "CLAYER" "ШТРИХ"))
  ((= thecommandstart "DIMLINEAR") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMALIGNED") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMRADIUS") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMDIAMETER") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMANGULAR") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "QDIM") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMARC") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMBASELINE") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMCONTINUE") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "TOLERANCE") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "DIMCENTER") (setvar "CLAYER" "РАЗМ"))
  ((= thecommandstart "MLEADER") (setvar "CLAYER" "ПОЗ"))
  ((= thecommandstart "-VPORTS") (setvar "CLAYER" "ВЭКРАН"))
);cond
(princ)
);defun
;****************************************************
(defun endCommand (calling-reactor endcommandInfo / 
		   thecommandend)
(setq thecommandend (nth 0 endcommandInfo))
(cond
  ((= thecommandend "MTEXT") (setvar "CLAYER" OldLayer))
  ((= thecommandend "HATCH") (setvar "CLAYER" OldLayer))
  ((= thecommandend "BHATCH") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMLINEAR") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMALIGNED") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMRADIUS") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMDIAMETER") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMANGULAR") (setvar "CLAYER" OldLayer))
  ((= thecommandend "QDIM") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMARC") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMBASELINE") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMCONTINUE") (setvar "CLAYER" OldLayer))
  ((= thecommandend "TOLERANCE") (setvar "CLAYER" OldLayer))
  ((= thecommandend "DIMCENTER") (setvar "CLAYER" OldLayer))
  ((= thecommandend "MLEADER") (setvar "CLAYER" OldLayer))
  ((= thecommandend "-VPORTS") (setvar "CLAYER" OldLayer))
);cond
 (princ)
);defun
;********************************************************
(defun cancelCommand (calling-reactor cancelcommandInfo / 
		      thecommandcancel)
(setq thecommandcancel (nth 0 cancelcommandInfo))
(cond
  ((= thecommandcancel "MTEXT") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "HATCH") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "BHATCH") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMLINEAR") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMALIGNED") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMRADIUS") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMDIAMETER") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMANGULAR") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "QDIM") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMARC") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMBASELINE") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMCONTINUE") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "TOLERANCE") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "DIMCENTER") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "MLEADER") (setvar "CLAYER" OldLayer))
  ((= thecommandcancel "-VPORTS") (setvar "CLAYER" OldLayer))
);cond
(princ)
);defun
;*********************************************************
(princ)
Названия слоёв поставь свои. Сохрани файл с кодом (допустим reaktor.lsp). Положи в автозагрузку. И теперь все размеры будут всегда на нужном слое. Соотвественно как и остальные прмитивы. Для выделения всех размеров будет достаточно изолировать слой с размерами.
alexhach вне форума  
 
Непрочитано 22.04.2008, 14:40
#18
Кулик Алексей aka kpblc
Moderator

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


Тема http://dwg.ru/f/showthread.php?t=2721 не просматривалась
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.04.2008, 15:20
#19
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


Спасибо за лиспик.
BM60 вне форума  
 
Непрочитано 22.04.2008, 15:34
#20
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


BM60, вот ещё вариант. Здесь без реакторов. Написано давно, всё руки не доходят переписать, чтобы было без командных методов. Но если честно признаться, использую до сих пор, потому что проблемы вроде не наблюдались.
Код:
[Выделить все]
(defun m-dim (DimCommandName / OldLayer)
;;;m-dim (DimCommandName) - простановка размеров на слой "M-04-размеры"
;;;--------------------------------------------------------------------------------------------
;;;Пример вызова (m-dim "_.dimlinear")) - простановка линейного размера на слой "M-04-размеры"
;;;Выполняет соответствующую команду простановки размера (команда, заключенная в кавычки является аргументом)
;;;--------------------------------------------------------------------------------------------
;;;используются функции:
;;;m-layer-new (lyr col ltp lwg prnt_yn) - сoздание слоя без установки его текущим
;;;m-search-layer (M-Layer) - проверка существует ли слой в чертеже
;;;--------------------------------------------------------------------------------------------  
  (if (not (m-tblsearch-layer "M-04-размеры"))
    (m-layer-new "M-04-размеры" "2" "Continuous" "0.15" "_p")
  )
  (setq OldLayer (getvar "CLayer"))
  (setvar "Clayer" "M-04-размеры")
  (vl-cmdf DimCommandName)
  (while (not (zerop (getvar "cmdactive"))) (vl-cmdf pause))
  (setvar "Clayer" OldLayer)
  (princ)
)

(defun m-layer-new (lyr col ltp lwg prnt_yn)
;;;layer-new (lyr col ltp lwg prnt_yn) - сoздание слоя без установки его текущим
;;;--------------------------------------------------------------------------------------------
;;;Пример вызова (m-layer-make "M-05_1-РамкаТонк" "252" "Continuous" "0.15" "_plot")
;;;Вместо "_plot" можно записать "_p"
;;;--------------------------------------------------------------------------------------------
  (vl-cmdf "_.-LAYER"	     "_New"   lyr      "_Color"	col
	   lyr	    "_LType" ltp      lyr      "_LW"	lwg
	   lyr	    "_Plot"  prnt_yn  lyr      ""
	  )
)

(defun m-tblsearch-layer (M-Layer)
;;;m-search-layer (M-Layer) - проверка существует ли слой в чертеже
;;;--------------------------------------------------------------------------------------------
;;;Пример вызова (m-search-layer "M-00-work (no_print)")
;;;Возвращает список свойств слоя в виде точечных пар если слой есть или nil, если его нет
;;;--------------------------------------------------------------------------------------------
  (tblsearch "Layer" M-Layer)
)
Makswell вне форума  
 
Непрочитано 22.04.2008, 15:38
#21
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от BM60 Посмотреть сообщение
А тогда бы ишо (шобниченеделать), вторым махом, если они выделяются, закинуть в общий "Dim". Ща поглядим-с...
Кнопочка
Код:
[Выделить все]
^C^C_CHANGE;(ssget "_X" '((0 . "*DIMENSION")));;_P;_LA;DIM;;
PS. Слой DIM и сами размеры должны существовать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.04.2008, 17:10
#22
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


Братцы, спасибо, вы спасли мою черепную коробку для будущих концентраций!
BM60 вне форума  
 
Непрочитано 22.04.2008, 18:08
#23
ALFMario


 
Регистрация: 11.10.2007
Gomel
Сообщений: 68


А как сделать чтобы выбрать и автоматом перенести размеры в слой DIM, но при выборе игнорировать те размеры которые лежат в слое DIM_AXES
ALFMario вне форума  
 
Непрочитано 22.04.2008, 18:36
#24
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от ALFMario Посмотреть сообщение
А как сделать чтобы выбрать и автоматом перенести размеры в слой DIM, но при выборе игнорировать те размеры которые лежат в слое DIM_AXES
Кнопка чуток подлиннее будет
Код:
[Выделить все]
^C^C_CHANGE;(ssget "_X" '((0 . "*DIMENSION")(-4 . "<NOT")(8 . "DIM_AXES")(-4 . "NOT>")));;_P;_LA;DIM;;
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 23.04.2008, 10:50
#25
ALFMario


 
Регистрация: 11.10.2007
Gomel
Сообщений: 68


Большое спасибо, то что надо!
Если не сложно можно пояснить что делает это кусочек в двух словах
для образования ... радости моей предела не будет...
(-4 . "<NOT")(8 . "DIM_AXES")(-4 . "NOT>")
ALFMario вне форума  
 
Непрочитано 23.04.2008, 11:22
#26
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


(-4 . "<NOT") и (-4 . "NOT>") это начало и конец скобки НЕ
(8 . "DIM_AXES") - под кодом 8 хранится слой примитива.
Т.е в словах запрос звучит так:
Выбери все размеры (0 . "*DIMENSION") слой которых, НЕ (8 . "DIM_AXES")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.04.2008, 09:50
#27
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


Пробовал использовать вот этот макрос:
^C^C_Dimlinear;\\\_Change;_Last;;_P;_La;Размеры;;
(слой создан предварительно), но пришлось отказаться от его использования из-за 2-х глюков:
1. Если до этого использовалась команда с диалоговым окном, то при вызове команды это окно выскакивает вновь.
2. Не работает повтор по ПКМ.
AutoCAD 2007
Jerald вне форума  
 
Непрочитано 25.04.2008, 11:21
#28
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Чтобы был повтор по ПКМ, попробуй так:
Код:
[Выделить все]
^C^C^P(defun C:Dimlinear2 () (command "_.DIMLINEAR" pause pause pause "_Change"  "_Last" "" "_P" "_La" "Размеры" "") (princ));Dimlinear2
Makswell вне форума  
 
Автор темы   Непрочитано 26.04.2008, 15:37
#29
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


Makswell, спасибо, попробовал, работает! А как с самосозданием слоя "Размеры", не в курсе?
Jerald вне форума  
 
Непрочитано 26.04.2008, 20:20
#30
Кулик Алексей aka kpblc
Moderator

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


http://dwg.ru/f/showpost.php?p=235446&postcount=18
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.04.2008, 19:20
#31
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Jerald Попробуй изменить порядок. Создать слой "Размеры", отрисовать DimLINEAR, вернуть первоначальный слой
Код:
[Выделить все]
^C^C^P(defun C:Dimlinear2(/ *error*)(defun *error*(m)(setvar "CLAYER" ol))(setq ol(getvar "CLAYER"))(command "_.LAYER" "_M" "Размеры" "" "_.DIMLINEAR")(while(>(getvar "CMDACTIVE")0)(command pause))(setvar "CLAYER" ol)(princ));Dimlinear2
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.04.2008, 18:23
#32
Ddjo

архитектор
 
Регистрация: 01.04.2008
СПб
Сообщений: 296


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

Код:
[Выделить все]
  
(vl-load-com) 
  (setq lyrs (vlax-get (vla-get-activedocument (vlax-get-acad-object)) 'Layers) 
        nlrs (mapcar '(lambda (x) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list lyrs x)));
              (vla-add lyrs x))) '("размеры" "текст" "viewports" "позиция" "help" "площади")));
  (foreach lyr nlrs 
    (mapcar '(lambda (x y) (if (= (vla-get-name lyr) x) (vla-put-color lyr y))) 
      '("размеры" "текст" "viewports" "позиция" "help" "площади") '(123 251 9 7 2 1)))
  (foreach lyr nlrs 
    (mapcar '(lambda (x y) (if (= (vla-get-name lyr) x) (vla-put-lineweight lyr y))) 
      '("размеры" "текст" "viewports" "позиция" "help" "площади") '(09 18 00 25 00 18 )))
;
(vlr-command-reactor nil '((:vlr-commandWillStart . startCommand))) 
(vlr-command-reactor nil '((:vlr-commandEnded . endCommand))) 
(vlr-command-reactor nil '((:vlr-commandCancelled . endCommand))) 
;
(defun startCommand (calling-reactor startcommandInfo / thecommandstart)
  (setq thecommandstart (nth 0 startcommandInfo)) 
  (setq *OldLayer* (append *OldLayer* (list (getvar "CLAYER")))) 
  (cond ((wcmatch thecommandstart "DIM*") (setvar "clayer" "размеры"))
	((wcmatch thecommandstart "*TEXT") (setvar "clayer" "текст"))
	((wcmatch thecommandstart "*-VPORTS") (setvar "clayer" "viewports"))
	((wcmatch thecommandstart "*LEADER") (setvar "clayer" "позиция"))
	((wcmatch thecommandstart "*XLINE") (setvar "clayer" "help"))
	((wcmatch thecommandstart "*RAY") (setvar "clayer" "help"))
	((wcmatch thecommandstart "*spAREA") (setvar "clayer" "площади"))
	(t nil));cond 
  (princ)
);startCommand
;
(defun endCommand (calling-reactor endcommandInfo) 
 (if *OldLayer* (setvar "clayer" (nth 0 *OldLayer*))) 
 (setq *OldLayer* nil) 
 (princ)
Ddjo вне форума  
 
Непрочитано 29.04.2008, 20:32
#33
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
и при этом не зная о LISPе абсолютно ничего, получилось составить вот что
Очень неплохо для начала. По поводу создания слоев советую воспользоваться функцией _kpblc-layer-create из поста #47 Там передача данных для создания слоев реализована ассоциативным списком, что очень удобно. Да и саму тему перечитать неплохо будет, близка по духу твоему коду.
ЗЫ вроде как коды оттуда. Тогда иди в 47 пост
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.04.2008, 21:10
#34
Ddjo

архитектор
 
Регистрация: 01.04.2008
СПб
Сообщений: 296


ЗЫ вроде как коды оттуда. Тогда иди в 47 пост[/quote]

Естественно, все оттуда... http://dwg.ru/f/showthread.php?t=2721&page=2 пост40, существует одно "НО" , код из поста Алексея и код из поста Лентяя имеют немного разный вид, при том, что я понимаю, что алгоритм описан один..., только в одном случае описываются "скопом" все созданые слои, затем им назначаются также "скопом" различные значения параметров (цвет, вес линии), а в другом случае, поочередно описывается каждый созданый слой и свойства ему присущие.
Но, поскольку, LISP для меня пока "темный лес", а для моего понимания проще первый вариант, я не могу по аналогии сообразить, как это должно выглядеть в моем случае...

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

Последний раз редактировалось Ddjo, 30.04.2008 в 13:37.
Ddjo вне форума  
 
Автор темы   Непрочитано 15.07.2008, 15:52
#35
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


Цитата:
Сообщение от VVA Посмотреть сообщение
Одним махом (скопировать в командную строчку или повесить на кнопку)
Код:
[Выделить все]
(SSSETFIRST nil (ssget "_X" '((0 . "*DIMENSION"))))
И смотришь на панель слоев. Если там пусто, значит слои разные. Или на строчку "Слой" окна свойств. Там даже напишут "*разные*"
Повесил этот макрос на F7, очень удобно!
Я вот думаю, зачем Автокад перед перемещением выделенных объектов на замороженный слой, постоянно выдаёт предупреждение!? Как будто я не знаю, что хочу сделать!?
Jerald вне форума  
 
Непрочитано 15.07.2008, 16:41
#36
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Тут сказали-все размеры в один слой. А у нас много слоев-в зависимости от масштаба умножить на тип размера. И это гибче. Если перейдем на аннотативность может, кол-во слоев и уменьшиться (на количество масштабов). Просмотреть слои можно командой Laywalk
Vova вне форума  
 
Непрочитано 23.09.2009, 17:52
#37
spatinka


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


день добрый . что то не совсем уловила вот эти доп вставки в прогу обеспечивают то чо ты открываешь файл и не составляя каждый слой для размера тира размерный лоя наружних стен там свой и тп. а сразу чертишь и все само по слоям разбиваеться и по толщине линий??? так?
__________________
заранее благодарю :)
spatinka вне форума  
 
Непрочитано 05.11.2011, 15:18
#38
Dante_SSS


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Кнопка чуток подлиннее будет
Код:
[Выделить все]
^C^C_CHANGE;(ssget "_X" '((0 . "*DIMENSION")(-4 . "<NOT")(8 . "DIM_AXES")(-4 . "NOT>")));;_P;_LA;DIM;;
Скажите, а еще одно исключение как прописать (второе, третье)?
Dante_SSS вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Выделение размеров

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масштабирование размеров в AutoCAD 2002 eeN68 AutoCAD 4 24.04.2008 16:12
Как убрать выделение в автокаде? Владимир В Программирование 2 06.02.2008 17:00
как снять лишнее выделение float AutoCAD 2 25.01.2007 17:38
Оформление размеров в видовых экранах lion AutoCAD 6 31.05.2006 10:33
Программы для редактирования размеров? Acad2004. Павлов Андрей AutoCAD 2 04.06.2004 16:10