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

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

Войти

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

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

  1. Паша Шич

    Регистрация:
    3 мар 2022
    Сообщения:
    9
    Симпатии:
    0
    Мирного неба.
    В общем, нужен лисп, создающий отображаемый текст гиперссылки примитива (в моем случае полилинии) из объекта, содержащего текст (Мтекста, текста, мультивыноски, атрибута блока).
    Может у кого есть подобный код на примете?
     
    #1
  2. Паша Шич

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

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

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

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

    Регистрация:
    18 май 2007
    Сообщения:
    21.789
    Симпатии:
    7.068
    Адрес:
    Россия
    #3
    Последнее редактирование: 12 мар 2022
  4. Паша Шич

    Регистрация:
    3 мар 2022
    Сообщения:
    9
    Симпатии:
    0
    не понял вопрос. это не тема, а человек?
     
    #4
  5. X-Y-H

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

    Регистрация:
    18 май 2007
    Сообщения:
    21.789
    Симпатии:
    7.068
    Адрес:
    Россия
    #5
  6. Паша Шич

    Регистрация:
    3 мар 2022
    Сообщения:
    9
    Симпатии:
    0
    я новый человек на этом форуме. он специалист по ЛИсп или по Кабельным журналам?
     
    #6
  7. X-Y-H

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

    Регистрация:
    18 май 2007
    Сообщения:
    21.789
    Симпатии:
    7.068
    Адрес:
    Россия
    #7
  8. Паша Шич

    Регистрация:
    3 мар 2022
    Сообщения:
    9
    Симпатии:
    0
    ещё лучше можно было бы сделать, если бы лисп определял конечную точку и ближайший к нему блок/текст. это может помочь в ряде случаев, но в итоге всё равно придётся кое-что руками делать, например, когда кабель имеет несколько способов прокладки, то отдельные участки будут удалены от конечного оборудования.

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

    Форумчанин

    Регистрация:
    21 авг 2013
    Сообщения:
    636
    Симпатии:
    696
    Адрес:
    СССР, город хлебный
    --- Сообщения объединены, 12 мар 2022, Оригинальное время сообщения: 12 мар 2022 ---
    Без всяких проверок:
     

    Вложения:

    • addhint.lsp
      Размер файла:
      761 байт
      Просмотров:
      18
    #9
  10. Паша Шич

    Регистрация:
    3 мар 2022
    Сообщения:
    9
    Симпатии:
    0
    спасибо, уже кое-что делает!

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

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

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

    Форумчанин

    Регистрация:
    21 авг 2013
    Сообщения:
    636
    Симпатии:
    696
    Адрес:
    СССР, город хлебный
    Удачи!
     
    #11
    Qvinto нравится это.
  12. Geodesist

    Форумчанин

    Регистрация:
    26 янв 2009
    Сообщения:
    672
    Симпатии:
    288
    addHlink
     

    Вложения:

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

    Форумчанин

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

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.533
    Симпатии:
    2.072
    Адрес:
    Москва
    Я сразу подумал об этом, но возникли сомнения когда он написал:

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

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

    Форумчанин

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

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

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.533
    Симпатии:
    2.072
    Адрес:
    Москва
    В первые слышу об этом (проверил - действительно так). И много таких штатных XData в автокад?
     
    #16
    Qvinto нравится это.
  17. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.869
    Симпатии:
    668
    Адрес:
    Маськва
    Оффтоп

    Пока удалось определить - официального списка не существует - начинающиеся на:
    "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
     
    #17
    Последнее редактирование: 13 мар 2022
  18. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.869
    Симпатии:
    668
    Адрес:
    Маськва
    ::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.

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.869
    Симпатии:
    668
    Адрес:
    Маськва
  20. Паша Шич

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

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

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