Lisp: Как поместить Z в ближайший текст

Тема в разделе "Autocad", создана пользователем Blaukempt, 1 мар 2023.

  1. Blaukempt

    Blaukempt Форумчанин

    Хороший инструмент, я даже не знал о таком, но нет. Не делает он то, что я ищу.
     
  2. X-Y-H

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

    Blaukempt, знаешь в чем проблема? отметка у тебя блок, а значение ты подписываешь текстом, посмотре 3d survey от ВНИПИГаздобыча, там можно тоже блок перемещать/вращать подпись. НО! в любой момент обновить поля блока и подписи, можно практически стандартными средствами автокада
     
  3. Geodesist

    Geodesist Форумчанин

    Blaukempt, а файл ваш *.dwg увидеть можно?
     
  4. Blaukempt

    Blaukempt Форумчанин

    Да это не я пишу. Дали план на "актуализацию". В нем совсем немного контуров изменилось, но выяснилось, что большая проблема с отметками. Ну и соответственно есть наши новые отметки и ими надо заменить старые тексты отметок.
    --- Сообщения объединены, 3 мар 2023, Оригинальное время сообщения: 3 мар 2023 ---
    Можно, пришлю фрагмент.
     
  5. АлексЮстасу

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

    В принципе - https://forum.dwg.ru/showthread.php?t=165947. Плюс https://geodesist.ru/threads/otkryt...rumentov-dlja-xdata.88990/page-3#post-1066734 (https://forum.dwg.ru/showthread.php?t=164322)
    Команды связывания объектов и надписей - первые результаты нашего экспериментального, поискового проекта. Но работающие.
    1. Создаете XData для хранения Z (или для всего, что еще угодно) - XDTOOLS_MDEFINE. Поле для Z - real или string. Альтернатива - команда XDATA из Express Tools.
    2. Присоединяете эти XData ко всем нужным блокам - XDTOOLS_ADD.
    3. Устанавливаете связь надписей с блоками - XDLABEL_LINK. Связь устанавливается 1х1 по критерию расстояния - ближайшая надпись, попадающая в допуск.
    3. Загружаете в это поле XData значения Z блоков - XDTOOLS_PROP2.
    4. Обновляете надписи - XDLABEL_UPDATE.
     
    Последнее редактирование: 6 мар 2023
  6. Blaukempt

    Blaukempt Форумчанин

    Спасибо. Я никогда раньше этим не пользовался. Дошел до до этапа 3 и не нашел программы XDLABEL_LINK в пакете XDTOOLS.
     
  7. АлексЮстасу

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

    Виноват! Не XDLABEL_LINK, а XDLABEL_INSCR2.
    Забыл, что переименовали.
    На всякий случай прикладываю эти лисп XDLABEL здесь.
     

    Вложения:

  8. Blaukempt

    Blaukempt Форумчанин

    XDTOOLS_PROP2 - этого тоже нет, но есть вот такой - XDTOOLS_PROP-v-0-64.
    Если его попытаться загрузить, то Автокад возвращает сообщение "/XDTOOLS-v-0-62/XDTOOLS_PROP-v-0-64.lsp") ; ошибка: неверно сформированный список на входе".
     
  9. АлексЮстасу

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

    Опять виноват! Там скобка потерялась. ::biggrin24.gif::
    На всякий случай и исправленный файл, и архив с исправленным.

    В XDTOOLS_PROP.lsp две команды: XDTOOLS_PROP2 и XDTOOLS_2PROP.
    Вам в данном случае поможет XDTOOLS_PROP2 - значение свойства (здесь - Z) в поле XData.
     

    Вложения:

    Последнее редактирование: 6 мар 2023
  10. 1958

    1958 Форумчанин

    Тема начинает плавно переходить в раздел Юмор-2023.
    Вас просили выложить кусок чертежа, намекали на использование блока с атрибутами, а вас понесло с помощью апологета XData в какие-то дали.
     
  11. АлексЮстасу

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

    0. Предложенным мной способом данная задача решается, хоть и в 5 действий. Безусловно, можно дождаться написания 1001-й программки и для этого случая. Чтобы в одно (1001-е) действие. А потом ждать 1002-ю программку для другого случая. И т.д.
    В честь предпраздничного дня расстараюсь повеселить!
    О "далях".
    1. У всех нас перед глазами чертежи (планы) со множеством различного типа надписей. Здесь же случай только одного примера из оч. многих - пример проблемы связи надписей с объектами. Проблема заключается в наличии логической связи между надписями и объектами при отсутствии физической такой связи. Лишь часть из них связаны физически - блоками с атрибутами или стилями линий с буквами. Можно еще все разносить в соответствующие слои. Можно написать лиспы для каждого случая. И т.д. Но, во-первых, это разные способы связи, что уже нетехнологично. Во-вторых, одними блоками и стилями линий либо не обойтись, либо приводит к другим проблемам. В-третьих, слоями не обеспечить связь конкретной надписи с конкретным объектом. И т.д.
    Связь надписей с объектами в общем случае обеспечивают только наши глаза, т.е. мышление - наша способность структурировать, интерпретировать, наш опыт и знания. Что тоже не для всех чертежей срабатывает или требует много времени. Программно же анализировать не связанные физически объекты невозможно.
    При том, что с появлением CAD, параллельно, появились и GIS, в которых такая связь изначально предусмотрена. Через хранение описательных, неграфических данных при объектах. Из которых можно при необходимости соответствующие надписи при соответствующих объектах создавать или убирать. Никакой технической сложности или незаконности или неоправданности в CAD использовать этот способ нет. (Есть в нашей голове. Хоть и очень мощные).

    Об "апологета XData".
    2. Я апологет не только XData, но и Xrecord, Object Data, Property sets и внешних БД - возможности дополнять графические объекты описательными неграфическими данными. Главное, зачем это нужно - возможность превращения неструктурированных или частично и плохо структурированных данных, коими являются чертежи (планы) CAD в структурированные. Т.е. в однозначно-полно интерпретируемые и программно, и человеком. В XData или пр. можно прямо определять типы всех объектов чертежей. И можно давать необходимые описательные, неграфические данные.
    Обеспечение связи надписей с объектами - одна из подзадач, которая решается с помощью этих средств. Данные для надписей хранятся при объектах, и вставляются при необходимости в чертеж (на план). При этом каждая конкретная надпись связана со "своим" объектом, и поддерживается соответствие содержания надписей содержанию описательных данных.

    Мне было интересно поставить задачу связи надписей с объектами в общем виде, и попытаться в общем же виде ее решить. Хоть и при ничтожных временных, моральных и программистских ресурсах.
    XDLABEL_LINK, а XDLABEL_INSCR2 - лишь первые пробные, но работающие подходы. Надеюсь, все же удастся хоть в целом, но сделать работающий набор из 5-6 программок для общего решения.
     
    Последнее редактирование: 7 мар 2023
    flareon и Steinar нравится это.
  12. Blaukempt

    Blaukempt Форумчанин

    Я хочу научиться этим пользоваться. Кроме Object Data, с ним я уже очень давно знаком и даже пользовался какое-то время. А в качестве внешней БД я подключал лист MS Excel, но там помню заморочки какие-то с драйвером время от времени возникали.
     
  13. Steinar

    Steinar Форумчанин

    @АлексЮстасу,
    Оффтоп

    XData - замечательная вещь, сейчас совсем примитивно буду её использовать для программы рисования откосов:

    Код:
                   Using resBuff As New ResultBuffer From {
                        New TypedValue(DxfCode.ExtendedDataRegAppName, pluginName),         'Добавляем имя плагина
                        New TypedValue(DxfCode.ExtendedDataAsciiString, "Slope"),           'Добавляем тип, в который объекты группируются
                        New TypedValue(DxfCode.ExtendedDataAsciiString, "Stroke"),          'Добавляем тип объекта
                        New TypedValue(DxfCode.ExtendedDataInteger16, tag),                 'Добавляем тег, общий для группы (случайный номер)
                        New TypedValue(DxfCode.ExtendedDataInteger32, num),                 'Добавляем порядковый номер объекта в группе
                        New TypedValue(DxfCode.ExtendedDataInteger16, CInt(shortStroke))    'Добавляем указание на тип штриха (короткий "-1", длинный "0")
                    }
    Удобно работать, удобно извлекать.
    Единственное не нравится мне - если копировать объект в чертеже, то и вся "встроенная" информация копируется вместе с ним. Потом вся группировка с помощью Xdata превращается в чёрти что.
     
  14. АлексЮстасу

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

    У Вас получилось передать этим способом Z блоков в надписи?
    Оффтоп

    XData и т.п. лучше обсуждать в соответствующих темах - в https://geodesist.ru/threads/otkryt...anie-svobodnyx-instrumentov-dlja-xdata.88990/ или т.п. Или создать свою. Дабы не уводить эту тему в сторону.
    И Xdata, и Object Data, и Property sets и линки с БД (кажется) - все копируются с их объектами. Т.е. это общая проблема-особенность. Кстати, иногда очень полезная. Нужны, видимо, соответствующие проверки-процедуры для исправлений-изменений. Но это же общая данность.

    Оффтоп
    --- Сообщения объединены, 8 мар 2023, Оригинальное время сообщения: 8 мар 2023 ---
    Совершенно аналогично можно было бы сделать связь объектов с надписями на Object Data. И я планирую как-нибудь - может, кто-то возьмется - сделать аналог на Object Data. Я занялся XData сейчас потому, что программистов под Map/Civil не нашел для проекта. Но, в принципе, потому, что они самые универсальные - для вообще любых AutoCAD.
     
    Steinar нравится это.
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление