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

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

  1. Sergey B.

    Sergey B. Форумчанин

    Большое спасибо. Вещь нужная.
     
  2. MrBrown

    MrBrown Форумчанин

    Здравствуйте!
    Помогите "мазохисту" поневоле:
    Нужен лисп, позволяющий создавать точки с высотной отметкой, как у рядом стоящего текста/мтекста.
    Встречал макрос, делающий это автоматом, вычисляя ближайший текст. Однако у меня это не проходит: во-первых, тексты часто стоят не там, где нужно для автоматизированной работы макроса. Во-вторых, там высоту меняет уже существующая точка, а мне нужно её создать. Поэтому и мазохист, делать приходится ручками, своим мозгом определяя нужные тексты высотных отметок.

    Итак, работа макроса и условия:
    Указать курсором текст (мультитекст), с возможностью распознавания и точки и запятой, затем указать место вставки создаваемой точки автокада, которая должна иметь высоту Z выбранного значения текста (мультитекста). С привязкой и без привязки (при активности опции привязки в Автокад). Созданные точки Автокад и использованный текст (мультитекст) должны присваиваться текущему слою Автокад со свойствами «Послою», в том числе при выключенном слое (должны скрываться). Встречаются отметки с текстом, например "141,23 (люк)" или иные. Макрос должен распознать такую отметку и подсветить её красным (чтобы пользователь обратил особое внимание), после чего обработать её как и остальные отметки, то есть после создания точки перенести и созданную точку, и отметку с текстом на текущий слой. Обеспечить повторяемость цикла команды; завершение цикла команд – «Esc».
    Система координат - мировая. Автокад 2013-2019.


    Заранее благодарен тому, кто потратит для меня своё время, тем самым улучшив свои навыки в программировании.
     
  3. trir

    trir Форумчанин

    это штатный функционал Civil 3D
     
  4. MrBrown

    MrBrown Форумчанин

    Спасибо за ответ.
    Мой товарищ владеет Civil 3D, однако он сказал, что именно такой команды там нет.
    Если он ошибается, прошу Вас, подскажите наименование команды, исполняющей в точности то, что мне надо, и где, в какой панели искать.
    Сам я владею лишь автокадом, поэтому мне хотелось бы иметь такой макрос для автокада.
     
  5. Neznayka

    Neznayka Форумчанин

    Плохо владеет ваш товарищ,
    Можно через _AeccMoveTextToElevation (текст на отметку в цивиле) как вам сказали выше
    Но я бы командой "данныеизв" в экселе убрал бы люки, поменял запятые на точки , выудил бы координаты и сделал бы обычный текстовый файл (PNEZD) и далее в цивил.
     
  6. FOXXX591

    FOXXX591 Форумчанин

    Neznayka, ты подгрузишь отметки с координатами привязки текста, а ТСу надо самостоятельно указать курсором место вставки отметки. Вот именно такой команды нет.
     
  7. Neznayka

    Neznayka Форумчанин

    Ну правильно, а дальше врукопашную, пусть расставляет/крутит как душе угодно, И в лиспе бы пришлось руками. Не думаю , что был бы сильный выигрыш от лиспа
     
  8. Alexandr-GR

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

    Запуск: CPHT
     

    Вложения:

    SOYZNIK и Qvinto нравится это.
  9. MrBrown

    MrBrown Форумчанин

    Alexandr-GR, спасибо, работает почти как надо. Осталась малость: нужно, чтобы после создания точки не только сама точка, но и текст, с ней связанный, переходил бы на текущий слой. Так будет проще контролировать уже использованные тексты высотных отметок.
     
  10. ivsem

    ivsem Форумчанин

    Текст-отметка переносится на текущий слой.
    Повторный запуск - набрать 11 (одиннадцать) и нажать Enter
     

    Вложения:

    • Pk2Dto3D.fas
      Размер файла:
      1,1 КБ
      Просмотров:
      3
    SOYZNIK и Sergey B. нравится это.
  11. Alexandr-GR

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

    TCfh8Mi8Bg.gif
     

    Вложения:

    SOYZNIK и Sergey B. нравится это.
  12. MrBrown

    MrBrown Форумчанин

    Alexandr-GR, прошу извинить, но нужно, чтобы текст переходил на текущий слой лишь после создания точки.
    Задумано так, что текущий слой будет выключенным и, соответственно, обработанные тексты с созданными точками постепенно будут скрываться. Так легче осуществлять контроль за своими же действиями.
    В Вашем последнем варианте текст уже удалён, а точка ещё не поставлена. В этом случае можно ошибиться, так как рядом, наползая друг на друга, толпятся стадом другие тексты-отметки.
    Мне хотелось бы, чтобы нужный текст исчезал бы только вместе с точкой.
    Спасибо.
    --- Сообщения объединены, 13 май 2019, Оригинальное время сообщения: 13 май 2019 ---
    ivsem, спасибо, макрос годится, но тут хочется, чтобы текст типа "142,32 лоток", то есть с буквами, при выборе окрашивался бы красным. И ещё: сообщите, какую команду вводить в ком.строку для запуска макроса, а то мне приходится каждый раз загружать его.
     
  13. ivsem

    ivsem Форумчанин

    Очень да же хорошая задумка. Именно под эту задумку я и писал макрос. Красный цвет для отметок типа 142,32 лоток добавлю в следующую версию программы.
    После загрузки макрос самозапускается.
    Для последующих запусков макроса нужно набрать число 11 (одиннадцать) и нажать Enter, то есть нажать на цифровой клавиатуре два раза единицу и далее нажать Enter.
    Как по мне, набрать число 11 значительно быстрее, нежели переключаться в латинскую раскладку и набирать комбинацию из букв.
     
  14. MrBrown

    MrBrown Форумчанин

    ivsem, "11" набрать недолго. Однако, после нескольких иных действий, других команд (с другими макросами, или просто с примитивами: перемещение, копирование, удаление, выравнивание и пр.) набор "11" уже не работает, и приходится заново загружать макрос. Поэтому предпочитаю набирать короткую команду в ком.строке.
    _____________________
    Опа! А сейчас получилось. По набору "11" всё получилось. Прошу извинить за безосновательную претензию.
    p.s. Не могли бы Вы выложить файл с расширением .lsp?
    Хочется покопаться в коде, попробую разобраться в основных вещах.
    Спасибо.
     
    1958 нравится это.
  15. Alexandr-GR

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

     

    Вложения:

  16. MrBrown

    MrBrown Форумчанин

    Alexandr-GR, сейчас текстовая отметка переходит на текущий слой вовремя, вместе с точкой.
    Но отметка со словом, типа "152,23 лоток", - окрашивается в красный поздно, уже при переходе на текущий слой.
    А необходимо, чтобы окрашивалась сразу при клике на текст, ещё до создания точки. Тогда пользователь обратит внимание на такую отметку со словом.
    И - та же просьба, что и форумчанину ivsem - если не гос. тайна, не могли бы Вы выложить макрос в расширении .lsp?
    Хочу посмотреть код, попытаться разобраться.
    Спасибо.
     
    1958 нравится это.
  17. ivsem

    ivsem Форумчанин

    Код:
    ;;;Версия 02  13.05.2019
    (defun *error* (errmsg)
     (setvar "osmode" osmode_old)(princ)
    )
    ;;;----------------------------------------------------------------
    (defun C:11 (/)
     (setvar "cmdecho" 0)(vl-load-com)
     (setq osmode_old (getvar "osmode"))
      (While
       (setvar "osmode" 0)
       (setq Primitiv (car(entsel "\nВыберите мышкой текст-отметку  Выход-Esc  ")))
       (setq PrimitivDXF (entget Primitiv))
        (if (or(= (cdr(assoc 0 PrimitivDXF)) "TEXT")(= (cdr(assoc 0 PrimitivDXF)) "MTEXT"))
         (progn
          (setq Z$ (cdr(assoc 1 PrimitivDXF)))
         (if (wcmatch Z$ "#*")
           (progn
            (if (vl-string-position 44 Z$ )(setq Z$(vl-string-subst "." "," Z$)))
            (setq Z(atof Z$))
            (if(wcmatch Z$ "*@*")(command "_change" Primitiv "" "_P" "_C" 1 ""))
            (setvar "osmode" osmode_old)
            (setq XYmat (getpoint "\nУкажите мышкой точку : "))
            (setvar "osmode" 0)
            (command "_point" (list (car XYmat)(cadr XYmat)Z))
            (command "_change" Primitiv "" "_P" "_LA" (getvar "CLAYER") "")
           )
           (alert "\nВыбран текст без отметки!!!")
         )  
        )
        (alert "\nЭто не текст!!!")
       ) 
     )
    )
    (C:11)
    
     

    Вложения:

    • Pk2Dto3D_02.lsp
      Размер файла:
      1,1 КБ
      Просмотров:
      7
    SOYZNIK и Steinar нравится это.
  18. Alexandr-GR

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

    поправил
    увы, но нет. Я не выкладываю коды, которые содержат функции других авторов, тем более, когда бывает вношу в них свои изменения
     

    Вложения:

    1958 нравится это.
  19. MrBrown

    MrBrown Форумчанин

    ivsem, благодарю. И за макрос, и за код.

    Alexandr-GR, понимаю и уважаю Ваш выбор.
    Хотя часто встречал и сам делаю так (в макросах VBA Excel): чужие строки кода или функции комментирую отдельной строкой с указанием источника, откуда повзаимствовал.
    Благодарю за Ваш макрос.
    Оффтоп
    Обожаю Коломбо! По двадцать пять раз пересматриваю сериал :)
     
    Alexandr-GR нравится это.
  20. Sergey B.

    Sergey B. Форумчанин

    ivsem, 1958, barabashkasathalex, здравствуйте. Ещё раз спасибо за надстройки для автоматического разворота стрелок. Снова понадобилось воспользоваться ими и столкнулся с проблемой. Сделал заготовку для исполнительной, а блок-стрелку использовал другую. Точка встаки блока - край объекта, а разворот нужен относительно геометрического центра. Возможно ли такое реализовать? Заготовку в DWG 2007 прикладываю.
     

    Вложения:

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