Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

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

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

  1. paniva2010

    Форумчанин

    Регистрация:
    4 окт 2015
    Сообщения:
    67
    Симпатии:
    3
    Все отлично, впрочем у Вас по-другому и не бывает.
     
    #1581
  2. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.919
    Симпатии:
    679
    Адрес:
    Маськва
    Может быть достаточно полилинию скопировать, и преобразовать в 3D командой ConvTo3D из PlTools?
     
    #1582
  3. paniva2010

    Форумчанин

    Регистрация:
    4 окт 2015
    Сообщения:
    67
    Симпатии:
    3
    Уважаемый alz. Не могли бы вы добавить возможность автозагрузки этого макроса
     
    #1583
  4. alz

    alz
    Форумчанин

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

    Вложения:

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

    Форумчанин

    Регистрация:
    4 окт 2015
    Сообщения:
    67
    Симпатии:
    3
    Все хорошо. Единственное, что мешает - это запомненное в предыдущем сеансе значение угла, можно ли этот момент убрать, т.е. чтобы по умолчанию угол был "0"
     
    #1585
  6. alz

    alz
    Форумчанин

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

    Вложения:

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

    Форумчанин

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

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

    alz
    Форумчанин

    Регистрация:
    26 май 2014
    Сообщения:
    307
    Симпатии:
    135
    То есть нужна доработанная функция - разорвать? Что бы сохранился исходный объект?
    upload_2024-8-23_7-0-32.png
     
    #1588
  9. Alex

    Форумчанин

    Регистрация:
    16 мар 2008
    Сообщения:
    610
    Симпатии:
    58
    Адрес:
    Московская область
    В Панораме (ГИС Карта) есть такая функция называется - "Копия участка".
     
    #1589
  10. АлексЮстасу

    Форумчанин

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

    alz
    Форумчанин

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.919
    Симпатии:
    679
    Адрес:
    Маськва
    Здорово! Про 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. Подсвечивать дублируемый объект, чтобы лучше его видеть в насыщенных чертежах.

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

    Форумчанин

    Регистрация:
    3 апр 2013
    Сообщения:
    476
    Симпатии:
    210
    Адрес:
    Москва
    Чем не подходит лисп в менгео скопировать область?
    И вообще непонятно что имеется ввиду, вам нужно хорошо сформулировать вопрос
     
    #1593
  14. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.919
    Симпатии:
    679
    Адрес:
    Маськва
    Возможно, такие картинки подскажут:
     

    Вложения:

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

    alz
    Форумчанин

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

    Форумчанин

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

    alz
    Форумчанин

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

    Форумчанин

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

    alz
    Форумчанин

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.919
    Симпатии:
    679
    Адрес:
    Маськва
    Да, я ерунду написал! ::unsure.gif::
    (Заклинило на предыдущих моих задачах). Прошу прощения!
    Точность аппроксимации, думаю, нужно определять от заданных LUPREC.
     
    #1600

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление