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

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

Войти

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

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

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

    Форумчанин

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

    Форумчанин

    Регистрация:
    9 июн 2011
    Сообщения:
    1.192
    Симпатии:
    945
    Адрес:
    Новосибирск
    Код:
    (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")
    пробовал только с полилиниями и отрезками
     
    #2
    Вадим К, Grandpa, barabashkasathalex и 2 другим нравится это.
  3. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.868
    Симпатии:
    668
    Адрес:
    Маськва
    До кучи POLYPOINT или POLYBLOCK из http://forum.dwg.ru/showpost.php?p=1108065&postcount=37
     
    #3
    geo_rva, Grandpa и АлексейМанс нравится это.
  4. АлексейМанс

    Форумчанин

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

    Форумчанин

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

    Форумчанин

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

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

    Вложения:

    #6
  7. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.533
    Симпатии:
    2.072
    Адрес:
    Москва
    Если не изменяет склероз, то такую программу писал Disney. Она где-то в этом разделе форума была выложена. Написана на LISP.
     
    #7
  8. АлексейМанс

    Форумчанин

    Регистрация:
    22 май 2011
    Сообщения:
    4.054
    Симпатии:
    3.928
    Адрес:
    Екатеринбург
    На разных ресурсах видел программы Disney-я, но под мои нужды вроде не смотрел, но спасибо, еще раз гляну эту нашу ветку. Пробовал кое как редактировать чужие лиспы - все-таки мало знаний, не получается)))
     
    #8
  9. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.868
    Симпатии:
    668
    Адрес:
    Маськва
    _adersheet уже чем-то не годится?
     
    #9
  10. АлексейМанс

    Форумчанин

    Регистрация:
    22 май 2011
    Сообщения:
    4.054
    Симпатии:
    3.928
    Адрес:
    Екатеринбург
    Что-то я с ним не поладил, ближе к ночи засяду плотнее и кропотливее разбираться со всеми советами и способами их приминений, а пока только наскоком, что-то получается, а что-то сразу-так нет =) Новичек я в этих лиспах и их программировании

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.868
    Симпатии:
    668
    Адрес:
    Маськва
    1. _adersheet вызывается?
    2. В ком. строке спрашивает?
    или
    3. Когда все пары точек укажете, то жмете Enter. Появится
    или
    4. Нажмите в русском русское "в" или "_s", во вражеском "s". И выбирайте все преобразуемые объекты. И Enter.
     
    #11
    АлексейМанс нравится это.
  12. АлексейМанс

    Форумчанин

    Регистрация:
    22 май 2011
    Сообщения:
    4.054
    Симпатии:
    3.928
    Адрес:
    Екатеринбург
    Та неее, это то понятно, я пытался найти в тырнетах как на простом акаде эту функцию запилить =) Мап-а то нету еще
     
    #12
  13. АлексейМанс

    Форумчанин

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

    Форумчанин

    Регистрация:
    22 май 2011
    Сообщения:
    4.054
    Симпатии:
    3.928
    Адрес:
    Екатеринбург
    Попробовал _adersheet. Если по одной делать - разобрался, осталось понять как заставить её запомнить что нужно делать а потом сделать на все фигуры аналогичное действие, желательно в 1 клик))
     
    #14
  15. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.868
    Симпатии:
    668
    Адрес:
    Маськва
    Что не так? Там можно выделить любое число элементов для трансформирования. "ДелИть" - это описка или суть процесса?
     
    #15
  16. АлексейМанс

    Форумчанин

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.868
    Симпатии:
    668
    Адрес:
    Маськва
    Чудес не бывает - соответственные точки указать по-любому нужно. Не встречал, чтобы программа сама могла догадаться какой точке какую поставить в соответствие.
    Т.е. указываете все 48 пар точек, потом указываете все четырехугольники, и они все натянутся на эти указанные точки. Ну, или последовательно по одному или больше четырехугольников - выбор за Вами.
     
    #17
  18. BearDyugin

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

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.747
    Симпатии:
    2.504
    Адрес:
    Сибирь
    Да и нам особо не понятно, выложи пример(чертеж), где показано, что было, и что нужно сделать.
     
    #18
  19. АлексейМанс

    Форумчанин

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

    Вложения:

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

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

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.747
    Симпатии:
    2.504
    Адрес:
    Сибирь

    Вложения:

    #20
    Grandpa и X-Y-H нравится это.

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

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