| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
03.03.2017, 19:02 | #1 | |
Как получить координаты ручек в дин. блоках?
Регистрация: 03.02.2017
Сообщений: 56
|
||
Просмотров: 7859
|
|
||||
Для этого есть значения динамических параметров блока, которые можно получать и задавать программно. Ручки - это для пользователей. Тем более, что с помощью LISP с ними вообще ничего не сделать, насколько я помню.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
А из параметра (дин. блока) vba объекта можно координаты получить (изменить)?
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Наверное, не из параметра, а из указателя на вхождение блока. Если так, то да, можно - был бы блок динамический.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
Похоже как я понимаю по ответам это не возможно? Что же придется как то вычислять по углу поворота блока, по параметрам длин, по методу GetBoundingBox (координаты крайних точек блока). |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
1. Получить указатель на вхождение блока
2. Получить коллекцию динамических параметров вхождения (или сразу нужный параметр отфильтровать - это уже дело вкуса) 3. Установить новое значение нужного параметра 4. Обновить вхождение блока. В чем проблема-то?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
Чтобы изменить координаты ручек надо менять параметры. Верно? |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
у BlockReference есть метод GetGripPoints(grips As GripDataCollection, curViewUnitSize As Double, gripSize As Integer, curViewDir As Vector3d, bitFlags As GetGripPointsFlags) As Boolean
работает это как то так: Код:
Правда это в рамках .net , как на других платформах, не знаю. правда наверное лучше все же использовать параметры + матрицу трансформаций блока для вычисления положения и размера блока в модели. |
|||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Судя по прежним высказываниям, в конечном счете Вам надо изменить графику блока, чтобы его "непосредствено его концы" оказались в нужных местах. Для этого надо изменить параметры блока.
"Ручки" - это уже вторично, но т.к. нормально настроенные параметры воздействуют как на графику, так и на "ручки", то при изменении параметров ручки тоже передвинутся, вместе с графикой. Если же дин. блок кривой, косой и разваливается, этого может и не произойти. Т.к. примера блока нет, то трудно о нем судить, но Вы сами можете проверить качество блока, принудительно задав значения параметров через панель свойств (CTRL+1). Результат будет налицо. Цитата:
Цитата:
Последний раз редактировалось kp+, 09.03.2017 в 12:53. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
Цитата:
Правда я ошибся, эти методы есть не только у BlockReference, они есть у наследников Entity |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
MoveGripPointsAt - такого метода нет в Lisp и vba. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
|
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Boxa
Спасибо за информацию. По последней книге Полещук вроде есть инф. как сделать функцию для lisp на другом языке. В создание функций в NET как я знаю есть недостаток нужно создавать файлы компилированные для каждой версии автокад, а это не круто. Хорошо я понял, буду выбирать. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
я могу попробовать что то изобразить... но я с лисп совсем не дружу и мне для тестов нужен пример кода, который позволит выбрать объект и вызовет некую функцию передав ей id объекта и индекс ручки
Что то вроде: (GetGripPoints (entget (car (entsel))) 1) , вот только вместо выделенного, должен ID или хендл передаваться... |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
|
|||
|
||||
Через GetGripPoints нельзя получить ручки динамического блока.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Lisp. Получить координаты точек 3D тела. | Golem-iq | LISP | 9 | 06.09.2013 13:38 |
Как получить координаты прямоугольника, в который вписаны все видимые объекты чертежа | swkx | Программирование | 2 | 31.07.2013 17:42 |
Быстро получить Набор объектов попадающих в Сферу | [N.S] | Программирование | 10 | 09.08.2009 11:04 |
Как получить координаты точек отображенных на четеже в виде таблици?? | nix-- | AutoCAD | 10 | 22.05.2009 13:41 |
Координаты области выделения | Тим Боль | Программирование | 6 | 04.11.2007 16:52 |