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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Фиксация точки перемещения посередине растягиваемой линии

Фиксация точки перемещения посередине растягиваемой линии

Ответ
Поиск в этой теме
Непрочитано 16.04.2025, 22:10 #1
Фиксация точки перемещения посередине растягиваемой линии
Mozgolom
 
Регистрация: 19.06.2012
Сообщений: 95

Всем привет. У меня не получается решить следующую задачу. Я создал простой динамический блок из полилинии. Добавил точечный параметр (посередине полилинии) и операцию перемещения.
Также добавил линейный параметр зависимости и 2 ручки, при помощи которых полилинию можно растягивать в обе стороны.
Проблема в том, что при растягивании полилинии точечный параметр так и остаётся в том месте, где он создан изначально. Если полилинию наоборот сжать ручками (уменьшить длину), то точечный параметр вообще выходит за пределы полилинии.
Вопрос в том, как сделать так, чтобы точечный параметр , за который можно перемещать полилинию, всегда был ровно посередине полилинии, как бы мы её не растягивали? Заранее спасибо за помощь.
Просмотров: 1530
 
Непрочитано 16.04.2025, 22:32
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Ты блок свой приложи.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 16.04.2025, 22:55
#3
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ты блок свой приложи.
Приложил
Вложения
Тип файла: dwg
DWG 2018
пример блока полилинии.dwg (48.0 Кб, 12 просмотров)
Mozgolom вне форума  
 
Непрочитано 17.04.2025, 04:59
#4
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Наверное так:
Вложения
Тип файла: dwg
DWG 2018
пример блока полилинии edit.dwg (70.5 Кб, 22 просмотров)
gumel вне форума  
 
Автор темы   Непрочитано 17.04.2025, 08:15
#5
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от gumel Посмотреть сообщение
Наверное так:
Да, то, что нужно. Но непонятно, как это сделано. Зачем у вас используется 2 операции перемещения?
Mozgolom вне форума  
 
Непрочитано 17.04.2025, 08:41
#6
elovkov

ПОС наше всё
 
Регистрация: 06.08.2009
Симферополь
Сообщений: 260


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
Зачем у вас используется 2 операции перемещения?
Я вмешаюсь, блок не открывал, но чую что вторая операция перемещает точечный параметр с коэффициентом расстояния 0,5
__________________
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
elovkov вне форума  
 
Автор темы   Непрочитано 17.04.2025, 09:28
#7
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от elovkov Посмотреть сообщение
Я вмешаюсь, блок не открывал, но чую что вторая операция перемещает точечный параметр с коэффициентом расстояния 0,5
У обоих операций перемещения коэффициент 0.5
Mozgolom вне форума  
 
Непрочитано 17.04.2025, 10:49
#8
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 759


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
2 операции перемещения?
Влево и вправо.
AMDen вне форума  
 
Непрочитано 17.04.2025, 11:00
#9
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
Да, то, что нужно. Но непонятно, как это сделано. Зачем у вас используется 2 операции перемещения?
Ответили уже, и верно. Одна операция влево, вторая - вправо и с коэффициентом 0.5
gumel вне форума  
 
Автор темы   Непрочитано 17.04.2025, 16:01
#10
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от gumel Посмотреть сообщение
Ответили уже, и верно. Одна операция влево, вторая - вправо и с коэффициентом 0.5
Для растяжения и сжатия линии непонятно, зачем это нужно. Достаточно привязать к полилинии линейный параметр зависимости и включить 2 ручки. Вот за эти ручки полилиния прекрасно растягивается и и стягивается. Без всяких перемещений и коэффициентов.
Насколько я понял в примере растягивание организовано по-другому. Добавлен параметр "линейный" и 2 операции растягивания в одну сторону и в другую. Это все понятно. Меня же интересовало, как точка, при помощи которой осуществляется перемещение данного блока, всегда была посередине полилинии. Я так и не понял .
Mozgolom вне форума  
 
Непрочитано 17.04.2025, 16:08
#11
Demonakor


 
Регистрация: 28.11.2022
Сообщений: 139


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
Достаточно привязать к полилинии линейный параметр зависимости и включить 2 ручки
При использовании зависимости вслед за перемещением ручки точечный параметр перемещаться не будет. Стоит использовать либо только параметры, либо только зависимости. Есть частные случаи работоспособных комбинаций использования параметров и зависимостей одновременно, но подобное перемещение не из их числа.
Demonakor вне форума  
 
