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

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

Как выбрать полилинии по определенным значениям высот (Elevation)?

Ответ
Поиск в этой теме
Непрочитано 10.06.2013, 17:31 #1
Как выбрать полилинии по определенным значениям высот (Elevation)?
mankurt
 
геодезист
 
Москва
Регистрация: 25.10.2011
Сообщений: 45

Есть куча горизонталей-полилиний - утолщенных, основных, дополнительных, построенных через 0.25м. Они на своей высоте - в elevation забиты значения. Надо вычленить только дополнительные, то есть оканчивающиеся на .25 и .75. Фильтром не получается с помощью*. Может есть какое-то несложное решение без лиспов?
Спасибо.
Просмотров: 5937
 
Непрочитано 10.06.2013, 18:17
#2
CaMoCAD


 
Регистрация: 25.03.2008
Зелик
Сообщений: 1,600


Цитата:
Сообщение от mankurt Посмотреть сообщение
Надо вычленить только дополнительные, то есть оканчивающиеся на .25 и .75
т.е. каждую вторую. Думаю, удалить надо.
Хм, выделяем все, масштабируем х2 относительно крайней (0 или 0,5) --> шаг становится 0,5; потом половину лишних, вылетевших за габарит, - удаляем.
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД.
CaMoCAD вне форума  
 
Непрочитано 10.06.2013, 18:27
#3
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


....
mamuk вне форума  
 
Автор темы   Непрочитано 10.06.2013, 18:31
#4
mankurt

геодезист
 
Регистрация: 25.10.2011
Москва
Сообщений: 45


Цитата:
Сообщение от CaMoCAD Посмотреть сообщение
потом половину лишних, вылетевших за габарит, - удаляем.
можно с этого места поподробнее? какой габарит имеется ввиду? они все лишние получаются..
mankurt вне форума  
 
Непрочитано 10.06.2013, 19:51
#5
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от mankurt Посмотреть сообщение
Может есть какое-то несложное решение без лиспов?
Лисп не подойдет потому что сложным решение будет или потому что ACAD LT?
На лиспе можно, например, так:
Код:
[Выделить все]
(defun test ( / ss1 ss2 n)
(vl-load-com)
    (setq ss1 (ssget "_X" (list (cons 0 "LWPOLYLINE")))
          ss2 (ssadd)
          n 0
    )
    (repeat (sslength ss1)
        (if (or (wcmatch (rtos (vla-get-Elevation (vlax-ename->vla-object (ssname ss1 n))) 2 2) "*.25")
                (wcmatch (rtos (vla-get-Elevation (vlax-ename->vla-object (ssname ss1 n))) 2 2) "*.75")
            )
            (ssadd (ssname ss1 n) ss2)
        )
        (setq n (1+ n))
    )
    (sssetfirst nil ss2)
)
Только лучше добавить в фильтр ssget еще какое-то ограничение (к примеру, имя слоя), потому что выберутся ВСЕ полилинии, на уровне ХХХ.25 и ХХХ.75, а это теоретически могут быть не только горизонтали.
skkkk вне форума  
 
Непрочитано 10.06.2013, 19:53
#6
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


нужно перед этим "кинуть" все горизонтали на свой слой.
Хмурый вне форума  
 
Непрочитано 10.06.2013, 20:09
#7
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от Хмурый Посмотреть сообщение
нужно перед этим "кинуть" все горизонтали на свой слой.
Чаще всего на топосъемках горизонтали уже лежат на своем слое или на нескольких своих слоях (допустим, толстые - целые четные, и тонкие - все остальные). Если нет, то да, лучше "кинуть".
И тогда действовать так:
1. Изолировать слой (слои) с горизонталями;
2. Из кода двумя постами выше в строке
Код:
[Выделить все]
(ssget "_X" (list (cons 0 "LWPOLYLINE")))
убрать "_X";
3. Запустить код и на запрос "Выберите объекты:" указать все горизонтали рамкой.
4. Нажать Enter.
Останутся ручки только на нужных горизонталях (либо они будут подсвечены, если их много).
skkkk вне форума  
 
Автор темы   Непрочитано 10.06.2013, 23:08
#8
mankurt

геодезист
 
Регистрация: 25.10.2011
Москва
Сообщений: 45


Цитата:
Сообщение от skkkk Посмотреть сообщение
Лисп не подойдет потому что сложным решение будет или потому что ACAD LT?
Лисп конечно подойдет, просто не думал, что кто-то заморочится и напишет так быстро). Надеялся, что есть какие-то стандартные средства автокада, о которых я не в курсе..
Спасибо огромное все работает). Отключить все посторонние объекты уже дело техники
mankurt вне форума  
 
Непрочитано 11.06.2013, 08:21
#9
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 185


А можно ли для полной универсальности дополнить этот лисп функцией выбора кратности уровня полилинии?
- выберите объекты -
- укажите кратность (0, 0.25, 0.5, 0.75) <0>
Krovlaf вне форума  
 
