|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
Цитата:
UPD. Только я немного не понял, я получил массив структур данных, где выноски отсартированы по дистанции. А мне нужно было на выходе функции получить нужную выноску к передаваемой vla-pl и все PS> Код крутой у тебя Последний раз редактировалось gnuvse, 26.10.2023 в 18:09. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Так забирай car от результата и делай с ним чего хотишь, делов-то ) Это будет выноска, расстояние от полилинии до хвоста которой минимально. Берешь (cdr (assoc "obj" value)) - вот тебе указатель на выноску. Ну и теде.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
Цитата:
Я понимаю, что для быстрого процессора это фигня, но все равно, хачем лишние телодвижения Я наковырял вот такой цикл, оно вроде даже работает, но честно признаться я немного не понимаю как оно работает. Ты мог бы немного пояснить? Самые близкие элементы по итогу имеют дистанцию 0, но мне немного непонятно, почему "(setq coordinate-mlead (cdr (nth key-coordinate-mlead (entget ent-mlead))))", вот это дает одинаковую координату с мультивыноской Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Ну, откуда и с какого перепугу ты берешь key-coordinate-mlead, я без понятия. И там в ename-представлении, ЕМНИП, не все настолько просто и однозначно, обычный (cdr (assoc ...)) может дать неправильные результаты. Кажется, там надо нечто типа
(cdr(assoc 10 (member '(0 . "{MLEADER_LINE") (entget (vlax-vla-object->ename vla-mleader-object))))) или что-то наподобие. Скажу честно, сейчас совсем в другой задаче, и ковыряться не могу. Касаемо что будет, если выноска попадает на пересечение двух и более полилиний? А сделать обработку сразу на список полилиний и список выносок не сложно, достаточо просто будет проходить (к примеру) по всем полилиниям, подставляя для сравнения постоянно уменьшающийся список выносок. Вариантов, конечно, масса, и мой гарантированно не является самым идеальным ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
Цитата:
Да, твое решение универсальное, но мне как нубу, для практкии слишком сложновато все это разом охватить. Если будет время, просмотри пожалуйста, буду признателен |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Цитата:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
Цитата:
Спасибо, а зачем мне начальные точки всех хвостов? =) Да, если честно я код понял, прогнал его, потестировал. Круто ты оперируешь функциональным программироанием, но при этом массивы во все поля, как-то необычно. Кажется что ты еще тот любитель common lisp'a =) но я продублирую, может поправишь: Код:
Тут загвоздка в том, что мне непонятно, почему мой код работает, и почему ближайшая выноска дает 0.0 дистанцию, а не 0.1 или 2.0, как буд-то какая-то фунция вычисляет от моей выноски до места касания с полилинией |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Пфффф... Попробую по шагам
Код:
Offtop: ПыСы До пн я вряд ли буду в адеквате, других задач накидали мама не балуй.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Дык ета... (vlax-dump-object objec t)
Прикол именно в последнем параметре - он показывает еще и методы, доступные для объекта. Ну или VBA-справку надо раскуривать.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
А что за последний параметр, у меня на выноску вот такое показывает, ничего похожего на координаты или название leader line vertices
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Ты эту строку в консоли VLIDE выполни )))
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Ну на крайняк действительно поставь VBA-енаблер и справку под него )) Тож пользительная штука.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
|
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
Цитата:
Но классно, я теперь буду в разных местах просматривать, осталось программировать научиться |
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
Доброго дня.
У меня накопилось несколько вопросов и просьб, можете помочь? Буду признателен. 1. Есть ли встроенная функция по декодированию списка-списков в список? А то я сам накодировал вот такую программу, просто чертим pline по вставленным блокам. Сама функция list-of-lists-pt->list делает то, что я описал. А как ее переписать в стиле lisp? Код:
Какие я тут вижу проблемы: а. Это определение этого места, то есть на пути от одной точки до другой стоит некое препятствие, может можно какой-то тестовый луч перед построением отправлять? б. После локализации места нужно нам найти точку, и добавить ее для построения линии, то есть это должно осуществляться до вызова list-pt->safearray, чтобы потом передать правильную длину для vla-make-safearray По-возможности, попробуйте мне описать словами, чтобы код я сам попробовал написать. 3. Порекомендуйте ссылки по изучению исходных кодов с форума, если возможно то не убер коды, а что-нибудь для новичка, чтобы развиваться. Наверняка вы уже на опыте можете отличить хороший и полезный код от посредственного, как мой например ![]() Последний раз редактировалось gnuvse, 01.11.2023 в 16:23. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |