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

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

Discussion in 'Autodesk' started by Германup, Feb 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
     

    Attached Files:

    SOYZNIK and Qvinto like this.
  9. MrBrown

    MrBrown Форумчанин

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

    ivsem Форумчанин

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

    Attached Files:

    SOYZNIK and Sergey B. like this.
  11. Alexandr-GR

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

    TCfh8Mi8Bg.gif
     

    Attached Files:

    SOYZNIK and Sergey B. like this.
  12. MrBrown

    MrBrown Форумчанин

    Alexandr-GR, прошу извинить, но нужно, чтобы текст переходил на текущий слой лишь после создания точки.
    Задумано так, что текущий слой будет выключенным и, соответственно, обработанные тексты с созданными точками постепенно будут скрываться. Так легче осуществлять контроль за своими же действиями.
    В Вашем последнем варианте текст уже удалён, а точка ещё не поставлена. В этом случае можно ошибиться, так как рядом, наползая друг на друга, толпятся стадом другие тексты-отметки.
    Мне хотелось бы, чтобы нужный текст исчезал бы только вместе с точкой.
    Спасибо.
    --- Сообщения объединены, May 13, 2019, Оригинальное время сообщения: May 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 likes this.
  15. Alexandr-GR

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

     

    Attached Files:

  16. MrBrown

    MrBrown Форумчанин

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

    ivsem Форумчанин

    Code:
    ;;;Версия 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)
    
     

    Attached Files:

    SOYZNIK and Steinar like this.
  18. Alexandr-GR

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

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

    Attached Files:

    1958 likes this.
  19. MrBrown

    MrBrown Форумчанин

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

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

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

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

    Attached Files:

  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