LISP: По завершению процедуры, select p не подсвечивает последние выделенные объекты.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP: По завершению процедуры, select p не подсвечивает последние выделенные объекты.

LISP: По завершению процедуры, select p не подсвечивает последние выделенные объекты.

Ответ
Поиск в этой теме
Непрочитано 06.08.2014, 13:30 #1
LISP: По завершению процедуры, select p не подсвечивает последние выделенные объекты.
Raznouh
 
Баку, Азербайджан
Регистрация: 13.09.2011
Сообщений: 114

Здравствуйте.Написал такой код для копирования однострочного текста из AutoCAD в файл txt:
Код:
[Выделить все]
 (defun c:t2f()
(setq ff (findfile "C:\\AutoCAD_TEXT.txt"))
(if (= ff nil)
(progn
(prompt "Creating C:\\AutoCAD_TEXT.txt ...")
(setq fo (open "C:\\AutoCAD_TEXT.txt" "a"))
);end of progn 1
(progn
(initget 1 " Proceed New")
(setq que (getkword "Old file was found.Proceed or create New one?[Proceed/New]" ))
(if (= que "Proceed")
(progn
(prompt "Proceed Old C:\\AutoCAD_TEXT.txt ...")
(setq fo (open "C:\\AutoCAD_TEXT.txt" "a"))
);end of progn 2.1
(progn
(vl-file-delete "C:\\AutoCAD_TEXT.txt")
(prompt "Creating New C:\\AutoCAD_TEXT.txt ...")
(setq fo (open "C:\\AutoCAD_TEXT.txt" "a"))
);end of progn 2.2 
);end of if 1.1
);end of progn 2
);end of if 1
 (setq nab (ssadd))
(while
(setq txx (car(entsel "\n Select text you want to copy <ENTER for exit>:")))
(setq obj (entget txx))
(if  (= (cdr(assoc 0 obj)) "TEXT")
(progn
(setq t1 (cdr(assoc 1 obj )))
(write-line t1 fo)
(ssadd txx nab)
(sssetfirst nil nab)
);end of progn 3
(progn
(alert "Selected object is not single line TEXT!\n Application works only with simple TEXT entities.\n OK to continue.")
);end of progn 4
);end of if 2
);end of while
(close fo)
(setq fo nil)
(sssetfirst nil nil)
(princ)
 )
[IMG]http://s019.***********/i608/1408/e9/2569c0093e6a.jpg[/IMG]

По завершению выполнения кода, не работает select > previous: не подсвечивает последние выделенные объекты.
Суть вопроса:почему это происходит и как исправить эту проблему?
Заранее спасибо за внимание

----- добавлено через ~2 ч. -----
P.S:
Прошу прощение за недосмотр - для корректной работы
между строчками №41 и №42 (см вставку кода) забыл добавить
Код:
[Выделить все]
 (setq nab nil)
Без этой вставки,которая удаляет присвоенное значение переменной nab, не создается новый файл взамену старому.Тоже не понимаю почему.
__________________
Все люди разные...один я одинаковый.

Последний раз редактировалось Raznouh, 06.08.2014 в 13:36.
Просмотров: 1834
 
Непрочитано 06.08.2014, 18:00
1 | #2
Do$

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


Цитата:
Сообщение от Raznouh Посмотреть сообщение
По завершению выполнения кода, не работает select > previous: не подсвечивает последние выделенные объекты.
Суть вопроса:почему это происходит и как исправить эту проблему?
Вкратце:
Потому что объекты выделялись не командами автокада, а с помощью функций автолиспа.
Может быть, проблемы не будет, если использовать для выбора объектов вместо ENTSEL функцию SSGET. Надо пробовать.

P.S. Как-то давно, в каком-то посте тут на форуме (лень искать), Кулик Алексей говорил о том, что плохо получать значения и писать их в файл в одном цикле. Лучше разделять: сперва получил все значения, сохранил в список - потом быстро открыл файл, записал и закрыл. С тех пор, уже много раз убеждался, что это очень правильный подход.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 06.08.2014 в 18:12.
Do$ вне форума  
 
Непрочитано 06.08.2014, 18:15
#3
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


redraw возможно поможет
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 25.08.2014, 15:00
#4
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от nolte Посмотреть сообщение
redraw возможно поможет
функция (redraw имя_примитива 3) в цикле по всем примитивам набора данных.
Подсветка будет продолжаться пока не будет выполнена команда Автокада над этим набором, или
не погасится функцией (redraw имя_примитива 4) в таком же цикле.
480725 вне форума  
 
Непрочитано 26.08.2014, 11:37
#5
Do$

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


Не путайте подсветку и выбор объектов. redraw подсвечивает объект, но выбранным он при этом не становится.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP: По завершению процедуры, select p не подсвечивает последние выделенные объекты.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Как определить стоимость проектных работ, если не известна стоимость строительства? dextron3 Поиск литературы, чертежей, моделей и прочих материалов 37 27.08.2014 18:32
Устойчивость мет. балки Net Конструкции зданий и сооружений 104 26.09.2011 20:14
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33