|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Neo, теоречически - получаешь список первых элементов, убираешь дубликаты, а потом проходишь по всему списку и группируешь остатки.
----- добавлено через ~6 мин. ----- Как пример: Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Где проверить: http://autolisp.ru/2009/09/20/execution-speed-check/
И у применения function есть еще один плюс: можно поставить точку останова внутри анонимной функции. Иногда полезно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 23.04.2015
Сообщений: 163
|
Доброго дня. Можно ли как-нибудь без полного открытия файла чертежа достать из него системную переменную? Пока делаю так
Код:
Но для больших файлов долго выходит, хочется как через ODBX или наподобие, только чтоб с переменными работало. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Ну так открывай через ObjectDBX, получай указатель на объект документа, а потом (vla-getvariable УказательНаДокумент НазваниеПеременной)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Привет.
Есть код автор ув. akka_KPbIC Код:
По размыслив почитав vla-семейства, попытаюсь написать, как я понимаю твое решение: 1. Создал две функции преобразований списка координат в список чисел и обратно. 2. Далее, выбираем полилинию и если это полилиния, то идем далее 3. Потом не плохой ухват, запуск цикла функцией foreach и тут внутри цикла есть доп.вопросики: а. Внутри цикла это не пример? а необходимый код? б. Из vertex я могу достать X и Y, они мне нужны для корректировки, у меня будет формула их изменения. 4. После того как координаты изменились у вершин полилинии можно строить новую полилинию, но вопросик где прописано постройка новой полилинии? Вроде пока всё. Да, чуть не забыл, кто не в курсе вопрос стоял в том, что есть полилиния (простая), изменяя координаты вершин полилинии (любые математические действия), строим рядом новую полилинию. Спс.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Есть полилиния, необходимо построить новую, изменяя координаты вершин исходной полилинии. Координаты изменяются по формуле (какие-то математические действия с координатой X и Y). Полилиния м.б. много вершинная от 2 до ...
Вот ещё что, у меня полилиния нового формата не LWpolyline, а просто Polyline При выборе полилинии равенство подтверждается Код:
Идем далее Код:
bit почему именно до 3, какую роль они играют в твоем решении (примера)? В моем случае одна формула будет для всех X и одна для всех Y
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 15.10.2015 в 13:02. |
|||
|
|||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Pavel_GP, так тебе надо строить новую или менять существующую? Разница принципиальная: у меня код меняет существующую полилинию. Попробую ответить по пунктам
Цитата:
Верно Цитата:
Пополам. Результат вычислений где-то надо бы сохранить, для этого служит coords Цитата:
Цитата:
Это как раз пример. Если у тебя вычисление новой координаты выполняется какой-то функцией типа (eval-new-coords x y), то и пиши (setq coords (cons (eval-new-coords (car vertex) (cadr vertex)) coords)) - этого по идее должно быть достаточно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
||||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Спасибо, что разжевал всё подробно
Верно новую. Будут вопросики отпишу. Пока тестю.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Если новую, то сразу вопросы: слой, тип и вес линии откуда брать? Elevation, Thickness, слой? Как учитывать кривизну элементов? Предустановленную ширину сегментов (возможно, переменную)?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
Подскажи плз функцию выбора, как в функции offset, когда пользователю предоставляется выбор кликнуть мышкой с какой стороны построить. У меня сложный расчет изменения координат вершин, (я пытаюсь создать программку на подобие оффсета, только расстояние у меня будет не на плоскости на эллипсоиде, поэтому и приходится формулой преобразовывать координаты вершин), будет задействован угол (перпендикуляр к полилинии).
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 15.10.2015 в 16:33. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Во-первых, есть метод vla-offset. Во-вторых, для вычисления первой и второй производной в любой точке любой кривой есть функции vlax-curve-getfirstderiv и vlax-curve-getsecondderiv. Описание есть в справке
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Все хорошо, но мне не нужно чтоб при вводе смещения объект сразу смещался, я задаю величину смещения для дальнейшей обработки его в формуле вычисления координат вершин.
Цитата:
С можешь отредактировать нижнюю часть своего решения? ( см. #2726) Работаю пока над основной формулой вычисления внутри foreach
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 16.10.2015 в 08:56. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Так создавай новую полилинию, через vla-addlightweightpolyline, задавай полученному примитиву нужные свойства. Принцип не изменится: получить примитив, собрать координаты, создать новый.
P.S. В принципе, можно и через ename сделать - возможно, так даже будет более интересно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Спс. тут я понял.
Вопрос: Мне необходимо получение угла( это все нужно в формулу получения новых координат вершин, которая определяется внутри foreach), после выбора стороны смещения Код:
и куда его вставить в твое решение?
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Привет.
Код:
Как составить такой вариант список углов (угол (/ (угол+угол1) 2.) (/ (угол1+угол2) 2.) .... уголn) Спс.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 19.10.2015 в 14:54. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
(append angl_1 (list (car angl_1)))
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Это замыкать (1 2 3 4 1)
Я просил такой тип (a (/ (a+b) 2.) (/ (b+c) 2.) ... (/ (g+n) 2.) n), где второй список это среднее между 1 и 2 углами и т.д. а последний угол это просто угол. Пример: Полилиния из двух сегментов список такой (a ((a+b)/2) b) (три угла) Полилиния из пяти сегментов список такой (a ((a+b)/2) ((b+c)/2) ((c+d)/2) ((d+e)/2) e) (шесть углов)
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 19.10.2015 в 16:55. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |