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

Лисп для замены координат точек

Discussion in 'Autodesk' started by a.gonchy, Dec 5, 2019.

  1. Столкнулся с проблемой: необходимо заменить в выбранной области координаты точек (менять местами будем значения оси Y и оси Z в мировой системе координат. Т.е. необходимо добиться того, чтобы лисп сам находил точки в выбранной области и сам у всех менял координаты Y и Z местами, дабы не делать это каждый раз вручную. Не смог пока понять, каким кодом это можно осуществить.
     
  2. ivsem

    ivsem Форумчанин

    Пробуй.
    Запуск программы, набрать число 11 и нажать Enter
    Тестирование программы возлагается на пользователя.
    Алгоритм программы такой: выбираются точки автокадовским методом выбора, далее программа рисует новые точки, затем удаляет старые точки.
    Перед запуском программы можно задать другой цвет, нежели у обрабатываемых точек и будет наглядно видно, что точки обработаны.
     

    Attached Files:

    a.gonchy likes this.
  3. Спасибо! При определённых условиях всё работает, но в остальных случаях разворачивает как-то по-другому.
    Суть моей проблемы, если полностью, вот в чём: есть набор точек (например, 6 шт.). Представим (для визуализации), что таким образом на тахеометр была подснята стена дома. Мне необходимо развернуть эти точки так, будто мы смотрим на стену спереди, а не сверху. Процесс поворота через ПСК слишком долгий, учитывая, что приходится делать это постоянно много раз в день. Подумал, что если поменять Y и Z местами, то оно же и получится, но так работает только в том случае, если стенка вытянута с запада на восток, а вот если с севера на юг, получается кракозябра какая-то. ::unsure.gif::
     
  4. ivsem

    ivsem Форумчанин

    Выложите чертеж dwg, в котором должно быть как было и как должно быть.
    Распишите процесс ручного преобразования из было в как должно быть.
     
  5. trir

    trir Форумчанин

    вот его и надо закодить
     
  6. Я логически понимаю как, исходя из структуры, созданной ivsem добиться результата, нужного мне:
    - Пользователь пишет команду, которая выводит ему у курсора список, где предлагает выбрать, например, 1, 2, 3 или 4 вариант.
    - Если выбирается первый вариант, то сразу начинает выполняться команда из лиспа, написанного выше.
    - Если выбирается 2, то весь чертёж (в чертеже только точки) поворачивается на 180 градусов против часовой стрелки и затем выполняется команда из лиспа выше (от ivsem).
    - Если выбирается 3, то весь чертёж поворачивается на 90 градусов против часовой и выполняется команда по аналогии.
    - Если 4 вариант, то на 90 градусов по часовой и далее по аналогии запускается команда.
    Вот логика такая, а пытаюсь это написать кодом и ничего не выходит.)
     
  7. Code:
    (defun c:\имя первой функции ()
    (initget 1 "слова")
    (setq x (getkword "\выбрать вариант [первый/второй/третий/четвёртый]: "))
    (cond
    ((= x "первый" ) (имя второй функции))
    ((= x "второй" ) ()) ; тут отправит к развороту, а разворот позже запустит вторую функцию и т.д. по аналогии
    ((= x "третий" ) ())
    ((= x "четвёртый" ) ())
    (T "error"))
    Пытаюсь что-то вроде этого сделать, но опять туплю, как развернуть теперь всё, при нужных условиях)
     
    Last edited: Dec 6, 2019
  8. Всё доделал, у страха глаза велики, спасибо большое за помощь!::hi::
     
  9. BearDyugin

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

    ну так выложи, глядишь ещё кому-то пригодится.
     
    flareon likes this.
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice