Как заменить одни блоки на другие
Перейти к содержимому

Как заменить одни блоки на другие

  • автор:

Замена блоков в Автокаде

В статье «Особенности использования блоков в Автокаде» рассмотрено, как при редактировании описания блока все остальные его вхождения на чертеже автоматически изменяются. Бывают случаи, когда нужно не просто отредактировать исходный блок, а полностью его заменить. Чтобы при этом все вхождения на чертеже тоже изменились (или заменилась лишь конкретная часть вхождений определенного блока).

Полное обучение: «AutoCAD на 100%»

Задача нестандартная. Но иногда в AutoCAD замена блока является необходимым условием для корректного выполнения проекта. Есть несколько способов, как это можно сделать:

Замена блоков в Автокаде.

  1. Скачайте исходный файл AutoLISP-приложения «ЗАМЕНА.lsp» (после скачивания разархивируйте его).
  2. Переместите файл на своем компьютере в удобное место. Имейте в виду, что при загрузке этого файла в AutoCAD будет сохраняться путь, поэтому изменение его местоположения в последующем нежелательно.
  3. В Автокаде перейдите на вкладку «Управление» → панель «Приложения» → команда «Загрузить приложения».

Загрузка приложений AutoCAD

Рис. 1. Инструмент AutoCAD «Загрузить приложение».

Откроется диалоговое окно, как показано на рис. 2. Далее находите ранее сохраненный файл «ЗАМЕНА.lsp» и нажимаете «Загрузить».

Замена блоков в Автокаде

Рис. 2. Загрузка/выгрузка приложений AutoCAD.

ПРИМЕЧАНИЕ: Может появиться окно с предупреждением о том, что «обнаружен исполняемый файл вне указанных доверенных местоположений. Дальнейшие действия?». Нажмите «Загрузить».

Все готово. Для вызова команды достаточно прописать в командной строке «ЗАМЕНА» (см. рис. 3).

Команда AutoCAD «Замена»

Рис. 3. Вызов команды AutoCAD «Замена».

Далее нужно выбрать объекты, которые следует заменить. Нажать Enter, после чего указать объект-образец (т.е. тот объект, на который мы хотим заменить). Данная команда работает не только с блоками, но и с другими объектами AutoCAD.

Чтобы заменить блок в Автокаде, пользуйтесь следующим алгоритмом:

  1. Выделите блок, который нужно заменить.
  2. Если вхождений данного блока на чертеже несколько, то нажмите ПКМ и выберите «Выбрать подобные». Все вхождения этого блока автоматически выделятся.
  3. В командной строке пропишите «ЗАМЕНА».
  4. С помощью мышки укажите в рабочем пространстве блок, на который нужно все заменить, т.е. объект-образец. Нажмите Enter.

ПРИМЕЧАНИЕ: Ознакомьтесь с видеоуроком, в котором я показываю, как можно быстро вызвать команду «Выбрать подобные». (см. урок «Псевдонимы команд AutoCAD»).

Массовая замена вида блоков на другой вид блоков

Короче надо ВО ВСЕМ ЭНДЕ заменить эндстоун на другой блок. Кстати, все что будет дальше генерироваться должно будет сделано из нового блока, но это хук. Меня волнует, что это слишком много блоков. Либо как вариант дать всем им нбт, а самому сделать эндерняк с нбт. Есть идеи?

Uberm Sternenzelt Richtet Gott, wie wir gerichtet.

Liahim

Делал когда-то такую штучку.
Быстрый способ замены одного блока другим. Думаю, переписать под свои нужды будет не проблема.
Смысл в том, что тут не используется setBlockState();
Остаётся только где-нибудь в эвенте загрузки чанков пробежаться по нему и заменить все блоки на нужные.
Ну и. Имеет смысл использовать не конкретно данный метод, а добывать ExtendedBlockStorage и пробегаться уже по нему.