Непрочитано 11.06.2013, 11:03
#10
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Код:
[Выделить все]
 (defun test ( / kr ss1 ss2 n oldDIMZIN)
(vl-load-com)
    (defun *error*(msg)
        (if oldDIMZIN (setvar "DIMZIN" oldDIMZIN))
    )
    (setvar "DIMZIN" 0)
    (initget 128 ".00 .25 .50 .75")
    (setq kr (getkword "Укажите кратность: [.00/.25/.50/.75]")
          ss1 (ssget (list (cons 0 "LWPOLYLINE")))
          ss2 (ssadd)
          n 0
          oldDIMZIN (getvar "DIMZIN")
    )
    (repeat (sslength ss1)
        (if (wcmatch (rtos (vla-get-Elevation (vlax-ename->vla-object (ssname ss1 n))) 2 2) (strcat "*" kr))
            (ssadd (ssname ss1 n) ss2)
        )
        (setq n (1+ n))
    )
    (setvar "DIMZIN" oldDIMZIN)
    (if (> (sslength ss2) 0) (sssetfirst nil ss2) (princ (strcat "Нет горизонталей на ХХХ" kr)))
    (princ)
)
skkkk вне форума  
 
Непрочитано 11.06.2013, 11:43
#11
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 185


Спасибо!
Работает!
Не хочу показаться навязчивым, но подскажите как добавить выбор кратности не из существующего списка а вводя значение с клавиатуры.
Krovlaf вне форума  
 
Непрочитано 11.06.2013, 12:06
#12
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
Надеялся, что есть какие-то стандартные средства автокада
угу, есть - называется Civil 3D...
trir вне форума  
 
Непрочитано 11.06.2013, 12:18
#13
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от Krovlaf Посмотреть сообщение
как добавить выбор кратности не из существующего списка а вводя значение с клавиатуры
Так можно и с клавиатуры ввести .25 либо .50. Или так не пойдет? Тогда необходимо знать, в каком формате вводить (с точкой/без точки, два знака после точки/один; если введено 5, то это 50 или 25/75 и т.д.)
skkkk вне форума  
 
Непрочитано 11.06.2013, 12:25
#14
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 185


Допустим, нужно выбрать полилинии кратные 5, или 2. Вводя с клавиатуры такие значения ничего не выходит...
Например: 25.5 - выбираются все линии с высотой кратные 25.5, 5.0; 2.75; 0.25 и т.п. соответственно

Последний раз редактировалось Krovlaf, 11.06.2013 в 12:32.
Krovlaf вне форума  
 
Непрочитано 11.06.2013, 12:29
#15
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Кратные 5 - это 5, 10, 15, 20, 25... 50, а также 00? Я правильно понимаю? Или только те, у которых в конце 5 (25, 35, 45....)?
skkkk вне форума  
 
Непрочитано 13.06.2013, 05:29
#16
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 185


Извиняюсь за задержку в ответах. Именно кратность - 5, 10, 15... Это для того чтобы задать одинаковый вес и тип линий уровень которых кратен 5, 0.5, 0.25.
Krovlaf вне форума  
 
Непрочитано 13.06.2013, 09:47
#17
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Все равно не понял: если пользователь введет 5, то это должно расцениваться как ХХХ.05, ХХХ.50 или выбраться должны все из списка ХХХ.05, ХХХ.10, ХХХ.15, ХХХ.20.......? Или пользователь должен ввести непременно две цифры, а, если он ввел одну, то это воспринимается за ошибку и предлагается ввести снова?
Насколько я помню школьную математику и понимаю понятие кратности, число кратно ПЯТИ, если оно делится на 5 без остатка. Т.е. в нашем случае это понятие не совсем корректно. Или совсем некорректно. Но не соображу, как правильно это обозвать.
skkkk вне форума  
 
Непрочитано 13.06.2013, 10:02
#18
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 185


Тогда оставлю понятие кратности (оно здесь не пойдет) и попытаюсь объяснить так:
Если пользователь ввел число 5, то это должно расцениваться как ХХ5.0
если число 0 то ХХ0.0
если число 2 то ХХ(четные).0
если число 0.25 то ХХХ.25 и ХХХ.75
Krovlaf вне форума  
 
Непрочитано 13.06.2013, 10:28
#19
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Я так в общем-то и предполагал, поскольку много работал с топосъемками и видел, что "четные" горизонтали в основном всегда жирнее остальных.
Хорошо, а что будет, если пользователь введет 3 или 4 или 545?
Может, все-таки пользователю не имеет смысла давать право полнейшей свободы действий, а предложить выбрать из списка, например, такого:
ХХХ.00(целые)
ХХ2.00(чётные)
ХХ5.00(кратные 5, кроме целых)
ХХХ.50(кратные 0.5, кроме целых, четных и ХХ5.00)
ХХХ.Х5(кратные 0.25 кроме ХХХ.50 и ХХХ.00).
Либо, предложить ему вводить цифры с клавиатуры, но допустимыми оставить только значения 0, 2, 5, 0.25? Тут опять-таки будет неудобным ввод 0.25 (если стоит русская раскладка и в Windows не настроена точка на циферном блоке при русской раскладке) - запятую ACAD не поймёт, за точкой придется тянуться к буквенному блоку
skkkk вне форума  
 
Непрочитано 13.06.2013, 10:37
#20
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 185


Думаю это правильно:
Цитата:
Может, все-таки пользователю не имеет смысла давать право полнейшей свободы действий,
Это уже получается отдельный фильтр. А нужно что-то попроще.
При этом не обойти вниманием ни "мышечников" (с выбором из списка) ни "кнопочников" (живущих на клавиатуре)
Krovlaf вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как выбрать полилинии по определенным значениям высот (Elevation)?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Как грамотно выбрать направление дуги у полилинии? ira228 AutoCAD 19 22.09.2012 14:47
Распределение точек по полилинии с определенным расстоянием между ними ПО ПРЯМОЙ Prestan AutoCAD 10 14.10.2010 22:54