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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Можно ли лиспом определить контур подрезки для повернутого / перемещенного блока?

Можно ли лиспом определить контур подрезки для повернутого / перемещенного блока?

Ответ
Поиск в этой теме
Непрочитано 01.12.2011, 00:14 #1
Можно ли лиспом определить контур подрезки для повернутого / перемещенного блока?
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 40,404

Скажу честно - информацию ищу уже больше 3 часов кряду. Единственное решение, которое нашел - на ObjectARX в ADN, а хочется именно на лиспе.
Суть в следующем: если создать блок, выполнить над ним _xclip, а потом этот блок переместить, скопировать или повернуть, то функция bg:block-getxclip из bgtools, или mip:block-GetXclip (http://forum.dwg.ru/showthread.php?t=30467), равно как и любой другой аналогичный лисп-код, возвращает координаты точек, которые были заданы для первоначального вхождения блока.
Можно как-нибудь все-таки получить контур подрезки модифицированного блока?
Спасибо.

Догадываюсь, что надо как-то трансформировать координаты, полученные из SPATIAL_FILTER, через матрицу, хранящуюся там же, но как-то фантазия кончилась вместе с соображалкой Поэтому прошу помощи.

---

Добавлено: очень хочется впустую не создавать примитивы - ни полилинии, ни точки, вообще всю работу выполнять в памяти. Если это, конечно, возможно...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 2086
 
Непрочитано 01.12.2011, 01:07
#2
Дима_

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


Немного не так - я с этим было уже сталкивался - там DXF SPATIAL_FILTER'а при перемещении не меняються - но в 40'ковых кодах лежит информация про то где было вхождение блока во время подрезки (ну типа x y и пр. - просто по отдельности в одной (40 . старый_X), (40 . старый_Y), 210 (изначальный) тоже на 3 пары раскинут итд).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 01.12.2011, 01:43
#3
Кулик Алексей aka kpblc
Moderator

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


Там лежит т.н. "обратная матрица", но как с ней работать - что-то никак не соображается.
Offtop: Сильно хочется халявы
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.12.2011, 01:49
#4
Дима_

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


да как как - вычитаешь из текущего х блока старый x, из y y 210 соответственно - там все просто-же.
Offtop: Халява - так transormby
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 01.12.2011 в 02:10.
Дима_ вне форума  
 
Непрочитано 01.12.2011, 11:25
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Алексей, пока нет времени плотно заняться этим. Но я нашел вот что:
Цитата:
;;---------------=={ Block Def -> Block Ref }==---------------;;
;; ;;
;; Returns the Transformation Matrix and Translation Vector ;;
;; for transforming Block Definition Geometry to a Block ;;
;; Reference. ;;
;;------------------------------------------------------------;;
;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;; Arguments: ;;
;; e - Block Reference Entity ;;
;;------------------------------------------------------------;;
;; Returns: List of 3x3 Transformation Matrix, Vector ;;
;;------------------------------------------------------------;;

(defun LM:Def->Ref ( e / _dxf a l n )
Цитата:
;;---------------=={ Block Ref -> Block Def }==---------------;;
;; ;;
;; Returns the Transformation Matrix and Translation Vector ;;
;; for transforming Block Reference Geometry to the Block ;;
;; Definiton. ;;
;;------------------------------------------------------------;;
;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;; Arguments: ;;
;; e - Block Reference Entity ;;
;;------------------------------------------------------------;;
;; Returns: List of 3x3 Transformation Matrix, Vector ;;
;;------------------------------------------------------------;;

(defun LM:Ref->Def ( e / _dxf a l n )
Цитата:
;****************************************************************************************************
; Written By: Peter Jamtgaard copr 2009
; Function for transforming a point from block object coordinate system to a world coordinate system.
; It handles non uniform scaled blocks
; Syntax: (TranslateWorldToObject <block object> <point in world>)
; Syntax (TranslateObjectToWorld <block object> <point inside block>)
; Returns point in World
;****************************************************************************************************
Все это лежит здесь и здесь
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 01.12.2011, 11:49
#6
Кулик Алексей aka kpblc
Moderator

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


Спасибо, погляжу
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.12.2011, 09:40
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Алексей, набрел еще на это
Xref - Change Attachment Method
При беглом просмотре там есть то, что тебе нужно
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 07.12.2011, 08:53
#8
Кулик Алексей aka kpblc
Moderator

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


Спасибо, гляну. Пока что задачка отодвинулась, потому и не форсирую решение
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Можно ли лиспом определить контур подрезки для повернутого / перемещенного блока?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как программно можно определить координату ручки динамического блока? Composter Программирование 4 30.11.2011 19:07