public static void simpleSetBlock(World world, BlockPos pos, IBlockState state, boolean nullCheck) < if (nullCheck) < ExtendedBlockStorage ebs = world.getChunkFromBlockCoords(pos).getBlockStorageArray()[pos.getY() >> 4]; if (ebs != Chunk.NULL_BLOCK_STORAGE) ebs.set(pos.getX() & 15, pos.getY() & 15. 
jopi
Попрошайка

1,421 30 260

Хотел выпендрится но не факт что смогу, если как-то можно доставай чанки и в каждом чанке меняй блоки все с энерняка на свой.
как — хз

GoogleTan
Картошка :3

1,354 43 310

Дело не в том как, а в том, что команда филл на 100*100*100 блоков грузит средний пк очень сильно, а если игорок уже крепость находил? Это будет заменить где-то 100*1000*1000(ну примерно) блоков Это в 100 раз больше. Не думаю, что смогу протестить собственный мод.

Uberm Sternenzelt Richtet Gott, wie wir gerichtet.

jopi
Попрошайка

1,421 30 260

Зачем использовать команду филл?
я пишу как можно попробовать поработать взяв чанки и заменяя блоки без команд

GoogleTan
Картошка :3

1,354 43 310
А какая разница? Думаешь команда плохо оптимизированна? Я не думаю что смогу лучше
Uberm Sternenzelt Richtet Gott, wie wir gerichtet.

jopi
Попрошайка

1,421 30 260
Да думаю что команда это худший выбор.
разница если подумать есть, и возможно не маленькая.

GoogleTan
Картошка :3

1,354 43 310

Я и не планировала ее использовать. Главное что она заменяет блоки на блоки. Я не думаю, что смогу сделать что-то подобное с лучшей оптимизацией. Потому и спрашиваю.

Uberm Sternenzelt Richtet Gott, wie wir gerichtet.

Might

Если при генерации энда нужно блоки менять, то хук в ChunkProviderEnd, замени Blocks.end_stone на свой блок

GoogleTan
Картошка :3

1,354 43 310
Это да, спасибо. Но так же надо заменить все существующие.
Uberm Sternenzelt Richtet Gott, wie wir gerichtet.

ロロロ

3,005 192 592
А как ты будешь определять, кем поставлен блок?
Тип сгенерился он сам или его поставил игрок?

��

Использую ахеренные квадратики и горжусь этим! А ты дальше страдай с буквами

RareScrap написал(а):
чувак, смени уже ник с этих ущербных квадратиков​

GoogleTan
Картошка :3

1,354 43 310
Ну в евент хендлере сделаю когда установлен блок — проверяю это ли не эндерняк. А дальше нбт
Uberm Sternenzelt Richtet Gott, wie wir gerichtet.

ロロロ

3,005 192 592
Кхм, а разве есть NBT того, что «блок установлен игроком» ?

��

Использую ахеренные квадратики и горжусь этим! А ты дальше страдай с буквами

RareScrap написал(а):
чувак, смени уже ник с этих ущербных квадратиков​

GoogleTan
Картошка :3

1,354 43 310
Короче кэпеблити или что там есть.
Uberm Sternenzelt Richtet Gott, wie wir gerichtet.

Liahim

4,045 63 645

Делал когда-то такую штучку.
Быстрый способ замены одного блока другим. Думаю, переписать под свои нужды будет не проблема.
Смысл в том, что тут не используется setBlockState();
Остаётся только где-нибудь в эвенте загрузки чанков пробежаться по нему и заменить все блоки на нужные.
Ну и. Имеет смысл использовать не конкретно данный метод, а добывать ExtendedBlockStorage и пробегаться уже по нему.

public static void simpleSetBlock(World world, BlockPos pos, IBlockState state, boolean nullCheck) < if (nullCheck) < ExtendedBlockStorage ebs = world.getChunkFromBlockCoords(pos).getBlockStorageArray()[pos.getY() >> 4]; if (ebs != Chunk.NULL_BLOCK_STORAGE) ebs.set(pos.getX() & 15, pos.getY() & 15, pos.getZ() & 15, state); > else world.getChunkFromBlockCoords(pos).getBlockStorageArray()[pos.getY() >> 4].set(pos.getX() & 15, pos.getY() & 15, pos.getZ() & 15, state); >

Командные консоли/fill

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

История [ ]

Официальный выпуск Java Edition
1.8 14w03a Добавлена команда /fill .
Альфа-версия Pocket Edition
0.16.0 build 1 Добавлена команда /fill .

Как заменить одни блоки на другие

Плагин работает в двух режимах: Заменить выбранные – позволяет заменить все выбранные блоки на один блок-образчик; Заменить подобные – позволяет заменить все вхождения одного блока на один блок-образец. Позволяет удалить описание замененного блока из базы чертежа. По аналогии с командой «Очистить» (_PURGE). Присутствуют различные настройки

Связанные новости и статьи

Использование

Вариант работы функции [заменитьВыбранные/заменитьПодобные]:
Выбор режима работы функции

Режим «Заменить выбранные» позволяет заменить все выбранные блоки на один блок-образчик

Выберите несколько блоков для их замены:
Выбор одного или нескольких блоков. В выбор может попадать и блок-образчик

Выберите заменяющий блок:
Выбор блока-образчика, на который будут заменены блоки в предыдущем выборе

Режим «Заменить подобные» позволяет заменить все вхождения одного блока на один блок-образчик

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

Выберите заменяющий блок:
Выбор блока-образчика

Удаление блока из базы чертежа

Позволяет удалить описание замененного блока из базы чертежа. По аналогии с командой «Очистить» (_PURGE). Срабатывает при обоих режимах работы функции

Удалить замененные блоки из базы чертежа? [Да/Нет]:
Да — удаление описаний блока из базы чертежа; Нет — завершение работы функции

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *