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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Отображение блока при вставке (LISP, ACAD2009)

Отображение блока при вставке (LISP, ACAD2009)

Ответ
Поиск в этой теме
Непрочитано 04.03.2011, 11:10 #1
Отображение блока при вставке (LISP, ACAD2009)
EfremenkoDO
 
Санкт-Петербург
Регистрация: 24.12.2009
Сообщений: 59

Прошу помощи в таком вопросе. При вставке блоков по команде "_.insert" во время выбора точки вставки я вижу изображение самого блока. Как сделать аналог на лиспе? То есть чтоб при выборе точки вставки было видно блок?.

PS буду благодарен если кто подскажет сайт с исходниками стандартных команд на лиспе, как-то натыкался теперь найти не могу.
Просмотров: 3437
 
Непрочитано 04.03.2011, 11:24
#2
ShaggyDoc

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


Цитата:
Сообщение от EfremenkoDO Посмотреть сообщение
Прошу помощи в таком вопросе. При вставке блоков по команде "_.insert" во время выбора точки вставки я вижу изображение самого блока. Как сделать аналог на лиспе? То есть чтоб при выборе точки вставки было видно блок?.
При использовании функций command или vl-cmdf для команды INSERT использовать опции "_PROTATE", "_PXScale" и "_PYScale" до запроса точки вставки, который скрывается в pause. Пример:


Код:
[Выделить все]
 (vl-cmdf "_.INSERT"
                             block_name
                             "_PROTATE"
                             (if block_angle
                              block_angle
                              0
                             ) ;_ end of if
                             "_PXScale"
                             x_scale
                             "_PYScale"
                             y_scale
                             pause
                    )
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 04.03.2011, 11:34
#3
EfremenkoDO


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
При использовании функций command или vl-cmdf для команды INSERT использовать опции "_PROTATE", "_PXScale" и "_PYScale" до запроса точки вставки, который скрывается в pause. Пример:
Спасибо за помошь, но этот вариант я знал. Наверное я не точно задал вопрос. Вставляю я при помощи vla-insetBlock в нем так не получится.
EfremenkoDO вне форума  
 
Непрочитано 04.03.2011, 12:04
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Пользоваться той же командой _-INSERT или _CHANGE
RuCAD
С помощью _CHANGE
- Множественная вставка блока, висящего на курсоре
- еще пример
Читать классиков На заметку программистам
Отображения тел в области курсора при укащании точки
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.03.2011, 12:05
#5
Дима_

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


Не так давно обсуждали - вот пример, да и всю тему почитать совсем не лишне.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 26.03.2011, 18:54
#6
EfremenkoDO


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


В продолжение данной темы. Все настроил - получилось, но появилась проблема... Использую в команде вставку таким образом
Код:
[Выделить все]
 
  (setvar "ATTREQ" 0)
  (command "_.-insert"	BlockName
	       "_Scale"    1
	       pause
	       0
  ) 
  ;;...
  ;;Тут еще некие преобразования 
  ;;...
  (setvar "ATTREQ" 1)
Получается, что идет предложения выбрать точку вставки с висящим на курсоре блоком и все нормально до того пока не происходит запрос изменения базовой точки (BasePoint через B или по правому щелчку). В этом случае pause получает в ответ букву B следовательно базовой точке задается 0, что приводит к ошибке. При этом в командной строке предлагается повторно указать базовую точку, а лисп продолжил выполнение кода дальше, не дождавшись вставки блока.

Как бы это поправить? может есть какой контроль за тем что вводится в командную строку?

Решение появилось само! Решил так:
1. Создал флаг об окончании команды вставки
2. Написал реактор на окончание команды
Код:
[Выделить все]
 
(defun fIns (reac info / Dim Name)
  (if (= (strcase (car info)) (strcase "-insert"))
    (setq _ENDINSERT T)
    )
)

(defun rCmdLine	(/)
  (setq	dwgrCmdLine
	 (VLR-Command-Reactor
	   "InsDim"
	   (list '(:VLR-commandEnded . fInsDim))
	 ) ;_ end of vlr-acdb-reactor
  ) ;_ end of setq
)
3. В самой функции, где следует вызывать insert поставил pause в цикл
Код:
[Выделить все]
 
;...
      (setvar "ATTREQ" 0)

      (setq _ENDINSERT nil)
      (vl-cmdf "_.-insert" BlockName)
      (while (not _ENDINSERT) (vl-cmdf pause))

      (setvar "ATTREQ" AREQBuf)
;...
И теперь я счастлив и доволен!

Последний раз редактировалось EfremenkoDO, 26.03.2011 в 20:11. Причина: Решение найдено
EfremenkoDO вне форума  
 
Непрочитано 26.03.2011, 23:42
#7
Александр Ривилис

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


Можно было обойтись без реактора. Для этой цели есть системные переменные CMDNAMES и CMDACTIVE, которые можно было проверять в цикле.
Александр Ривилис вне форума  
 
Непрочитано 27.03.2011, 13:52
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Иллюстрация #7
Код:
[Выделить все]
(setvar "ATTREQ" 0)
(command "_.-insert"  BlockName 
	         "_Scale"    1
         pause
         0
) 
(while (> (getvar "CMDACTIVE") 0) (command pause))
;;... 
;;Тут еще некие преобразования  
;;... 
(setvar "ATTREQ" 1)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 30.03.2011, 20:51
#9
EfremenkoDO


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


Спасибо, я просто о них даже не знал
EfremenkoDO вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Отображение блока при вставке (LISP, ACAD2009)

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему Автокад не показывает атрибуты, созданные в редакторе блоков, а не непосредственно на чертеже, при вставке блока на чертёж? cancercat AutoCAD 30 06.02.2023 10:20
При вставке блока c палитры инструментов, создается текстовый стиль Annotative. Vildar AutoCAD 3 19.01.2011 16:52
вопрос о вставке блока krendel AutoCAD 4 17.03.2009 21:10
добавление скрипта к вставке блока с палитры. TheBuTeK Программирование 13 17.10.2007 21:29
Есть ли возможность при вставке блока разрывать линии Незнайка AutoCAD 13 03.04.2006 20:34