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

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

Войти

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

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

  1. Blaukempt

    Форумчанин

    Регистрация:
    24 апр 2012
    Сообщения:
    597
    Симпатии:
    53
    Хороший инструмент, я даже не знал о таком, но нет. Не делает он то, что я ищу.
     
    #21
  2. X-Y-H

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

    Регистрация:
    18 май 2007
    Сообщения:
    21.988
    Симпатии:
    7.205
    Адрес:
    Россия
    Blaukempt, знаешь в чем проблема? отметка у тебя блок, а значение ты подписываешь текстом, посмотре 3d survey от ВНИПИГаздобыча, там можно тоже блок перемещать/вращать подпись. НО! в любой момент обновить поля блока и подписи, можно практически стандартными средствами автокада
     
    #22
  3. Geodesist

    Форумчанин

    Регистрация:
    26 янв 2009
    Сообщения:
    688
    Симпатии:
    296
    Blaukempt, а файл ваш *.dwg увидеть можно?
     
    #23
  4. Blaukempt

    Форумчанин

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.970
    Симпатии:
    694
    Адрес:
    Маськва
    В принципе - 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.
     
    #25
    Последнее редактирование: 6 мар 2023
  6. Blaukempt

    Форумчанин

    Регистрация:
    24 апр 2012
    Сообщения:
    597
    Симпатии:
    53
    Спасибо. Я никогда раньше этим не пользовался. Дошел до до этапа 3 и не нашел программы XDLABEL_LINK в пакете XDTOOLS.
     
    #26
  7. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.970
    Симпатии:
    694
    Адрес:
    Маськва
    Виноват! Не XDLABEL_LINK, а XDLABEL_INSCR2.
    Забыл, что переименовали.
    На всякий случай прикладываю эти лисп XDLABEL здесь.
     

    Вложения:

    #27
  8. Blaukempt

    Форумчанин

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.970
    Симпатии:
    694
    Адрес:
    Маськва
    Опять виноват! Там скобка потерялась. ::biggrin24.gif::
    На всякий случай и исправленный файл, и архив с исправленным.

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

    Вложения:

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

    Форумчанин

    Регистрация:
    21 авг 2013
    Сообщения:
    660
    Симпатии:
    725
    Адрес:
    Ташкент, город пыльный
    Тема начинает плавно переходить в раздел Юмор-2023.
    Вас просили выложить кусок чертежа, намекали на использование блока с атрибутами, а вас понесло с помощью апологета XData в какие-то дали.
     
    #30
  11. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.970
    Симпатии:
    694
    Адрес:
    Маськва
    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 программок для общего решения.
     
    #31
    Последнее редактирование: 7 мар 2023
    flareon и Steinar нравится это.
  12. Blaukempt

    Форумчанин

    Регистрация:
    24 апр 2012
    Сообщения:
    597
    Симпатии:
    53
    Я хочу научиться этим пользоваться. Кроме Object Data, с ним я уже очень давно знаком и даже пользовался какое-то время. А в качестве внешней БД я подключал лист MS Excel, но там помню заморочки какие-то с драйвером время от времени возникали.
     
    #32
  13. Steinar

    Форумчанин

    Регистрация:
    30 авг 2012
    Сообщения:
    721
    Симпатии:
    514
    Адрес:
    Асгардия
    @АлексЮстасу,
    Оффтоп

    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 превращается в чёрти что.
     
    #33
  14. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.970
    Симпатии:
    694
    Адрес:
    Маськва
    У Вас получилось передать этим способом 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.
     
    #34
    Steinar нравится это.

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

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