| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Получение координат polar grip

Получение координат polar grip

Ответ
Поиск в этой теме
Непрочитано 18.06.2020, 01:16 #1
Получение координат polar grip
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980

Добра,

Имею динамический блок с Flip и Polar параметрами.
Задача получить координаты XY для grip точки polar параметра.
Знаю как получить значение самих динамических параметров.
Проблема в том что если немного поиграть с Flip и Polar то только значениями параметров будет невозможно определить положение grip точки.
Прикрепляю пример. 2 блока по свойствам полностью идентичны. Однако, как видите, положение на чертеже разное.
Возможно ли получить координату grip точки polar параметра в любом случае?

Спасибо

Вложения
Тип файла: dwg
DWG 2013
example.dwg (83.0 Кб, 10 просмотров)

__________________
Блог
Просмотров: 2219
 
Непрочитано 18.06.2020, 01:50
#2
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Полагаю, ты имеешь в виду лисп? На нем определить положение ручек, насколько мне известно, нельзя. А какова конечная цель?
skkkk вне форума  
 
Непрочитано 18.06.2020, 13:36
#3
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Red Nova Посмотреть сообщение
если немного поиграть с Flip и Polar
это ни разу flip или polar. это length, который к несчастью совпадает с polar. в этом случае теряется смысл динамических параметров и отследить ручки, коодинаты котрых можно вытащить из описания блока и допустим изменить в соответствии с транчформациями блока, становится нереальным. панацея - разнести динамические параметры.
koMon вне форума  
 
Автор темы   Непрочитано 19.06.2020, 17:45
#4
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


skkkk, да лисп. В данном случае конечная цель разделить блок на 2 по указанной точке (аналог _break для дин блока). Если точку указывать по длине блока то такой лисп написать нетрудно. Но я бы хотел иметь возможность указать точку разрыва и вне линии. Для этого нужны координаты условно соответствующие началу и концу. Начало = XY позиции блока. Конец = XY ручки polar параметра.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 19.06.2020, 22:58
#5
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Любопытно, как ты такого добился, что оба блока в файле имеют одни и те же (нулевые) значения: как Rotate самого блока, так и параметра Angle1, - хотя при этом блоки перпендикулярны? Похоже, без эксперта тут не обойтись...))


А есть сакральный смысл в том, что у тебя прямоугольники "схлопнуты" до прямых? Это для упрощения в качестве примера? Верно ли я понимаю, что ты хочешь добиться в общем случае разделения одного прямоугольника на два, длинна которых в сумме будет равна исходному? И граница этих двух будет в точке, которую ты укажешь?

Из успешных попыток найти координаты ручек мне вспомнилась только эта. Раз уж тут тема про определение координат ручек блока, добавлю сюда код. Он создает командный реактор, который при растяжении объекта ручками (скрыто выполняется команда GRIP_STRETCH), создает точку с координатами из переменной LASTPOINT.
Код:
[Выделить все]
 (vlr-command-reactor nil '((:vlr-commandWillStart . callback)))

(defun callback (rea lst)
  (if (= (car lst) "GRIP_STRETCH")
    (entmake (list (cons 0 "POINT") (cons 10 (getvar 'lastpoint))))
  )
)


В контексте данного топика этот код мог бы быть полезен, если по задумке эти блоки расставляются вручную, точнее, вручную ставится положение квадратного грипа. Что, вероятно, так и есть. Тогда в коде callback функции можно прописать условие: если юзер дёрнул грип именно вхождения блока с этим именем, то в расширенные данные (или словарь) вхождения записывается эта точка. После, при вызове условной команды BREAK_BLOCK_AT_POINT читаются эти данные и производятся дальнейшие нужные действия.

P.S.: Правда, есть подозрение (но это не точно), что при дёргании грипов любых объектов будет происходить небольшое, но подвисание. Которое может раздражать.
Миниатюры
Нажмите на изображение для увеличения
Название: 7lines.PNG
Просмотров: 93
Размер:	511.7 Кб
ID:	227653  

Последний раз редактировалось skkkk, 19.06.2020 в 23:06. Причина: P.S.
skkkk вне форума  
 
Автор темы   Непрочитано 21.06.2020, 00:34
#6
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Цитата:
Любопытно, как ты такого добился, что оба блока в файле имеют одни и те же (нулевые) значения: как Rotate самого блока, так и параметра Angle1, - хотя при этом блоки перпендикулярны? Похоже, без эксперта тут не обойтись...))
Вот наглядно.


Цитата:
А есть сакральный смысл в том, что у тебя прямоугольники "схлопнуты" до прямых? Это для упрощения в качестве примера?
Просто упростил. В оригинале прямоугольник, но может быть и линия.

Цитата:
Верно ли я понимаю, что ты хочешь добиться в общем случае разделения одного прямоугольника на два, длинна которых в сумме будет равна исходному? И граница этих двух будет в точке, которую ты укажешь?
Почти. Добавь к этому еще то что полученные в результате 2 блока остаются на одной лини с исходным блоком независимо от того принадлежит ли указанная точка данной линии или нет. Указанную точку нужно спроецировать на линию блока.
Вот как работает мой предварительный лисп. Если точку указать на линии блока все работает нормально. Намеревался усовершенствовать его добавив проецирование любой точки на линию блока.


Цитата:
Из успешных попыток найти координаты ручек мне вспомнилась только эта. Раз уж тут тема про определение координат ручек блока, добавлю сюда код. Он создает командный реактор, который при растяжении объекта ручками (скрыто выполняется команда GRIP_STRETCH), создает точку с координатами из переменной LASTPOINT.
Спасибо за информацию, но думаю это для меня будет перебор. Да и не всегда блок вставляется вручную.

Похоже мне остается как вариант взорвать исходный блок и определить координаты вершин оставшейся полилинии.
__________________
Блог

Последний раз редактировалось Red Nova, 21.06.2020 в 01:01.
Red Nova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Получение координат polar grip

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD Civil 3D 2016 получение отметок точек конкретных координат из существующей поверхности IrinaO Вертикальные решения на базе AutoCAD 5 31.03.2016 14:47
ObjectARX AcEdJig получение координат Константин Селикатов Программирование 3 04.09.2013 02:20
Получение координат выделенного объекта НовичOK Программирование 3 05.11.2010 14:26
Получение координат примитивов в Регионе (AcadRegion), C# AkaPaul Программирование 6 14.05.2010 22:22
Получение текстового массива координат точек. Камыч AutoCAD 5 30.07.2007 12:28