|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
LISP. Копирование объекта из внешней ссылки в текущий чертеж
Регистрация: 20.03.2008
Сообщений: 2,680
|
||
Просмотров: 7810
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Посмотреть не могу - башка уже не варит. Поэтому ответы "насухую".
Проверяй тип линии объекта. Если он не Continuous, то предварительно загрузи тип линии. Ну или меняй список для entmakex. По вопросу блоков - может быть, их сначала стоит создавать, например, через vla-CopyObjects?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Забыли еще про Express Tools. Там есть команда NCOPY (Copies objects nested in an xref or a block)
Описание находится в файле TREXBLK.LSP Еще вариант отсюда Copy nested object(s) - how to work with XRefs? Без проверки. Код:
*** Добавлено Еще вспомнил про Copy to Drawings
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Прошу прощения за длительное молчание, не доходили руки доработать программу.
VVA, спасибо, но я о ней знал. Она также отказывается работать с типами линий. Точнее копирует линию, но тип "Continuous" ей назначает принудительно. Мне было важно получить полную копию линии. С типами линий тоже мимо. В общем, добавил я в код, приведенный в первом посте, обработку типов линий при помощи функции Steal от Lee Mac (для работы кода файл StealV1-8.lsp должен быть загружен или должен находиться в путях поддержки). Код:
Замечено, что программа вылетает при попытке скопировать примитивы типа VERTEX. Видимо, есть там с ними какая-то специфика в entmake. Поскольку пока мне они не нужны - не разбирался с ними. Равно, как и с блоками (напомню, что они попадают в текущий файл расчлененными). |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
А _ncopy поддерживает множественный выбор? Я просто не в курсе...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 02.07.2016
Сообщений: 17
|
Поддерживает, но только после вызова команды и только щелчком по обекту, не рамкой.
В принципе устраивает, что б выбор был одиночным, но тогда не было запроса о базовой точке. Но макрос *^C^C_ncopy;\;@@; не работает Последний раз редактировалось barabaka, 14.04.2017 в 15:06. |
|||
![]() |
|
||||
Регистрация: 02.07.2016
Сообщений: 17
|
Работаю с генпланами и подкладываю подоснову внешней ссылкой. Часто надо что то с подосновы скопировать в рабочий чертеж. Эта команда хороша всем, но при указании базовой точки и второй можно случайно "уйти" с координат. Поэтому и пробую сделать макрос, что б либо выбрать несколько объектов и вставить их в базовую точку или выбирать по одному, но без запроса базовой точки как таковой.
Последний предложеный мне макрос ни одну, ни вторую функцию не выполняет |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Если речь идет о моем "маккросе", то это по сути просто вызов команды "_NCOPY", поэтому и ждать от него нечего. А по сути получается, что базовая точка указывается в пределах внешней ссылки (но я в этом не уверен), а вторая точка - в пределах текущего чертежа.
Когда-то на форуме caduser.ru родился вот такой макрос выполнения команды РАСТЯНУТЬ без указания базовой точки Код:
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Код:
Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 15.04.2017 в 19:56. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Нет, так и задумывалось. Другого способа пока в голову не пришло
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Попробовал я разобраться с файлом trexblk.lsp из ЕТ, да что-то муторно показалось. Одно уяснил, что для выбора объектов используется функция (nentsel) в цикле, да еще то, что там каким-то образом выбранные объекты обрабатываются (ssget). А дальше что-то утомился.
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Согласен. Предлагаю продолжить обсуждение вот где:
LISP. Копирование объекта из внешней ссылки в текущий чертеж. Тем более, похоже, что там есть нужное решение. |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Хреново, что блок расчленяется. У меня есть объекты в виде мультивыноски с пользовательским блоком, атрибут которого является нумератором. Так вот, целиком вся выноска не копируется. Отдельно выносная линия в виде отрезка, отдельно пользовательский блок, который расчленяется до полилинии, а атрибут вообще как будто его и не было.
То же самое безобразие делает и _NCOPY. В последних версиях (смотрел в 2013) команда "_NCOPY" ("КОПИРОВАТЬВЛОЖ") формируется самим AutoCAD'ом (а не берется из ET), поэтому я ковырялся с файлом trexblk.lsp из ЕТ AutoCAD 2006. Последний раз редактировалось Profan, 16.04.2017 в 10:03. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Profan, думал я этим заняться, но пока нужды особой не было. Для победы над блоками придется решить несколько вопросов, как организационных, так и алгоритмических.
1. Что делать, если блок уже есть в текущем чертеже? Переопределять? Или, чтобы он принимал вид того, что уже есть? Думаю, первое логичнее - ведь мы хотим несмотря ни на что получить копию блока из внешней ссылки? Тогда даже лучше не переопределять, а переименовывать копируемый блок. 2. Полагаю придется также "грабить" из ссылки ВСЕ блоки (помимо всех типов линий). Проблема отпуржить, конечно, небольшая, но вот как быть с п.1, пока неясно. Если блок такой уже есть в чертеже, выходит, его в нем надо переименовать, а из ссылки подгрузить тот? Прошу помочь определиться тех, кому интересно. 3. С обработкой атрибутов вроде бы проблем возникнуть не должно. Собираем их список из ссылки и назначаем их по этому списку в чертеже. 4. Мультивыноски (и видмимо, размеры) придется обрабатывать отдельно. Что я еще мог забыть? |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Мультилинии. Наверное, придется импортировать еще стиль мультилиний.
Не знаю как поведут себя таблицы.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Lisp. Копирование объекта, шаг и повтор с добавлением в новый слой | pobat | LISP | 9 | 19.10.2016 08:18 |
Как все слои обеденить в один автоматически при внедрение внешней ссылки | kofein4ik | AutoCAD | 10 | 23.10.2015 10:10 |
Как можно разбить на примитивы только по контуру внешней ссылки? | Иван Павлов | AutoCAD | 5 | 18.01.2013 08:52 |
Как программно определить путь файла внешней ссылки | kp+ | Программирование | 3 | 11.08.2005 10:39 |
Не явный путь задания внешней ссылки | Елена | AutoCAD | 2 | 05.11.2004 00:21 |