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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как выбрать примитив в модели находясь в листе и не активировав видовой экран?

LISP. Как выбрать примитив в модели находясь в листе и не активировав видовой экран?

Ответ
Поиск в этой теме
Непрочитано 01.04.2016, 12:30 #1
LISP. Как выбрать примитив в модели находясь в листе и не активировав видовой экран?
Krieger
 
инженер (КМ)
 
Красноярск
Регистрация: 30.10.2004
Сообщений: 3,825

Можно ли как то выбрать (entsel) примитив в модели находясь в листе через неактивный видовой экран? Нужно для простановки позиций по 3d в пространстве листа.
__________________
Делай хорошо, плохо само получится.
Просмотров: 2312
 
Непрочитано 01.04.2016, 12:40
1 | #2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Можно попробовать так:
- Указать точку в листе
- Определить, какой видовой экран в этой точке
- Транслировать указанную точку в модель
- В модели найти объект в этой точке
Или на время выбора объекта активировать видовой экран, а после - деактивировать.
На 100% не уверен, что все что я описал возможно на LISP.
P.S. кстати, теперь вроде надо в соответствующем разделе темы создавать: http://forum.dwg.ru/forumdisplay.php?f=61
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 01.04.2016, 12:52
#3
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
- Указать точку в листе
- Определить, какой видовой экран в этой точке
- Транслировать указанную точку в модель
- В модели найти объект в этой точке
Объекты выбираются ведь не точкой. При выборе курсор превращается в квадратик и выбирается по сути не по точке а по некой области курсора. Поэтому, если просто транслирую точку, то она ни в какой объект не попадет. Можно конечно выбрать ближайший к точке как то, но думаю могут быть ошибки.
Цитата:
Или на время выбора объекта активировать видовой экран, а после - деактивировать.
Ну вот тоже думаю как то так делать... Только желательно ткнуть один раз. А тут получается, сначала тыкаем в нужный ВЭ, потом по объекту. Или врубать как то реактор, который бы активировал бы ВЭ при наведении курсора.

Кстати, вручную делаю так:
Копирую и портирую модель в лист через chspace. Проставляю позиции, удаляю модель в листе. Позиции остаются на месте.
__________________
Делай хорошо, плохо само получится.

Последний раз редактировалось Krieger, 01.04.2016 в 13:08.
Krieger вне форума  
 
Автор темы   Непрочитано 04.04.2016, 08:32
#4
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Народ, подкиньте функцию пересчета координат из модели в лист через VP. Не могу одолеть этот trans.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 04.04.2016, 12:28
1 | #5
skkkk


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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Объекты выбираются ведь не точкой. При выборе курсор превращается в квадратик и выбирается по сути не по точке а по некой области курсора. Поэтому, если просто транслирую точку, то она ни в какой объект не попадет. Можно конечно выбрать ближайший к точке как то, но думаю могут быть ошибки.
А если использовать ssget, но метод не точки, а секущего прямоугольника. Я делал что-то подобное, поскольку (несмотря на утверждение Полещука) при выборе методом точки выбирается только один объект, который проходит через нее, а не все. Делал я так:
Код:
[Выделить все]
 (ssget "_C" (polar pt (/ pi 4) 0.01) (polar pt (/ (* 5 pi) 4) 0.01))
В твоем случае стало быть, нужно вместо 0.01 рассчитать размер рамки таким образом, чтобы в зависимости от переменной VIEWSIZE она (рамка) была размером с квадратик курсора.
В итоге вижу алгоритм примерно таким.
1. Запрос объекта (entsel).
2. Запоминаем точку указания.
3. Активируем видовой экран.
4. ssget.
5. Деактивируем ВЭ.
Только вот вопрос: что с этими выбранными объектами дальше делать? При деактивации ВЭ, думаю, с ними уже особо нечего не поделаешь, по крайней мере, командными методами.
Цитата:
Сообщение от Krieger Посмотреть сообщение
Не могу одолеть этот trans.
А в чем трудность с trans?
Проверить сейчас не могу, но кажется, должно сработать что-то такое:
Код:
[Выделить все]
 (trans pt 3 0)
Или нет?
skkkk вне форума  
 
Автор темы   Непрочитано 04.04.2016, 13:36
#6
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от skkkk Посмотреть сообщение
А в чем трудность с trans?
Проверить сейчас не могу, но кажется, должно сработать что-то такое:
Код:
[Выделить все]
(trans pt 3 0)
Или нет?
Выдает nil.
Вроде как надо (trans pt 2 3) но возвращает ошибочные координаты.

Цитата:
Только вот вопрос: что с этими выбранными объектами дальше делать? При деактивации ВЭ, думаю, с ними уже особо нечего не поделаешь, по крайней мере, командными методами.
Да не надо с ними ничего делать, в них просто зашита инфа, нужно её вытащить и поставить с ней выноску.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 04.04.2016, 15:16
1 | #7
VVA

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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Народ, подкиньте функцию пересчета координат из модели в лист через VP. Не могу одолеть этот trans.
Можно посмотреть здесь Viewport Outline и здесь the relation of point in modelspace and paperspace
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.04.2016, 16:08
1 | #8
skkkk


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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Вроде как надо (trans pt 2 3) но возвращает ошибочные координаты.
Ну да, я наспех подумал, что из мировой в лист надо. И писал по памяти, поэтому и сказал "что-то такое".
Попробовал я сейчас (trans pt 2 3) - вернуло правильно всё .
При этом я ("вручную") активировал ВЭ, задал точку в модели, затем деактивировал его и выполнил trans. Вернулась точка на листе, соответствующая точке модели. Что я делаю не так?

----- добавлено через ~9 мин. -----
Krieger, может, используется ПСК? И еще - в чем удобство ставить выноски в листе?
skkkk вне форума  
 
Автор темы   Непрочитано 05.04.2016, 10:27
#9
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


О, допер.

Во как надо:

Код:
[Выделить все]
(setq pt1 (trans (trans (getpoint) 0 2) 2 3))
(command "PSPACE")
(command "_point" pt1)
Или так:

Код:
[Выделить все]
(setq pt1 (trans (getpoint) 2 3))
(command "PSPACE")
(command "_point" (trans pt1 0 2))
Спасибо.

Цитата:
И еще - в чем удобство ставить выноски в листе?
Моделька трехмерная и повернутая произвольно в пространстве. А выноски надо расставить на плоскости.

В принципе программку накидал. Захожу в ВЭ набираю команду, тыкаю по объекту, меняется пространство на лист, тыкаю место полки, меняется пространство на модель, снова тыкаю по объекту и т.д. Но работа только в пределах одного ВЭ.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как выбрать примитив в модели находясь в листе и не активировав видовой экран?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как повернуть на листе видовой экран модели на 90 градусов? andrey25 AutoCAD 33 05.11.2013 09:41
LISP. Как выбрать из текст на модели AutoCAD 2009/2012 число? yuryx LISP 16 13.04.2012 11:35
Видовой экран для модели??? scatler Программирование 27 17.06.2010 10:56
Видовой экран на листе Ztn AutoCAD 40 06.02.2009 00:31