| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP: BLOCKSSCALE: Всем блокам чертежа устанавливается свойство "Одинаковый масштаб"

LISP: BLOCKSSCALE: Всем блокам чертежа устанавливается свойство "Одинаковый масштаб"

Ответ
Поиск в этой теме
Непрочитано 16.04.2021, 14:46 #1
LISP: BLOCKSSCALE: Всем блокам чертежа устанавливается свойство "Одинаковый масштаб"
valerik88
 
Регистрация: 02.07.2016
Сообщений: 228

Команда BLOCKSSCALE
Устанавливает всем блокам чертежа свойство "Одинаковый масштаб", чтоб по всем осям он был одинаковым.
Это свойство можно установить вручную в редакторе блоков (на скриншоте)

Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 38
Размер:	6.7 Кб
ID:	236352  

Вложения
Тип файла: lsp BlocksScale.lsp (1.1 Кб, 14 просмотров)

Просмотров: 3026
 
Непрочитано 16.04.2021, 14:52
1 | #2
Кулик Алексей aka kpblc
Moderator

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


1. = для :vlax-true / :vlax-false может иногда давать неожиданные результаты.
2. Забыл про таблицы и размеры.
3. Забыл про внешние ссылки.
4. Нет меток начала / конца отмены.
5. Код можно значительно упростить.

----- добавлено через ~10 мин. -----
Делать ничего не хочу, так что те же яйца, вид сбоку. Плюс отчет об ошибках, буде таковые появятся. Без тестирования.
Код:
[Выделить все]
 (vl-load-com)
(defun c:blocksscale2 (/ adoc err err_lst)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (vlax-for def (vla-get-blocks adoc)
    (if (and (equal (vla-get-islayout def) :vlax-false)
             (equal (vla-get-isxref def) :vlax-false)
             (not (wcmatch (vla-get-name def "`*D*,`*T*")))
             (vlax-property-available-p def 'blockscaling)
        ) ;_ end of and
      (if (vl-catch-all-error-p
            (setq err (vl-catch-all-apply (function (lambda () (vla-put-blockscaling def acuniform)))))
          ) ;_ end of vl-catch-all-error-p
        (setq err_lst (cons (cons (vla-get-name def) (vl-catch-all-error-message err)) err_lst))
      ) ;_ end of if
    ) ;_ end of if
  ) ;_ end of vlax-for
  (foreach item (vl-sort err_lst (function (lambda (a b) (< (car a) (car b)))))
    (princ (strcat "\n" (car item) " : " (cdr item)))
  ) ;_ end of foreach
  (vla-endundomark adoc)
  (princ)
) ;_ end of defun
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP: BLOCKSSCALE: Всем блокам чертежа устанавливается свойство "Одинаковый масштаб"

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Очистка чертежа от мусора gomer Готовые программы 124 19.11.2021 11:13
Задание переменной для чертежа, что бы масштаб блоков или линий был или 0.5 или 1 или 2 Gotch AutoCAD 34 23.05.2019 15:33
Как вернуть окно сброса масштабов чертежа при открытии самого чертежа? rtyu AutoCAD 2 30.12.2014 12:51
Как вывести на печать "вставку" (ссылка на DWG) прозрачнее самого основного чертежа? star282 AutoCAD 19 05.02.2014 09:23
Можно ли заменить свойство цвета на ByLayer во всех блоках чертежа? dep AutoCAD 10 06.10.2008 08:34