1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны перебои в работе.
    Скрыть объявление

В пересечение отрезков ставить точку.

Тема в разделе "Autodesk", создана пользователем АлексейМанс, 20 авг 2013.

  1. АлексейМанс

    АлексейМанс Форумчанин

    Приветствую! В общем задача вроде легкая, но перерыв кучу инфы в голове уже ничего не соображается. А делать надо. ((
    Есть куча отрезков одинаковой длинны, которые пересекают друг друга, вот эти точки пересечения нужно нанести на чертеж (в то место где они пересекаются поставить точку или окружности с центром в той точке). Пытаюсь найти лисп на это дело, пока безуспешно. Может кто сталкивался?
     
  2. Alexandr-GR

    Alexandr-GR Форумчанин

    Код:
    (vl-load-com)
    (DEFUN C:GR-INTERS (/)
      (command nil)
      (setq old_CMDECHO (getvar 'CMDECHO))
      (SETVAR 'CMDECHO 0)
      (vl-catch-all-apply 'myINTERS)
      (SETVAR 'CMDECHO old_CMDECHO)
    )
    (defun myINTERS    (/          nabor      gr-lst-krd    ALL-LST-NB
            1$LST          1$OTR      FULL-LST    MY&LIST$SEGMENT
            MY&LIST
            )
      (setq    gr-lst-krd
        (lambda (nb / i lst)
          (setq i 0)
          (repeat (fix (vlax-curve-getEndParam nb))
            (setq lst (cons (LIST (vlax-curve-getPointAtParam nb i)
                      (vlax-curve-getPointAtParam nb (1+ i))
                    )
                    lst
                  )
              i  (1+ i)
            )
          )
          (setq lst (reverse lst))
        )
      )
      (setq    nabor (ssget '((0 . "*LINE")))
        nabor (vl-remove-if 'listp (mapcar 'cadr (ssnamex nabor)))
      )
      (setq    ALL-LST-NB
        (mapcar
          (function
            (lambda (x) (gr-lst-krd (vlax-ename->vla-object x)))
          )
          nabor
        )
      )
      (REPEAT (1- (length ALL-LST-NB))
        (Setq 1$LST        (car ALL-LST-NB)
          ALL-LST-NB (vl-remove (car ALL-LST-NB) ALL-LST-NB)
          FULL-LST  (APPLY 'APPEND ALL-LST-NB)
        )
        (REPEAT (length 1$LST)
          (Setq 1$OTR        (CAR 1$LST)
            1$LST        (vl-remove (CAR 1$LST) 1$LST)
            MY&LIST$SEGMENT (MAPCAR (FUNCTION
                          (LAMBDA (X)
                        (APPLY 'INTERS
                              (APPLY 'APPEND (LIST 1$OTR X))
                        )
                          )
                        )
                        FULL-LST
                    )
            MY&LIST        (CONS MY&LIST$SEGMENT MY&LIST)
          )
        )
      )
      (MAPCAR
        (function
          (LAMBDA (X)
        (entmakex (list (cons 0 "CIRCLE") (cons 40 0.4) (cons 10 X))
        )
          )
        )
        (vl-remove nil (apply 'append MY&LIST))
      )
    )
    (PRINC "\nЗапуск: _GR-INTERS")
    пробовал только с полилиниями и отрезками
     
    Вадим К, Grandpa, barabashkasathalex и 2 другим нравится это.
  3. АлексЮстасу

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

    До кучи POLYPOINT или POLYBLOCK из http://forum.dwg.ru/showpost.php?p=1108065&postcount=37
     
    geo_rva, Grandpa и АлексейМанс нравится это.
  4. АлексейМанс

    АлексейМанс Форумчанин

    Спасибо ребята! Очень помогли, особенно Alexandr-GR! Пробовал такой написать, но ошибся с последовательностью (
    --- Сообщения объединены, 21 авг 2013, Оригинальное время сообщения: 21 авг 2013 ---
    Так, а с задачкой такого плана сталкивались: по точкам\кружочкам (данный лисп помог ставить кружочки) нужно натягивать имеющиеся на чертеже полилинии, грубо говоря есть у меня кривая стена по радиусам и размеры по ней. Сейчас на чертеже появились кругляши (или переделаю на точки) и нужно опорные точки полилинии притянуть к этим точкам, чтобы размеры привязанные к полилинии изменились в соответствии с перетянутой фигурой. Товарищ так исполнительные на колонны делал, снимав их по углам, потом в акаде совмещал точки углов с четырехугольником с привязанными размерами. Но я не помню был это лисп или вба приложение, кто имел опыт с таким?
     
  5. АлексЮстасу

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

    В порядке гипотезы: попробуйте с помощью _adersheet из Autocad Map3d - эластичное преобразование. См. пример в #74.
    Т.е. указываете пары соответственных точек, Enter, выбираете преобразуемое вместе с размерами и Enter.
     
    АлексейМанс нравится это.
  6. АлексейМанс

    АлексейМанс Форумчанин

    Так, спасибо, сейчас буду разбираться. Наткнулся на нечто похожее для цивила: http://www.civilgeotools.ru/cgt/razdel/2/#_130
    Перемещение вершин полилинии на случайную величину

    Но мне необходимо перемещать вершину полилинии в центр окружности, во! Хотя-б сформулировал) Попробую покапаться в лиспе для цивила.
    --- Сообщения объединены, 21 авг 2013, Оригинальное время сообщения: 21 авг 2013 ---
    Попробую разобраться как написать лисп по типу: выделены все нужные прямоугольные объекты созданные из полилиний. Соответственно на каждом прямоугольнике 4 вершины. Которые в свою очередь так или иначе залезают на окружности. Идея в том чтобы выделить все прямоугольники, показать в центр какой типичной окружности нужно переместить вершины полилиний ну и чтоб лиспом делалось это не по 1 штуке, а все сразу... о как. В цивиловском чтот разобраться не могу как привязать
     

    Вложения:

  7. Philin

    Philin Форумчанин

    Если не изменяет склероз, то такую программу писал Disney. Она где-то в этом разделе форума была выложена. Написана на LISP.
     
  8. АлексейМанс

    АлексейМанс Форумчанин

    На разных ресурсах видел программы Disney-я, но под мои нужды вроде не смотрел, но спасибо, еще раз гляну эту нашу ветку. Пробовал кое как редактировать чужие лиспы - все-таки мало знаний, не получается)))
     
  9. АлексЮстасу

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

    _adersheet уже чем-то не годится?
     
  10. АлексейМанс

    АлексейМанс Форумчанин

    Что-то я с ним не поладил, ближе к ночи засяду плотнее и кропотливее разбираться со всеми советами и способами их приминений, а пока только наскоком, что-то получается, а что-то сразу-так нет =) Новичек я в этих лиспах и их программировании

    Если быть точнее - я немного не понял как _adersheet запустить в среде Акада не мап, а установить мап 3д смогу лишь позднее. Поэтому и ищу пока другие варианты =) Но тем не менее - спасибо за совет ::smile24.gif::
     
  11. АлексЮстасу

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

    1. _adersheet вызывается?
    2. В ком. строке спрашивает?
    или
    3. Когда все пары точек укажете, то жмете Enter. Появится
    или
    4. Нажмите в русском русское "в" или "_s", во вражеском "s". И выбирайте все преобразуемые объекты. И Enter.
     
    АлексейМанс нравится это.
  12. АлексейМанс

    АлексейМанс Форумчанин

    Та неее, это то понятно, я пытался найти в тырнетах как на простом акаде эту функцию запилить =) Мап-а то нету еще
     
  13. АлексейМанс

    АлексейМанс Форумчанин

    В "новых командах для полилиний" http://dwg.ru/dnl/607 нашел "PL-VxMove" - перемещение вершин полилинии. Но не допетрил как из того лиспа сделать чтоб перемешение было в центр кругов и в автоматическом режиме ((
    to Philin - перечитал все темы в которых публиковал что-то Disney - всетаки не нашел(
     
  14. АлексейМанс

    АлексейМанс Форумчанин

    Попробовал _adersheet. Если по одной делать - разобрался, осталось понять как заставить её запомнить что нужно делать а потом сделать на все фигуры аналогичное действие, желательно в 1 клик))
     
  15. АлексЮстасу

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

    Что не так? Там можно выделить любое число элементов для трансформирования. "ДелИть" - это описка или суть процесса?
     
  16. АлексейМанс

    АлексейМанс Форумчанин

    У меня получилось заставить один четырехугольник растянуться до 4 центров кругов (сперва выделил по очереди одна точка четырехугольника - дальше клик на центр окружности в которую он попадает и так по всем 4-ем а затем выделял четырехугольник после "Выбрать объекты [Области/Выбрать] и все вышло как нужно). А вот как сделать чтобы сделать 12 четырехугольников растянулись по своим 48-и центрам окружностей, кроме как по одной - я не понял, ибо вроде логично предположить что есть возможность по средствам этой команды делать все и сразу, но.. пробовал по разному, пишет " не удалось " и т.п. Может что не так делаю?
     
  17. АлексЮстасу

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

    Чудес не бывает - соответственные точки указать по-любому нужно. Не встречал, чтобы программа сама могла догадаться какой точке какую поставить в соответствие.
    Т.е. указываете все 48 пар точек, потом указываете все четырехугольники, и они все натянутся на эти указанные точки. Ну, или последовательно по одному или больше четырехугольников - выбор за Вами.
     
  18. BearDyugin

    BearDyugin Модератор Форумчанин

    Да и нам особо не понятно, выложи пример(чертеж), где показано, что было, и что нужно сделать.
     
  19. АлексейМанс

    АлексейМанс Форумчанин

    Да уж, звиняюсь, ребят, что озадачил такой дилеммой =) Просто сижу уже 3 дня голову ломаю сам пробуя разные встроенные функции и лиспы которые нахожу, ничерта не выходит, а самое обидное - что это возможно (видел что делали так, но сейчас контакта того человека нету)! И по сути здорово облегчает жизнь.
    to АлексЮстасу - тогда выходит не многим быстрее, а то и медленнее чем в ручную все натягивать :) Но все равно большое спасибо, теперь знаком с этой замечательной функцией!
    to Disney прикрепил файл с картинкой примерно того что мне нужно, может будут идеи из чего такое можно сгородить
     

    Вложения:

    • 123.pdf
      Размер файла:
      317,9 КБ
      Просмотров:
      37
  20. BearDyugin

    BearDyugin Модератор Форумчанин

    Вложения:

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