Непрочитано 17.04.2025, 16:18
#12
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 759


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
Для растяжения и сжатия линии непонятно, зачем это нужно
Это нужно не для растяжения линии, а для перемещения точки.
AMDen вне форума  
 
Автор темы   Непрочитано 17.04.2025, 16:52
#13
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Пытаюсь повторить. Делаю все тоже самое, что и в примере, который мне скинули. Два растяжения в разные стороны и два перемещения. Коэффициенты 0.5. Не работает.
Mozgolom вне форума  
 
Непрочитано 17.04.2025, 17:02
#14
Demonakor


 
Регистрация: 28.11.2022
Сообщений: 139


Ну раз в примере работает, а в создаваемом блоке нет - значит что-то отличается. Без файла сложно сказать, что именно.
Растяжения применяются к линии (отдельно для правой и левой части, если параметр двусторонний). Перемещение применяется к точечному параметру с коэффициентом 0,5.
Цепочка операций должна быть выключена, иначе при перемещении точечного параметра к центру он потянет за собой геометрию.
Demonakor вне форума  
 
Автор темы   Непрочитано 17.04.2025, 18:47
#15
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от Demonakor Посмотреть сообщение
Растяжения применяются к линии (отдельно для правой и левой части, если параметр двусторонний). Перемещение применяется к точечному параметру с коэффициентом 0,5.
Цепочка операций должна быть выключена, иначе при перемещении точечного параметра к центру он потянет за собой геометрию.
В примере, который мне прислали. вообще нет точечного параметра - только базовая точка.
Разобрался. Одна операция перемещения применяется к одной крайней точке линейного параметра, а в качестве объекта необходимо выбрать базовую точку, расположенную в центре полилинии (я же упорно в качестве объекта выбирал саму полилинию). Применяем к этому перемещению коэффициент 0.5.
Вторая операция перемещения применяется к противоположной крайней точке линейного параметра, а в качестве объекта снова выбираем базовую точку, расположенную в центре полилинии. И также коэффициент 0.5. Вот после этого все заработало. Спасибо форумчанину gumel за решение.

----- добавлено через ~34 мин. -----
Коллеги, хочу добавить в блоке, который выложил gumel, пользовательскую переменную, которая будет всегда равна длине полилинии. Подскажите, как это лучше сделать?
Наложил линейную зависимость на полилинию и эту линейную зависимость прописал в переменную. Нормальное растягивание полилинии с сохранением базовой точки в середине, сразу же перестало работать.
Создал скрытый атрибут, в который добавил поле, которое привязал к размеру полилинии. Это работает, но чтобы атрибут всегда показывал реальный размер полилинии, необходимо после каждого изменения длины обновлять поля, что неудобно.
Что еще можно попробовать?
Mozgolom вне форума  
 
Непрочитано 17.04.2025, 21:58
#16
koMon


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


так есть же уже один дин. параметр с длиной.
Миниатюры
Нажмите на изображение для увеличения
Название: DynPline.jpg
Просмотров: 22
Размер:	95.3 Кб
ID:	267797  
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 17.04.2025, 21:59
#17
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от koMon Посмотреть сообщение
так есть же уже один дин. параметр с длиной
Мне необходимо вытащить эту информацию либо в атрибут, либо в пользовательский параметр, чтобы автоматически собрать в спецификацию.
Mozgolom вне форума  
 
Непрочитано 17.04.2025, 22:41
#18
koMon


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


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
Мне необходимо вытащить эту информацию либо в атрибут, либо в пользовательский параметр, чтобы автоматически собрать в спецификацию.
сборщик спецификации не работает с дин. свойствами?
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 17.04.2025, 22:43
#19
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от koMon Посмотреть сообщение
сборщик спецификации не работает с дин. свойствами?
Мой нет. Он умеет вытаскивать только атрибуты либо пользовательские параметры и собирает их в таблицу. Других сборщиков у меня нет.
Mozgolom вне форума  
 
Непрочитано 18.04.2025, 08:25
#20
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
..только атрибуты..
В атрибут можно вставить поле с длиной линии, но ты же уже делал сам и тебе не понравился алгоритм работы, т.к. есть необходимость в обновлении поля после изменения длины. Как сделать иначе - фиг знает
gumel вне форума  
 
