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

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

Войти

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

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

  1. Sergey B.

    Форумчанин

    Регистрация:
    16 мар 2017
    Сообщения:
    388
    Симпатии:
    95
    Адрес:
    Тула
    Большое спасибо. Вещь нужная.
     
    #821
  2. MrBrown

    Форумчанин

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

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


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

    Форумчанин

    Регистрация:
    25 ноя 2014
    Сообщения:
    3.253
    Симпатии:
    931
    Адрес:
    gnomtrir@mail.ru
    это штатный функционал Civil 3D
     
    #823
  4. MrBrown

    Форумчанин

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

    Форумчанин

    Регистрация:
    8 дек 2007
    Сообщения:
    466
    Симпатии:
    320
    Адрес:
    Brest
    Плохо владеет ваш товарищ,
    Можно через _AeccMoveTextToElevation (текст на отметку в цивиле) как вам сказали выше
    Но я бы командой "данныеизв" в экселе убрал бы люки, поменял запятые на точки , выудил бы координаты и сделал бы обычный текстовый файл (PNEZD) и далее в цивил.
     
    #825
  6. FOXXX591

    Форумчанин

    Регистрация:
    19 окт 2012
    Сообщения:
    3.303
    Симпатии:
    2.623
    Адрес:
    г.Смоленск
    Neznayka, ты подгрузишь отметки с координатами привязки текста, а ТСу надо самостоятельно указать курсором место вставки отметки. Вот именно такой команды нет.
     
    #826
  7. Neznayka

    Форумчанин

    Регистрация:
    8 дек 2007
    Сообщения:
    466
    Симпатии:
    320
    Адрес:
    Brest
    Ну правильно, а дальше врукопашную, пусть расставляет/крутит как душе угодно, И в лиспе бы пришлось руками. Не думаю , что был бы сильный выигрыш от лиспа
     
    #827
  8. Alexandr-GR

    Форумчанин

    Регистрация:
    9 июн 2011
    Сообщения:
    1.192
    Симпатии:
    948
    Адрес:
    Новосибирск
    Запуск: CPHT
     

    Вложения:

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

    Форумчанин

    Регистрация:
    31 июл 2013
    Сообщения:
    35
    Симпатии:
    9
    Alexandr-GR, спасибо, работает почти как надо. Осталась малость: нужно, чтобы после создания точки не только сама точка, но и текст, с ней связанный, переходил бы на текущий слой. Так будет проще контролировать уже использованные тексты высотных отметок.
     
    #829
  10. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Текст-отметка переносится на текущий слой.
    Повторный запуск - набрать 11 (одиннадцать) и нажать Enter
     

    Вложения:

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

    Форумчанин

    Регистрация:
    9 июн 2011
    Сообщения:
    1.192
    Симпатии:
    948
    Адрес:
    Новосибирск
    TCfh8Mi8Bg.gif
     

    Вложения:

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

    Форумчанин

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

    Форумчанин

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

    Форумчанин

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

    Форумчанин

    Регистрация:
    9 июн 2011
    Сообщения:
    1.192
    Симпатии:
    948
    Адрес:
    Новосибирск
     

    Вложения:

    #835
  16. MrBrown

    Форумчанин

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

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Код:
    ;;;Версия 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
    #837
    SOYZNIK и Steinar нравится это.
  18. Alexandr-GR

    Форумчанин

    Регистрация:
    9 июн 2011
    Сообщения:
    1.192
    Симпатии:
    948
    Адрес:
    Новосибирск
    поправил
    увы, но нет. Я не выкладываю коды, которые содержат функции других авторов, тем более, когда бывает вношу в них свои изменения
     

    Вложения:

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

    Форумчанин

    Регистрация:
    31 июл 2013
    Сообщения:
    35
    Симпатии:
    9
    ivsem, благодарю. И за макрос, и за код.

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

    Форумчанин

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

    Вложения:

    #840

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

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