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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как получить от системы список (массив) элементов принадлежащих конкретному листу (paperspace)?)

Как получить от системы список (массив) элементов принадлежащих конкретному листу (paperspace)?)

Ответ
Поиск в этой теме
Непрочитано 14.09.2020, 13:18 #1
Как получить от системы список (массив) элементов принадлежащих конкретному листу (paperspace)?)
FEN1X37
 
Инженер САПР
 
Krasnoobsk
Регистрация: 27.03.2020
Сообщений: 2

Здравствуйте.

Подскажите, пожалуйста, как должна выглядеть конструкция на AutoLisp'е, которая копирует все элементы листа ( sheet; paperspace) в другой лист?
Возможно важно - размеры листов не совпадают...
Просмотров: 1461
 
Непрочитано 14.09.2020, 13:35
#2
Кулик Алексей aka kpblc
Moderator

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


Ну, в первом приближении: получить указатель на блок листа-исходника, на блок листа-получателя, и через vla-copyobjects скопировать объекты.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.10.2020, 15:07
#3
FEN1X37

Инженер САПР
 
Регистрация: 27.03.2020
Krasnoobsk
Сообщений: 2


Алексей, спасибо. Толкнули меня в правильном направлении.

Но есть недопонимание в работе системы AutoCAD...

Задача у меня следующая: пользователь-проектировщик изменяет размер уже созданного листа в чертеже. Я не смог придумать как это возможно сделать с имеющимся уже листом... По-этому создаю новый лист в чертеже (работа в одном документе) в который необходимо перенести все объекты листа.
Код:
[Выделить все]
 
      (setq ACTIVE-SHEET-NAME (getvar "CTAB"))

      (setq NEW-SHEET-NAME (strcat ACTIVE-SHEET-NAME "-0"))

	  (command
        "_layer" "_s" "RAMKA"   ""  ; Устанавливаем текущим слой RAMKA
        "_color" "bylayer" ; Устанавливаем текущий цвет
        "_linetype" "_s" "bylayer" "" ; Устанавливаем текущий тип линий
        "_lweight" "bylayer" ; Устанавливаем текущий вес линий
        "_layout" "_t" "SHEET_TEMPLATE.dwt" layout_name ; Создаем новый лист по шаблону
        "_layout" "_set" layout_name ; Делаем созданный лист текущим
        "_layout" "_r" layout_name NEW-SHEET-NAME ; Переименовываем лист
      )

      (setq OLD-BLOCK (vla-get-block (vla-item (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object))) ACTIVE-SHEET-NAME)))
      (princ " =>> ")(princ OLD-BLOCK)(princ "\n")

      (setq NEW-BLOCK (vla-get-block (vla-item (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object))) NEW-SHEET-NAME)))
      (princ " =>> ")(princ NEW-BLOCK)(princ "\n")
Интересно, что система выводит разные результаты при одинаковых запросах:
Код:
[Выделить все]
 =>> #<VLA-OBJECT IAcadBlock 000000712a90c378>
 =>> #<VLA-OBJECT IAcadPaperSpace 0000007119f09d18>
Толкните меня, пожалуйста, как правильно копировать объекты одного листа в другой...
Пытаюсь понять, но пока безуспешно, как у Вас это реализовано вот тут: https://forum.dwg.ru/showthread.php?t=22894&page=49 пост #968
FEN1X37 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как получить от системы список (массив) элементов принадлежащих конкретному листу (paperspace)?)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список видовых экранов на листе? МишаИнженер Программирование 1 22.05.2020 10:44
SCAD Неверен список координат для элементов, неверна геометрическая форма элементов alexandrei99 SCAD 5 02.06.2015 15:56
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06
Можно ли получить список загруженных команд? Кулик Алексей aka kpblc Программирование 8 11.10.2005 09:04
Как получить список открытых файлов? ===AAA=== Программирование 2 26.08.2005 11:55