Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:

Команда "Открыть", которая работает как когда SDI=0 так и когда SDI=1

Назад к списку функций
;;; SOPEN.LSP
;;; Команда Open, которая работает во всех случаях,
;;; когда SDI=0 или SDI=1 
;;;
;;; Для AutoCAD 2000+
;;; Пример: (sopen "c:\\drawing1.dwg")
;;; Обратите внимание на то, что QAFLAGS может не восстановиться в 0, поэтому желательно добавить
;;; (setvar "qaflags" 0) в acaddoc.lsp или любой другой загружаемый при запуске AutoCAD lisp-файл

;;; Открыть и активировать файл как "только для чтения"
(defun openRO (fna)
  (vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) fna :VLAX-TRUE))
)

(defun sopen (fna / n)
  (if (= 0 (getvar "SDI"))
    (vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) fna))
    (progn
      (if (not (equal 2 (logand 2 (getvar "qaflags")))) 
        (setvar "qaflags" (+ (getvar "qaflags") 2))
      )
      (if (not (equal 4 (logand 4 (getvar "qaflags")))) 
       (setvar "qaflags" (+ (getvar "qaflags") 4))
      )
      (command "_.open")
      (if (not (equal 0 (getvar "dbmod")))
        (command "_y")
      )
      (command fna)  
      (setq n 0)
      (while (and (< n 4)
                  (wcmatch (getvar "cmdnames") "*OPEN*")
             )
          (T
            (command "")
          )
        (setq n (+ n 1))
      )
      (setvar "qaflags" 0)
    )
  )
)



Copyright © Сайт поддержки пользователей САПР by Victor Tkachenko