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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp. Автоматическая перерисовка выносок

Autolisp. Автоматическая перерисовка выносок

Ответ
Поиск в этой теме
Непрочитано 12.09.2011, 16:22
Autolisp. Автоматическая перерисовка выносок
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Друзья, требуется помощь, ибо зашел в тупик. Есть динамические блоки: трубы, дроссель клапана и прочих. Есть блок с выноской. Так вот прогу для простановки выносок и их заполнения сделал, тыкая на любой блок ставится выноска в точке тыка, берутся параметры из блока и заполняются в выноску. Все круто. А теперь задача в том что бы выноски перерисовать, если меняются блоки, скажем трубы. Это я реализовал для трубы обычными мат формулами, определяя смещения и прочее, тут проблем нет. Но вошел в ступор, если меняется ДК или ОЗК. Формулами передвинуть выноску стало намного сложнее, т.к. вариантов тьма. Может кто посоветует с какого угла заходить, ведь наверняка с этим сталкивались... заранее спасибо
P.S. Как вы понимаете точка вставки выноски может с любого угла блока, в точке вставки, в середине и тд.....
Просмотров: 12548
 
Непрочитано 14.09.2011, 11:46
#21
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Так добавь к выноске с аттрибутом параметр точки и действие перемещения и двигай куда хочешь.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 14.09.2011, 12:07
#22
Zaghim


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


Ну сразу. Во-первых - выноска нужна не всегда... значит нужно делать дополнительные визибл сеты в блоке! Во-вторых - поверни блок на 90 градусов и посмотри, что получится)))) ну думаю это можно исправить, хотя хз) И в-третьих - выноска не должна быть жестко привязана к одному месту... на огромных планах - это неправильно, чертеж может быть загорожен и выноску нужно двигать!!!
Zaghim вне форума  
 
Непрочитано 14.09.2011, 12:15
#23
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Zaghim, полегче, я на тебя еще слава богу не работаю. Тебе дали пищу для размышлений, как ты понимаешь лиспа тут вообще не нужно а нужно уметь работать с тем что в АКАДе есть.
Насчет движения выносок см. №21.
Так вот теперь сам и решай свои проблемы
5hev вне форума  
 
Автор темы   Непрочитано 14.09.2011, 12:31
#24
Zaghim


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


Да нет, я же не прошу за меня делать))) Пища есть, вот и ведем дискуссию... я склоняюсь к тому что бы решить это программно и единообразным для всего) Мы же в разделе программирования)
Zaghim вне форума  
 
Непрочитано 14.09.2011, 12:54
#25
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Сколько выносок для одного и того же блока может быть?
5hev вне форума  
 
Автор темы   Непрочитано 14.09.2011, 13:02
#26
Zaghim


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


Выноска всегда одна
А если я не так понял, то блоков может быть на чертеже много и соответственно все разные и выноска на каждом блоке будет
Zaghim вне форума  
 
Непрочитано 14.09.2011, 13:11
#27
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Zaghim, я поглядел, реально выноску в блоке не получилось сделать всегда горизонтальнонаправленной. Тогда если делать уж программно, то так:
1. У блоков д.б. полярный точечный параметр, который однозначно указывает на место выноски для данного блока. За него надо тягать чтобы изменить место выноски.
2. У выносок в расширенных данных хранится блок к которому каждая из них клеится. Почему не у блоков в расширенных? А прикинь выноску удалил?
3. Нажимая кнопку "Обновить выноски", прога проходит по выноскам, справляется о положении точки вставки выноски для каждого блока, с которым выноска связана, и в соответствии с углом поворота этого блока и др. параметрами, заполняет выноску и сует куда надо.
О как

Последний раз редактировалось 5hev, 14.09.2011 в 15:57.
5hev вне форума  
 
Автор темы   Непрочитано 14.09.2011, 13:34
#28
Zaghim


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


Что-то не понял ничего))))) Выноска все таки в блоке будет или нет? Сейчас у меня в боке выноски есть атрибут, куда я пихаю имя блока, к которому она принадлежит. С параметром Point внутри блока уже сталкивался... это не простой зверь, он показывает координаты внутри блока, а не координаты в чертеже.
Zaghim вне форума  
 
Непрочитано 14.09.2011, 13:43
#29
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Zaghim, выноска будет вне блока, отдельно в чертеже. Если ты не работал с Extended Data, можешь работать и дальше
Цитата:
Сообщение от Zaghim Посмотреть сообщение
боке выноски есть атрибут, куда я пихаю имя блока, к которому она принадлежит
но лучше как я написал, и не "имя блока" а его Handle.
Цитата:
Сообщение от Zaghim Посмотреть сообщение
он показывает координаты внутри блока, а не координаты в чертеже
Верно, тебе это и надо. Будешь от точки вставки блока, трубы к примеру, находить место вставки выноски этого блока полярным смещением.
5hev вне форума  
 
