Темы сайта
Интегрированная система ruCAD - приложение к базовой системе AutoCAD.

Система ruCAD - это приложение строительного профиля в широком понимании, то есть предназначенная для автоматизации строительного проектирования, реконструкции и технического перевооружения любых зданий и сооружений.В отличие от других систем, ориентированных на конкретную область применения, в ruCAD включены средства для комплексной разработки проектной документации наиболее распространенных разделов проекта, выполняемых во всех проектных организациях.
Система управления контентом MODx
Ограничения
В соответствии с Договором между издательством и авторами мы не имеем права полностью публиковать в Интернет материалы книги.

Но, в пределах установленной квоты, будут публиковаться отдельные главы. Кроме того, на сайте будут размещаться материалы, не вошедшие в книгу и полные версии сокращенных по техническим причинам глав.

Так помечены материалы, не опубликованные на сайте!

Новинки
Книга была выпущена в 2004 году. С тех пор многое изменилось - появились версии AutoCAD 2005, 2006, 2007, 2008.

Система ruCAD была выпущена в свет, появились замечания и предложения пользователей. Да и у нас появились новые представления по некоторым вопросам.

Поэтому в материалы книги, публикуемые на сайте, мы вносим дополнительные замечания, выделяемые так:
Так выделяются дополнительные замечания, комментарии, указания!
Где спросить
На нашем сайте было уже несколько форумов. На них было зарегистрировано более 400 посетителей, а многие заходили просто так, в гости. Но сейчас мы вывели форумы из открытого режима. Подробнее о наших форумах
Если очень нужно что-то узнать о ruCAD именно в форумном формате, заходите на Форум сайта
AutoCAD и проектирование
Внимание!
Технические решения и исходные тексты, публикуемые на сайте, могут быть устаревшими!

В таком виде они были во время написания книги, но с тех пор прошло несколько лет, в систему было внесено множество изменений и дополнений.


Низкоуровневая функция диалога выбора файлов


Иллюстрация к функции

(defun _ru-dlg-file (dlg_caption
                     root_dir
                     start_dir
                     filter_mask
                     default_file_name
                     is_multiselect
                     is_can_edit
                     is_can_create_new_file
;;                     is_use_dirinfo
                     /
                     srv
                     result
                     i
                    ) ;_ end of dlg_caption
;;;Диалог выбора файлов
  ;|

Последний вариант
TODO:

Выбор одного файла
(_ru-dlg-file
  "Выбор одного файла"
  "C:\"
  "c:\Data"
  "*.dwg"
  (vl-filename-base (getvar "DWGNAME"))
  nil
  t
  t
) ;_ end of _ru-dlg-file
("C:\.ru\cad\samples\dwg\Слои\Классификатор слоев.dwg")

Выбор нескольких файлов
(_ru-dlg-file
  "Выбор нескольких файлов"
  (getvar "DWGPREFIX")
  (getvar "DWGPREFIX")
  "*.dwg"
  ""
  T
  T
  T
) ;_ end of _ru-dlg-file

("C:\.ru\cad\samples\dwg\Сантехника\Водомеры.DWG"
  "C:\.ru\cad\samples\dwg\Сантехника\Sx_mag.dwg"
  "C:\.ru\cad\samples\dwg\Сантехника\demo-Водомер.dwg"
)


|;
  (if (setq srv (vlax-get-or-create-object "ruShellFileDlgSvr.FileDialog"))
    (progn
      (vlax-invoke-method srv "Create")
      (vlax-put-property srv 'Caption dlg_caption)
      (vlax-put-property srv 'RootDir root_dir)
      (vlax-put-property srv 'StartDir start_dir)
      (vlax-put-property srv 'FilterMask filter_mask)
      (vlax-put-property srv 'DefaultFileName default_file_name)
      (vlax-put-property
        srv
        'MultiSelect
        (ru-conv-value-to-wordbool is_multiselect)
      ) ;_ end of vlax-put-property
      (vlax-put-property srv 'CanEdit (ru-conv-value-to-wordbool is_can_edit))
      (vlax-put-property
        srv
        'CanCreateNewFile
        (ru-conv-value-to-wordbool is_can_create_new_file)
      ) ;_ end of vlax-put-property
  ;;    (vlax-put-property
  ;;      srv
  ;;      'UseDirinfo
  ;;      (ru-conv-value-to-wordbool is_use_dirinfo)
  ;;    ) ;_ end of vlax-put-property
      (setq result (vlax-invoke-method
                     srv
                     "Execute"
                   ) ;_ end of vlax-invoke
      ) ;_ end of setq
      ;; так работает, но ошибка
      (if (= (vlax-variant-value result) :vlax-true)
        (progn
          (setq result '())
          (setq i 0)
          (repeat (vlax-get-property srv 'FilesCount)
;;            (setq file_name )
            (setq result (cons (vlax-variant-value (vlax-invoke-method srv "GetFile" i)) result))
            (setq i (1+ i))
          ) ;_ end of repeat
          (vlax-invoke-method srv "Free")
        ) ;_ end of progn
        (setq result nil)
      ) ;_ end of if
    ) ;_ end of progn
    (princ "
Не удалось запустить ruShellFileDlgSvr.FileDialog")
  ) ;_ end of if
  result
) ;_ end of defun
 ;|«Visual LISP© Format Options»
(80 2 40 2 T "end of " 82 9 1 0 nil nil T nil T)
;*** DO NOT add text below the comment! ***|;

24-07-2004 23:34:12