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

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

Как извлечь суффикс из размера? (LISP)

Ответ
Поиск в этой теме
Непрочитано 03.02.2012, 00:38 #1
Как извлечь суффикс из размера? (LISP)
Xara
 
Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135

Вот какая проблема, требующая срочного решения.
Имеется у нас несколько размеров. А необходимо извлечь из каждого его суффикс (текст пользовательский после значения размера), который значится в свойствах размера, в разделе Primary Units.
Вопрос: Как извлечь значение суффикса в лиспе?
Просмотров: 3118
 
Непрочитано 03.02.2012, 01:39
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


зри в корень <> и отыщешь суффикс
gomer вне форума  
 
Непрочитано 03.02.2012, 08:36
#3
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Через VLA - функцией vla-get-TextSuffix.
Do$ вне форума  
 
Автор темы   Непрочитано 03.02.2012, 11:23
#4
Xara

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


Спасибо, а нельзя ли поподробнее?
Я с функциями VLA вообще не дружу
Xara вне форума  
 
Непрочитано 03.02.2012, 12:24
#5
kriolog


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


Из книги Полещука:
(vl-load-com)
(setq obj (vlax-ename->vla-object (car (entsel))))
(vla-get-TextSuffix obj)
kriolog вне форума  
 
Автор темы   Непрочитано 03.02.2012, 12:38
#6
Xara

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


Отлично, спасибо!
А нельзя сделать так, чтобы лисп сам брал автоматом объект?
В частности, у меня по циклу бегает и ищет размерные примитивы в чертеже, и берет их по очереди.
Если поконкретнее, - как в строку (vlax-ename->vla-object (car (entsel)) вместо entsel вставить свой объект?
У меня это dim_edd, но он ругается:
; error: extra cdrs in dotted pair on input
Xara вне форума  
 
Непрочитано 03.02.2012, 13:14
#7
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Xara Посмотреть сообщение
как в строку (vlax-ename->vla-object (car (entsel)) вместо entsel вставить свой объект?
Объект в виде чего? ENAME? VLA_OBJECT? Список после ENTSEL или ENTGET? Может вообще набор (PICKSET)?
Цитата:
Сообщение от Xara Посмотреть сообщение
У меня это dim_edd
Если это ENAME, тогда так:
(vl-load-com)
(setq obj (vlax-ename->vla-object dim_edd))
(vla-get-TextSuffix obj)
Do$ вне форума  
 
Автор темы   Непрочитано 03.02.2012, 13:29
#8
Xara

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


Все, разобрался! Спасибо всем большое, вы все мне очень помогли!
Поправил в коде:
(setq vla-objj (vlax-ename->vla-object (cdr (assoc -1 dim_edd))))

Цитата:
Сообщение от Do$ Посмотреть сообщение
Объект в виде чего?
Я так понимаю, что VLA_OBJECT. Но не уверен)) Объект - DIMENSION. Обычный такой размер на чертеже
Xara вне форума  
 
Непрочитано 03.02.2012, 13:48
#9
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Xara Посмотреть сообщение
(setq vla-objj (vlax-ename->vla-object (cdr (assoc -1 dim_edd))))
Если вот так работает, то dim_edd - это entget-список.
Типа такого:
(setq elist (entsel "\nВыберите обычный такой размер на чертеже типа DIMENSION:")) ;Это entsel-лист
(setq ent (car entsel)) ;Это ENAME
(setq eglist (entget ent)) ;Это entget-лист
(setq obj (vlax-ename->vla-object ent)) ;Это vla-object
(setq ss (ssadd ent)) ;Это набор (PICKSET)
Do$ вне форума  
 
Автор темы   Непрочитано 03.02.2012, 14:37
#10
Xara

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


Да, именно так.
(setq sell (ssget "_X" '((0 . "DIMENSION"))))
(if (/= sell nil) (progn
(setq len_dim (sslength sell))
(command "-style" "s_geniso" "geniso,special" 0.0 0.8 "" "" "" "")
(while (> len_dim 0)
(setq dim_ent (ssname sell (setq len_dim (1- len_dim)))
dim_edd (entget dim_ent))
...


Цитата:
Сообщение от Do$ Посмотреть сообщение
(setq elist (entsel "\nВыберите обычный такой размер на чертеже типа DIMENSION:")) ;Это entsel-лист
(setq ent (car entsel)) ;Это ENAME
(setq eglist (entget ent)) ;Это entget-лист
(setq obj (vlax-ename->vla-object ent)) ;Это vla-object
(setq ss (ssadd ent)) ;Это набор (PICKSET)
Спасибо, буду знать
Xara вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как извлечь суффикс из размера? (LISP)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Проблема - размерный суффикс изчезает при вводе размера от руки. maratovich AutoCAD 3 19.07.2011 21:23
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Как извлечь из размера значение, т.е. текст??? Rubль Программирование 10 24.08.2009 17:24