Неверно отрабатывает (command "_open" "d:\\TEMP\\1.dwt" "_y")
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Неверно отрабатывает (command "_open" "d:\\TEMP\\1.dwt" "_y")

Неверно отрабатывает (command "_open" "d:\\TEMP\\1.dwt" "_y")

Ответ
Поиск в этой теме
Непрочитано 25.08.2010, 07:42 #1
Неверно отрабатывает (command "_open" "d:\\TEMP\\1.dwt" "_y")
serg01
 
Иркутск
Регистрация: 04.07.2005
Сообщений: 213

День добрый. Столкнулся со следующей проблемой:
На одной машине код
Код:
[Выделить все]
(command "_open" "d:\\TEMP\\1.dwt" "_y")
отрабатывает, а на другой нет.
На обоих SDI=1
Если на второй машине изменить код на
Код:
[Выделить все]
(command "_open" "_y" "d:\\TEMP\\1.dwt")
, то открывает. Что может быть не так со второй машиной? Говорит вот что:

Команда: (command "_open" "d:\\TEMP\\1.dwt" "_y")
_open Вы действительно хотите отказаться от всех изменений в чертеже? <Н>
d:\TEMP\1\r1_A0.dwt
Ответьте Да или Нет.
; ошибка: Функция отменена

AutoCAD 2007 Рус.
Просмотров: 2665
 
Непрочитано 25.08.2010, 11:03
#2
Кулик Алексей aka kpblc
Moderator

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


Открывай другой конструкцией:
Код:
[Выделить все]
(vla-open (vla-get-documents (vla-get-activedocument (vlax-get-acad-object))) "d:\\temp\\1.dwt")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.08.2010, 11:05
#3
ShaggyDoc

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


При открытии файла надо учитывать все возможные варианты состояния текущего файла и соответствующие опции команды OPEN. Вот пример:
Код:
[Выделить все]
(defun ru-dwg-open-file (dwg_file / n)
;;; Пример:  (ru-dwg-open-file "c:\\.ru\\cad\\samples\\dwg\\Dim_test.dwg")
  (ru-error-catch
    (function
      (lambda ()
        (if (= 0 (getvar "SDI"))
          ;; Для многодокументного режима (SDI=0) открываем новый документ  
          ;; в новом окне. Сохранять открытые не нужно
          (vla-open (ru-obj-get-docs-collection)
                    dwg_file
          ) ;_ end of vla-open
          (progn
            ;; для однодокументного режима
            (if (not (equal 2 (logand 2 (getvar "QAFLAGS"))))
              (setvar "QAFLAGS" (+ (getvar "QAFLAGS") 2))
            ) ;_ end of if
            (if (not (equal 4 (logand 4 (getvar "QAFLAGS"))))
              (setvar "QAFLAGS" (+ (getvar "QAFLAGS") 4))
            ) ;_ end of if
            (vl-cmdf "_.OPEN")
            ;; Проверяем, не изменялся ли текущий рисунок
            (if (not (equal 0 (getvar "DBMOD")))
              ;; и, если изменялся - передаем опцию "Yes", дескать, сохраняй 
              (vl-cmdf "_y")
            ) ;_ end of if
            (vl-cmdf dwg_file)
            (setq n 0)
            ;; и теперь, пока работает команда OPEN 
            (while (and (< n 4)
                        (wcmatch (getvar "CMDNAMES") "*OPEN*")
                   ) ;_ end of and
              (t
                ;; на все возможные запросы даем пустой ответ
                (vl-cmdf "")
              ) ;_ end of T
              (setq n (+ n 1))
            ) ;_ end of while
            (setvar "QAFLAGS" 0)
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of lambda
    ) ;_ end of function
    (function
      (lambda (msg)
        (princ (strcat "\nRU-DWG-OPEN-FILE: " msg))
        nil
      ) ;_ end of lambda
    ) ;_ end of function
  ) ;_ end of ru-error-catch
) ;_ end of defun
Напрямую не примените - используются специальные функции с префиксами ru-, но алгоритм понятен.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 03.09.2010, 11:22
#4
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Спасибо, буду разбираться.
serg01 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Неверно отрабатывает (command "_open" "d:\\TEMP\\1.dwt" "_y")