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

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

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

Ответ
Поиск в этой теме
Непрочитано 20.03.2016, 07:47 #1
Почему аварийно закрывается редактор блока при попытке выполнить лисп?
Profan
 
Москва
Регистрация: 25.12.2005
Сообщений: 13,627

Написал код для растяжения блока внутри редактора блоков:
Код:
[Выделить все]
(defun C:РСТ ( / echo ort obj имя_блк)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 1)
(setq ort (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 1)
(setq obj (car (entsel "\nВыберите блок: ")))
(if (and obj (= (cdr (assoc 0 (entget obj))) "INSERT"))
    (progn
    (setq имя_блк (vlax-get-property (vlax-ename->vla-object obj) 'EffectiveName)) 
    (vl-cmdf "_-BEDIT" имя_блк)
    (vl-cmdf "_stretch" "_c" pause pause "" "" pause)
    (vl-cmdf "_BCLOSE" "_S")
    ) ; progn
) ; if
(setvar "CMDECHO" echo)
(setvar "ORTHOMODE" ort)
(princ)
)
Однако, при переходе в редактор блоков, сам редактор блоков аварийно закрывается. В чем причина?
Просмотров: 1941
 
Непрочитано 20.03.2016, 13:06
#2
gomer

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


поэтому (vl-cmdf "_BCLOSE" "_S")
gomer вне форума  
 
Автор темы   Непрочитано 20.03.2016, 15:23
#3
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Это я заметил, если закомментировать эту строчку, то редактор не закрывается. Почему он закрывается прежде, чем выполнится команда растяжения?
Profan вне форума  
 
Непрочитано 20.03.2016, 15:26
#4
Кулик Алексей aka kpblc
Moderator

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


А если вместо vl-cmdf использовать command или command-s?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.03.2016, 16:09
#5
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А если вместо vl-cmdf использовать command или command-s?
То же самое, работа программы прерывается.
Здесь очень важную роль играет выражение
Код:
[Выделить все]
(vl-cmdf "_stretch" "_c" pause pause "" "" pause)
Фактически это растяжение без указания базовой точки, в следящем режиме. Хотелось изменить форму блока без изменения масштаба по одной из осей...
Profan вне форума  
 
Непрочитано 20.03.2016, 16:11
#6
Кулик Алексей aka kpblc
Moderator

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


Если заранее известны объекты, с которыми надо проводить подобные операции, и ты можешь их программно отфильтровать, то в редактор блоков совсем необязательно заходить.
Добавлю: естественно, надо знать что должно быть в результате
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.03.2016, 16:40
#7
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Таким образом, неизвестно почему закрывается редактор блоков?
Ну и хрен с ним, для моих целей оказался более удобным вот такой код:
Код:
[Выделить все]
(defun C:РСТ ( / echo ort)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 1)
(setq ort (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 1)
(vl-cmdf "_-REFEDIT" pause "_OK" "_All" "_No")
(vl-cmdf "_STRETCH" "_c" pause pause "" "" pause)
(vl-cmdf "_REFCLOSE" "_S")
(setvar "CMDECHO" echo)
(setvar "ORTHOMODE" ort)
(princ)
)
Причем, значительно удобнее в том случае, если блок снаружи образмерен. Захватив в секущую рамку и размер, мы получим одновременно измененную форму и измененный размер.
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Почему аварийно закрывается редактор блока при попытке выполнить лисп?

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