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

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

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

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

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

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

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

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


Создание блока объектными методами




(defun ru-block-obj-make-unnamed-from-insert (insert_ent
                                              new_ang
                                              new_layer
                                              new_color
                                              new_lw
                                              new_pline_width
                                              /
                                              insertion_point
                                              obj
                                              vla_array_objs
                                             )
  (setq
    obj             (vlax-ename->vla-object insert_ent)
    insertion_point (vlax-safearray->list
                      (vlax-variant-value (vla-get-insertionpoint obj))
                    ) ;_ end of vlax-safearray->list
    vla_array_objs  (ru-obj-ent-ss-explode obj)
                    ;; ПРИМИТИВЫ ИМЕЮТ СВОЙСТВА ПО ОПРЕДЕЛЕНИЮ
  ) ;_ end of setq


  (ru-obj-vla-array-move vla_array_objs insertion_point (list 0 0 0))
  (ru-obj-vla-array-rotate vla_array_objs (list 0 0 0) new_ang)
  (if new_layer
    (ru-obj-vla-array-mod vla_array_objs "Layer" new_layer)
  ) ;_ end of if
  (if new_color
    (ru-obj-vla-array-mod vla_array_objs "Color" new_color)
  ) ;_ end of if
  (if new_lw
    (ru-obj-vla-array-mod
      vla_array_objs
      "Lineweight"
      new_lw
    ) ;_ end of ru-obj-vla-array-mod
  ) ;_ end of if
  (if new_pline_width
    (ru-obj-vla-array-mod
      vla_array_objs
      "ConstantWidth"
      new_pline_width
    ) ;_ end of ru-obj-vla-array-mod
  ) ;_ end of if
  (ru-block-obj-make-unnamed-from-vla-array (list 0 0 0) vla_array_objs)

) ;_ end of defun


(defun ru-block-obj-make-unnamed (base_point selection)

  (ru-block-obj-make-unnamed-from-vla-array base_point (vlax-make-variant(ru-ss-to-vla-array selection)))

)
(defun ru-block-obj-make-unnamed-from-vla-array (
                                         base_point
                                         arr_objects
                                         / obj)
;;; Возвращает VLA-объект определения блока

  (ru-error-catch
    (function
      (lambda ()
        (vla-copyobjects
          (ru-obj-get-active-document)
          arr_objects
          (setq obj (vla-add (ru-obj-get-blocks) (vlax-3d-point base_point) "*U"))
        ) ;_ end of vla-copyobjects
        (ru-obj-vla-array-erase arr_objects)
        obj
      ) ;_ end of lambda
    ) ;_ end of function
    (function
      (lambda (msg)
        (princ (strcat "
RU-BLOCK-OBJ-MAKE-UNNAMED-FROM-VLA-ARRAY: " msg))
        nil
      ) ;_ end of lambda
    ) ;_ end of function
  ) ;_ end of ru-error-catch

)

(defun ru-block-obj-make-def (name
                              base_point
                              selection
                             )
  ;|

(ru-block-obj-make-def "new_block" (ru-get-point-reguired "Базовая точка"  nil)  (ru-ss-get-or-ssfirst))
  |;
  (ru-error-catch
    (function
      (lambda ()
        (vla-copyobjects
          (ru-obj-get-active-document)
          (ru-ss-to-vla-array selection)
          (vla-add (ru-obj-get-blocks) (vlax-3d-point base_point) name)
        ) ;_ end of vla-copyobjects
        ;; Удалить исходные объекты
        (ru-obj-ent-ss-erase selection)
        name
      ) ;_ end of lambda
    ) ;_ end of function
    (function (lambda (msg)
                (princ (strcat "
RU-BLOCK-OBJ-MAKE-DEF: " msg))
                nil
              ) ;_ end of lambda
    ) ;_ end of function
  ) ;_ end of ru-error-catch

) ;_ end of defun

24-07-2004 23:34:12