Автор темы   Непрочитано 18.04.2025, 08:27
#21
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


По сути вся задача сейчас сводится к тому, как привязать точечный параметр к концу выбранной полилинии или отрезка, чтобы точечный параметр всегда перемещался вслед за концом полилинии.
Mozgolom вне форума  
 
Непрочитано 18.04.2025, 08:57
#22
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
По сути вся задача сейчас сводится к тому, как привязать точечный параметр к концу выбранной полилинии или отрезка, чтобы точечный параметр всегда перемещался вслед за концом полилинии.
Что такое точечный параметр и зачем к концу?
Вложения
Тип файла: dwg
DWG 2018
пример блока полилинии edit new.dwg (57.4 Кб, 11 просмотров)
gumel вне форума  
 
Непрочитано 18.04.2025, 09:11
#23
Demonakor


 
Регистрация: 28.11.2022
Сообщений: 139


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
как привязать точечный параметр к концу выбранной полилинии
В том-то и проблема, что параметры никак нельзя привязать к геометрии. Можно только перемещать их вместе с геометрией при помощи других параметров, создавая иллюзию связанности. Даже если объединить их в группу с геометрией - зависимость будет перемещать только тот объект из группы, к которой она привязана.
Demonakor вне форума  
 
Автор темы   Непрочитано 18.04.2025, 09:46
#24
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от gumel Посмотреть сообщение
Что такое точечный параметр и зачем к концу?
Поле я сделал - мне не нравится постоянное ручное обновление полей. Я наверное вообще откажусь от этой злополучной точки. Мне точка нужна по сути, чтобы за нее можно было схватить этот блок и свободно перемещать его по чертежу. По большому счету, перемещать его можно и стандартными средствами автокада (переместить).
Mozgolom вне форума  
 
Непрочитано 18.04.2025, 10:45
#25
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
Мне точка нужна по сути, чтобы за нее можно было схватить этот блок и свободно перемещать его по чертежу
Ну вот, хватай за точку по центру блока и тащи куда надо
gumel вне форума  
 
Автор темы   Непрочитано 18.04.2025, 10:56
#26
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от gumel Посмотреть сообщение
Ну вот, хватай за точку по центру блока и тащи куда надо
Это если мы все оставляем, как есть. То есть длину полилинии делаем через поле, которое нужно обновлять вручную каждый раз после изменения длины полилинии. Если же я хочу , чтобы длина сразу обновлялась в определении блока, то придется это делать через пользовательский параметр и геометрическую зависимость. Тогда перестанет работать "точка всегда посередине полилинии".
Mozgolom вне форума  
 
Непрочитано 18.04.2025, 11:12
#27
gumel


 
Регистрация: 20.04.2011
Сообщений: 480


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
... Тогда перестанет работать "точка всегда посередине полилинии".
Ничего не пойму. Нужна возможность таскать блок линии за одну точку, а за вторую его растягивать? Для чего тогда точка посередине?
Вложения
Тип файла: dwg
DWG 2018
что надо то.dwg (48.5 Кб, 10 просмотров)
gumel вне форума  
 
Автор темы   Непрочитано 18.04.2025, 11:29
#28
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 95


Цитата:
Сообщение от gumel Посмотреть сообщение
Ничего не пойму. Нужна возможность таскать блок линии за одну точку, а за вторую его растягивать? Для чего тогда точка посередине?
Необходимо растягивать линию за 2 ручки в разные стороны. При этом точка, за которую блок можно таскать, всегда должна быть посередине. При этом в пользовательском параметре или атрибуте должна присутствовать актуальная длина полилинии (не через поле).
Mozgolom вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Фиксация точки перемещения посередине растягиваемой линии



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Civil 3D 2017. Не подсвечивает точки структурной линии при редактировании. Gedezuk5 Вертикальные решения на базе AutoCAD 3 вчера 18:18
Аutocad. Разбираемся как сделан такой нестандартный тип линии? abumas AutoCAD 32 09.01.2024 21:10
AutoCad Civil 3D 2018 Почему появляются промежуточные точки на характерной линии? Игорь66 Вертикальные решения на базе AutoCAD 8 29.06.2018 08:25
Несплошные линии, X-refы и... задача Vova AutoCAD 6 20.04.2018 16:14
Невидимые линии , точки в Autocad 2007 xzotx AutoCAD 3 14.09.2011 11:43