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

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

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

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

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

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

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

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


Изменение ширины полилиний в блоке




(defun ru-block-lw-name (name pline_width scale / base)
                        ;|
Создает имя, в которое входит базовое имя блока, ширина полилинии и масштаб

Может передаваться имя блока, в котором уже есть ширина - при редактировании
Пример:
Исходное имя К-50-80-160
После первого применения* (snvalid "RU-LW(К-50-80-160)50000-мм-1000") T

1. (ru-block-lw-name "К-50-80-160"  50.0 1)
"RU-LW(К-50-80-160)50000-мм-1000"

2. (ru-block-lw-name "RU-LW(К-50-80-160)50000-мм-1000"  50.0 1)
"RU-LW(К-50-80-160)50000-мм-1000"

3. (ru-block-lw-name "RU-LW(К-50-80-160)50000-мм-1000"  25.0 1)
"RU-LW(К-50-80-160)25000-мм-1000"

4. (ru-block-lw-name "RU-LW(К-50-80-160)50000-мм-1000"  25.0 0.5)
"RU-LW(К-50-80-160)25000-мм-500"

5. (ru-block-lw-name "RU-LW(К-50-80-160)50000-мм-1000"  25.0 0.5)
"RU-LW(К-50-80-160)25000-мм-500"

|;

  (strcat "RU-LW("
          (if (setq base (ru-string-word-or-nil
                           name
                           2
                           (list "(" ")")
                         ) ;_ end of ru-string-word-or-nil
              ) ;_ end of setq
            base
            name
          ) ;_ end of if
          ")"
          (itoa (fix (* pline_width 1000)))
          "-"
          (ru-unit-name)
          "-"
          (itoa (fix (* scale 1000))
          ) ;_ end of ru-string-word
  ) ;_ end of strcat
) ;_ end of defun





(defun ru-block-lw-change
                          (ent       name      ins_pnt   ang
                           scale     /         do_insert pline_width
                          )
;|--------------------------------------------------------------------
Вычисляем требуемую ширину полилинй. Для этого извлекаем ВЕС линий своей
функцией ru-lw-current. Она возвращает результат в единицах LW.
Это число мы считаем  за единицу рисунка, переводим в мм на бумаге,
а потом обратно в единицы для ширины полилиний.
Не забываем целое перевести в действительное число
---------------------------------------------------------------------|;

  (setq
    pline_width
                (ru-conv-millimeter-in-paper-to-unit
                  (ru-conv-unit-to-millimeter-in-paper (* 1.0 (ru-lw-current)))
                ) ;_ end of ru-conv-millimeter-in-paper-to-unit
;|--------------------------------------------------------------------
Вычисляем требуемое имя блока, включающее параметры ширины, единиц и масштаба
---------------------------------------------------------------------|;
    name        (ru-block-lw-name name pline_width scale)
  ) ;_ end of setq
  (if (tblsearch "BLOCK" name)
;|--------------------------------------------------------------------
Если блок с новым именем уже определен, стираем вставку прототипа
---------------------------------------------------------------------|;
    (progn
      (entdel ent)
      (setq do_insert t)
    ) ;_ end of progn
    (if
      (ru-block-obj-make-def-from-insert
        ent
        name
        (- ang)
        "0"
        acbyblock
        aclnwtbylwdefault
        pline_width
      ) ;_ end of ru-block-obj-make-def-from-insert
       (setq do_insert t)
      (princ (strcat "Не создан блок " name))
    ) ;_ end of if
  ) ;_ end of if
  ;; А вдруг есть атрибуты
  (if do_insert
    (ru-block-insert-attedit name ins_pnt scale scale scale ang)
  ) ;_ end of if
  do_insert
) ;_ end of defun



24-07-2004 23:34:12