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

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

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

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

Можно ли одним махом выделить все размеры на чертеже?
Просмотров: 16410
 
Непрочитано 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,406


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