LISP. Обнуление координаты Z (аналог FLATTEN )
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Обнуление координаты Z (аналог FLATTEN )

LISP. Обнуление координаты Z (аналог FLATTEN )

Ответ
Поиск в этой теме
Непрочитано 08.10.2008, 16:06 3 | #1
LISP. Обнуление координаты Z (аналог FLATTEN )
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,996

Программа написана Joe Burke и опубликована здесь: SuperFlatten
Там же будут публиковаться последующие версии. Начиная с версии 1.2c адаптирована к локализованным версиям Автокада.
Первая версия публиковалась здесь: Проклятая Z координата
Запускать:
SF или SuperFlatten
Кроме того с помощью опций можно устанавливать:
Rename blocks - переименовывать блоки, объекты в которых нужно плющить
Explodable blocks - сделать все блоки расчленяемыми
Overkill - запускает Express'овскую команду Overkill
Proxies - плющит прокси объекты
Должна работать начиная с 2000 версии Автокада. Для корректной работы всех опций нужен Автокад 2006 и позже и установленные Express Tools

1. SuperFlatten 2.0b beta VVA.rar - Обработка блоков, в имени которых есть UNICOD символы
2. Другие варианты см. #2
3. SuperFlatten 2.0c при "обнулении" взрывал мультивыноски см пост #91

Вложения
Тип файла: zip SuperFlatten 1.2g.zip (27.4 Кб, 1453 просмотров)
Тип файла: zip SuperFlatten 2.0c.zip (30.1 Кб, 3500 просмотров)


Последний раз редактировалось VVA, 22.05.2021 в 10:10. Причина: Добавлена версия SuperFlatten 2.0c
Просмотров: 186295
 
