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

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

Не видно блок при вставке(визуальные эфекты)

Ответ
Поиск в этой теме
Непрочитано 19.07.2006, 00:12 #1
Не видно блок при вставке(визуальные эфекты)
mmax
 
Программист широкого профиля.
 
Челябинск
Регистрация: 08.09.2005
Сообщений: 722

Хотел добиться визуализации вставки автоматически нарисованного объекта путем вставки блока.

Замысел был таким
Сначала создается объект из простых примитивов с базовыми размерами равными 1, для того чтобы при вставке блока использовать не масштаб по оси, а длину и ширину.
Потом эти примитивы преобразуются в блок, потом все удаляется а потом я хотел сделать так:
Код:
[Выделить все]
(command "_-insert" "mmaxBlock"
	 (setq 1po (getpoint "\nУкажите точку куда вставить"))
	 (getdist 1po "\nКакая ширина ")
         (getdist 1po "\nКакая высота")
          1
	 (getorient 1po "\nПод каким углом")
	 )
Все получилось просто отлично – объекты получаются с нужными размерами (хотя я не пробовал менять единицы измерения), но вот только от этой функции нет никакой визуализации – сообщения в комстроку выводятся, а вставляемого блока не видно тоесть все делается вслепую.

А если например делать так
Код:
[Выделить все]
(command "_-insert" "mmaxBlock"
	 pause
             pause
             pause
             ;итд
	 )
то вставляемый блок видно, но от обычных автокадовских сообщений нет никакой красоты.

Если кто знает, то скажите как сделать вставку блока так чтобы и блок было видно при вставке, а автокадовские сообщения при вставке заменились на мои.
Просмотров: 4366
 
Непрочитано 19.07.2006, 10:46
#2
Кулик Алексей aka kpblc
Moderator

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


Полностью с динамическим изменением размеров не получится, я думаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.07.2006, 14:18
#3
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Надо просто "закрывать" функцию command, в разрыв вставлять свое сообщение

Наподобие

Код:
[Выделить все]
(setvar "CMDECHO" 0)
(princ "\nТочка вставки: ")
(vl-cmdf  "_.INSERT" "mmaxBlock" pause)
(princ "\nДлина: ")
(vl-cmdf  pause)
(princ "\nШирина: ")
(vl-cmdf  pause)
(princ "\nУгол поворота <0>: ")
(vl-cmdf  pause)
Это только примитивная схема, показывающая, что command (vl-cmdf) можно разрывать. Можно навставлять и предварительное масштабирование или поворот.

Для рабочей программы все это надо обернуть в обработчик ошибок, чтобы прерывание в момент паузы не приводило к краху программы.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 31.07.2006, 00:29
#4
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


При неправильном вводе,при (setvar "CMDECHO" 0) , например вместо чисел ввести текст, вылетают обычные автокадовские сообщения, что опять портит всю картину. Программа при этом не завершается.
mmax вне форума  
 
Автор темы   Непрочитано 04.08.2006, 21:59
#5
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


И может быть последний вопрос по данной теме.

Код:
[Выделить все]
(vl-cmdf или command pause)
свое сообщение я могу сделать только перед этой фукнцией.
А если пользователь вместо указания точек или ввода чисел вводит текст, то при выключенном CMDECHO автокад начинает выдавать свои сообщения и как мне удалось выяснить pause не прекращает своей работы и продолжает выдавать автокадовские сообщения.
Для борьбы с этим недугом я смог придумать только одно:

Код:
[Выделить все]
(princ "мое сообщение)
(setvar "nomutt" 1)
(vl-cmdf или command pause)
(setvar "nomutt" 0)
И при каждом неправильном вводе происходит простой переход на следующую строку и выдаются только автокадовские ругательства типа "Требуется число или точка" ,nomutt=0 это сообщение тоже не может выключить. А вот мое сообщение не повторяется ввиду того что нет функции которая его бы повторяла.

Как бы придумать способ при котром бы при неправильном вводе во вроемя pause мое сообщение повторялось бы вместе с ругательством автокада и желательно без реактора.
Я уже пытался с помощью реактора поймать переменную ERRNO ,увы, она в этот момент не изменяется или реактор был неправильный.
mmax вне форума  
 
Автор темы   Непрочитано 27.08.2006, 17:49
#6
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Вот впринципе и все чего я добивался
http://dwg.ru/dwl/index.php?id=845
mmax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не видно блок при вставке(визуальные эфекты)