В общем чутка доработал, угол теперь сохраняется, опция длины убрана вместо нее добавлена опция замыкания полилинии, длину теперь можно вводить в ком строку без выбора опции. Команда запустится если полилиния не замкнута и начальная и конечная точка не совпадают. Ну и сделал пакет автозагрузки, как обычно разблокировать после скачивания и положить в любую папку ApplicationPlugins. Если честно, практического применения, кроме как рисовать прямоугольники под любым углом не нашел)
Все хорошо. Единственное, что мешает - это запомненное в предыдущем сеансе значение угла, можно ли этот момент убрать, т.е. чтобы по умолчанию угол был "0"
В общем запоминать или нет вынесено в опции (по умолчанию нет), туда же вынесено и куда продолжать линию, вперед, назад, или и туда и туда (по умолчанию, как в предыдущей версии). Команда для настроек - ExtendPLineSettings
Может быть уже есть на lisp? Функция сделать копию части объекта по трем точкам: начала, направления и конца? Направление одновременно для выбора объекта - первая точка может быть на пересечении нескольких объектов. И для однозначности - с какой стороны обходить замкнутые объекты. Нужно для создания новых объектов, части которых повторяют существующие - например, см. https://geodesist.ru/posts/1122006/ - создавать контуры, точно примыкающие к другим объектам, создавать линейные объекты (дороги или др.) точно повторяющие контуры. Подобные темы видел на разных форумах не раз, но не фиксировал... Кстати, все, работавшие в Панораме или т.п., про такую возможность в AutoCAD спрашивают, оч. помогала.
Да, ее и имел в виду. Можно сказать и так. Желательно бы на lisp - если функция. Если же на C, то тогда программку полную - чертить полилинию или 3dполилинию с возможностью повторения частей объектов. И для AutoCAD постарше - минимум, от 2018. Может быть и еще старше - многие еще на них.
Ну в целом не проблема, если поточнее опишете алгоритм, мысли есть как сделать но две головы как говорится лучше. По поводу версий от 2014 до 2024 должно работать, вот под 2025 скорее всего придется делать отдельную версию, но пока никто не просил.
Здорово! Про 2025 подумаем потом. :) Пока представляю себе так.: 1. Возможность чертить обычные lw и 3D полилинии. Предустановленные привязки и значения переменных действуют, и действуют только они. 2. Возможность повторять части всех видов полилиний (и дуговые сегменты), сплайнов, отрезков, окружностей, дуг, эллипсов, эллиптических дуг, областей, мполигонов, 3д граней, границ штриховок и мультилиний. 3. Чертится как обычная полилиния - с любого нужного места, чертится обычно. Если курсор привязывается к перечисленным в п. 2. объектам, то в комстроке в опциях добавляется дублироватЬ. 4. Если выбрана опция дублироватЬ, то в комстроке появляется подсказка Укажите точку направления дублирования: или Укажите точку конца нужной части:. 4.1. Первый вариант - для замкнутых объектов. Т.е. полилиний, сплайнов - с признаком Closed, для них же и мультилиний с совпадающими началом/концом. А так же для окружностей, эллипсов, областей, мполигонов. После указания точки направления в комстроке появляется подсказка Укажите точку конца нужной части:. 4.2. Второй вариант, т.е. Укажите точку конца нужной части: - если объекты не замкнуты, в т.ч. для отрезков, дуг, эллиптических дуг. 4.3. Если точки определения направления дублирования или конца нужной части не попадают на объект, то в комстроке дается сообщение Укажите точку на объекте [Отменить дублирование]:. И ожидается указание точки на объекте или отмены дублирования. 5. Если точка конца дублируемой части совпадает с точкой начала/конца объекта, и к ней не привязан другой объект/не проходит другой объект или курсором указана следующая точка вне объекта, то продолжается черчение в обычном режиме. Пока курсор не привяжется к другому объекту, из перечисленных в п. 2. Тогда снова в комстроке в опциях добавляется дублироватЬ, и повторяется пп. 3-4. 6. Если к точке конца дублируемой части привязан другой объект/через точку проходит другой объект, то снова в комстроке появляется подсказка Укажите точку направления дублирования: или Укажите точку конца нужной части: - как в п. 4. 7. Для всех действий возможна отмена до предыдущего действия - Ctrl Z. 8. Esc действует в целом как обычно при черчении полилиний, т.е. отменяет создание полилинии - если задана только точка начала, и завершает черчение - если указано точек больше одной. 8.1. Если Esc нажат сразу после указания точки направления дублирования, то отменяется только задание направления, и в комстроке снова появляется подсказка Укажите точку направления дублирования: - как в п. 4. 8.2. Если Esc нажат сразу после указания точки конца нужной части, то создание полилинии на этой точке завершается. 9. Пересечения дублируемой части объекта с другими объектами игнорируются, если точка конца нужной части не совпадает с точкой пересечения. 10. Программа двуязычная. Вроде: (if IsRus ...) Может быть, для удобства и ускорения: 1. Допустимость указывать точку конца не только на первом объекте, а на другом объекте, если он есть продолжение цепочки продолжающих друг друга объектов. Например, для цепочки соединенных отрезков. Или цепочки продолжающих друг друга полилиний, сплайнов и пр. 2. Подсвечивать дублируемый объект, чтобы лучше его видеть в насыщенных чертежах. Надеюсь, это не слишком нагло...
Чем не подходит лисп в менгео скопировать область? И вообще непонятно что имеется ввиду, вам нужно хорошо сформулировать вопрос
В общем с полилинией и 3д полилинией и их производными, линиями и дугами еще можно замутить, со сплайном все на порядок сложнее как и эллипсом, аналогом сплайна, соединить сплайн и полилинию возможно только путем преобразования в сплайн, в общем за 5 минут тут не сделаешь, но что-нить за недельку думаю набросаю. М линия это вообще сложносоставной объект типа блока а не линейный объект.
Я не стал писать явное - что со сплайнов и эллипсов снимаются копии полилиниями, т.к. создается полилиния. Сплайны и эллипсы оч. неплохо передаются полилиниями с дуговыми сегментами. Но это сделано на лисп - см.https://forum.dwg.ru/showpost.php?p=795756&postcount=2 https://forum.dwg.ru/showpost.php?p=73508&postcount=8. Поэтому я в начале написал, что лучше на лисп... Гм... Может быть мы о разном? Мультилинии - вполне линейные объекты. Для работы с ними тоже есть лиспы. Их можно в программе скопировать/разбить, получатся отрезки. И с ними уже работать. Мультиполигоны - тоже ничего, вроде, эксклюзивного - смесь областей со штриховками. Их контуры так же считываются в лиспах.
Ну это просто аппроксимация, то есть граница уже не будет совпадать на 100% с элементом. В общем получается так: 1) Полилиния (плоский объект, потеряется высота всех элементов) напрямую можно использовать - линии полилинии, 3д полилинии, дуги, круги аппроксимируя можно использовать - сплайны, эллипсы (теряется точность) косвенно - штриховки (извлекаются любые кривые, сплайны в том числе, ресурсоемко так как обычно извлекается каша из элементов и их надо правильно соединить в контура), полигоны (извлекаются полилинии), 3д грани (извлекаются линии), млинии (можно построить полилинию по узлам млинии, или выгрузить отрезки и дополнительная задача по их соединению для получения всех элементов (надо тестировать)) 2) 3д полилинии - аналогично полилинии но сохраняются все отметки, в раздел аппроксимации так же перемещаются дуги и круги. 3) сплайн - по идее самый точный вариант, сохранятся все отметки и форма любых элементов, но на выходе сплайн, не самый популярный элемент.
В общем - все так. Кстати, хорошо, что Вы упомянули 3д грани - о них забыл. (Добавил в #1592 для протокола). И штриховки. Я боялся их упомянуть, чтоб совсем не отвратить. :) Точность до, минимум, шестого знака можно обеспечить. Или до восьмого. Пусть не во всем фунциями от VVA, но делается. Это нами проверено и практикуется - в наших лисп-проектах представление полилиниями и сплайнов, и эллипсов, и границ штриховок и пр. производится.
Сплайн преобразовывается в 3д полилинию, какой 6 знак после запятой? Для такой точности точки должны проходить с интервалом порядка 5-6 знака после запятой, чисто теоретическо возможно, но автокад ляжет после 1 см такой аппроксимации Когда аппроксимируются дуги при построении проверхности цивила, по умолчанию стоит 1 метр точности, то есть от любой точки дуги до результирующей аппрокимированной линии будет не больше 1 метра, я когда делаю меняю обычно на 10 см, если более точно надо, но 6 знак после запятой это уже за гранью. Что то мне кажется я не очень понял где именно применяется такая точность)
Да, я ерунду написал! (Заклинило на предыдущих моих задачах). Прошу прощения! Точность аппроксимации, думаю, нужно определять от заданных LUPREC.