NanoCAD-23.1 - глюки при создании объектов через (entmake)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > NanoCAD-23.1 - глюки при создании объектов через (entmake)

NanoCAD-23.1 - глюки при создании объектов через (entmake)

Ответ
Поиск в этой теме
Непрочитано 09.10.2024, 11:17 #1
NanoCAD-23.1 - глюки при создании объектов через (entmake)
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616

Всем привет!

При адаптации старых наработок AutoCAD'a под nanoCAD
столкнулся с такой вот неприятной его особенностью.

Имеем задачу: сделать "что-то рисующее", которое
пользователь, если это ему не понравится, может
отменить одним нажатием CNRL+Z.

Пишем:

(vla-StartUndoMark acddoc) ;открываем группу отмены

... диалоги / вычисления ...

(entmake (list '(0 . "CIRCLE") ...))
(entmake (list '(0 . "LINE") ...))
;и для наглядности
(command "_.text" ...)

(vla-EndUndoMark acddoc) ;закрываем группу отмены


Т.е. в примере мы создали три объекта - круг и отрезок через
(entmake ...) и текст через (command ...)

Замечательно. Теперь нажимаем CTRL+Z.

Опаньки!

"Текст" пропал, а "круг" и "отрезок" остались на экране.

Не удалились из базы? Ещё как удалились, только вот их
изображение на экране осталось и пропадёт оно только
после регенерации (любым способом).

Как это победить - пока не придумал.
Если знаете - подскажите.

Ну, и имейте это в виду при переделке своих старых программ
под NС.
__________________
Счастливо, Алексей!
Просмотров: 566
 
Непрочитано 09.10.2024, 11:31
#2
Кулик Алексей aka kpblc
Moderator

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


А почему так странно создаешь примитивы? Попробуй все сделать в одном стиле - через ActiveX, к примеру.
Во, идея! А что будет, если точки начала/конца отмены задавать командами?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.10.2024, 11:35
#3
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Цитата:
А почему так странно создаешь примитивы?
Свят-свят... Это я просто для иллюстрации ситуации.
Описание идеи, так сказать. :-)

Цитата:
Во, идея! А что будет, если точки начала/конца отмены задавать командами?
Сейчас попробую.

Проверил.

(command "_.undo" "_g")
...
(command "_.undo" "_e")


заодно проверил

создание только через (entmake ...)

эффект тот же самый - исчезнут только после регенерации

создание только через (command ...)

всё штатно - исчезают и из базы и с экрана.

Кстати, в AutoCAD'е этого глюка нет, там без разницы, как их
создавать - удаляются и из базы и с экрана.
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 09.10.2024 в 11:46.
===AAA=== вне форума  
 
Непрочитано 09.10.2024, 12:36
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


имхо, командные методы каждый раз после выполнения передают управление нано, и отрисовка экрана успевает отработать. А если без командных методов - нано почему то решает, что в текущем ВЭ ничего не изменилось. Если так - то это баг, конечно.
Сергей812 вне форума  
 
Автор темы   Непрочитано 09.10.2024, 12:51
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Там ещё интереснее.

1. Делаем функцию (F1 - создание через entmake)
2. Делаем функцию (F2 - создание через command)
3. Запускаем F1 - отрисовалось.
4. CTRL+Z - примитивы функции F1 удалились из базы, но не с экрана.
5. Запускаем F2 - отрисовалось.
6. CTRL+Z - примитивы функции F2 удалились из базы и с экрана.
и - фанфары! - заодно с экрана удалились ранее висевшие на нём
следы от примитивов функции F1.

Пользователь тихо сходит с ума - он-то не знает, где "следы", а где
реальные примитивы изображены.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.10.2024, 13:15
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop:
Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Пользователь тихо сходит с ума - он-то не знает, где "следы", а где реальные примитивы изображены.
пользователь должен в голове держать - где он там и что нажимал.. а то совсем разбаловались с этими графическими интерфейсами)

до нанокадовцев не достучаться, насколько понимаю..
Сергей812 вне форума  
 
Автор темы   Непрочитано 09.10.2024, 13:28
#7
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Цитата:
до нанокадовцев не достучаться, насколько понимаю..
Малореально. А если что и правят, то вносят уже в 24-й релиз.
А я с 23.1 воевать пока вынужден...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > NanoCAD-23.1 - глюки при создании объектов через (entmake)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NanoCAD 23.1: Отцентровать чертёт А4 при выводе на печать ===AAA=== LISP 4 25.07.2024 11:01
Как при создании блока через LISP задать ему единицы блока - миллиметры? Как удалить объекты, из которых создается блок? konstryktor LISP 4 24.08.2022 13:11
Макрос для выбора объектов по заданным характеристикам modest-bp Программирование 16 28.04.2020 13:07
Как отключить зависимость при создании новых объектов? aleonidyich AutoCAD 3 21.02.2016 16:38
entmake, как создать призму (autolisp entmake)? baaba LISP 4 25.01.2011 12:40