Непрочитано 14.09.2011, 14:02
#30
Neo_

матрица
 
Регистрация: 06.04.2006
Сообщений: 401


Я дилетант, но вроде была такая функция чтобы найти объект в заданном радиусе поиска и определенного типа слоя итп. Нашли и ляпнули как точку (мнимого-) пересечения этой линии с вашей выноской. ???
Neo_ вне форума  
 
Автор темы   Непрочитано 14.09.2011, 14:18
#31
Zaghim


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


Neo_ - это все понятно, а представь блок диффузора. Его увеличили, а ты линию пустил и она уперлась во что-нибудь внутри блока)) не вариант...
5hev[ru], ну а смысл тогда делать такую точку? Я могу это все и формулами рассчитать. Я знаю прошлое его состояние и нынешнее и точку вставки...Что мне считать от точки вставки, что от другой точки... выноска то где угодно может быть
Zaghim вне форума  
 
Непрочитано 14.09.2011, 14:30
#32
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Zaghim, по-моему ты как раз не можешь этого рассчитать.
Цитата:
Сообщение от Zaghim Посмотреть сообщение
что бы единым методом определять смещение...вот это в корне не понимаю как сделать(((
Я тебе описал этот единый метод. Что не так?
5hev вне форума  
 
Автор темы   Непрочитано 14.09.2011, 14:49
#33
Zaghim


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


5hev[ru], блоки разные и смещения относительно параметра точка нужно будет рассчитывать разными формулами... по-моему так.

Попутный вопрос немного не в тему. Бывает точка в нуле отображается 0.0 и еще бывает 3.1555е-14, что по сути тоже 0... при сравнении они получаются не равны... как сделать что бы такие мелкие числа лисп определял как 0?
Zaghim вне форума  
 
Непрочитано 14.09.2011, 14:52
1 | #34
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Zaghim Посмотреть сообщение
в нуле отображается 0.0 и еще бывает 3.1555е-14, что по сути тоже 0... при сравнении они получаются не равны...
Код:
[Выделить все]
(equal 0.0 3.1555e-14 1e-6)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.09.2011, 14:52
1 | #35
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Zaghim, блоки разные, и если в них будет этот параметр который будет олицетворять собой смещение относительно точки вставки блока, то никаких расчетов тебе вообще не понадобится.


Цитата:
Сообщение от Zaghim Посмотреть сообщение
как сделать что бы такие мелкие числа лисп определял как 0?
Ну попробуй условие задать если меньше 0,01 то 0
VVA, как молния!
5hev вне форума  
 
Автор темы   Непрочитано 14.09.2011, 15:15
#36
Zaghim


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


5hev[ru], можешь выложить блок с параметром о котором ты говоришь...я что-то не то понимаю(
Zaghim вне форума  
 
Непрочитано 14.09.2011, 15:25
#37
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Вот смотри.
Вложения
Тип файла: dwg
DWG 2007
fDrKl3.dwg (391.6 Кб, 871 просмотров)
5hev вне форума  
 
Автор темы   Непрочитано 14.09.2011, 15:45
#38
Zaghim


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


5hev[ru], хм....только наверно ты забыл сделать так, что бы при увеличении блока эта точка двигалась с ним.
Получается, что когда я вставил выноску, мне нужно вначале перенести эту точку к выноске, потом при изменении так же высчитывать куда она убежала... блин, не знаю, не знаю... попробую пошаманить
Zaghim вне форума  
 
Непрочитано 14.09.2011, 15:49
#39
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Zaghim, на твое усмотрение
PS. Переносишь точку куда хочешь, потом программно все выноски обновляются.
5hev вне форума  
 
Автор темы   Непрочитано 14.09.2011, 15:56
#40
Zaghim


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


Да тут палка о двух концах... ладно, спасибо... бум думать)
Zaghim вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp. Автоматическая перерисовка выносок

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Autolisp Отрисовка и перерисовка объектов как в MagiCad Zaghim LISP 10 01.12.2010 14:54
Как отладить нейтив и менеджед код в COM объекте который используется из AutoLISP? lexluther LISP 1 12.08.2009 08:37
Разрыв в месте пересечения линий выносок Zorroko Конструкции зданий и сооружений 7 20.02.2009 18:42
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35