|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Поиск блоков пересекающих полилинию
Регистрация: 26.12.2013
Сообщений: 283
|
||
Просмотров: 22278
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Ну и в чем собственно вопрос? Получить точку вставки дин.блока, найти ближайшую к нему на полилинии, сверить расстояние с 0 (возможно, с некоторой точностью).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Опять шлейф с пожарными датчиками?
![]() ----- добавлено через ~2 мин. ----- http://forum.dwg.ru/showthread.php?t=82243 |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Цитата:
Вспомним задачу про короткий "путь между станциями метро", где станции это блоки, "метро"(если так можно выразиться- рельсы) - это полилинии. Функцию по нахождению пути по максимально трем полилиниям написал. Одна полилиния может пересекать несколько блоков (переход высоты с отметки на отметку- например арка через догору). Нужно найти только те блоки которые попадают в определенный отрезок (в большинстве случаев это не вершины линии). Почти - кабельный журнал под несколько разделов сразу см.выше ответ. ----- добавлено через 45 сек. ----- Блоки с переходом высоты тут не размещал еще |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
tujn08, ну йопырысыты! Ты просил алгоритм (поскольку ни кода не предоставил с указанием места "на котором споткнулся", ни языка не обозначил) - я тебе его дал. Этого что, мало?
----- добавлено через 53 сек. ----- Вспоминать не собираюсь. У тебя была поставлена конкретная задача: Остальное - лишнее.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Не понял предложение. Что лишнее?
Цитата:
2) блок должен находиться между двумя точками (найденными заранее), но при этом быть на линии (п.1)- как это реализовать? PS блок могут пересекать сразу несколько линий (на "перекрестке"). Не суть Влияет- просто для информации ----- добавлено через ~13 мин. ----- Щас припоминаю, что есть функция поиска к ближайшей точке (вершине), но надо будет создавать дополнительные вершины на линии- так? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Поехали с самого начала... На каком языке пишешь? Под AutoCAD или клон-кад?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
ОПС Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128
|
Цитата:
запомнить как есть, обрезать полилинии в этих точках, на полученной полилинии найти блоки, вернуть все как было... |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Добрался до работы - из файл думаю будет понятно.
log- промежуточная информация для понимания и отладки cable_magazine - длина между блоков. На пути от блока до блока могут быть другие блоки, от которых и надо получить дополнительное расстояние. Просто уравнение прямой не подойдет т.к. трасса может быть проложена "змейкой". |
|||
![]() |
|
||||
Проектирование мостов Регистрация: 29.01.2014
Новосибирск
Сообщений: 431
|
Цитата:
Точка вставки блока есть, координаты точек, между которыми искать, есть. Какие, (простите) нахрен, несколько линий? Какие перепады высоты? Ощущение, что изобретается велосипед, но при этом разговор идет о влиянии массонов на устойчивость Эйфелевой башни. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Вот точки 1 и 2. надо найти блоки между ними на линии.
Я пояснял всю ситуацию до этого. ----- добавлено через ~36 мин. ----- Натолкнуло на мысль: Если расстояние от Конца линии до Первой точки меньше чем расстояние от конца до проверяемой точки И Если расстояние от Начала линии до Ввторой точки меньше чем расстояние от конца до проверяемой точки То проверяемая точка лежит между Первой и Второй точками. Предварительно проверить какая точка из двух лежит ближе к началу линии. ----- добавлено через 32 сек. ----- всем спасибо! Последний раз редактировалось tujn08, 04.08.2015 в 08:23. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Ну я вообще бы искал пересечение полилинии с блоком.. потому что промахнулся пользователь, плюхнул блок рядом с полилинией. Визуально для него блок на полилинии, а реально алгоритм на определении нахождения точки вставки блока на сегменте полилинии будет этот блок пропускать.. или наоборот - при большой дельте захватывать и соседние блоки. А пересечение - в инете примеров более чем. А уж когда нашел полилинию - найти, к каким ближайшим смежным двум ее вершинам ближе всего вставка блока - задача тривиальная. Если это вообще нужно.
|
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Я тоже хотел найти точки пересечения блока с линией, но выдаются минимум 3 точки- включая атрибутов которых не видно + габариты блока. Тот же блок может пересекать и другую линии. Это не то,что нужно.
Вот я искал точку вставки блока с концом линии с точностью - вполне гуд. А щас начал ломать голову как найти на участке это пересечение ))). ----- добавлено через ~5 мин. ----- к примеру: (79.7366 217.659 -1.0e-008 134.718 217.659 -1.0e-008 134.718 217.659 1.0e-008 79.7366 217.659 1.0e-008) не вижу нужной: (104.84 217.65 0.0) |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
----- добавлено через ~7 мин. ----- p.s. Давно отказался от попыток сделать полностью автоматическую систему - так как овчина не стоит выделки, имхо. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Это и делаю ))
1) стандартизация 2) автматизация 3) увеличение качества и объемов. Цитата:
Надо проверить принадлежит ли точка этой линии - дальше по алгоритму как писал выше. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Пробуйте. Вы сейчас по сути пытаетесь теоретически предугадать все возможные "шишки" и "подводные камни", на которых спотыкались целые команды разработчиков вертикальных решений/программ для автоматизации проектирования) только опытным путем на реальных задачах выясняются все плюсы и минусы.
|
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Значит сделаю просто:
1) проверка на пересечение блокИ-линия 2) проверю все точки пересекающих блоков на нахождение их между нужными точками Условия: 1) точка вставки должна быть почти на линии ( используем радиус от концов участка, погрешность уже становиться большой, если точка не по центру участка линии). Попасть в центр нужного участка - маленькая вероятность, что радует. 2) блок не должен пересекать другие линии - уже проблемотично т.к. габариты блока довольно большие. (делить блок на два разных блока?! - не серьезно...) Мда... надо подумать еще варианты |
|||
![]() |
|
||||
ОПС Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128
|
Цитата:
Код:
Последний раз редактировалось roaa, 04.08.2015 в 14:06. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Код:
----- добавлено через ~43 мин. ----- и проверка на: Если расстояние от Конца линии до Первой точки меньше чем расстояние от конца до проверяемой точки И Если расстояние от Начала линии до Ввторой точки меньше чем расстояние от конца до проверяемой точки То проверяемая точка лежит между Первой и Второй точками. ----- добавлено через ~44 мин. ----- задача в определении точки вставки блока на проверяемой линии. Блок может пересекать несколько линий, но точка будет только на одной (не считая перекрестков). ----- добавлено через ~45 мин. ----- почитаю завтра- времени не хватило разобраться. |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,171
|
Цитата:
Примерный алгоритм: 1) найти все блоки, которые могут пересекаться с полилинией, например с помощью BSELPOLY 2) для каждого блока уточнить пересечение с характерной рамкой: - сделать копию блока (vla-copy); - запомнить последний примитив чертежа (entlast); - подорвать копию (vla-explode); - среди полученных "обломков" выделить ту самую характерную рамку (перебор с помощью entnext от ранее запомненной метки последнего примитива до текущего entlast по условиям "полилиния" и "спецслой"); - проверить ее пересечения с "кабельной" полилинией - если есть, значит блок на кабеле, оставить в списке блоков по п.1, если нет - удалить из этого списка; - убрать мусор (от ранее запомненной метки последнего примитива до текущего entlast) Как-то так ![]() Последний раз редактировалось kp+, 04.08.2015 в 18:01. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Цитата:
Если кто сталкивался буду рад вразумительным объяснениям )) А про доступ в примитивам блока это надо глянуть функции Lee Mac |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
ну пока остановился на вложенном внутри основного блока УГО спец-блоке - маленьком квадрате без атрибутов с точкой вставки в центре. В блоке перебираю примитивы, нахожу вхождение этого блока, затем дело техники - найти ближайшие вершины полилинии, опустить перпендикуляр, найти точку на сегменте полилинии. Чистая геометрия - и пофиг на полилинии блок или рядом где то) Почему вложенный блок-квадрат - так как не всегда геометрический центр УГО совпадает с желаемым центром разбития полилинии, а этот вспомогательный блок где нужно ставишь.
|
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,171
|
Цитата:
Кажется, эта чистая геометрия в полном объеме реализована в грязной стандартной функции vlax-curve-getclosestpointto. Или о ней и идет речь? |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
прикольно) Только лишняя операция - выравнивание выносок. В NetApi/Arx есть JIG классы - выноску можно сформировать и ставить на место визуально сразу. Не знаю, как в лиспе с этим дела обстоят.
----- добавлено через ~8 мин. ----- Цитата:
ну в 2012 хэндл был типа long - т.е. 2 миллиарда всего, если со знаком. Если постоянно убивать/создавать примитивы - то каждому новому из БД чертежа следующий свободный номер присваивается. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
В моем опыте достаточно: прокси-графика, копирование ген.плана(порядка 5 раз), изменение генплана несколько раз, взрыв прокси без своевременной чистки.
Ооо... кстати щас такая проблема- может кто сталкивался: файл порядка 25-30Мб в нем всего лишь один блок из-за которого все тормозит и он не удаляется- файл виснет. Вроде предлагается пересохранить из 15 в 13 версию. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
ну человек хочет переплюнуть тот же электрикал - пускай пробует) Наверно, многие, кто начинал заниматься автоматизацией - пребывали в фантазийной эйфории насчет открывающихся возможностей.. а лишь потом со временем приходит понимание - что есть лишь узкий круг задач, где реально сделать лучше именно под себя...
----- добавлено через ~2 мин. ----- 13..16 акад-одна версия файла.. до этого была тройка 10..12 |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
"плеваться" ни куда не хочу ). Назовем это переход с кульмана на САПР. Электрикал у нас никто не осилил разобраться и настроить под себя тем более. Еплан куда более подходит под наши задачи, но с англ. инструкцией сложно разобраться. Оказалось проще самим что-то этакое создать. В добавок лицензии приобретать не нужно.
Вот небольшая история: купили ModelStudio ЛЭП (ну и всю линейку вдобавок). Требуется всего-лишь провис проводов по профилю юзать. Как выяснилось- в есть ограничения поскольку программист не электрик и тонкостей не знает. Когда эти ограничения уберут? А так сами можем- разве нет. Чет я разгорячился ) .... И тут в точку - все под себя. Ни одна САПР наши потребности не удовлетворяет: ни в экспликация, кабельном журнале, спецификации, схемах, БД оборудования производителей, документообороте и т.п.. ----- добавлено через ~3 мин. ----- Сергей, вопрос.. возможно знаешь. Даунгрейд с 16 до 14 возможен при условии, что лицензия? (ModelStudio работает только на до 14версии включительно и тут с тех поддержкой возникают дилемы по этому поводу) |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
вы мужественно боретесь с "проблемой" определения нахождения блока на полилинии второй день, и при этом замахиваетесь на автоматическую расстановку выносок, на прорисовку схемы соединений и т.д... либо у вас очень узкий сегмент рынка проектирования с большой типизацией.. либо слабо представляете себе реальный объем работ.. и что это понадобиться еще много-много раз дописывать/переписывать по реальные задачи.. а еще это все затевать на лиспе, насколько понимаю..
----- добавлено через ~2 мин. ----- Насколько я слышал от нашего админа, что с 16 версии можно было до 13 даунгрейд сделать.. но это лучше уточнять у представителей аутодеска всетаки |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Назовем это переход с кульмана на САПР.
С подходом Поиск блоков пересекающих полилинию это будет не сапр, даже не велосипед-кульман а самокат какойнить. >>Ни одна САПР наши потребности не удовлетворяет: ни в экспликация, кабельном журнале, спецификации, схемах, БД оборудования производителей, документообороте и т.п.. Сомневаюсь. Скорее наоборот - лень разбираться, да еще и документация к ним какаято нетакая)) |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
ага
скажу больше - для сметчиков "Красную кнопку" тоже запланировал. И компоновщик документации для заказчика как распинаю C# переключись на него. Пока есть вот это:Пакетная печать- опять же под наши требования. И я знаю, что есть 5(известных мне) похожих программ... ----- добавлено через ~1 мин. ----- ![]() |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Его не пинать надо, а изучать и писать на нем) Когда увидите, что многие задачи по обработки информации в С# решаются буквально в несколько строк.. ощутите прелесть того XML-комментирования своего кода.. не говори уже о возможностях построения диалогов.. лисп хорош для небольших задач, имхо.. да и раньше просто альтернативы для него не было..
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Offtop: Лисп хорош не только для небольших задач. Сделать на нем можно очень много - и при этом не зависеть от версии ACAD
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Offtop: Пускай попробуют люди, понабивают шишек, приобретут какой то опыт. Сейчас это стало модный тренд - автоматизация, в нее ринулись кому не лень. Кто-то из опытных людей, давно занимающийся всеми эти вопросами, дал достаточно точное определение всем этим системам автоматизации - что это лишь рычаг. В сильной фирме с налаженными процессами автоматизация даст положительный эффект, в слабых фирмах с никчемным менеджментом - раскачает "лодку" так, что она может начать зачерпывать воду и будет еще хуже.
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Offtop: Прошу прощения за отсталый ответ
Цитата:
Сколько ни пытался, не смог придумать алгоритм, по которому можно заставить машину автоматически расставлять выноски так, как мне надо. Предпочитаю полку ставить самостоятельно. Интересно было бы посмотреть на видео, как это будет... |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Думаю, это дела не меняет, - блок или мультилидер - как программно, без запросов точек у пользователя, поставить все выноски (допустим, штук 25) на чертеж? Они ведь должны находится по возможности на "самых пустых" местах чертежа, при этом, не пересекаясь друг с другом, не перекрывая друг друга и другие объекты, а если это невозможно, то перекрывать так, чтоб не нарушить читаемости чертежа. Выносок бывает очень много на чертеже, и я даже не решился начать продумывать алгоритм, который мало того, чтобы их наполнил, так еще и расставил. Вместо этого у нас идет автоматическая трассировка по оси трубопровода, стрелки выносок поочередно дают указания на характерные точки трассы, а пользователь вручную ставит на место выноски, иногда после этого еще слегка подправляя их положение вручную. При этом на насыщенных чертежах без определенных навыков будет очень нелегко. А если еще и программа их беспорядочно расставит.....вообще капец. Хотя в каждом деле своя специфика... если выноска будет всегда одного размера и стоять должна по определенным правилам, например, справа сверху от стрелки, то ничего сложного тут нет.
Последний раз редактировалось skkkk, 06.08.2015 в 07:20. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Цитата:
Наложение на чертеж уже избежали получается. Пересечение линий выносок и в какую сторону выноску выкинуть- проверка координат относительно центра габарита (с возможным учетом заполненности каждой из 4х сторон) и только. Учитывая вышеизложенное мной (т.е. информация выноски будет на пустом месте стоять). Для себя я понимаю ("самых пустых") , Надо с учетом масштаба запрограммировать правило: между приборами выноска обязательна- она стоит по середине участка или со смещением если есть повороты трассы (в зависимости от длины участка их дублировать несколько раз). Сложность не в алгоритме, а в его программировании на мой взгляд. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Цитата:
Да будет классно, если поменяв выноску поменяется все и везде - до этого еще пилить и пилить. У меня в первую очередь идет оформление всех планов (хоть и вразрез всех правил проектирования), а потом обработкой программой. Нужно что-то изменить- меняй план и вновь отработка программы.Простой вариант -это все удалить программно и заново нарисовать (т.к. приборов может стать больше и листы надо сдвигать и менять размеры). Ну или вставить рядом для сравнения и сохранения релиза(версий) чертежа. Про изменение отображение выносок думал и еще подумаю, что смогу сделать - сделаю. Двигать так и так можно вручную будет. Информацию для размышления кидаете- не спорю. В нашем случае протыкивать все блоки у нас не вариант (в случае видеонаблюдения с 200 камерами и несколькими кабелями под каждую, где не парная прокладка). У каждого свои задачи и условия. Вот уже сделал: см. вложения Помогло vlax-curve-getClosestPointTo и пару условий. Спасибо всем за поддержку и советы!!! |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
----- добавлено через ~2 мин. ----- но вместо этого вы потратите кучу времени на автоматическую расстановку выносок) |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
у меня вся информация в блоках храниться - меняем там инфо и прощелкивать не надо. Ну если брать внезапное смещение номеров камер + изменение кабеля + добавление камер и других приборов.
У меня программа на коленке написана - доработать до красоты и удобства потом можно. Щас большие объемы появились + старые замечания - вручную куда дольше чем написать программу и спать дома, а не на работе. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
не будет ни времени, ни желания - 100%. Какое "ядро"/принцип работы заложите сейчас в программу - так она и будет дальше жить, обрастая вспомогательным функционалом и костылями. Такие вещи надо продумывать на начальном этапе. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>В нашем случае протыкивать все блоки у нас не вариант (в случае видеонаблюдения с 200 камерами и несколькими кабелями под каждую, где не парная прокладка).
"Автоматическая" расстановка выносок - абсолютно не проблема - у меня не реализована за ненадобностью. после любой "автоматической" расстоновки всеравно потребуется ручное редактирование, т.к. выноска налезет на какиенибудь другие примитивы и потребуется вмешательство - красиво делать cpu научить трудно, с этим пока только голова справится. >> Нужно что-то изменить- меняй план и вновь отработка программы.Простой вариант -это все удалить программно и заново нарисовать Плавали знаем... такой вариант прокатит если результат работы программы уходит кудато отдельно - незнаю, таблицы какиенибудь или другие чертежи. Если программа дорабатывает исходный чертеж, рано или поздно встает выбор - поправить быстренько "наколенке" без автоматики или сделать по уму и снова заново всё это подвигать-подгонять. Как правило будет выбран первый вариант)) >>Основной - кабельный журнал, спецификация и схемы. кж и с по факту какраз гораздо проще реализовать чем такую "рутину" >>У меня речь о почти полной автоматизации А я толкаю речь про то что автоматизация это хорошо, но она должна быть "прозрачной" и внесение крошечных изменений не должно приравниваться к переделке всего заново Научите как тут можно автоматом расставить выноски - буду рад Последний раз редактировалось zamtmn, 06.08.2015 в 11:17. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Эту задачу тоже планирую захватить )))
Пока на ум приходит- в отдельном слое отрисовывать прямоугольником все помещения (если план "левый"). Как ни крути должна быть экспликация помещений с цифрами- проставить цифры (или уже иметь цифры от "строителей") и прямоугольники можно автоматом отрисовывать. Если план по уму нарисован (не картинка)- все проще становиться. По нормативам расставлять приборы в помещениях(можно сделать на выбор)- опять же получиться, что автоматом. По правилам последовательности приборов- связи между блоками можно "автоматом" получить. Дальше уже на выбор- или позволить программе автоматически стенку по которой трассу прокладывать, или рисовать/выбирать самим. В тему скажу: камеры на плане расставлять буду почти автоматически - достаточно обозначить периметр + внутрении трассы. Заранее конечно стоит выбрать тип камер(там прописаны возможные кабеля), а от типа кабеля и камер расстояние между ними известно. Угол обзора камер тоже выбрать автоматически. Просто ради спортивного интереса: Как учитываешь высоты приборов и трассы? на плане их не видно Цитата:
----- добавлено через ----- В общем "наполеоновские планы" у меня. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Как учитываешь высоты приборов и трассы? на плане их не видно
Несколько вариантов 1 - трехмерная трасса и расстановка приборов на соответствующих высотах 2 - для 2Д есть возможность подкючить в трассу "муляжное" устройство "стояка" которое добавит для всех кабелей проходящих через него необходимую длину. Также для каждого устройства можно задать значение которое оно добавит к длине всех подключеных кабелей (по идее фича задумывалась как запас кабеля на разделку при подключении, но можно использовать и как этуляцию разности высот) 3 - тоже для 2Д. в случае если кабель начинается на одном плане, заканчивается на другом - к его длине автоматом добавляется разница высотных отметок "стояков" или "разрывов" (специальные блоки "заканчивающие" кабель на одном плане и "начинающие" на другом). сама высотная отметка стояков и разрывов задается им в их свойствах |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Я к тому, что ты их учитываешь все же, но на плане не показываешь?
Замечания не присылали по этому поводу? Я работаю с 2Д и в каждый прибор вписываю высоты (они могут быть разные). Программе не важно на какой высоте на самом деле трасса же- ее принимаю за 0.000 ----- добавлено через ~11 мин. ----- В выносках мы прописываем на какой высоте прибор или трасса. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Я к тому, что ты их учитываешь все же, но на плане не показываешь?
Случаи бывают разные >>Замечания не присылали по этому поводу? Думаешь эти +-метры когото кроме тебя интересуют?)) Вообще имхо лисп для таких задач не особо подходит - блоки+полилинии для устройств и трасс не сильно годятся, лучше отдельные примитивы. Также надо много всякой информации хранить в примитивах - на ум сразу лезет xdata - придется делать средства для массовой обработки этих xdata. и желательно не запросами в комстроке, а с удобным гуем |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,171
|
Когда подрядчику недоплачивают или у него недостает времени, он отключает голову и начинает придираться к каждой запятой в проекте.
Цитата:
Зато можно редактировать станд. средствами |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
kp+
>>и начинает придираться к каждой запятой в проекте. Согласен, придраться можно хоть к чему. По атрибутам - наиболее удобный вариант, хотя минусов тоже хватает. но это только для блоков, Сергей812 Видимо я считаю хорошо, неразу проблем не имел)) |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Обязательно... к примеру КИП приборы на НПЗ - на установке высотой 30м - явно будет недобор.
Согласен... Что-то ушли от темы ))) Хотя я решил задачу уже. Еще раз спасибо всем! |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Как вариант готового jig'а, используемого в lisp: http://www.caduser.ru/forum/index.ph...171&MID=112412
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Вы, правы, прошу прощения, это я виноват.
zamtmn, Сергей812, Дима_, Александр Ривилис и все, кому интересен вопрос, предлагаю продолжить в более подходящей теме: Как визуализировать создаваемый объект?. Уважаемая администрация, я извиняюсь за нарушение правил, сам не понял, что на меня нашло, о чем думал, но как-то отвело меня от темы разговора. И довольно нехило. Однако тема нужная, и не хотелось бы терять данную информацию. Как прикажете поступить? Если решите перенести в ту тему, то я вставил там все цитаты со ссылками сюда на посты, относящимися к той теме - может, удобней будет вам их отсюда тогда изъять? Готов понести посильный труд для устранения своей ошибки. Например, удалить потом свое то сообщение с цитатами. ![]() Ей-Богу, не нарочно... |
|||
![]() |
|
||||
Может быть пригодилось бы уже готовое из http://forum.dwg.ru/showthread.php?t=105238:
- PSI_SEL_ON_LINE - выбрать элементы на линиях с учетом указанного допуска. У блоков и текстов учитываются только точки вставки. Выбираются элементы относительно линии в зоне, шириной в допуск в каждую сторону. - PSI_SEL_ON_LINE_3D - выбрать элементы на линиях с учетом 3D с учетом указанного допуска. У блоков и текстов учитываются только точки вставки. Выбираются элементы относительно линии в зоне, шириной в допуск в каждую сторону и в высоту. - PSI_SEL_INTERSECT - выбрать элементы, пересекающие линии. У блоков и текстов учитываются габариты. - PSI_SEL_INTERSECT_3D - выбрать элементы, пересекающие линии с учетом 3D. У блоков и текстов учитываются габариты. Да! Еще команда FS из Express ищет блоки на линиях. (Иногда не находит).
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 11.08.2015 в 14:54. |
||||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Подскажите пожалуйста функцию поиска в указанной/выделенной области.
Нашел метод Select. Требуется: По двум точкам раскидать по наборам из нужных слоев все линии и блоки ----- добавлено через ~12 мин. ----- Нужно сделать вот это из выделенной области: (setq nab_E (ssget "_X" (list (cons 8 "Pr_Equipment") (cons 0 "INSERT")))) ;создали набор из Boxes и AK_device (setq nab_O (ssget "_X" (list (cons 8 "Pr_Obj") (cons 0 "INSERT")))) ;создали набор из Object (setq nab_T (ssget "_X" (list (cons 8 "Pr_Track") (cons 0 "LWPOLYLINE")))) ;создали набор трасс (setq nab_U (ssget "_X" (list (cons 8 "Pr_UGO_with_to") (cons 0 "INSERT")))) ;создали набор смены высоты Последний раз редактировалось tujn08, 12.08.2015 в 08:23. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А точки, по которым ты выбор делаешь, попадают в отображаемую на экране область или нет?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Код:
Заметил такое, что отклонился от нужной точки и все вроде как заработало- почему так случилось не знаю. Может потому, что эта точка была на блоке? ----- добавлено через ~3 мин. ----- еще бывало, что точка 0 скакала: в 2 и 3 четверти была правильной в 1 и 4 была выше правильной ----- добавлено через ~13 мин. ----- все я понял )) Как переключать режим выбора того, что за пределами экрана? У меня не выбиралось, нужное- я приближал. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Насколько я знаю, такого режима не существует. Я выходил из данной ситуации так: получал точки рамки интерактивно с помощью getcorner, затем перед запуском ssget с аргументом "_C" (но то же справедливо и для "_F") зумировал чертеж, чтобы точки попадали на экран, а после создания набора возвращал вид обратно. Для пользователя это незаметно, если, конечно, чертеж не сотни мегабайт весит.
|
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Обязательно... к примеру КИП приборы на НПЗ - на установке высотой 30м - явно будет недобор.
В таких случаях над бы показать разрезик - как трасса эти 30м проходит, а не просто "стоячек" на плане >>Режим есть- знаю точно. нет такого режима |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Уточнение: какой разрез? Профильный - зачем? Лишняя информация- достаточно высоты прибора (зачем показывать колонну - для того что бы показать, что лоток вертикально поднимается). Случаи спирального подъема по колонне уверен не будут.
Для "информационной" красоты приемлем только горизонтальный разрез (поэтажность на колонне) - для того что бы показать где датчик расположен относительно другого оборудования. Опять же высота прибора будет указана все равно. А если приборы на разных этажах- показать на каких они высотах достаточно. Для подсчета длины достаточно- остальное дело красоты в чертежах. Сугубо мое мнение - так как я сделал бы и уверен сделаю, если придется! |
|||
![]() |
|
||||
Регистрация: 26.12.2013
Сообщений: 283
|
Кто поможет разобраться с проблемой:
ssget При максимальном "приближением" области расстановка блоков идет идеально. Т.е. координаты вычисляются правильно. При даже небольшом "удалении" области (для наглядности еще "дальше" сделал) расстановка блоков идет черти как. Т.е. координаты плохо вычисляются. Округления могут помочь? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А ты проверь - как они вычисляются. И не срабатывают ли "грабли номер раз"
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Подскажите пожалуйста, есть ли такая чудо лиспа, чтобы автокадовские выноски, которые беспорядочно нанесены выставлялись бы в рядочек или в хороводик и не пересекали бы друг друга линиями привязки и линиями полки и текстом на полке не пересекали бы объекты нарисованные в модели и искали бы ближайшее свободное местечко для расположение полки и текста на ней ? Может лень (скорость работы) уже дошла до этого.
Последний раз редактировалось tonimikojanovka, 13.03.2019 в 00:07. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
И какое это имеет отношение ко всей теме?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Тогда в отдельную тему.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Очистка рисунка от "пустых" блоков | Makswell | Готовые программы | 15 | 26.10.2022 15:24 |
AutoCAD 2012 Поиск по атрибутам блоков | yurka52rus | AutoCAD | 8 | 17.07.2020 12:09 |
Lisp. Поиск блоков в файлах и замена атрибутов | AlexKey | LISP | 3 | 12.09.2013 16:39 |