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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен lisp, показывающий все ли линии сходятся в одной точке.

Нужен lisp, показывающий все ли линии сходятся в одной точке.

Ответ
Поиск в этой теме
Непрочитано 31.03.2014, 15:47 #1
Нужен lisp, показывающий все ли линии сходятся в одной точке.
ВоваН
 
Дороги, Конструкции, Тоннели
 
Сочи
Регистрация: 20.05.2004
Сообщений: 102

Предыстория:

Выходим на экспертизу по реконструкции существующего объекта. Существующий объект - пятиэтажное здание с несущим металлокаркасом и плитами перекрытия по несъемной опалубке. Количество элементов - больше 20 000.

Требуемый результат:

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


Проблема:

1. Не все линии в узле заканчиваются в одной точке. Бывает так: приходят в узел 6 линий из них пять линий приходят в точку с координатами X=1, Y=1, Z=1, а шестая в точку X=1.001, Y=1.001, Z=1.001. Визуально это не видно, но для расчетной схемы не подойдет.

2. Нарисовал линию №1, а когда начал рисовать линию №2, привязался к середине линии №1, но линию №1 в этой точке не разбил. В итоге линия №2 приходит в то место, где узла нет.

Проверять приходится больше 1000 узлов.

Примеры узлов во вложении.


Что нужно:

Нужен лисп, который показывает такие узлы.
Узлы можно помечать как угодно, но! только не надо исправлять координаты.
В идеале, было бы хорошо чтобы линия, которая выделяется из общей массы, выделялась цветом.
Слои трогать не надо, в них находится информация о сечении.

Вложения
Тип файла: dwg
DWG 2007
Пример для програмистов.dwg (86.6 Кб, 1242 просмотров)

Просмотров: 3225
 
Непрочитано 31.03.2014, 16:03
#2
Do$

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


Ищите по форуму. Есть готовые из которых можно собрать то что нужно, даже не имея навыка продвинутого лисп-программиста.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 31.03.2014, 17:21
#3
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


Цитата:
Сообщение от Do$ Посмотреть сообщение
Ищите по форуму. Есть готовые из которых можно собрать то что нужно, даже не имея навыка продвинутого лисп-программиста.
Я искал но не нашел, и вот по этому я задаю этот вопрос.

Если ВЫ найдете мне ответ на этот вопрос, я буду очень признателен.
ВоваН вне форума  
 
Непрочитано 31.03.2014, 18:03
#4
Do$

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


Цитата:
Сообщение от ВоваН Посмотреть сообщение
и вот по этому я задаю этот вопрос.
Вопроса я в первом посте не увидел, только требования. С требованиями - прямая дорога в раздел поиска исполнителей. http://forum.dwg.ru/forumdisplay.php?f=33
Цитата:
Сообщение от ВоваН Посмотреть сообщение
Если ВЫ найдете мне ответ на этот вопрос, я буду очень признателен.
Совершенно нет желания.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 31.03.2014, 19:15
#5
gomer

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


ох ты ж сколько программистов тут... и хоть лишняя копейка в доме не помешает, присоединяюсь к Do$. Проход номер раз: ищем по фразе "Округление координат", проход номер 2 ищем по фразе "Разрыв в точках пересечений"
gomer вне форума  
 
Автор темы   Непрочитано 01.04.2014, 09:57
#6
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


Цитата:
Сообщение от gomer Посмотреть сообщение
ох ты ж сколько программистов тут... и хоть лишняя копейка в доме не помешает, присоединяюсь к Do$. Проход номер раз: ищем по фразе "Округление координат", проход номер 2 ищем по фразе "Разрыв в точках пересечений"
Я же писал: Узлы можно помечать как угодно, но! только не надо исправлять координаты.

Ребята, пожалуйста, не пишите не по теме. Не хотите помочь, никто вас не заставляет, зачем тратить драгоценное время на всякую чепуху?

Последний раз редактировалось ВоваН, 01.04.2014 в 10:17.
ВоваН вне форума  
 
Непрочитано 01.04.2014, 23:11
#7
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Попробуй
Код:
[Выделить все]
(defun C:demo(/ a compd ents i fuzz ln matched osm p records sset tp)
(command "_undo" "_BE")
(setq fuzz 0.0001);<< increase or decrease a fuzz
(setq osm (getvar 'osmode))
(if (and (setvar 'osmode 32)(setq p (getpoint "\nPick point in intersection: "))(setq sset (ssget (list (cons 0 "line")))))
  (progn
(setq ents (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset))))
(setq records (mapcar '(lambda (ln)(list (cdr (assoc -1 ln)) (cdr (assoc 10 ln))(cdr (assoc 11 ln))))
  (mapcar 'entget ents)))

(setq compd (mapcar '(lambda (a)(or (> (distance (car a) p) fuzz )
				    (> (distance (cadr a) p)fuzz  )))
		    (mapcar'cdr records)))
(setq matched nil)
(setq i 0)
(while (and (setq tp (nth i compd))(eq tp T))
	(ssdel (nth i ents)sset)
  (setq compd (cdr compd))
(setq i (1+ i)))

(setq ents (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset))))	
(foreach en ents
  (command "_chprop" en "" "_CO"  "_T" "255,0,0" ""))
)
  )
(alert "See result")
(command "_undo" "_END")
(setvar 'osmode osm)
(princ)
)
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 02.04.2014, 10:34
#8
ВоваН

Дороги, Конструкции, Тоннели
 
Регистрация: 20.05.2004
Сочи
Сообщений: 102
<phrase 1=


Попробовал, выделяет красным любые две или три линии, в независимости от сходимости в одной точке.
Короче - просто красит красным несколько линий из выделенных.
ВоваН вне форума  
 
Непрочитано 01.05.2014, 14:25
#9
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


М.б. надо найти все отрезки, координаты которых отличаются от целых чисел? Этого будет достаточно?

----- добавлено через ~10 мин. -----
Проблема еще актуальна?
В твоем примере все линии опираются на один узел, т.е. второй конец линии свободный. В реальной ситуации оба конца опираются на узлы, или есть исключения? Ситуация, показанная в примере 2 всегда ошибочная (оба конца отрезка опираются на узлы, но где-то внутри отрезка есть узел).
480725 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен lisp, показывающий все ли линии сходятся в одной точке.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Вопрос про черчение линии от одной линии до другой линии с определенным отступом от неё. Alex7007GUF AutoCAD 22 06.10.2013 11:14
Как задать в каждой точке определенной линии переменное во времени давление? Leha_Pskov ANSYS 3 23.01.2012 11:38
LISP. Как по ходу исполнения Лиспа менять тип линии? Джаз LISP 4 27.09.2011 00:28
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33