Автор темы   Непрочитано 08.10.2008, 16:18
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Некоторые отзывы о работе программы можно почитать здесь: Удаление дублированных элементов чертежа
Другие варианты обнуления координаты Z:
1. FLATTEN из Express Tools
2. Начиная с 2007-й версии команда _Flatshot (для тел и поверхностей)
3. Еще один вариант обнуления Z. Ссылка на команду Z0
Цитата:
Поэтому в свое время сделал команду обнуления Z путем замены на Z=0 во всех примитивах по dxf кодам 10 11 12 13 14 38, исключая 3DSOLID и дополнительно обрабатывая размеры (10 11 12 13 14). Объекты "плющатся" только в текущем пространстве. Содержимое блоков не обрабатывается (не стояло такой задачи). Ссылку добавил в 1-й пост. В твоем чертеже боки не испортило.
4. Небольшим лиспиком
Код:
[Выделить все]
(defun C:FLATTEN1 ()
 (command "_.UCS" "")
 (command "_.move" "_all" "" '(0 0 1e99) ""
 "_.move" "_p" "" '(0 0 -1e99) "")
 (princ)
)
5. Вариантами этой программы
http://dwg.ru/dnl/25
http://dwg.ru/dnl/296
6. Вариант Lee MAC (аналог п.3 с обработкой блокировки слоев)
Код:
[Выделить все]
(defun c:flat  (/ ss ssObj j)
  (vl-load-com)
  (vlax-map-collection
    (vla-get-Layers
      (vla-get-ActiveDocument
        (vlax-get-acad-object)))
    '(lambda (x) (vla-put-lock x :vlax-false)))
  (if (setq ss (ssget "_X" (list (cons 410 (getvar "CTAB")))))
    (progn
      (setq ssObj (mapcar 'vlax-ename->vla-object
                          (mapcar 'cadr (ssnamex ss))) j 0)
      (foreach Obj  ssObj
        (foreach n  '(1e99 -1e99)
          (if (vl-catch-all-error-p
                (vl-catch-all-apply
                  '(lambda (x)
                     (vla-move x (vlax-3d-point (list 0 0 0))
                                 (vlax-3d-point (list 0 0 n))))
                  (list Obj)))
            nil
            (setq j (1+ j)))))
      (princ (strcat "\n" (rtos (/ j 2.0)) " Objects Flattened.")))
    (princ "\n<!> No Objects Found <!>"))
  (princ))

7. Утилита от Stolmachev (без проверки): "Утюг" ZZ (ещё один, почти универсальный, flatten) и здесь https://forum.dwg.ru/showpost.php?p=...9&postcount=39
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 14.03.2020 в 19:44. Причина: Добавлен п.6
VVA вне форума  
 
Непрочитано 19.06.2009, 10:49
#3
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 539


а есть лиспик для обнуления какой хочу координаты.Конкретно "Y".Или проецирующей на какую нить определенную плоскость?
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 19.06.2009, 11:31
#4
Кулик Алексей aka kpblc
Moderator

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


Пост 2, п.1 и 2.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.03.2011, 15:29
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Superflatten обновилась до версии 2.0 beta
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.04.2011, 14:36
#6
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


Занудства ради, пару замечаний по программе:
- Нет опции скрытия невидимых линий (во Flatten есть, коряво, но все-же есть)
- Странно работает опция переименования блоков, я так понимаю, что при выборе этой опции выбранные блоки должны оставаться блоками, но с другим именем, но происходит не так - выбранные блоки 0-го уровня вложенности разбиваются (не все, возможно дело в из динамичности, или в содержании атрибутов), а вложенные блоки модифицируются, не разбиваются, но при этом и не переименовываются
Apelsinov вне форума  
 
Непрочитано 15.04.2011, 11:06
#7
andrk


 
Регистрация: 14.04.2011
Сообщений: 5


Не могу понять почему, но при выполнении команды _flatshot, выскакивает "Отсутствуют тела или поверхности, которые можно спроецировать." Объекты я выбираю все предварительно. У меня акад 2011. Подскажите плиз..
Очень нужно обнулить Z.
andrk вне форума  
 
Автор темы   Непрочитано 15.04.2011, 11:18
1 | #8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


andrk, Почитай внимательно п.2 из #2
Цитата:
2. Начиная с 2007-й версии команда _Flatshot (для тел и поверхностей)
Если твои объекты не тела и поверхности (о чем тебе и сообщается), то это не твой случай. Пробуй код из #1 или варианты 1,3-5 из #2
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.04.2011, 11:37
#9
andrk


 
Регистрация: 14.04.2011
Сообщений: 5


расскажите, пожалуйста, как его применять? этот код. прям просто в командной строке что ли?
andrk вне форума  
 
Автор темы   Непрочитано 15.04.2011, 11:40
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


andrk, Подними глаза на 1 строчку выше (или ниже) и пройдись по ссылке в моей подписи
....................................................................|
....................................................................|
....................................................................|
....................................................................V
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.04.2011, 12:06
#11
andrk


 
Регистрация: 14.04.2011
Сообщений: 5


попробовал superflatten 2.0 beta...
если выбираю часть каких-то объектов, то все хорошо.
но вот когда делаю через выбрать все, чтобы быть уверенным, то выскакивает:
"Команда: _superflatten
найдено: 39944
Analyzing selection... |
Error: Ошибка Automation. Ключ не найден"
Прокомментируйте пжста..
andrk вне форума  
 
Автор темы   Непрочитано 15.04.2011, 14:47
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от andrk Посмотреть сообщение
попробовал superflatten 2.0 beta..
Попробуй версию 1.2, выполник п. 1,2,3
Если не поможет, то
1. Предварительно чертежу сделай _purge и _audit.
2. Проверь на отсутствие proxy.
3. Выставь переменную Demandload=0, закрой и открой снова рисунок.
4. повтори команду
5. если все равно будет ошибка, есть еще п. 1,3,4,5
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.04.2011, 13:50
#13
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


У меня следующая проблема. Никогда такого не было. А здесь пришел инжиниринг, где попался блок (см. вложение). Методом тыка я его нашел. Хотел зайти в редактор блока, а нетушки. Не получилось. Аудит ничего не дал. Думаю, что в аналогах будет то же. А эта программа видно, что мощная
Выберите объекты:
Analyzing selection... \
Error: Ошибка Automation. Ключ не найден
Помогите пожалуйста...
Вложения
Тип файла: dwg
DWG 2007
block.dwg (97.9 Кб, 23540 просмотров)
Вовочка вне форума  
 
Непрочитано 29.04.2011, 14:20
#14
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,373


Вовочка, что-то я проблему не понял. Редактор блоков блок открывает, точка вставки блока- 0,0,0, т. е. z-координата нулевая, так что всё в порядке
Хмурый вне форума  
 
Непрочитано 29.04.2011, 15:06
#15
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


По поводу редактора блоков, я перемудрил. Вернул в предыдущее значение переменную - DEMANDLOAD. Но не в этом проблемма. Суть: есть чужие чертежи (100 штук) иностранные. Тоесть препираться с исполнителем из-за бугра будет долго. В этих чертежах есть НЕЕЕЕЕЕЕЕЕСКОЛЬКО примитивов которые не лежат на нуле. Мне нужно всю эту работу сплющить. Но сами понимаете, что проганять через пальчики 100 чертежей неправильно. Я создал связку BAT->SCR->LSP (самое время поблагодарить Д. Эббота) где лиспом выступает суперфлаттен. Перед этим тестил СФ (SuperFlatten). Нарадоватся не мог. Тут мне один исполнитель говорит, что моя связка еще сыровата и требует усовершенствования. Дал мне чертеж. Сделал я вид спереди. Действительно, - плющить надо. Действия: EXPLODEALLPROXY, аудит с исправлением ошибок, тройной _purge, аудит с исправлением ошибок. Загрузка СФ. Запуск СФ. Сколько объектов "_all" с подтверждением. И мне кад говорит:
Analyzing selection... |
Error: Ошибка Automation. Ключ не найден
...и не сплющил. методом отбора дружественных по отношению к СФ примитивов я пришел к тому, что на чертеже остался один блок (уже видели). удалил я хлам ("очистить" + " проверить") и остался с носом, кад твердит все то же:
Analyzing selection... |
Error: Ошибка Automation. Ключ не найден
Итог, как так меня этот блок полностью устраивает (вы видите, что он плоский), но в подальшей жизни, может еще какой то такой попадется и я на запрос СФа буду говорить "_all" и ничего не буду иметь. Про запуск конвеера (BAT->SCR->LSP) вообще говорить нет смысла.
Вовочка вне форума  
 
Непрочитано 04.05.2011, 12:51
#16
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Здравствуйте, уважаемые форумчане. Крутил, вертел я на праздниках эту проблемму и кажется мне, что вектор ее решения я нашел. Имя блока было Auslauf gekьrzt. Я поменял на имя блока Auslauf gekurzt и как бы проблема решилась. Думаю, прекрасно. Я добавлю немецкий язык в компьютер и все решиться. Но нет. Воз и ныне там. Есть у кого-нибудь какие-то соображения еще?
Нашел друга по несчастью
http://forum.dwg.ru/showthread.php?t=49870

Последний раз редактировалось Вовочка, 05.05.2011 в 11:26.
Вовочка вне форума  
 
Автор темы   Непрочитано 05.05.2011, 11:34
1 | #17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Пробуй. Оставлю сообщение автору
Изменения
2011-05-05 Unicod символы в блоках
2011-10-12 Функция ModBlockScale отредактирована точность округления с 1e-2 на 1e-12
Вложения
Тип файла: rar SuperFlatten 2.0b beta VVA.rar (28.1 Кб, 3252 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.10.2011 в 17:56. Причина: Масштабный коэффициент
VVA вне форума  
 
Непрочитано 05.05.2011, 12:46
#18
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Спасибо Вам большое!!! Заработало. Скажете, что, скажет автор. Интересно же.
Вовочка вне форума  
 
Автор темы   Непрочитано 05.05.2011, 13:54
#19
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Я написал ему. Подождем официального релиза
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.10.2011, 13:06
#20
asii


 
Регистрация: 20.03.2011
Сообщений: 75


Есть чертеж, в котором линии и блоки(объемные) разнесены в пространстве Нажмите на изображение для увеличения
Название: 3D ppc.jpg
Просмотров: 1044
Размер:	69.5 Кб
ID:	67600 . Хотел применить этот лисп. Ввожу команду SF и в выпадающем меню появляются функции Rename blocks, Explodable blocks, Proxies, но Overkill не появилась. Если я правильно понял, то эта функция не запустится без Express Tools. Но как обнулить координату Z и сплющить блоки без Express Tools?
asii вне форума  
 
Автор темы   Непрочитано 11.10.2011, 13:36
#21
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


asii, еще варианты есть в #2
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.10.2011, 11:51
#22
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


При очередном использовании данной программы командная строка мне выдала:
Flattening selection... |
Выберите открепляемые размеры ...
Откреплено: 0.
Error: AutoCAD.Application: Значение должно быть ненулевым
Что нужно делать?
Вовочка вне форума  
 
Автор темы   Непрочитано 12.10.2011, 14:16
#23
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вовочка,
1. Выложить чертеж сюда
2. Пока пробовать другие варианты (см #2 и ниже)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.10.2011, 17:02
#24
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Ну как бы вот. Хоть блок и плоский, но я выбираю ВСЕ, а он мне мешает
Вложения
Тип файла: dwg
DWG 2007
11.dwg (120.1 Кб, 7579 просмотров)
Вовочка вне форума  
 
Автор темы   Непрочитано 12.10.2011, 17:53
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


По ссылке SuperFlatten 2.0b beta VVA.rar из #1 скачай обновленный SF
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.10.2011, 18:32
#26
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


спасибо. Только наверное программу нужно вытягивать из поста №17 ?
Вовочка вне форума  
 
Непрочитано 22.11.2011, 14:53
#27
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Здравствуйте. Можно ли еще чуток отшлифовать программу?
Вопрос в следующем. Есть файл с разработанным фундаментом. Соответственно там присутствуют размеры и текст. После паруминутного редактирования этого файла. Я заметил, что текст везде стал как-бы жирным. Нашел вот-эту ветку: http://forum.dwg.ru/showthread.php?t=35216. О, думаю, вот сейчас меня SF выручит. Прогнал чертеж через него, а кукиш. Ушел в туман. Сделал вид спереди, смотрю, все ок - весь чертеж как бы в одну линию. Знакомые посоветовали попробовать утилитку от VetalBy, которая идет в комплекте VetCAD - FLATTEN_VC. И вы знаете помогло. Не понравилось следующее:
1. Утилитка не просит меня указать примитивы, а шерстит весь чертеж.
2. Из-за одной подпрограмки ставить весь комплекс VetCAD считаю не логично.
VetalBy, не пойми неправильно, а по поводу предварительного выбора, подумай. ВетКАД от этого только выиграет.
ЗЫ. Да, чуть не забыл. КАД 2008 текст на базе АРИАЛ
ЗЫЫ. И можно, что бы динамика динамических блоков оставалась. А то как бы ручки изменения блоков присутствуют, а геометрия статична.

Последний раз редактировалось Вовочка, 22.11.2011 в 16:30.
Вовочка вне форума  
 
Непрочитано 11.12.2011, 21:22 "Утюг" ZZ (ещё один, почти универсальный, flatten)
#28
Stolmachev


 
Регистрация: 11.12.2011
Сообщений: 3


Простите, если не совсем в тему.
Ваш супер-флат не смог заинтересовать меня, поскольку продукт, в котором работает наш институт - ZWCAD-2009i, а этот супермэн сразу же, без разговоров, заваливает Зюкад-2009ай.
Возможно, "супер" мог бы работать в ZWCAD-2012, но там он начинает в цикле спрашивать о том, чего я не понимаю.
---------------------------------
Поэтому - позвольте всем предложить мой скромный вклад в виде собственного разглаживателя ПЛОСКИХ чертежей. Конечно, ни о каких "телах" он не знает. Работает лисп довольно медленно, но настойчиво и почти дружественно.
Называется он ЗероЗет.
Обычно после его загрузки я нажимаю 3 раза Enter (так получается, увы).
Проверял его в лицензионном Автокаде-2007-рус, но у нас мало таких лицензий, поэтому меньше опыта,
а в Зюкаде он делает своё дело без проблем.
Вложения
Тип файла: zip ZZ.zip (5.8 Кб, 1138 просмотров)
Stolmachev вне форума  
 
Автор темы   Непрочитано 12.12.2011, 11:04
#29
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Stolmachev, Спасибо. Добавил в перечень #2
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.04.2012, 09:24
#30
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Проблема, которую я описал в 27 посте уже неактуальна. Проверил работу програмы в 2011 линейке - нормально обрабатывает динамические блоки.
Вовочка вне форума  
 
Непрочитано 11.07.2012, 12:38
#31
pan

добрый человек
 
Регистрация: 23.02.2004
Глушь
Сообщений: 971


Чтобы SuperFlatten 2.0b beta заработала в AutoCAD 2009-2012 надо заменить в лиспе "2d wireframe" на "wireframe"
__________________
Правильно сформулированный вопрос содержит 90% ответа.
pan вне форума  
 
Непрочитано 11.07.2012, 13:34
#32
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Цитата:
Сообщение от pan Посмотреть сообщение
Чтобы SuperFlatten 2.0b beta заработала в AutoCAD 2009-2012 надо заменить в лиспе "2d wireframe" на "wireframe"
А без замены не работает?
Вовочка вне форума  
 
Непрочитано 24.08.2012, 13:25 координата
#33
Ninkin


 
Регистрация: 12.06.2011
Сообщений: 5
Отправить сообщение для Ninkin с помощью Skype™


а кто сможет внятно ответить почему такой глюк происходит, чтобы в дальнейшем себя от такого предостеречь?
Ninkin вне форума  
 
Непрочитано 24.12.2012, 10:25
#34
привычка

архитектор
 
Регистрация: 27.09.2012
Санкт-Петербург
Сообщений: 13


Координаты обнулила, но при подсчете площади AutoCAD все равно пишет, что точки имеют различные координаты Z. Хотя когда выделяю объекты, у всех выводится нулевая координата Z. Почему, что делать?
привычка вне форума  
 
Автор темы   Непрочитано 26.12.2012, 11:46
#35
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


привычка, Без файла трудно что-то посоветовать. Приложи файл или фрагмент файла
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.12.2012, 12:06
#36
привычка

архитектор
 
Регистрация: 27.09.2012
Санкт-Петербург
Сообщений: 13


хорошо)
Вложения
Тип файла: dwg
DWG 2007
файл.dwg (1.62 Мб, 6923 просмотров)
привычка вне форума  
 
Непрочитано 26.12.2012, 13:40
#37
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Это ваш файл. Вид спереди.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 517
Размер:	129.8 Кб
ID:	93398  
Вовочка вне форума  
 
Непрочитано 27.06.2013, 08:32
#38
Pamu6op


 
Регистрация: 30.11.2012
Сообщений: 3


Здравствуйте не подскажите данной утилитой убираю координату но она разбивает блоки СПДС все может кто сталкивался ?
Pamu6op вне форума  
 
Непрочитано 27.06.2013, 23:22
#39
Stolmachev


 
Регистрация: 11.12.2011
Сообщений: 3


Ратибору -
мне пришло сообщение о Вашем вопросе, но какая утилита имеется в виду - не пойму.

Если речь о суперфлаттене, то и бог с ним, а если о моей зе-зет, то она, по идее, ничего НЕ ДОЛЖНА РАСЧЛЕНЯТЬ, там я использую только (entmod..).
Но - на всякий случай - осмелюсь предложить новую версию - она переделана на более толковый диалог (использует "zz.dcl") и, в связи с этим, тщательнее почищена.
Вложения
Тип файла: zip zz.zip (7.6 Кб, 396 просмотров)
Stolmachev вне форума  
 
Непрочитано 28.06.2013, 04:29 ZZ
#40
Pamu6op


 
Регистрация: 30.11.2012
Сообщений: 3


Здравствуйте
Спасибо за програмку к сожалению не помогло ((
Pamu6op вне форума  
 
Автор темы   Непрочитано 28.06.2013, 11:27
#41
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Pamu6op, Если хочешь чтобы помогли, то ответы должны быть информативнее. Телепатов здесь нет.
1.
Цитата:
Сообщение от Pamu6op Посмотреть сообщение
данной утилитой убираю координату
Какой именно. Дам приаттачено 2 версии и на 2 еще есть ссылки?
Цитата:
Сообщение от Pamu6op Посмотреть сообщение
но она разбивает блоки СПДС
2. Какой СПДС имеешь ввиду? СПДС GraphiCS или Autodesk СПДС модуль?
3. Версия и разрядность операционной системы
4. Версия и разрядность Автокада, наличие установленных сервиспаков и сторонних приложений. И вообще, может у тебя BricsCad и т.п.?
5. Крайне желательно приаттачить dwg файл с образцами блоков.
Вот минимум, с которого стоит начинать разговор. Так же можно почитать в справке по форуму Как получить максимально быстрый и развернутый ответ на свой вопрос? и Как добавить вложение в сообщение?

PS >Stolmachev Спасибо. Добавил ссылку в 1-й пост
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.06.2013, 15:08
#42
Stolmachev


 
Регистрация: 11.12.2011
Сообщений: 3


Жаль. Пришлите, пожал., пример DWG с такими блоками (СПДС), может, я что-нибудь замечу? можно прямо на мой имэйл: stolmachev@ya.ru
Stolmachev вне форума  
 
Непрочитано 29.06.2013, 17:43
#43
Pamu6op


 
Регистрация: 30.11.2012
Сообщений: 3


.
1. Пробывал все три утилиты все разбивают блоки СПДС GraphiCS
2. СПДС GraphiCS
3. Windows 7 64 бита
4. Автокад 2012 64 без сп
5. Крайне желательно приаттачить dwg файл с образцами блоков.
Вложения
Тип файла: dwg
DWG 2010
Торговый центр 21.06.13.dwg (542.1 Кб, 4155 просмотров)

Последний раз редактировалось Pamu6op, 29.06.2013 в 17:49.
Pamu6op вне форума  
 
Непрочитано 21.08.2013, 14:25
#44
Колян

Самозанятый КМ+КМД
 
Регистрация: 09.09.2004
Раменское
Сообщений: 1,852


Не совсем понимаю.. Чертежи чужие, не мои. На листах (paper) не работает 3д орбита и нет возможности увидеть, есть ли разлет объектов по оси Z.
На части чертежей разлет есть, на других нет. Узнаю копированием объектов в модель (model), но это долго.
Есть ли возможность это увидеть другим способом?
Колян вне форума  
 
Непрочитано 21.08.2013, 18:31
#45
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Проверил. Действительно SF с этим не справляется. Но, тебе поможет одноименная утилиа из ВЕТКАДа. А вот увидеть не перетаскивая чертеж в модель помоему невозможно, разве что в значении "Z" свойств .
__________________
AutoCAD 2011.
Вовочка вне форума  
 
Непрочитано 05.12.2013, 11:39
#46
proteirei


 
Регистрация: 17.04.2008
Сообщений: 154


Не совсем понял, что приозошло. Настрил СФ так, чтобы все хорошо работало, в том числе и с динамическими блоками.
Прошло некоторое время, опять команда СФ гробит динамическим блокам их ручки, не могу понять в чем дело
Виндоус 7 х64
Автокад 2013 рус сп1
Сохранение выставлено в 2010-ю версию
Файл прилагаю.
Вложения
Тип файла: dwg
DWG 2010
Чертеж1.dwg (56.9 Кб, 3462 просмотров)
proteirei вне форума  
 
Автор темы   Непрочитано 05.12.2013, 14:07
#47
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


proteirei, При обнулении Z периодически так же сталкивались с некоторыми проблемами. Поэтому в свое время сделал команду обнуления Z путем замены на Z=0 во всех примитивах по dxf кодам 10 11 12 13 14 38, исключая 3DSOLID и дополнительно обрабатывая размеры (10 11 12 13 14). Объекты "плющатся" только в текущем пространстве. Содержимое блоков не обрабатывается (не стояло такой задачи). Ссылку добавил в 1-й пост. В твоем чертеже боки не испортило.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.12.2013, 17:58
#48
proteirei


 
Регистрация: 17.04.2008
Сообщений: 154


Да, попробовал применить. Вещь действительно хорошая, но переносит почему-то не все блоки. Так, например, 1 из где-то 15-ти блоков линии обрыва не перенес, причина непонятна О_о. Но, все равно, спасибо ))
proteirei вне форума  
 
Автор темы   Непрочитано 06.12.2013, 16:15
#49
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


proteirei,Выложи пример "непереносимого" блока, посмотрю в чем дело
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.04.2014, 14:00
#50
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,994


"SuperFlatten 2.0b beta" ругается на переопределение зарегистрированного символа. Речь про acad. Это так специально задумывалось?
Autocad 2014, win7 x64
Код:
[Выделить все]
 (setq 
     acad (vlax-get-acad-object)
     doc (vla-get-ActiveDocument acad)
     views (vla-get-Views doc)
  )
crosandr вне форума  
 
Автор темы   Непрочитано 09.04.2014, 15:14
#51
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Я думаю, что нет. Вполне могло что-то добавиться в 14 автокаде (например недокументированная переменная)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 13.04.2014 в 12:50.
VVA вне форума  
 
Непрочитано 09.04.2014, 16:57
#52
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,994


заменил acad на acad_ в 2x местах и все заработало. Странно, почему у других все норм. Из-за акада 2014?
crosandr вне форума  
 
Непрочитано 20.11.2014, 09:19
#53
Peskov


 
Регистрация: 19.11.2014
Сообщений: 3


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

Та же самая проблема с Z-координатой. Перепробовал последовательно все средства, начиная от команды _flatten до лиспов Joe Burke, утюг и пр.
Список испробованных лиспов:

2D.lsp
flatten.lsp
Flatten2.lsp
FLATTEN_EM_ALL.lsp
SuperFlatten 1.2c.lsp
SuperFlatten 2.0b beta.lsp
SuperFlatten 2.0b beta VVA.lsp
Z0.LSP
Z0b.lsp
ZZ.lsp

Никакими средствами не удалось сплющить модель полностью, все равно остаются объекты с Z, отличной от нуля в ту и другую сторону.
Вложения:
1. Чертеж с "проклятой Z-координатой".
2. Архив с 10-ю применявшимися лиспами.
Вложения
Тип файла: dwg
DWG 2010
галереи.dwg (3.19 Мб, 2084 просмотров)
Тип файла: zip лиспы обнуление Z.zip (99.9 Кб, 212 просмотров)
Peskov вне форума  
 
Непрочитано 20.11.2014, 09:39
#54
Кулик Алексей aka kpblc
Moderator

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


Peskov, тебя наличие прокси-объектов не смущает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.11.2014, 09:51
#55
Peskov


 
Регистрация: 19.11.2014
Сообщений: 3


Файл очищался последовательно по инструкции отсюда: https://docs.google.com/document/d/1...it?usp=sharing
После очистки стал весить 3+ Мб вместо 9+ Мб.
Возможно, какие-то прокси остались? Но я их в таком случае не могу выловить.

Файл чистился от прокси по инструкции из темы "Как уменьшить объем файла dwg." и похудел на 6 Мб
Только после очистки взялся за ось Z...

Протокол:

Команда: EXPLODEALLPROXY
Удалено Proxy: 0 Новых объектов: 0
Команда: REMOVEALLPROXY
Первая метка объекта: <1>, последняя метка объекта: <1AE96B>
Всего найдено proxy-объектов: 0. Из них proxy-примитивов: 0.
Всего удалено proxy-объектов: 0. Из них proxy-примитивов: 0.
Для проверки ошибок выполните команду _AUDIT

Последний раз редактировалось Кулик Алексей aka kpblc, 20.11.2014 в 10:08.
Peskov вне форума  
 
Непрочитано 20.11.2014, 10:09
#56
Кулик Алексей aka kpblc
Moderator

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


ACAD2015 обнаружил в файле еще прокси. После очистки и flatten'a стал весить 1,8 Мб
Вложения
Тип файла: dwg
DWG 2010
галереи_clear.dwg (1.73 Мб, 2040 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.11.2014, 10:18
#57
Peskov


 
Регистрация: 19.11.2014
Сообщений: 3


Хм... Видимо, придется испробовать ACAD2015 (обрабатывал в ACAD2012). Спасибо за ответ
Peskov вне форума  
 
Непрочитано 16.12.2014, 06:39
#58
Rustamrav


 
Регистрация: 16.12.2014
Сообщений: 1


Народ, подскажите пожалуйста как пользоваться этими утилитами?
Rustamrav вне форума  
 
Непрочитано 16.12.2014, 09:17
#59
Кулик Алексей aka kpblc
Moderator

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


http://dwg.ru/pub/9
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.05.2015, 11:15
#60
ltnchik1405

проектировщик
 
Регистрация: 03.07.2009
Кострома
Сообщений: 1,127
Отправить сообщение для ltnchik1405 с помощью Skype™


А как обнулить координаты в Автокад 2010 лт?
ltnchik1405 вне форума  
 
Непрочитано 20.05.2015, 11:18
#61
Кулик Алексей aka kpblc
Moderator

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


Руками (если это вообще возможно).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.10.2015, 13:19
#62
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Если блок, который нужно расчленить, имеет умляуты, _SF не работает. Кто-то знает выход. Переименование не предлагайте. Что я должен сделать на локальном Русском, чтобы и сплющить, и умляуты оставить?
__________________
AutoCAD 2011.

Последний раз редактировалось Вовочка, 28.10.2015 в 13:26.
Вовочка вне форума  
 
Непрочитано 28.10.2015, 21:37
#63
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Вовочка Посмотреть сообщение
умляуты
это что?
gomer вне форума  
 
Непрочитано 28.10.2015, 21:48
#64
Кулик Алексей aka kpblc
Moderator

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


Символы из немецкого алфавита. Грубо говоря, "А" с кружком наверху (кто знает немецкий, поправьте меня, пожалуйста).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.10.2015, 21:50
#65
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
поправьте меня, пожалуйста
https://ru.wikipedia.org/wiki/%D0%A3...BD%D0%B0%D0%BA)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 29.10.2015, 13:26
#66
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,994


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Грубо говоря, "А" с кружком наверху
так и есть
Ää, Öö и Üü
crosandr вне форума  
 
Непрочитано 29.10.2015, 17:46
#67
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Решил пойти другой дорогой. Помог старый-добрый _flatten из Экспресса.
Кстатти, _SF не смог справится ни с умлаутами, ни без.

Кому интересно, во вложении фрагмент чертежа.
Вложения
Тип файла: dwg
DWG 2007
S.dwg (73.3 Кб, 509 просмотров)
__________________
AutoCAD 2011.
Вовочка вне форума  
 
Непрочитано 17.01.2017, 10:14
#68
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


Еще ошибка от супера
Команда: SUPERFLATTEN

Выберите объекты: Противоположный угол: найдено: 185

Выберите объекты:
Analyzing selection... -
Error: Ошибка Automation. Ключ не найден
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 07.09.2017, 00:39
#69
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


После использования superflatten 2.0b и от Burke и от VVA мультивыноски разбиваются на отрезки и текст

Последний раз редактировалось kacugu, 09.09.2017 в 14:46. Причина: Опять
kacugu вне форума  
 
Непрочитано 26.10.2018, 11:03
#70
MorganSpb


 
Регистрация: 10.07.2008
Сообщений: 93


так решения и нет чтоб Z координата не появлялась сама по себе?
MorganSpb вне форума  
 
Непрочитано 26.10.2018, 11:27
#71
Кулик Алексей aka kpblc
Moderator

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


osnapz поменяй. Правда, срабатывает не всегда.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.02.2019, 17:24 У каждой линии свое собственное начало координат.
#72
Archidar


 
Регистрация: 27.10.2010
Сообщений: 14


Добрый день! Вроде не первый день замужем, но столкнулся с казебоброй которую не могу решить: 1)выбираю полилинии с отметкой уровня "не равно 0"-выбираются; в свойствах назначаю НОЛЬ- и линии разлетаются кому куда понравилось. Из параллельно-перпендикулярной графики получается радиально-концентрическая херня! Прошу прощения за мой французский!
Вложения
Тип файла: dwg
DWG 2013
ACAD-Блок 4_05_02_19.dwg (1.30 Мб, 165 просмотров)

Последний раз редактировалось Archidar, 05.02.2019 в 17:31.
Archidar вне форума  
 
Непрочитано 06.02.2019, 09:23
#73
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,299
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Archidar Посмотреть сообщение
Вроде не первый день замужем,
сбоку и спереди на свой блок посмотри
взорви свой блок выбери все и SF
полилинии не просто в ноль, они под углом...
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 06.02.2019, 10:05
#74
Archidar


 
Регистрация: 27.10.2010
Сообщений: 14


Цитата:
Сообщение от doctorraz Посмотреть сообщение
они под углом...
Дык я по этому сюда и обратился. Как!? Как это могло наЧЁРТиться!? Специально захочешь сделать- так не получится. Я когда этот файл взял в работу, попал в ступор.
Пришлось взорвать полилинии- тогда , превратившись в отрезки они потеряли свои собственные точки отсчета и вписались в МирСистКоорд. Только тогда и обнулились.
Но КАК так нарисовалось?
Archidar вне форума  
 
Непрочитано 06.02.2019, 10:18
#75
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


СПДС GraphiCS
как много в этих звуках
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 06.02.2019, 10:19
#76
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,299
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Archidar Посмотреть сообщение
Но КАК так нарисовалось?
рандомно крутили ПСК рисовали, потом опять крутили ПСК и опять рисовали.
Вот мне, что на дружественном форуме подогнали
рисунок выглядит как чертеж, только с одного ракурса...
Offtop: кто занимается Street Painting или Madonnari рвут волосенки и рыдают от зависти
Вложения
Тип файла: dwg
DWG 2007
problem_file(1).dwg (90.9 Кб, 189 просмотров)
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 06.02.2019, 10:29
#77
Archidar


 
Регистрация: 27.10.2010
Сообщений: 14


Цитата:
Сообщение от doctorraz Посмотреть сообщение
рисунок выглядит как чертеж, только с одного ракурса...
В криминальных случаях разные уровни обычно ещё соединяются "диагональными" линиями.
Archidar вне форума  
 
Непрочитано 06.02.2019, 10:35
#78
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,299
Отправить сообщение для doctorraz с помощью Skype™


Offtop:
Цитата:
Сообщение от Archidar Посмотреть сообщение
В криминальных случаях разные уровни обычно ещё соединяются "диагональными" линиями.
у нас все генпланы такие (5де)
дист и глазам не веришь (((
обрезать удлинить не рабтает... (отрезки не коллинеарны))
плющим
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 14.02.2019, 10:32
#79
pentaone


 
Регистрация: 10.05.2013
Сообщений: 41


Почему при работе что с данной программой, что со стандартным flatten из ET перестают работать динамические блоки (слетают все операции)?
pentaone вне форума  
 
Непрочитано 14.02.2019, 11:59
#80
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,299
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от pentaone Посмотреть сообщение
Почему при работе что с данной программой, что со стандартным flatten из ET перестают работать динамические блоки (слетают все операции)?
файлы чертежа до SF и после в студию.
у меня ничего не слетает
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 13.06.2019, 11:33
#81
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Цитата:
Сообщение от pentaone Посмотреть сообщение
Почему при работе что с данной программой
Вот такая же проблема.
Цитата:
Сообщение от doctorraz Посмотреть сообщение
файлы чертежа до SF
В приложении.
Autocad 2015, использую SF от VVA
Вложения
Тип файла: dwg
DWG 2013
Дин.блок для форума_Рабочий.dwg (96.2 Кб, 104 просмотров)
Тип файла: dwg
DWG 2013
Дин.блок для форума_Сломанный.dwg (96.2 Кб, 128 просмотров)
kacugu вне форума  
 
Автор темы   Непрочитано 15.06.2019, 16:12
1 | #82
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


kacugu, На странице автора , была выложена версия SuperFlatten 1.2g. Проверил на твоем файле, вроде динблоки не ломает
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.06.2019, 22:50
#83
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Цитата:
Сообщение от VVA Посмотреть сообщение
вроде динблоки не ломает
Попробовал ещё версию 2.0с отсюда. Вроде тоже работает нормально и не ломает динамические блоки
kacugu вне форума  
 
Автор темы   Непрочитано 15.06.2019, 23:20
#84
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


А слона то я и не заметил. Добавил в #1
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.02.2021, 11:24
#85
mindchamber


 
Регистрация: 29.07.2017
Сообщений: 201


здравствуйте, вызываю команду SF и консоль пишет следующее:

Цитата:
Команда: SF
найдено: 32756
Analyzing selection... -Недействительное имя визуального стиля.
Недействительное имя визуального стиля.
Недействительное имя визуального стиля.
Недействительное имя визуального стиля.
Неправильное ключевое слово.
Error: Функция прервана.Задайте параметр [?/Удалить/Ортогонально/Восстановить/Сохранить/Настройка/Рамка]: С
Имя вида для сохранения: hcgf
UCSVIEW = 1 ПСК будет сохранена с видом
Команда: Задайте противоположный угол или [Линия/РМн-угол/СМн-угол]: *Прервано*
Подскажите пожалуйста, чертеж загаженный попался, надо его расплющить, а команде не помогает...

Обычный _flatten выдает следующее:
Цитата:
Вложенные элементы = Откл. Непривязанные данные = Откл-
Вложенные элементы = Откл. Непривязанные данные = Откл|
Вложенные элементы = Откл. Непривязанные данные = Откл-
Вложенные элементы = Откл. Непривязанные данные = Откл|
Вложенные элементы = Откл. Непривязанные данные = Откл/
Вложенные элементы = Откл. Непривязанные данные = Откл.К 2D-полилинии (DCE8C), имеющей только одну вершину, добавлена новая вершина.
К 2D-полилинии (DCE8F), имеющей только одну вершину, добавлена новая вершина.
\
Вложенные элементы = Откл. Непривязанные данные = Откл.К 2D-полилинии (DCEC0), имеющей только одну вершину, добавлена новая вершина.
К 2D-полилинии (DCEC3), имеющей только одну вершину, добавлена новая вершина.
/
Вложенные элементы = Откл. Непривязанные данные = Откл.К 2D-полилинии (DCEF4), имеющей только одну вершину, добавлена новая вершина.
К 2D-полилинии (DCEF7), имеющей только одну вершину, добавлена новая вершина.
\
Вложенные элементы = Откл. Непривязанные данные = Откл/
Вложенные элементы = Откл. Непривязанные данные = Откл\
Вложенные элементы = Откл. Непривязанные данные = Откл/
Вложенные элементы = Откл. Непривязанные данные = Откл\
Вложенные элементы = Откл. Непривязанные данные = Откл.
неверный тип аргумента: lselsetp nil
mindchamber вне форума  
 
Автор темы   Непрочитано 05.02.2021, 11:42
#86
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


mindchamber, проверь сначала на ошибки (_audit)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.02.2021, 12:00
#87
mindchamber


 
Регистрация: 29.07.2017
Сообщений: 201


Цитата:
Сообщение от VVA Посмотреть сообщение
mindchamber, проверь сначала на ошибки (_audit)
Пациент во вложениях, аудит не помогает.
Вложения
Тип файла: dwg
DWG 2013
Чертеж3.dwg (560.0 Кб, 127 просмотров)
mindchamber вне форума  
 
Автор темы   Непрочитано 06.02.2021, 20:47
1 | #88
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


mindchamber, Сделал _purge. Запустил версию 1.2g
Вложения
Тип файла: dwg
DWG 2010
Чертеж3 SF 1.2g.dwg (525.2 Кб, 82 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.05.2021, 12:45
#89
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


Задам вопрос тут.
Можно как-то визуализировать (подсветить, выделить, пометить, указать) примитивы у которых проблемы с координатой Z ?
Вопрос связан с тем что есть чертежи у которых ошибка
Цитата:
Установлено в 0.000000.
Неверное число (Z координата) в объекте.
постоянно возникает при проверке, вне зависимости от того плющился чертеж или нет. При проверке пишет что исправлено, но повторный запуск опять выяляет данную проблему.
Отсюда и возникла мысль найти данный объект и вручную исправить.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 20.05.2021, 14:00
#90
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,418


Цитата:
Сообщение от zenon Посмотреть сообщение
Можно как-то визуализировать (подсветить, выделить, пометить, указать) примитивы у которых проблемы с координатой Z ?
По частям правда, быстрый выбор. Для линии - Start Z или End Z, для окружностей - Center Z, не равно 0. Для полилиний - Elevation - не равно 0
AlexCondor вне форума  
 
Непрочитано 20.05.2021, 16:17
#91
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Просьба к знатокам лиспа.
Лисп "SuperFlatten 2.0c" при "обнулении" взрывал мультивыноски (по-крайней мере у меня). На просторах инета был откопан следующий код и его адаптированная вариация вставлена в версию 2.0с (строки 2112-2129) :
Код:
[Выделить все]
 
(defun C:MLzero (/ SelectionSet i ii il mlEname ml)
	(setq SelectionSet (ssget "_X" '((0 . "MULTILEADER"))))
	(setq ii (sslength SelectionSet))
	(setq il 0)
	(repeat (setq i (sslength SelectionSet))
		(setq mlEname (ssname SelectionSet (setq i (1- i))))
		(if (/= 0 (last (assoc 10 (setq ml (entget mlEname)))))
			(progn 
				(setq il (1+ il))
				(entmod 
					(mapcar '(lambda (x) 
						(if 
						(and 
							(member (car x) '(10 12 110))
							(/= 1.0 (cadr x) (caddr x) (cadddr x))
						)
						(list (car x) (cadr x) (caddr x) 0.0)
						x)
					)
					(entget mlEname '("*"))
					)
				)
			);;end of progn
		)
	)
	(princ (strcat "\nПроверено " (itoa ii) " мультивыносок. Из них обработано " (itoa il)))
	(princ)
)
Что получилось - в приложении.
Собственно просьба: оценить найденный код на возможность использования, может там какие-нибудь подводные камни есть.
Вложения
Тип файла: zip SuperFlatten 2.0d.lsp.zip (29.8 Кб, 258 просмотров)
kacugu вне форума  
 
Непрочитано 21.05.2021, 13:55
#92
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,924
<phrase 1=


Цитата:
Сообщение от AlexCondor Посмотреть сообщение
По частям правда, быстрый выбор. Для линии - Start Z или End Z, для окружностей - Center Z, не равно 0. Для полилиний - Elevation - не равно 0
А если в блоке? анонимном? Взрывать? Не пойдет!
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 19.09.2024, 12:49
#93
posetitel


 
Регистрация: 16.10.2013
Сообщений: 398


Тема не про лисп, а больше про настройку блока, но связана с обнулением координат.
Когда применяю автокадовскую команду flatten, то блок вместо обнуления координаты Z улетает куда-то в ад (кордината Z не обнуляется, а координата Y становится слишкм большой, обнуляется координата Х). Подскажите, в чем может быть дело, что не так с этим блоком?
Вложения
Тип файла: dwg
DWG 2013
Чертеж1.dwg (36.5 Кб, 90 просмотров)
posetitel вне форума  
 
Непрочитано 19.09.2024, 14:34
#94
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 775


Цитата:
Сообщение от posetitel Посмотреть сообщение
Когда применяю автокадовскую команду flatten, то блок вместо обнуления координаты Z улетает куда-то
У меня flatten обнулил Z и блок остался на месте, можно проверить ПСК (МИР). Блок простой, никакой магии...
Или выбрать подобные и в свойствах Z выставить 0.
Миниатюры
Нажмите на изображение для увеличения
Название: В Свойствах 0.png
Просмотров: 90
Размер:	28.4 Кб
ID:	264779  
Вложения
Тип файла: dwg
DWG 2013
Чертеж1-0.dwg (36.0 Кб, 119 просмотров)

Последний раз редактировалось Ingpro, 19.09.2024 в 14:41.
Ingpro вне форума  
 
Непрочитано 19.09.2024, 14:57
1 | #95
posetitel


 
Регистрация: 16.10.2013
Сообщений: 398


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

Код:
[Выделить все]
 ; Super-simple little routine to force
; all z-coordinants in a drawing to zero
; (with thanks to Randy Richardson and
; the Autodesk NG's).
;
; From Tee Square Graphics - 01/28/2000
; mod.by CAD Studio 27.4.2000

(defun C:FLATTEN ()
 (command "_.UCS" "")
 (command "_.move" "_all" "" '(0 0 1e99) ""
      "_.move" "_p" "" '(0 0 -1e99) "")
 (princ)
)
Он, получается, перехватывал команду автокада и сам уже мудрил с блоком.
Блок действительно простой до безобразия, сам лисп тоже в пару строчек всего. Почему перемещается блок при выполнении лиспа - непонятно, все остальные примитивы работают как надо. Собственно в этом и состоит мой вопрос.
Изменить руками координату Z в моем приложенном файле, безусловно, можно, но рабочий файл с кучей блоков и не только с таким, так что это не вариант.
В рабочем файле пользовался автокадовским флаттеном, он не смог все блоки изменить, поэтому видимо в свое время и пришлось устанавливать внешний лисп.
Миниатюры
Нажмите на изображение для увеличения
Название: Чертеж1.png
Просмотров: 79
Размер:	71.4 Кб
ID:	264781  

Последний раз редактировалось posetitel, 19.09.2024 в 15:26.
posetitel вне форума  
 
Непрочитано 19.09.2024, 15:30
#96
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 775


Цитата:
Сообщение от posetitel Посмотреть сообщение
all z-coordinants in a drawing to zero
Этот лисп переместил текст в начало координат, а блоки в положение Z=1.21E+83??? Если блоков несколько одинаковых, то они накладываются один на другой...
Ingpro вне форума  
 
Непрочитано 19.09.2024, 15:40
#97
posetitel


 
Регистрация: 16.10.2013
Сообщений: 398


в начало координат ничего не перемещено, блоки переместились в координату Z=1.21E+83 только мои (зеленый крестик), которые прошу тут проверить, остальные блоки обнулили свою координату Z, надписи, линии все стало с координатой Z=0, кроме приложенного блока
posetitel вне форума  
 
Непрочитано 19.09.2024, 15:50
#98
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от posetitel Посмотреть сообщение
был установлен вот такой простеньки лисп.
Чертовски (потенциально) опасный код, если что
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.09.2024, 16:06
#99
posetitel


 
Регистрация: 16.10.2013
Сообщений: 398


похоже, это "если что" и вылезло...
так в чем там дело то? почему опасный код?
posetitel вне форума  
 
Непрочитано 19.09.2024, 16:16
#100
Кулик Алексей aka kpblc
Moderator

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


1. Не отработает, если точка будет по Y где-нибудь в -1e80.
2. Работает только в текущей системе координат
3. Нарисуй полилиниюю с дуговыми сегментами в ПСК, повернутой относительно оси Ох (к примеру) на 45 градусов. Выполни код. Посмотри на результат.
4. Нарисуй коробку (тоже в немировой системе координат), помести куда-нибудь в 1e90. Выполни код.
И не забудь про _.audit
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.09.2024, 16:32
#101
posetitel


 
Регистрация: 16.10.2013
Сообщений: 398


ну ок, ограничение в использовании лиспа - только международная система координат, без диких координат Y типа 1Е+80.
а почему мой блок такой простой и элементарный в МСК улетал в ад то?
posetitel вне форума  
 
Непрочитано 20.09.2024, 09:39
#102
posetitel


 
Регистрация: 16.10.2013
Сообщений: 398


пробовал также лиспом Z0 от VAA из сообщения https://forum.dwg.ru/showpost.php?p=...1&postcount=23 блок почему-то перемещается в координату Z=2776.13, а не в 0, как требуется (да и X и Y улетают)
posetitel вне форума  
 
Непрочитано 20.09.2024, 10:21
1 | #103
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (cdr(assoc 210 (entget (Car(entsel)))))
(-2.42309e-05 -0.00473025 0.999989)
Это нормаль твоего блока. А должно быть (0.0 0.0 1.0). Штатный flatten эту проблему решает, если что
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.09.2024, 10:46
#104
posetitel


 
Регистрация: 16.10.2013
Сообщений: 398


Спасибо.
Мне на будущее, как посмотреть нормаль блока?
Да и как такое вообще получилось: топографы криво выгрузили из своих программ, или изначально кто-то блок крутил-вертел и затаскал до изменения нормали, и вообще такие подлянки распространенные?
posetitel вне форума  
 
Непрочитано 27.06.2025, 10:21 Ловите)))
1 | #105
igor.kurgin


 
Регистрация: 27.06.2025
Сообщений: 2


;; Версия для обнуления координаты Z всех объектов включая содержимое блоков
(defun C:ZEROZ ( / ent entdata processed enttype total-count block-processed)
(princ "\nОбнуление координаты Z всех объектов (включая содержимое блоков)...")
(setq processed 0)
(setq total-count 0)
(setq block-processed 0)

;; Сначала обрабатываем определения блоков
(setq block-processed (process-block-definitions))

;; Начинаем с первого объекта в базе данных
(setq ent (entnext))

;; Проходим по ВСЕМ объектам в чертеже
(while ent
(setq total-count (1+ total-count))
(setq entdata (entget ent))

;; Проверяем что данные объекта получены успешно
(if entdata
(progn
(setq enttype (cdr (assoc 0 entdata)))

;; Обрабатываем объект если он подходящего типа
(if (member enttype '("LINE" "CIRCLE" "ARC" "POINT" "TEXT" "MTEXT"
"INSERT" "LWPOLYLINE" "POLYLINE" "VERTEX"
"ELLIPSE" "SPLINE" "HATCH" "SOLID" "3DFACE"
"DIMENSION" "LEADER" "MLINE" "ATTDEF" "ATTRIB"))
(if (zero-z-entity ent entdata)
(setq processed (1+ processed))
)
)
)
)

;; Переходим к следующему объекту
(setq ent (entnext ent))
)

;; Регенерируем чертеж для обновления блоков
(command "_.REGEN")

(princ (strcat "\nПроверено объектов: " (itoa total-count)))
(princ (strcat "\nОбработано объектов: " (itoa processed)))
(princ (strcat "\nОбработано определений блоков: " (itoa block-processed)))
(princ "\nГотово!")
(princ)
)

;; Функция для обработки определений блоков
(defun process-block-definitions ( / block-table block-name block-def ent processed)
(setq processed 0)
(setq block-table (tblnext "BLOCK" T)) ; Первая запись в таблице блоков

(while block-table
(setq block-name (cdr (assoc 2 block-table)))

;; Пропускаем системные блоки (начинающиеся с *)
(if (and block-name
(/= (substr block-name 1 1) "*")
(/= (substr block-name 1 1) "~"))
(progn
;; Получаем определение блока
(setq block-def (tblobjname "BLOCK" block-name))

(if block-def
(progn
;; Обрабатываем все объекты в определении блока
(setq ent (entnext block-def))
(while (and ent (/= (cdr (assoc 0 (entget ent))) "ENDBLK"))
(if (zero-z-entity ent (entget ent))
(setq processed (1+ processed))
)
(setq ent (entnext ent))
)
)
)
)
)

;; Переходим к следующему блоку
(setq block-table (tblnext "BLOCK"))
)

processed
)

;; Функция для обнуления Z координат конкретного объекта
(defun zero-z-entity (ent entdata / enttype modified point-codes current-point)
(setq enttype (cdr (assoc 0 entdata)))
(setq modified nil)

;; Обнуляем уровень (elevation) - код 38
(if (assoc 38 entdata)
(progn
(setq entdata (subst (cons 38 0.0) (assoc 38 entdata) entdata))
(setq modified T)
)
)

;; Определяем коды точек для разных типов объектов
(setq point-codes
(cond
((= enttype "LINE") '(10 11))
((member enttype '("CIRCLE" "ARC" "POINT" "TEXT" "MTEXT" "INSERT" "ATTDEF" "ATTRIB")) '(10))
((= enttype "VERTEX") '(10))
((= enttype "LWPOLYLINE") '(10))
((= enttype "POLYLINE") '(10))
((= enttype "ELLIPSE") '(10 11))
((= enttype "SPLINE") '(10))
((= enttype "3DFACE") '(10 11 12 13))
((= enttype "SOLID") '(10 11 12 13))
((member enttype '("DIMENSION" "LEADER")) '(10 11 12 13 14 15 16))
(T '(10))
)
)

;; Обрабатываем все точки с найденными кодами
(foreach code point-codes
(if (assoc code entdata)
(progn
(setq current-point (cdr (assoc code entdata)))
(if (and current-point (>= (length current-point) 3))
(progn
(setq entdata (subst (cons code (list (car current-point)
(cadr current-point)
0.0))
(assoc code entdata)
entdata))
(setq modified T)
)
)
)
)
)

;; Обновляем объект если были изменения
(if modified
(progn
(entmod entdata)
(entupd ent)
T
)
nil
)
)

;; Альтернативная команда - взрывает блоки и обрабатывает результат
(defun C:ZEROZ-EXPLODE ( / ss i ent entdata processed exploded-count)
(princ "\nВыберите блоки для взрыва и обнуления Z координат:")
(setq ss (ssget '((0 . "INSERT"))))

(if ss
(progn
(setq processed 0)
(setq exploded-count 0)
(setq i 0)

(while (< i (sslength ss))
(setq ent (ssname ss i))
(setq entdata (entget ent))

;; Взрываем блок
(command "_.EXPLODE" ent)
(setq exploded-count (1+ exploded-count))

(setq i (1+ i))
)

;; Теперь обрабатываем все объекты заново
(setq ent (entnext))
(while ent
(setq entdata (entget ent))
(if entdata
(progn
(setq enttype (cdr (assoc 0 entdata)))
(if (member enttype '("LINE" "CIRCLE" "ARC" "POINT" "TEXT" "MTEXT"
"LWPOLYLINE" "POLYLINE" "VERTEX"
"ELLIPSE" "SPLINE" "HATCH" "SOLID" "3DFACE"
"DIMENSION" "LEADER" "MLINE" "ATTRIB"))
(if (zero-z-entity ent entdata)
(setq processed (1+ processed))
)
)
)
)
(setq ent (entnext ent))
)

(princ (strcat "\nВзорвано блоков: " (itoa exploded-count)))
(princ (strcat "\nОбработано объектов: " (itoa processed)))
(princ "\nГотово!")
)
(princ "\nБлоки не выбраны.")
)
(princ)
)

;; Команда для обработки только выбранных объектов
(defun C:ZEROZ-SEL ( / ss i ent entdata processed)
(princ "\nВыберите объекты для обнуления координаты Z:")
(setq ss (ssget))

(if ss
(progn
(setq processed 0)
(setq i 0)

(while (< i (sslength ss))
(setq ent (ssname ss i))
(setq entdata (entget ent))

(if (zero-z-entity ent entdata)
(setq processed (1+ processed))
)

(setq i (1+ i))
)

(princ (strcat "\nОбработано объектов: " (itoa processed)
" из " (itoa (sslength ss))))
(princ "\nГотово!")
)
(princ "\nОбъекты не выбраны.")
)
(princ)
)

(princ "\nЗагружены команды:")
(princ "\n ZEROZ - обнуление Z координат всех объектов + содержимое блоков")
(princ "\n ZEROZ-SEL - обнуление Z координат выбранных объектов")
(princ "\n ZEROZ-EXPLODE - взрыв выбранных блоков и обнуление Z координат")
(princ)
igor.kurgin вне форума  
 
Непрочитано 07.07.2025, 18:52
#106
MorganSpb


 
Регистрация: 10.07.2008
Сообщений: 93


Zeroz-sel при выборе блока, не обнуляет в нем z координату, или так и должно?
MorganSpb вне форума  
 
Непрочитано 21.08.2025, 10:56
#107
igor.kurgin


 
Регистрация: 27.06.2025
Сообщений: 2


Цитата:
Сообщение от MorganSpb Посмотреть сообщение
Zeroz-sel при выборе блока, не обнуляет в нем z координату, или так и должно?
Сейчас скину исправленный код (наверное)
В общем, пару дней мучал ИИ, у меня работает с блоками, только что проверил

Код:
[Выделить все]
 ;; Версия для обнуления координаты Z всех объектов включая содержимое блоков
(defun C:ZEROZ ( / ent entdata processed enttype total-count block-processed)
  (princ "\nОбнуление координаты Z всех объектов (включая содержимое блоков)...")
  (setq processed 0)
  (setq total-count 0)
  (setq block-processed 0)
  
  ;; Сначала обрабатываем определения блоков
  (setq block-processed (process-block-definitions))
  
  ;; Начинаем с первого объекта в базе данных
  (setq ent (entnext))
  
  ;; Проходим по ВСЕМ объектам в чертеже
  (while ent
    (setq total-count (1+ total-count))
    (setq entdata (entget ent))
    
    ;; Проверяем что данные объекта получены успешно
    (if entdata
      (progn
        (setq enttype (cdr (assoc 0 entdata)))
        
        ;; Обрабатываем объект если он подходящего типа
        (if (member enttype '("LINE" "CIRCLE" "ARC" "POINT" "TEXT" "MTEXT" 
                             "INSERT" "LWPOLYLINE" "POLYLINE" "VERTEX"
                             "ELLIPSE" "SPLINE" "HATCH" "SOLID" "3DFACE"
                             "DIMENSION" "LEADER" "MLINE" "ATTDEF" "ATTRIB"
                             "MULTILEADER")) ; Добавлен MULTILEADER
          (if (zero-z-entity ent entdata)
            (setq processed (1+ processed))
          )
        )
      )
    )
    
    ;; Переходим к следующему объекту
    (setq ent (entnext ent))
  )
  
  ;; Регенерируем чертеж для обновления блоков
  (command "_.REGEN")
  
  (princ (strcat "\nПроверено объектов: " (itoa total-count)))
  (princ (strcat "\nОбработано объектов: " (itoa processed)))
  (princ (strcat "\nОбработано определений блоков: " (itoa block-processed)))
  (princ "\nГотово!")
  (princ)
)

;; Функция для обработки определений блоков
(defun process-block-definitions ( / block-table block-name block-def ent processed)
  (setq processed 0)
  (setq block-table (tblnext "BLOCK" T)) ; Первая запись в таблице блоков
  
  (while block-table
    (setq block-name (cdr (assoc 2 block-table)))
    
    ;; Пропускаем системные блоки (начинающиеся с *)
    (if (and block-name 
             (/= (substr block-name 1 1) "*")
             (/= (substr block-name 1 1) "~"))
      (progn
        ;; Получаем определение блока
        (setq block-def (tblobjname "BLOCK" block-name))
        
        (if block-def
          (progn
            ;; Обрабатываем все объекты в определении блока
            (setq ent (entnext block-def))
            (while (and ent (/= (cdr (assoc 0 (entget ent))) "ENDBLK"))
              (if (zero-z-entity ent (entget ent))
                (setq processed (1+ processed))
              )
              (setq ent (entnext ent))
            )
          )
        )
      )
    )
    
    ;; Переходим к следующему блоку
    (setq block-table (tblnext "BLOCK"))
  )
  
  processed
)

;; Функция для обнуления Z координат конкретного объекта
(defun zero-z-entity (ent entdata / enttype modified point-codes current-point group pt new-pt)
  (setq enttype (cdr (assoc 0 entdata)))
  (setq modified nil)
  
  ;; Обнуляем уровень (elevation) - код 38
  (if (assoc 38 entdata)
    (progn
      (setq entdata (subst (cons 38 0.0) (assoc 38 entdata) entdata))
      (setq modified T)
    )
  )
  
  ;; Специальная обработка для мультивыносок
  (if (= enttype "MULTILEADER")
    (progn
      ;; Обрабатываем все группы с кодами 10-39, которые являются точками
      (foreach group entdata
        (if (and (>= (car group) 10) 
                 (<= (car group) 39)
                 (listp (cdr group)))
          (progn
            (setq pt (cdr group))
            (if (and (>= (length pt) 2)
                     (numberp (car pt))
                     (numberp (cadr pt)))
              (progn
                ;; Создаем новую точку с Z=0
                (if (>= (length pt) 3)
                  (setq new-pt (list (car pt) (cadr pt) 0.0))
                  (setq new-pt (list (car pt) (cadr pt) 0.0))
                )
                (setq entdata (subst (cons (car group) new-pt) group entdata))
                (setq modified T)
              )
            )
          )
        )
      )
    )
    ;; Стандартная обработка для других объектов
    (progn
      ;; Определяем коды точек для разных типов объектов
      (setq point-codes
        (cond
          ((= enttype "LINE") '(10 11))
          ((member enttype '("CIRCLE" "ARC" "POINT" "TEXT" "MTEXT" "INSERT" "ATTDEF" "ATTRIB")) '(10))
          ((= enttype "VERTEX") '(10))
          ((= enttype "LWPOLYLINE") '(10))
          ((= enttype "POLYLINE") '(10))
          ((= enttype "ELLIPSE") '(10 11))
          ((= enttype "SPLINE") '(10))
          ((= enttype "3DFACE") '(10 11 12 13))
          ((= enttype "SOLID") '(10 11 12 13))
          ((member enttype '("DIMENSION" "LEADER")) '(10 11 12 13 14 15 16))
          (T '(10))
        )
      )
      
      ;; Обрабатываем все точки с найденными кодами
      (foreach code point-codes
        (if (assoc code entdata)
          (progn
            (setq current-point (cdr (assoc code entdata)))
            (if (and current-point (>= (length current-point) 2))
              (progn
                ;; Обнуляем Z-координату
                (setq current-point (list (car current-point) 
                                         (cadr current-point) 
                                         0.0))
                (setq entdata (subst (cons code current-point) 
                                    (assoc code entdata) 
                                    entdata))
                (setq modified T)
              )
            )
          )
        )
      )
    )
  )
  
  ;; Обновляем объект если были изменения
  (if modified
    (progn
      (entmod entdata)
      (entupd ent)
      T
    )
    nil
  )
)

;; Альтернативная команда - взрывает блоки и обрабатывает результат
(defun C:ZEROZ-EXPLODE ( / ss i ent entdata processed exploded-count)
  (princ "\nВыберите блоки для взрыва и обнуления Z координат:")
  (setq ss (ssget '((0 . "INSERT"))))
  
  (if ss
    (progn
      (setq processed 0)
      (setq exploded-count 0)
      (setq i 0)
      
      (while (< i (sslength ss))
        (setq ent (ssname ss i))
        (setq entdata (entget ent))
        
        ;; Взрываем блок
        (command "_.EXPLODE" ent)
        (setq exploded-count (1+ exploded-count))
        
        (setq i (1+ i))
      )
      
      ;; Теперь обрабатываем все объекты заново
      (setq ent (entnext))
      (while ent
        (setq entdata (entget ent))
        (if entdata
          (progn
            (setq enttype (cdr (assoc 0 entdata)))
            (if (member enttype '("LINE" "CIRCLE" "ARC" "POINT" "TEXT" "MTEXT" 
                                 "LWPOLYLINE" "POLYLINE" "VERTEX"
                                 "ELLIPSE" "SPLINE" "HATCH" "SOLID" "3DFACE"
                                 "DIMENSION" "LEADER" "MLINE" "ATTRIB"
                                 "MULTILEADER")) ; Добавлен MULTILEADER
              (if (zero-z-entity ent entdata)
                (setq processed (1+ processed))
              )
            )
          )
        )
        (setq ent (entnext ent))
      )
      
      (princ (strcat "\nВзорвано блоков: " (itoa exploded-count)))
      (princ (strcat "\nОбработано объектов: " (itoa processed)))
      (princ "\nГотово!")
    )
    (princ "\nБлоки не выбраны.")
  )
  (princ)
)

;; Команда для обработки только выбранных объектов
(defun C:ZEROZ-SEL ( / ss i ent entdata processed)
  (princ "\nВыберите объекты для обнуления координаты Z:")
  (setq ss (ssget))
  
  (if ss
    (progn
      (setq processed 0)
      (setq i 0)
      
      (while (< i (sslength ss))
        (setq ent (ssname ss i))
        (setq entdata (entget ent))
        
        (if (zero-z-entity ent entdata)
          (setq processed (1+ processed))
        )
        
        (setq i (1+ i))
      )
      
      (princ (strcat "\nОбработано объектов: " (itoa processed) 
                     " из " (itoa (sslength ss))))
      (princ "\nГотово!")
    )
    (princ "\nОбъекты не выбраны.")
  )
  (princ)
)

(princ "\nЗагружены команды:")
(princ "\n  ZEROZ - обнуление Z координат всех объектов + содержимое блоков")
(princ "\n  ZEROZ-SEL - обнуление Z координат выбранных объектов")
(princ "\n  ZEROZ-EXPLODE - взрыв выбранных блоков и обнуление Z координат")
(princ)

Последний раз редактировалось Кулик Алексей aka kpblc, 22.08.2025 в 00:06.
igor.kurgin вне форума  
 
Непрочитано 22.08.2025, 00:14
#108
Кулик Алексей aka kpblc
Moderator

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


1. Пользуй форматирование, читать станет сильно проще.
2. Как только у тебя появятся примитивы не в МСК, так тут же вечер перестанет быть томным.
3. Добавь в блоки твердые тела и сетки, а потом на блоки дай разные масштабы и разные ОСК. Проверь работу своего кода...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Обнуление координаты Z (аналог FLATTEN )



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог функции EVAL (LISP) в Exele kp+ LISP 11 01.04.2010 16:52
Сменить быстро координату Z у нескольких сплайнов. andrey25 AutoCAD 11 18.09.2008 16:28
Координаты точки пересечения line и pline (LISP) paradoxvaha LISP 3 10.07.2007 13:04
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19