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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как пересчитать точки 3D-объекта в 2D?

Как пересчитать точки 3D-объекта в 2D?

Ответ
Поиск в этой теме
Непрочитано 06.04.2023, 14:11 #1
Как пересчитать точки 3D-объекта в 2D?
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 627

Всем привет!

В Модели есть объект /значения реальные/:

((-1 . <Имя объекта: 7ff4abf44ca0>) (0 . "LWPOLYLINE") (330 . <Имя объекта: 7ff4abf069f0>) (5 . "A25B2") (100 . "AcDbEnt
ity") (67 . 0) (410 . "Model") (8 . "СПДС_тонкие") (62 . 5) (6 . "Continuous") (48 . 50.0) (100 . "AcDbPolyline") (90 .
2) (70 . 0) (43 . 0.0) (38 . 29161.5) (39 . 0.0) (10 44849.4 4.85667e+083) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10
45599.1 4.85667e+083) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.857493 0.514496 0.0))

Концы этой полилинии зрительно в МСК попадают на точки (примерно):

(1545 54103.1) и (1931 53461.4)

Как получить их Лиспом?
__________________
Счастливо, Алексей!
Просмотров: 1031
 
Непрочитано 06.04.2023, 14:35
#2
Кулик Алексей aka kpblc
Moderator

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


DXF Reference - LWPOLYLINE - группа 10.
Фильтруешь по 10 группе и к каждому элементу - cdr
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.04.2023, 15:37
#3
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Дык если бы... Это когда она плоская и лежит себе спокойно.
А эту-то вон как перекорёжило. А на экране - линия и линия.
Тонкая. Синяя.

Акцентирую - нужно получить точки проекции на плоскость (1 1 0),
т.е. "зрительные".
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 06.04.2023 в 15:54.
===AAA=== вне форума  
 
Непрочитано 06.04.2023, 16:20
1 | #4
Кулик Алексей aka kpblc
Moderator

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


Тогда - 38 группа (насколько я помню) плюс trans из ОСК в МСК
Код:
[Выделить все]
                                            ;|
*    Функция получения координат легкой полилинии (LWPOLYLINE) в WCS. Возвращает
* список 3Д-точек
*    Автор: BOZ (http://www.autocad.ru/cgi-bin/f1/board.cgi?t=26461HC)
*    Оригинальный код:
(defun lwpoly_vert (lwpoly / plinee elev vnv)
  (setq  plinee (entget lwpoly)
  elev   (cdr (assoc 38 plinee))
  vnv    (cdr (assoc 210 plinee))
  ) ;_ end of setq
  (mapcar
    (function (lambda (x) (trans (list (cadr x) (caddr x) elev) vnv 0)))
    (vl-remove-if-not (function (lambda (x) (= (car x) 10))) plinee)
    ) ;_ end of mapcar
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.04.2023, 09:18
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


То, что нужно!

А через (vla-set …) МСК установить можно?

Чтобы вместо

(command-s "_.ucs" "")
__________________
Счастливо, Алексей!
===AAA=== вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как пересчитать точки 3D-объекта в 2D?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос из среды 3D в 2D maxiJ AutoCAD 4 23.05.2012 01:30
Проблема при преобразовании 2D полилинии в 3D AlexeySh Вертикальные решения на базе AutoCAD 5 31.03.2012 19:34
Нахождение точки пересечения на 3D сети Electa AutoCAD 15 16.12.2008 18:36
Нужно узнать координаты каждой точки 3D модели Babun AutoCAD 8 14.10.2008 08:38
как в CIVIL 3D точки нанесенные в 3-ке - перенести в точки п maksimys AutoCAD 3 23.08.2007 14:13