Помогу бесплатно разработать любую программу на autolisp.

Тема в разделе "Autodesk", создана пользователем Германup, 3 фев 2014.

  1. paniva2010

    paniva2010 Форумчанин

    Все отлично, впрочем у Вас по-другому и не бывает.
     
  2. АлексЮстасу

    АлексЮстасу Форумчанин

    Может быть достаточно полилинию скопировать, и преобразовать в 3D командой ConvTo3D из PlTools?
     
  3. paniva2010

    paniva2010 Форумчанин

    Уважаемый alz. Не могли бы вы добавить возможность автозагрузки этого макроса
     
  4. alz

    alz Форумчанин

    В общем чутка доработал, угол теперь сохраняется, опция длины убрана вместо нее добавлена опция замыкания полилинии, длину теперь можно вводить в ком строку без выбора опции. Команда запустится если полилиния не замкнута и начальная и конечная точка не совпадают. Ну и сделал пакет автозагрузки, как обычно разблокировать после скачивания и положить в любую папку ApplicationPlugins.
    Если честно, практического применения, кроме как рисовать прямоугольники под любым углом не нашел)
     

    Вложения:

    paniva2010 нравится это.
  5. paniva2010

    paniva2010 Форумчанин

    Все хорошо. Единственное, что мешает - это запомненное в предыдущем сеансе значение угла, можно ли этот момент убрать, т.е. чтобы по умолчанию угол был "0"
     
  6. alz

    alz Форумчанин

    В общем запоминать или нет вынесено в опции (по умолчанию нет), туда же вынесено и куда продолжать линию, вперед, назад, или и туда и туда (по умолчанию, как в предыдущей версии). Команда для настроек - ExtendPLineSettings
     

    Вложения:

    paniva2010 нравится это.
  7. АлексЮстасу

    АлексЮстасу Форумчанин

    Может быть уже есть на lisp? Функция сделать копию части объекта по трем точкам: начала, направления и конца? Направление одновременно для выбора объекта - первая точка может быть на пересечении нескольких объектов. И для однозначности - с какой стороны обходить замкнутые объекты.

    Нужно для создания новых объектов, части которых повторяют существующие - например, см. https://geodesist.ru/posts/1122006/ - создавать контуры, точно примыкающие к другим объектам, создавать линейные объекты (дороги или др.) точно повторяющие контуры. Подобные темы видел на разных форумах не раз, но не фиксировал...
    Кстати, все, работавшие в Панораме или т.п., про такую возможность в AutoCAD спрашивают, оч. помогала.
     
  8. alz

    alz Форумчанин

    То есть нужна доработанная функция - разорвать? Что бы сохранился исходный объект?
    upload_2024-8-23_7-0-32.png
     
  9. Alex

    Alex Форумчанин

    В Панораме (ГИС Карта) есть такая функция называется - "Копия участка".
     
  10. АлексЮстасу

    АлексЮстасу Форумчанин

    Да, ее и имел в виду.
    Можно сказать и так.
    Желательно бы на lisp - если функция. Если же на C, то тогда программку полную - чертить полилинию или 3dполилинию с возможностью повторения частей объектов. И для AutoCAD постарше - минимум, от 2018. Может быть и еще старше - многие еще на них.
     
  11. alz

    alz Форумчанин

    Ну в целом не проблема, если поточнее опишете алгоритм, мысли есть как сделать но две головы как говорится лучше. По поводу версий от 2014 до 2024 должно работать, вот под 2025 скорее всего придется делать отдельную версию, но пока никто не просил.
     
  12. АлексЮстасу

    АлексЮстасу Форумчанин

    Здорово! Про 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. Подсвечивать дублируемый объект, чтобы лучше его видеть в насыщенных чертежах.

    Надеюсь, это не слишком нагло...
     
    Последнее редактирование: 25 авг 2024
  13. agajohn

    agajohn Форумчанин

    Чем не подходит лисп в менгео скопировать область?
    И вообще непонятно что имеется ввиду, вам нужно хорошо сформулировать вопрос
     
  14. АлексЮстасу

    АлексЮстасу Форумчанин

    Возможно, такие картинки подскажут:
     

    Вложения:

    • repeating.png
      repeating.png
      Размер файла:
      75,5 КБ
      Просмотров:
      12
    • repeating1-3.png
      repeating1-3.png
      Размер файла:
      114,4 КБ
      Просмотров:
      11
  15. alz

    alz Форумчанин

    В общем с полилинией и 3д полилинией и их производными, линиями и дугами еще можно замутить, со сплайном все на порядок сложнее как и эллипсом, аналогом сплайна, соединить сплайн и полилинию возможно только путем преобразования в сплайн, в общем за 5 минут тут не сделаешь, но что-нить за недельку думаю набросаю.
    М линия это вообще сложносоставной объект типа блока а не линейный объект.
     
  16. АлексЮстасу

    АлексЮстасу Форумчанин

    Я не стал писать явное - что со сплайнов и эллипсов снимаются копии полилиниями, т.к. создается полилиния.
    Сплайны и эллипсы оч. неплохо передаются полилиниями с дуговыми сегментами. Но это сделано на лисп - см.https://forum.dwg.ru/showpost.php?p=795756&postcount=2 https://forum.dwg.ru/showpost.php?p=73508&postcount=8.
    Поэтому я в начале написал, что лучше на лисп...
    Гм... Может быть мы о разном? Мультилинии - вполне линейные объекты. Для работы с ними тоже есть лиспы. Их можно в программе скопировать/разбить, получатся отрезки. И с ними уже работать.
    Мультиполигоны - тоже ничего, вроде, эксклюзивного - смесь областей со штриховками. Их контуры так же считываются в лиспах.
     
  17. alz

    alz Форумчанин

    Ну это просто аппроксимация, то есть граница уже не будет совпадать на 100% с элементом.
    В общем получается так:
    1) Полилиния (плоский объект, потеряется высота всех элементов)
    напрямую можно использовать - линии полилинии, 3д полилинии, дуги, круги
    аппроксимируя можно использовать - сплайны, эллипсы (теряется точность)
    косвенно - штриховки (извлекаются любые кривые, сплайны в том числе, ресурсоемко так как обычно извлекается каша из элементов и их надо правильно соединить в контура), полигоны (извлекаются полилинии), 3д грани (извлекаются линии), млинии (можно построить полилинию по узлам млинии, или выгрузить отрезки и дополнительная задача по их соединению для получения всех элементов (надо тестировать))
    2) 3д полилинии - аналогично полилинии но сохраняются все отметки, в раздел аппроксимации так же перемещаются дуги и круги.
    3) сплайн - по идее самый точный вариант, сохранятся все отметки и форма любых элементов, но на выходе сплайн, не самый популярный элемент.
     
  18. АлексЮстасу

    АлексЮстасу Форумчанин

    В общем - все так.
    Кстати, хорошо, что Вы упомянули 3д грани - о них забыл. (Добавил в #1592 для протокола).
    И штриховки. Я боялся их упомянуть, чтоб совсем не отвратить. :)
    Точность до, минимум, шестого знака можно обеспечить. Или до восьмого. Пусть не во всем фунциями от VVA, но делается.
    Это нами проверено и практикуется - в наших лисп-проектах представление полилиниями и сплайнов, и эллипсов, и границ штриховок и пр. производится.
     
    Последнее редактирование: 25 авг 2024
  19. alz

    alz Форумчанин

    Сплайн преобразовывается в 3д полилинию, какой 6 знак после запятой? Для такой точности точки должны проходить с интервалом порядка 5-6 знака после запятой, чисто теоретическо возможно, но автокад ляжет после 1 см такой аппроксимации
    Когда аппроксимируются дуги при построении проверхности цивила, по умолчанию стоит 1 метр точности, то есть от любой точки дуги до результирующей аппрокимированной линии будет не больше 1 метра, я когда делаю меняю обычно на 10 см, если более точно надо, но 6 знак после запятой это уже за гранью.
    Что то мне кажется я не очень понял где именно применяется такая точность)
     
  20. АлексЮстасу

    АлексЮстасу Форумчанин

    Да, я ерунду написал! ::unsure.gif::
    (Заклинило на предыдущих моих задачах). Прошу прощения!
    Точность аппроксимации, думаю, нужно определять от заданных LUPREC.
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление