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

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

Войти

XDPoint - связь точечных объектов с другими объектами

Тема в разделе "Autodesk", создана пользователем АлексЮстасу, 23 июл 2023.

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

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Мы решили начать второй поисковый подпроект - XDPoint, не закрывая еще поисковый подпроект XDLabel. Наоборот - попробуем использовать наработки XDLabel.
    XDPoint - продолжение идеи определения и использования связей между объектами в базовом AutoCAD. И продолжение проекта инструментов работы с XData и их использования.
    Начинаем параллельно, чтобы уточнить-унифицировать подходы, решения, для определения связей объектов различного типа.
    XDPoint - определение и использование связей точечных объектов с другими объектами.
    Тут тоже много вопросов.
    Например, какие объекты в данном случае есть смысл считать "точечными"? Только Точки, Блоки?

    Самый очевидный для нас пример связей блоков с объектами - знаки опор и стрелки на ЛЭП. Но и, например, бергштрихи (если блоками) на горизонталях, штрихи (если блоками) на откосах.

    Проект [как и предыдущие] открытый, участие приветствуется.

    XDPoint действует и без XData у объектов.

    Текущее состояние, работающие команды для любых AutoCAD на lisp - XDPoint.fas.
    - XDPOINT_CREATE - создание точечных объектов и связи с их базовыми объектами,
    - XDPOINT_LINK - связывание существующих точечных объектов с их базовыми объектами,
    - XDPOINT_UPDATE - обновление точечных объектов, их свойств и положения относительно базовых объектов.

    Команды существенно уточнены и дополнены для обеспечения содержания и связей атрибутов блоков. Одновременно можно загружать значения 56 свойств объектов в XData и в атрибуты.
    Так же есть команды XDPOINT_ATTR для загрузки данных из XData базовых объектов в атрибуты связанных блоков, и наоборот. Действуют для связанных блоков.
    Есть команды выбора связанных объектов - XDLINK_LINKSEL, XDLINK_SINGLESEL.
     

    Вложения:

    #1
    Последнее редактирование: 9 июн 2024
    ANAT01 нравится это.
  2. MaxKal

    Форумчанин

    Регистрация:
    17 окт 2014
    Сообщения:
    177
    Симпатии:
    282
    Адрес:
    Краснодар
    точечными объектами я считаю являются блоки, тексты, мультитексты, точки, окружности, и шо там ещё есть эллипсы, таблицы: то есть все объекты положение которых можно описать одной точкой, например окружность имеет центр, и какая там разница какой у неё радиус.
     
    #2
    Steinar нравится это.
  3. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Мы пока решили так и делать.
    За исключением текстов-мультитекстов и пр. надписей - для них отдельно, и частично для них уже сделано - XDLabel.
    Сейчас мы приняли за "точечные" 6 типов примитивов: точки, блоки, окружности, 3dтела (точка - центроид), таблицы и отрезки (начальная точка).
    Про эллипсы мы думали, но пока не стали.
    Кстати, постепенно XDPoint получается, и получается достаточно интересно.
    Заодно подправляем-расширяем XDLabel для надписей.
    Жаль, что силенок близко к нулю. :)
     
    #3
    Последнее редактирование: 15 авг 2023
  4. MaxKal

    Форумчанин

    Регистрация:
    17 окт 2014
    Сообщения:
    177
    Симпатии:
    282
    Адрес:
    Краснодар
    а почему вы для связи объектов не используете или не хотите использовать внешние базы данных, как наш уважаемый trir постоянно упоминает? Тут же очень много плюсов.
     
    #4
  5. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Я бы разделил этот вопрос в контексте данной темы на два: 1. почему не внешние БД?, 2. установление связей объектов.
    1. Я не против внешних БД. Сам в свое время работал с ГИС-приложением с Oracle.
    Для незначительных описательных (семантических, атрибутивных) данных использовать внешние БД - из пушки по воробьям. То же - для весьма небольших объемов данных, с каким работает основное большинство. И использование внешних БД слишком, безнадежно сложно для основного большинства пользователей.
    Для небольших наборов описательных данных - тип объекта, отображаемые характеристики - достаточно XData, прописываемых прямо в dwg при объектах. Это предельно просто, максимально технологично. Т.е. достаточно внутренней БД.
    Имея же внутреннюю БД, появляется возможность полнее, прямо передавать данные во внешние БД, т.к. во внутренней БД уже определены-собраны основные нужные данные.
    2. Эти подпроекты - XDPoint, XDLabel - должны обеспечивать связи объектов и средства работы со связанными объектами в базовом AutoCAD, в любых AutoCAD. Что может заметно помочь при создании чертежей/моделей.
     
    #5
  6. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Первый, еще сырой, но работающий в целом вариант XDPoint:
    - XDPOINT_CREATE - создание точечных объектов и связи с их базовыми объектами,
    - XDPOINT_LINK - связывание существующих точечных объектов с их базовыми объектами,
    - XDPOINT_UPDATE - обновление точечных объектов, их свойств и положения относительно базовых объектов.
    XDPOINT.png XDPOINT_LINK_1.png XDPOINT_UPDATEPT.png
    Т.е. любые "точечные" объекты (Точки, Блоки, Окружности, 3DТела, Таблицы, Отрезки) можно связать с любыми отрезками чертежей (XDPOINT_LINK). Критерий связи - расстояние до объектов для выбранных объектов. В т.ч. можно связывать "точечные" с "точечными".
    Если свойства и положение точечных объектов или положение и форма базовых объектов изменялись, и нужно свойства и положение точечных объектов восстановить относительно базовых, то XDPOINT_UPDATE.
    Создать точечные объекты (вставить-расставить относительно линий-границ базовых объектов, вставить в площадь) - XDPOINT_CREATE.
    Например, можно вставлять блоки/точки и пр. в вершины, на сегменты, регулярно с шагом на линии-границы. Допустим, расставить штрихи откосов. Если положение и форма бровки откосов изменялись, то штрихи с сохранением их длины "сами" примкнутся к бровке под теми же углами.
    И т.п.

    Добавлено:
    Добавили в XDPOINT_CREATE возможность вставлять объекты в вершинах продольно сегментам, "VERTICES ALONG" - можно расставлять стрелки на ЛЭП или т.п. Синхронно подправили для этого XDPOINT_LINK и XDPOINT_UPDATE.
    Конечно, хоть расстановка стрелок/опор ЛЭП и расстановка отрезков/блоков а-ля обрывы-откосы и возможны с XDPoint, делать это специализированными программками проще, быстрее и лучше.
    Тем не менее, может и такое создание ЛЭП, откосов и т.п. в каких-то случаях тоже оказаться нужным. И возможность XDPOINT_LINK + XDPOINT_UPDATE для уже расставленных стрелок, опор и штрихов позволит соответственно переносить-привязывать-доворачивать стрелки, опоры и штрихи для измененных ЛЭП, откосов и т.д.
     

    Вложения:

    • XDPoint.fas
      Размер файла:
      128 КБ
      Просмотров:
      0
    #6
    Последнее редактирование: 11 мар 2024
  7. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Для просмотра-выбора объектов, связанных с одним базовым объектом - XDLINK_SINGLESEL. Действует и для связанных надписей, и для связанных точечных объектов одновременно.
    Сделано специально для одного указываемого объекта (точечного, надписи, базового), для одного базового объекта - для однозначности.
    Показывает-выделяет на выбор: базовый объект (если была выделена надпись или точечный объект), все связанные надписи с соответствующим базовым объектом, все связанные точечные объекты, любые связанные с соответствующим базовым объектом.
    XDLINK_SINGLESEL.png
    Для выделения, просмотра, нужных действий.
     

    Вложения:

    • XDPoint.fas
      Размер файла:
      128 КБ
      Просмотров:
      0
    #7
  8. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    XDPoint с исправленными многими ошибками и с дополнением. В XDPOINT_UPDATE добавлена возможность фиксировать текущие свойства и параметры связей точечных объектов.
    К командам XDPoint (аналогично как и к XDLink) добавлены команды выбора связанных объектов: XDLINK_SINGLESEL (см. предыдущее сообщение) и XDLINK_LINKSEL.
    Последняя одновременно действует и для связанных надписей, и для связанных точечных объектов.
     

    Вложения:

    • XDPoint.fas
      Размер файла:
      128 КБ
      Просмотров:
      3
    #8
  9. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Существенно дополненная версия XDPoint, создающая и учитывающая связи атрибутов блоков с XData.
    Главная сложность во множественности и разнотипности отношений: базовые объекты -- блоки -- атрибуты -- XData - поля XData.

    XDPoint действует и без XData у объектов.

    В целом - как в XDLabel и в предыдущем варианте XDPoint, но с атрибутами блоков:
    XDPOINT_LINK - связывание вставленных блоков (точечных объектов) с их базовыми объектами. Одновременно возможна загрузка данных из XData базовых объектов в атрибуты и наоборот.
    XDPOINT_CREATE - создание блоков (точечных объектов) при базовых объектах.
    Можно сохранять 56 свойств объектов в XData и в атрибуты.
    Если для атрибутов указаны свойства, то при вставке блоков эти свойства отобразятся в атрибутах, и сохранятся в указанные поля XData базовых объектов.
    Если свойства не выбраны, то значения атрибутов могут браться из XData базовых объектов.
    XDPOINT_UPDATE - обновление положения блоков (точечных объектов) и содержания атрибутов, если они были случайно или специально перемещены, менялась форма объектов, содержание атрибутов. Восстанавливается относительное положение блоков, содержание атрибутов. В т.ч. у атрибутов, связанных со свойствами базовых объектов.
    XDPOINT_2ATTR - загрузка данных из XData базовых объектов в атрибуты. XDPOINT_ATTR2 - наоборот. На основе простого txt-файла соответствий структуры:
    название блока -- название атрибута -- XData -- поле XData.
    Команды XDPOINT_ATTR действуют для уже связанных блоков - если в блоках сохранена связь с базовыми объектами после XDPOINT_LINK или XDPOINT_CREATE.
    XDPOINT_ATTRFILE - создание шаблона для файла соответствий на основе указанных или всех блоков и XData файла.
     

    Вложения:

    #9
    Последнее редактирование: 8 июн 2024
  10. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Совершенно однозначно мы не ставили перед собой задачу конкурировать с программами расстановки блоков и т.п. Но для проработки предмета проекта XDPoint нужно было обеспечить полную функциональность и полноту решения. Так же недавно единичные, но толковые пользователи начали давать дельные замечания и предложения для улучшений. В результате получился рабочий набор команд, делающих то, что делают многие другие программы. Но еще и то, что другие программы не делают.
    Мы по-прежнему не конкурируем с другими программами, т.к. они почти всегда специализированы, т.е. всегда будут удобнее для частных случаев.

    Вопрос. Я совершенно не в курсе задачи расстановки пикетов для дорог, не знаю нюансов. Интересно, в какой мере XDPOINT_CREATE и пр. применимы для этого?

    В целом проект XDPoint состоялся, выполнены его основные задачи. Поэтому интересно понять границы его применимости, границы выбранных подходов и решений.
     
    #10
    Последнее редактирование: 8 июн 2024
  11. ANAT01

    Форумчанин

    Регистрация:
    20 янв 2011
    Сообщения:
    431
    Симпатии:
    288
    Ничего не понятно но очень интересно

    Вот например для сплайна создана связь в виде отрезков под 90 градусов с шагом.
    Я правильно понимаю, что для динамической перестройки этой штуки нужна "обертка"? (не в курсе вообще можно так или нет) типа:
    1) запустил обертку
    2) поредактировал сплайн
    3) Нажал "завершить редактирование"
    4) выполнилась последовательность XDLINK_SINGLESEL, XDPOINT_UPDATE

    upload_2024-6-17_22-27-34.png

    Правильно ли я понимаю, что можно сохранить в текстовый файл описание связывание с атрибутом базового объекта? (типа у меня есть полилиния с XDATA атрибутом что это горизонталь рельефа, и хочу построить бергштрихи по ней загрузив описание из txt файла), если да то можно пример?

    Непонятно с примером про ЛЭП
    Вот так можно сделать?

    Например знаки опор это точки - с привязанными блоками в зависимости от типа опоры
    а обозначения напряжения - это полилиния с привязанными блоками "стрелка"
    про подкос не понятно как он вписывается в концепцию XDPOINT (это точка с привязкой блока "отрезок" и блока "тип укосины" или отрезок с привязкой блока "тип укосины") ::-ph34r.gif::

    upload_2024-6-17_22-49-50.png


    И еще, можно ли строить "блоки" привязки на основании значений атрибутов базового объекта?
    Например у меня есть точки с XDATA где в атрибуте MYRADIUS указано значение радиуса для связанного объекта ОКРУЖНОСТЬ
     
    #11
    Последнее редактирование: 17 июн 2024
  12. АлексЮстасу

    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.894
    Симпатии:
    678
    Адрес:
    Маськва
    Да, последовательность действий такая.
    В txt из XDPOINT_CREATE можно сохранить параметры связи базового и точечных объектов. В т.ч. связь атрибутов блоков с полями XData.
    Выбираете горизонтали любым способом (в т.ч. для XData - XDTOOLS_SELAPPS, XDTOOLS_SELVALUES), вызываете XDPOINT_CREATE, загружаете в нем из txt нужные параметры, запускаете, и появятся указанные блоки. Но! Эти команды ничего не знают про направление склонов. Поэтому блоки бергштрихов, надписей горизонталей, отрезки откосов-обрывов построятся формально правильно - как в параметрах, но правильность направления с 50% вероятностью. Еще они не в курсе, что происходит на соседних горизонталях. Т.е. для многих горизонталей бергштрихи поставятся через указанное расстояние или на середине и т.п., но на каждой из указанных. Еще эти команды не в курсе, что бергштрихи нужно ставить на характерных изгибах горизонталей. Увы. Сразу предупреждаю.
    Зато, если Вы сами расставите бергштрихи, надписи блоками, штрихи по всем правилам, свяжете горизонтали/откосы/обрывы с ними XDPOINT_LINK, то после переноса-сглаживании и пр. эти объекты можно обратно посадить на свои базовые линии XDPOINT_UPDATE. Мне не раз приходилось врукопашную это делать после требования сгладить горизонтали при густом рельефе. Еще то занятие. :)
    Почти чисто XDpoint можно сделать так - блок опоры с подкосом я вставил вручную:
    ЛЭП_на_незастроенной_территории.png
    Да, будут лишние опоры и стрелки на первых и последних вершинах полилиний.
    Опора с подкосом в концепцию впишется, если ее связать с полилинией.
    Я сделал три описания параметров: для стрелок туда и обратно и для опор. Для стрелок нужен режим НА--МНОЖЕСТВЕННЫЕ--ВЕРШИНЫ ВДОЛЬ с углами относительными 0 и 180. И все три сразу выполнил. Если бы ЛЭП было много, то сделалось бы сразу для всех указанных. В этом первая польза. Вторая - после редактирования ЛЭП опоры и стрелки можно переставить XDPOINT_UPDATE.
    Мы планировали сделать обмен данными между связанными объектами, но еще не делали. Для окружностей XDPOINT_CREATE значения из XData сейчас не берет. Нужно подумать. Но, кажется, это не так просто.
    Если бы у Вас были не точки с XData, а окружности, то командой XDTOOLS_2PROP можно было бы назначить соответствующие радиусы из XData. Заодно и слой, цвет и пр.

    Т.к. программы при этих вопросах сразу же начали падать ::biggrin24.gif::, то нужно взять подправленную версию XDPoint - обновил. См. в предыдущем или при #1.
    -------
    Добавлена возможность вставки точечных к растрам/изображениям.
     

    Вложения:

    • ЛЭП.txt
      Размер файла:
      5,6 КБ
      Просмотров:
      0
    #12
    Последнее редактирование: 18 июл 2024

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

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