|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Ищу программу для расстановки в автокаде блоков вдоль полилинии
Регистрация: 07.02.2018
Сообщений: 7
|
||
Просмотров: 12470
|
|
||||
Регистрация: 18.12.2010
Сообщений: 5,115
|
|
|||
![]() |
|
||||
Регистрация: 07.02.2018
Сообщений: 7
|
С программированием не дружу.. Для расстановки пикетов по трассе пользуюсь лиспом "piket" к сожалению на автора сослаться не могу, т.к. не помню. Возможно ли добавить в код запрос данных из excel вместо запроса дистанции?
Код:
появится определенная погрешность, т.к. надо учитывать углы |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
В указанной теме много кода, возможно что то Вам подойдет. |
|||
![]() |
|
||||
Offtop: Это уже интрига))) Говорил же Профан, не говори гоп…
|
||||
![]() |
|
||||
Цитата:
Ну если использовать созданную обстановку: dwg с полилинией, блок "Опора" с атрибутом "НОМЕР_ОПОРЫ" , сохранённый в этом dwg, файл с дистанцияями в формате, например *.txt с числами в один столбец (поскольку excel содержит всего лишь один столбец с числами), то лисп может выглядет как-то так. ;************************************************************************************************************************************ Код:
|
||||
![]() |
|
||||
Регистрация: 07.02.2018
Сообщений: 7
|
Цитата:
Цитата:
![]() Последний раз редактировалось Кулик Алексей aka kpblc, 08.02.2018 в 16:45. |
|||
![]() |
|
||||
Пожалуйста) Offtop: Но утврждения 2, 3 всё-таки как-то гиперболизированы)
|
||||
![]() |
|
||||
Регистрация: 06.10.2017
Сообщений: 43
|
Цитата:
А нельзя сюда добавить также и обратное действие? В качестве исходных данных - полилиния и блоки, содержащие атрибут "название", которые вдоль неё натыканы. На выходе - экселевская табличка, в которой содержится столбец названий и столбец расстояний Расстояния должны измеряться, понятно, вдоль полилинии. Если базовая точка блока не совпадает с полилинией - брать ближайшую к базе блока точку полилинии. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Оснащение проходки горных выработок, ПОС, нормоконтроль, КР, АР Блог Регистрация: 30.01.2008
Ленинград
Сообщений: 19,476
|
Если ко мне когда-нибудь придёт проект этих опор сделанный в этих ваших макросах, я автора по айпи вычислю !
![]() Ну что за глупости ? Опоры надо на плане расставлять !
__________________
"Безвыходных ситуаций не бывает" барон Мюнхаузен |
|||
![]() |
|
||||
Пока товарищ нормоконтролёр находится в состоянии ожидания перспективного приходящего проекта, а его со-товарищ барон Мюнхаузен мечется по микрокосму всемирной паутины в поисках требуемого IP-адреса, восседая на электроне, я произвёл корректировку макроса, который теперь сможет экспортировать дистанции точек вставки блоков, находящихся на полилинии.
Методология следующая: 1. Выбирается полилиния и анализируются объекты, пересекаемые ею. 1-1. Если среди объектов находятся блоки, то предлагается ввести имя файла *.csv (разделитель "точка с запятой") для экспорта дистанций этих блоков от начала полилинии, которое помечается флажком. Если точка вставки блока не лежит на полилинии экспортируется дистанция до ближайшей к ней точки полилинии, в которую корректируется точка встаки блока. Дистанции и др. инормация экпортируются в следующем формате: "П/н блока;Атрибут-Номер_опоры;Атрибут-Название;Отн. дистаниция;Абс. дистанция". Если в блоке есть атрибуты, указанные выше, то и их значения, экспортируются в соответстующую колонку, в противном случае "Nonе". 1-2. Если среди объектов нет блоков, то предлагаеися ввести имя файла с дистанциями для расстановки блоков по ним. Файл может быть или *.txt, в котором относительные дистанции находятся в одном столбце или *.csv, подобный созданному в п.1-1, из которого также берутся относительные листанции. Если в dwg нет блока "Опора", то он создаётся таким, каким он был у MSWAN, только атрибут расположен горизонтально и выравнивание текста у него "по центру". Размещение атрибутов я изменил в сравнении с предыдущим лиспом на итолько горизонтальное. Оно конечно не идеальное, но пока заниматься улучшением не хочется. Дистанции экспортируются в восходящем порядке. 2. Проверки на правильность импортируемых данных отсутствуют. Ну вот, как-то так))) Код:
Последний раз редактировалось koMon, 02.03.2018 в 21:05. Причина: Выявил косяки |
||||
![]() |
|
||||
Регистрация: 06.10.2017
Сообщений: 43
|
Цитата:
![]() Команда же должна быть Block_Along_PLine? |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
По ходу надо завязывать с красивостью и тупо пристёгивать файл...
Да, и у меня тоже работает))) Но нюансы конечно же остались. Последний раз редактировалось koMon, 05.03.2018 в 21:22. |
||||
![]() |
|
||||
Регистрация: 06.10.2017
Сообщений: 43
|
Со второго раза запустился. Теперь другая проблема.
Файл с дорогой и опорами во вложении. При первом запуске приложения сформировалась такая табличка. Иероглифы в заголовке в принципе не так уж страшно - есть расшифровка ) но почему-то посчитались только две опоры, хотя их на самом деле куда больше. И еще, при попытке запустить приложение повторно - запрашивается имя файла с координатами, хотя я выбираю полилинию |
|||
![]() |
|
||||
Иероглифы скорее всего побочный эффект копи-паста. Вкладываю лисп.
Сделал в файле из #26 3 запуска. PDF файл со скриншотами вкладываю. Запуск 1. Выбираю полилинию, генерится csv, открываю csv. Запуск 2. Выбираю полилинию, предлагается переписать csv, переписываю csv, открываю csv. Запуск 3. Стираю всё, кроме полилинии, выбираю полилинию, предлагается выбрать файл для чтения, выбираю csv, проставляются блоки. Блок с относительной дистанцией 0 игнорируется. Последний раз редактировалось koMon, 21.03.2018 в 17:14. |
||||
![]() |
|
||||
Регистрация: 06.10.2017
Сообщений: 43
|
|
|||
![]() |
|
||||
Чудеса!) У меня из дороги_2 файл сгенерился полностью, включая блок 3.
Попробуйте проверить командой CIP из кода ниже пересечение полилинии и блока №3. (defun c:CIP() (setvar "pdmode" 3) (setvar "pdsize" 100) (setq pline_object (vlax-ename->vla-object (car (entsel "\nSelect Target PLine: ")))) (while t (setq block_object (vlax-ename->vla-object (car (entsel "\nSelect Block to Test: "))) vla_method_executed (vla-GetBoundingBox block_object 'left_lower_corner 'right_upper_corner) command_executed (command "rectang" "_non" (vlax-safearray->list left_lower_corner) "_non" (vlax-safearray->list right_upper_corner)) intersection_Points_array (vl-catch-all-apply 'vla-IntersectWith (list pline_object block_object acExtendNone)) ) (if (or (= (type intersection_Points_array) 'VL-CATCH-ALL-APPLY-ERROR) (< (setq intersections_number (vlax-safearray-get-u-bound (vlax-variant-value intersection_Points_array) 1)) 0) ) (print "Selected Block Does Not Intersect with PLine") (progn (print "Selected Block Intersects with PLine") (setq intersection_points_coordinates_list (vlax-safearray->list (vlax-variant-value intersection_Points_array))) (repeat (/ (1+ intersections_number) 2) (command "point" "_non" (list (car intersection_points_coordinates_list) (cadr intersection_points_coordinates_list))) (setq intersection_points_coordinates_list (cdddr intersection_points_coordinates_list)) (print intersections_number) ) ) ) ) ) инересно пересекаются они у вас или как? Последний раз редактировалось koMon, 12.03.2018 в 15:46. |
||||
![]() |
|
||||
Проверяется пересечение полилинии и габаритного прямоугольника блока. Они должны быть в одной плоскости. Но в дороге 2 видно, что они в одной плоскости. Ерунда какая-то…
----- добавлено через ~1 ч. ----- VVA, а у тебя генериться блок 3 для дороги 2 из #29? Последний раз редактировалось koMon, 14.03.2018 в 16:20. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
koMon, нет
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Однако!?
Всегда скептически относился к вопросам о версии автокада и установленных апдейтах, но не в этом случае. Другого ничего не приходит в голову. VVA, ты как думаешь, в чём засада? У меня всё пересекается и выводится… |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
koMon, CIP у меня отрабатывает
Вопрос был Опора 3 пропускается
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Scared, видимо VVA занят. Ты можешь сделать то, что я прошу выше?
|
||||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возможно ли в Автокаде 2014 в свойствах полилинии сделать площадь в квадратных метрах? | erikbond | AutoCAD | 13 | 13.04.2016 19:07 |
Как преобразовать модель автомобиля, из блоков, линий, 3d линий, полилиний... | Legion | AutoCAD | 11 | 29.08.2015 13:33 |
в автокаде редактор блоков не закрывается, но выдает себя за основной файл | SitchAzamat | AutoCAD | 3 | 18.09.2012 16:49 |
Поворот блоков вдоль полилинии, сплайна | Victor | Готовые программы | 3 | 19.02.2012 22:12 |
ищу функцию построения 3d полилинии | mankurt | Программирование | 8 | 07.02.2012 12:43 |