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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание набора с помощью ssget из примитива *TEXT, содержащего любое количество цифр

Создание набора с помощью ssget из примитива *TEXT, содержащего любое количество цифр

Ответ
Поиск в этой теме
Непрочитано 15.02.2011, 10:16
Создание набора с помощью ssget из примитива *TEXT, содержащего любое количество цифр
Nitrogenium
 
инженер
 
Санкт-Петербург
Регистрация: 02.03.2010
Сообщений: 69

Собственно, вопрос ясен из заголовка - надо создать набор из примитивов TEXT или MTEXT, содержащего такой текст:
"ПК "любое количество цифр"+"две цифры,точка,две цифры, используя ssget
Например вот такой текст:
ПК 2+50.00
ПК 45+58.45
ПК 120+84.65
Написал вот так: (ssget "_C" po1 po2 (list (cons 0 "*TEXT") (cons 8 "Layer002") (cons 1 "ПК *#+##'.##")))
Но тут используется *, которая заменяет любые символы, а мне надо любое количество цифр.
po1 и po2 - это координаты точек
Просмотров: 8029
 
Непрочитано 15.02.2011, 17:19
#21
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
Правда хотелось бы уточнить - реально ли написать, чтобы количество цифр перед плюсом было вообще любым
Реально. Подобные задачи удобней решать с помощью регулярных выражений (обсуждалось уже). После одного такого обсуждения я нацарапал это (можно глянуть озвученное видео, демонстрирующее применение регексов в акаде).
Цитата:
содержащего такой текст:
"ПК "любое количество цифр"+"две цифры,точка,две цифры
В терминах регулярных выражений обозначенное тобой правило выглядит так (на вскидку, т.к. с регексами давно не работал):
"^ПК [0-9]+\+[0-9]{2}\.[0-9]{2}$"
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 15.02.2011 в 17:36. Причина: добавил правило
hwd вне форума  
 
Непрочитано 15.02.2011, 19:40
#22
Sad Dog

Ищу работу
 
Регистрация: 12.06.2010
Сообщений: 35


Цитата:
"^ПК [0-9]+\+[0-9]{2}\.[0-9]{2}$"
И как эту радость запихнуть в ssget?
Sad Dog вне форума  
 
Непрочитано 15.02.2011, 19:42
#23
Кулик Алексей aka kpblc
Moderator

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


Ха, да никак. Это регулярное выражение из .NET (мне так кажется)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.02.2011, 21:15
#24
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Sad Dog
И как эту радость запихнуть в ssget?
Её не нужно запихивать в ssget. С помощью "этой радости"(с) можно, для начала проверить, соответствует ли рассматриваемая строка требованиям, которые к ней предъявляет автор топика. Если соответствует - брать её в обработку.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ха, да никак. Это регулярное выражение из .NET (мне так кажется)
Неправильно тебе кажется. Регулярные выражения не привязаны к конкретной платформе. Справка. Насчёт "да никак" - не соглашусь, т.к. можно на том же .Net написать Lisp-функцию, которая выполнит нужное действие, используя регулярное выражение. Это не сложно.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 15.02.2011, 21:18
#25
Кулик Алексей aka kpblc
Moderator

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


hwd, обрати внимание - в топике рассматривается только AutoLISP и его возможности.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.02.2011, 21:26
#26
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
hwd, обрати внимание - в топике рассматривается только AutoLISP и его возможности.
т.е. отметается даже VisualLisp? И Lisp-функция принципиально должна быть написана на AutoLisp?
Я подумал, что для автора не важно, на чём написана Lisp-функция (на Lisp/C++/C# или др.) - важно, чтобы её можно было использовать в Lisp-коде...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 15.02.2011, 21:28
#27
Дима_

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


ИХМО - эта радость имеет смысл ТОЛЬКО в содержащим .Net модули проекте под автокад (ну или естественно целиком на нем написанном). Ради одного регеска "прикручивать" версионно зависимую dll я большим удобством назвать не могу - интерфейс с ней больше кода займет чем сама функция фильтрации.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 15.02.2011, 21:33
#28
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
интерфейс с ней
Если не сложно - переведи это на русский, а то у меня возникло смутное подозрение, что ты не в курсе что такое "интерфейс"...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 15.02.2011 в 21:39.
hwd вне форума  
 
Непрочитано 15.02.2011, 21:33
#29
Sad Dog

Ищу работу
 
Регистрация: 12.06.2010
Сообщений: 35


Удалено.

см. пост № 33

Последний раз редактировалось Sad Dog, 15.02.2011 в 22:26.
Sad Dog вне форума  
 
Автор темы   Непрочитано 15.02.2011, 21:34
#30
Nitrogenium

инженер
 
Регистрация: 02.03.2010
Санкт-Петербург
Сообщений: 69
<phrase 1=


Цитата:
Я подумал, что для автора не важно, на чём написана Lisp-функция (на Lisp/C++/C# или др.) - важно, чтобы её можно было использовать в Lisp-коде...
Вообще да, только я обычно перед тем, чтобы что-то вставить в свой код это анализирую
А вот чисто средствами AutoLisp и VisualLisp это возможно? То есть чтоб был 1 файл *.lsp
Nitrogenium вне форума  
 
Непрочитано 15.02.2011, 21:54
#31
Дима_

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Если не сложно - переведи это на русский, а то у меня возникло смутное подозрение, что ты не в курсе что такое "интерфейс" (в разрезе программирования)...
Значение слова интерфейс не ограничивается понятиями объектно-ориентированного программрования. По русски - отфильровать набор по данному параметру займет 5-7 строк лисп кода. Если фильтровать через net регексы - то как мимнимум - dll надо загрузить и точно так-же вставить в функцию фильтрующию набор (3-4 строки с учетом что у нас появилась функция обработки регексов). Теперь вопрос - какой великий смысл в подключении версионно зависимой net библиотеки (килобайт на 500 минимум) + еще ее надо написать (что даже без учета шаблонных подключений библиотек займет по моим пркидкам (здесь могу ошибаться - но думаю не сильно)) строчек 10-30 (в зависимости от заложенного функционала и языка программирвания) "чистого" кода.
p.s. полемику о полезности регксов разводить не надо - говорим про конкртный случай.
з.з.ы. - блин - похоже буква Е на этом ноуте совсем "заплыла".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 15.02.2011, 22:02
#32
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
ИХМО - эта радость имеет смысл ТОЛЬКО в содержащим .Net модули проекте под автокад (ну или естественно целиком на нем написанном). Ради одного регеска "прикручивать" версионно зависимую dll я большим удобством назвать не могу - интерфейс с ней больше кода займет чем сама функция фильтрации.

Значение слова интерфейс не ограничивается понятиями объектно-ориентированного программрования. По русски - отфильровать набор по данному параметру займет 5-7 строк лисп кода. Если фильтровать через net регексы - то как мимнимум - dll надо загрузить и точно так-же вставить в функцию фильтрующию набор (3-4 строки с учетом что у нас появилась функция обработки регексов). Теперь вопрос - какой великий смысл в подключении версионно зависимой net библиотеки (килобайт на 500 минимум) + еще ее надо написать (что даже без учета шаблонных подключений библиотек займет по моим пркидкам (здесь могу ошибаться - но думаю не сильно)) строчек 10-30 (в зависимости от заложенного функционала и языка программирвания) "чистого" кода.
p.s. полемику о полезности регксов разводить не надо - говорим про конкртный случай.
з.з.ы. - блин - похоже буква Е на этом ноуте совсем "заплыла".
ИМХО - ради того, чтобы в AutoLisp/VisualLisp появилась возможность использовать регулярные выражения, как раз таки не жалко подключить дополнительную библиотеку, потому как это очень мощный и гибкий инструмент в умелых руках. Уверен, что со мной согласятся те, кто знает, что такое регулярное выражение, каковы его возможности и как с ним работать.

Дима_ , насколько мне помнится, тут уже "блистал" на тему "понимания", что это такое, поэтому его мнение на этот счёт можно игнорировать.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 15.02.2011, 22:23
1 | #33
Sad Dog

Ищу работу
 
Регистрация: 12.06.2010
Сообщений: 35


Цитата:
реально ли написать, чтобы количество цифр перед плюсом было вообще любым
Вот решение.
Код:
[Выделить все]
 (setq ss (ssget "_X" (list (cons 0 "*TEXT") (cons 8 "Layer002")
               (cons -4 "<AND")
                   (cons 1 "ПК *#+##`.##")
                   (cons -4 "<NOT") (cons 1 "ПК *@*+##`.##") (cons -4 "NOT>")
                   (cons -4 "<NOT") (cons 1 "ПК *.*+##`.##") (cons -4 "NOT>")
               (cons -4 "AND>"))))
p.s.
Цитата:
ради того, чтобы в AutoLisp/VisualLisp появилась возможность использовать регулярные выражения...
В AutoLisp/VisualLisp есть возможность использовать выражения, очень похожие на регулярные - это функция wcmatch.
Но самое полезное, что wild-card patterns (те же, что и в функции wcmatch) можно использовать непосредственно в функции ssget, осуществляя фильтрацию примитивов при создании наборов. Имеющихся возможностей, как правило, вполне достаточно.

Последний раз редактировалось Sad Dog, 15.02.2011 в 23:28.
Sad Dog вне форума  
 
Непрочитано 15.02.2011, 22:51
#34
Дима_

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Дима_ , насколько мне помнится, тут уже "блистал" на тему "понимания", что это такое, поэтому его мнение на этот счёт можно игнорировать.
Мне совсем не нравится тон и манера Вашего общения, то что Вы не умеете слушать (читать) других и являетесь счастливым обладателем завышенной самооценки - еще не дает Вам права определять какое мнение заслуживает внимание других пользователей - с этим неплохо здесь справляются други люди с наделенными на то полномочиями - пока больше всех "не игнорируете" мое мнение именно Вы. Я принимаю ко вниманию только аргументированные мнения - коих с Вашей стороны я пока в этой теме не увидел.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 15.02.2011, 23:00
#35
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Мне совсем не нравится тон и манера Вашего общения, то что Вы не умеете слушать (читать) других и являетесь счастливым обладателем завышенной самооценки - еще не дает Вам права определять какое мнение заслуживает внимание других пользователей - с этим неплохо здесь справляются други люди с наделенными на то полномочиями - пока больше всех "не игнорируете" мое мнение именно Вы. Я принимаю ко вниманию только аргументированные мнения - коих с Вашей стороны я пока в этой теме не увидел.
Вспылил я немного... Если обидел - извиняюсь. Спорить с вами по поводу регексов и "аргументированных мнений" (с) желания нет - всё равно каждый останется при своём.
Умолкаю.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 16.02.2011, 05:41
#36
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Sad Dog

Но тем не менее, мне просто интересно
Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
Например вот такой текст:
ПК 2+50.00
ПК 45+58.45
ПК 120+84.65
Написал вот так: (ssget "_C" po1 po2 (list (cons 0 "*TEXT") (cons 8 "Layer002") (cons 1 "ПК *#+##`.##")))
Но тут используется *, которая заменяет любые символы, а мне надо любое количество цифр.
А что, в чертеже реально может встретиться текст, содержащий между ПК и +##`.## любые символы не являющиеся цифрами?
например: ПК тра-ля-ля+00.00 или ПК хрень какая-то+00.00
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 16.02.2011, 08:42
#37
Nitrogenium

инженер
 
Регистрация: 02.03.2010
Санкт-Петербург
Сообщений: 69
<phrase 1=


Цитата:
А что, в чертеже реально может встретиться текст, содержащий между ПК и +##`.## любые символы не являющиеся цифрами?
например: ПК тра-ля-ля+00.00 или ПК хрень какая-то+00.00
пишу прогу для подсчета объемов по поперечным профилям. Расстояние от начала пикетажа определяется из пикета. Определяется так:
ПК 3+12.45 -----> 300+12.45 м = 312.45 м
Иначе говоря, чтобы пользователь не смог сделать неверный выбор и в набор не попало то, что далее не может считаться, в результате чего работа программы прерывается с ошибкой
Nitrogenium вне форума  
 
Непрочитано 16.02.2011, 09:00
#38
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
Иначе говоря, чтобы пользователь не смог сделать неверный выбор и в набор не попало то, что далее не может считаться, в результате чего работа программы прерывается с ошибкой
Так может проще проанализировать текст на корректность после того как отобраны тексты по шаблону?!
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 16.02.2011, 09:15
#39
Nitrogenium

инженер
 
Регистрация: 02.03.2010
Санкт-Петербург
Сообщений: 69
<phrase 1=


если можно исключить неверный выбор сразу, почему бы так и не сделать?
Nitrogenium вне форума  
 
Непрочитано 16.02.2011, 09:34
#40
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
пишу прогу для подсчета объемов по поперечным профилям. Расстояние от начала пикетажа определяется из пикета
Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
если можно исключить неверный выбор сразу, почему бы так и не сделать?
А пикеты кто подписывает? пользователь вручную?
Т.е. пикеты: Пк 3+12.45, ПК 3_+12.45, ПК 3+12,45, ПК 3+12.4_ будут считаться не верными, и не войдут в набор, и поперечник по ним не посчитается, и тогда уже объём будет не верным.
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание набора с помощью ssget из примитива *TEXT, содержащего любое количество цифр

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание набора с помощью activeX Composter Программирование 3 15.05.2009 00:11