Нужен лисп, создающий отображаемый текст гиперссылки

Тема в разделе "Autocad", создана пользователем Паша Шич, 3 мар 2022.

  1. Мирного неба.
    В общем, нужен лисп, создающий отображаемый текст гиперссылки примитива (в моем случае полилинии) из объекта, содержащего текст (Мтекста, текста, мультивыноски, атрибута блока).
    Может у кого есть подобный код на примете?
     
  2. я поясню:
    Лисп нужен для упрощения создания кабельного журнала, при этом без использования стороннего ПО. откуда появилось требования отсутствия стороннего ПО? всё просто. дело в том, что на каждом предприятии есть некие стандарты. стандарты задаются исходя из общих, необходимых целей. плагин для создания кабельного журнала нельзя считать общим плагином, он частный. при этом, есть требование, что любой из сотрудников может корректировать документы, хотя бы вносить минимальные изменения. например, добавить лист "состав проекта", или изменить слова "Структурная схема" на Принципиальная схема". это не важно, но иногда проще поручить сделать что-то общее одному человеку, чем нескольким.
    и при таком раскладе я задал себе вопрос: как стандартными средствами АвтоКад автоматизировать кабельный журнал? было несколько методов, но в итоге самым правильным оказался тот, что может непосредственно связать линию на плане, способ прокладки и конечное оборудование.
    у нас имеется слой линии. слой указывает на то, к какой системе принадлежит кабель. ранее я выделял не только систему, но и марку кабеля, слой назывался типа "КЖ_СПС_КПСнг(А)-LS 1х2х0,5", но данная практика не прижилась - она приводит к лишним движениям, что может в итоге повлечь ошибку. сейчас имя слоя несёт только имя системы, например "КЖ_СПС". КЖ - ну изначально я делал это для кабельного журнала, потому аббревиатура у меня прижилась.
    Пробовал отчертить непечатаемые линии, но при передвигании оборудования приходилось все эти линии тоже передвигать.
    Далее - тип линий. он указывает метод прокладки кабеля. и это удобно - тип линии реально это отражает. мало того, что вы дали имя типу линии, так ещё у вас всё корректно отобразилось на чертеже и вы видите, где верно, а где - нет.
    осталось дело за малым - связать линию и конечное оборудование. но как можно стандартными методами связать одно и другое? оказалось, что довольно легко - гиперссылка! сейчас я забиваю её вручную. это долго и неудобно. но гиперссылка имеет ряд плюсов: она копируется при копировании линии, но не переносится, при БТКОПИРОВАТЬ. если гиперссылки нет, то мы сразу видим ошибку при извлечении - слой корректен и всё должно иметь параметр гиперссылка. есть и минус - трудно назначить, особенно при большом количестве оборудования.
    Что дальше? извлекаем данные, а именно длины, слои, тип линий и гиперссылку. помещаем данные в эксель. нехитрой формулой =СУММЕСЛИМН кабельный журнал заполняется полуавтоматически, я использую дополнительно нехитрый код VBA, упрощающий некоторые процессы. Также экселевский файл с "автокабельным" журналом содержит исходные данные, которые указывают "вертикальные" методы прокладки, величину запаса и так далее. эти величины напрямую связанны с начальным и конечным оборудованием. например, маркировка BTM (ручной пожарный извещатель) укажет нам, что надо проштробить от уровня фальшпотолка до уровня 1,5 метров, а вот BTH (дымовой пожарный извещатель, точечный) накинет всего 0,5 м на расключку.

    и исходя из этого, мне не хватает только автоматического заполнения гиперссылок.

    если есть идеи лучше - с удовольствие выслушаю.
     
  3. X-Y-H

    X-Y-H Администратор Команда форума

    Последнее редактирование: 12 мар 2022
  4. не понял вопрос. это не тема, а человек?
     
  5. X-Y-H

    X-Y-H Администратор Команда форума

  6. я новый человек на этом форуме. он специалист по ЛИсп или по Кабельным журналам?
     
  7. X-Y-H

    X-Y-H Администратор Команда форума

  8. ещё лучше можно было бы сделать, если бы лисп определял конечную точку и ближайший к нему блок/текст. это может помочь в ряде случаев, но в итоге всё равно придётся кое-что руками делать, например, когда кабель имеет несколько способов прокладки, то отдельные участки будут удалены от конечного оборудования.

    а сейчас очень было бы здорово: выделаешь текст/блок, выделаешь полилинию, вводишь команду "v2hip" (или другую, не важно) и - вуаля! - санкции больше не страшны экономим кучу времени.
     
    Последнее редактирование: 12 мар 2022
  9. 1958

    1958 Форумчанин

    --- Сообщения объединены, 12 мар 2022, Оригинальное время сообщения: 12 мар 2022 ---
    Без всяких проверок:
     

    Вложения:

    • addhint.lsp
      Размер файла:
      761 байт
      Просмотров:
      23
  10. спасибо, уже кое-что делает!

    итак, что делает хорошо:
    просит выбрать объект, затем текст, затем записывает текст в гиперссылку объекта.

    чего не делает:
    не работает с атрибутами блоков и мультивыносками
    нельзя выбрать сразу много объектов (не критично, но было бы удобно)
    нельзя выбрать полилинию и текст, затем запустить лисп.

    попробую поковырять код.
     
  11. 1958

    1958 Форумчанин

    Удачи!
     
    Qvinto нравится это.
  12. Geodesist

    Geodesist Форумчанин

    addHlink
     

    Вложения:

  13. АлексЮстасу

    АлексЮстасу Форумчанин

    В принципе - "моя", наверное. Т.к. речь об описательных, атрибутивных данных.
    Только ни одного кабельного журнала в жизни не видал. И, правду говоря, ничего не понял - описано для меня не четко...
    И пример показательных случаев был бы к месту.
    К сожалению, связь текстовых объектов с ближайшими полилинями или др. у нас только в проекте. (Было бы дело в Map/Civil - там мы это для OD сделали. Сразу пачкой загрузит содержание надписей в ближайшие объекты)
    Что прямо сейчас можно с XData:
    - ввести в них всю кабельную специфику (те самые описательные, атрибутивные данные) - что за кабели, куда, кто и пр.,
    - загрузить в поля XData названия слоев, стилей, длины и пр.,
    - загрузить в поля XData блоков значения их атрибутов,
    - свести содержание разных полей XData в одно.
    - создать ID в поле XData,
    - выгрузить содержание XData в txt/csv.
     
    Последнее редактирование: 13 мар 2022
  14. Philin

    Philin Форумчанин

    Я сразу подумал об этом, но возникли сомнения когда он написал:

    Xdata не просто копируется/переносится/дублируется любым стандартным способом вместе с объектом, но также полностью копируется вместе с объектом даже между независимыми чертежами и в любой CAD-системе с поддержкой форматов DXF/DWG. Либо я чего-то не понял, либо ему как раз не надо чтобы его данные переносились при копировании/перемещении.

    Если же требуется всегда и без заморочек копировать данные вместе с объектами, то Xdata здесь самый лучший вариант.
     
  15. АлексЮстасу

    АлексЮстасу Форумчанин

    Во-первых, гиперссылки - это же и есть XData. (С названием PE_URL).
    Во-вторых, я попробовал с БТКОПИРОВАТЬ - у меня скопировалось с сохранением гиперссылки. И в том же dwg, и в другой dwg.
    Пробовал в 2012 и в 2019.

    Хорошо бы посмотреть примеры! С указаниями что, куда, для чего.
     
  16. Philin

    Philin Форумчанин

    В первые слышу об этом (проверил - действительно так). И много таких штатных XData в автокад?
     
    Qvinto нравится это.
  17. АлексЮстасу

    АлексЮстасу Форумчанин

    Оффтоп

    Пока удалось определить - официального списка не существует - начинающиеся на:
    "ACAD" "GradientColor" "HATCHBACKGROUNDCOLOR" "PE_URL" "AcDbBlockArrayActionTag" -- AutoCAD
    "IRD" "AcMap" -- Map 3D
    "REVIT" -- REVIT
    "Rep_Profil" "REP_PROFIL" -- Mechanical
    "VIA_WD_" "ACE_TABLE_" "CIM_WD_" "AVE_" -- Electrical
     
    Последнее редактирование: 13 мар 2022
  18. АлексЮстасу

    АлексЮстасу Форумчанин

    ::mad24.gif::::mad24.gif::::sad24.gif::::sad24.gif::

    Пока предполагаю, что задача заключается в установлении взаимосвязей между объектами.
    В данном случае - между кабелями (полилинии) и оборудованием (тексты, мультивыноски, блоки).
    И с XData это можно сделать. (Или без XData или т.п. это не сделать).
    Т.е. можно присоединять к объектам XData с указанием Handle связанных объектов.

    Тогда для задачи в общем виде нужно сделать две программки:
    1. добавления XData, содержащих Handle связанных объектов,
    2. передачи данных из XData объектов в XData связанных с ними объектов.
    В таком случае можно в "обычные", атрибутивные XData загружать данные из свойств объектов (XDTOOLS_PROP2). Например, содержание текстов, атрибутов и пр. И эти данные передавать в XData связанных объектов. (Это похоже на уже сделанную XDTOOLS_XD2XD - передача данных из XData в другие XData, привязанные к одним объектам).

    Программка 1 - в принципе то же самое, что делают приложенные здесь lsp и vlx, но создающая не гиперссылки, а XData с Handle.
    Естественно, что нужно попытаться сделать ее мощнее - выполнять для множеств объектов.
    Программка 2 - тоже почти то же, что уже упомянутая XDTOOLS_XD2XD.

    На всякий случай еще раз повторюсь, что я не программист!
     
    Последнее редактирование: 13 мар 2022
  19. АлексЮстасу

    АлексЮстасу Форумчанин

  20. проблема в том, что файлы общие и стандарт организации - не использовать дополнительных плагинов.
    --- Сообщения объединены, 1 апр 2022, Оригинальное время сообщения: 1 апр 2022 ---
    ошибся, хотел написать КОПИРОВАТЬСВ
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление