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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Невнятное поведение elevation

Невнятное поведение elevation

Ответ
Поиск в этой теме
Непрочитано 18.04.2006, 11:19 #1
Невнятное поведение elevation
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 40,406

Мозгов у меня уже не хватат ни в какую. Суть прикола в следующем:
Для приложенного файлика некорректно срабатывает применение Z-координаты в 0 (что лиспом, что руками) - объекты съезжают черт-те куда.
Применял лисп как flatten2 (который настолько плохо себя не вел никогда), который просто двигает все примитивы на 1e99 вверх а потом вниз, так и собственные попытки прямого изменения координат точек элементов, результат отвратный, если честно.
Собственно вопросов несколько:
1. Почему происходит смещение объектов в плоскости x0y при изменении Z?
2. Почему элементарный _.move по вертикали вообще бог знает что творит?
3. Изменение OCS любым методом (через subst, vla-put-normal - по барабану) приводит к смещению объектов к 0,0,0 WCS

Неужели надо брать все типы примитивов, для них брать (entget) и менять последовательно группы точек? Или еще как-то? Я ж повешусь!
[ATTACH]1145344796.zip[/ATTACH]
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 3121
 
Непрочитано 18.04.2006, 11:36
#2
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,342


>kpblc
напиши что надо сделать и с каким объектом, я никаких артефактов не заметил :? двигается нормально, Z обнуляется без проблем
asys вне форума  
 
Автор темы   Непрочитано 18.04.2006, 11:55
#3
Кулик Алексей aka kpblc
Moderator

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


> Asys : Прозуммируй до горизонтальной стены (внизу которая) между осями 5с и 7с, например. Выбери эту плиту и поменяй ей Z. Я тоже опплевался.
Дополнительно: объекты не все отрисованы в мировой системе! Я уже и до такого дошел:
Код:
[Выделить все]
(defun z->0 (/ *kpblc-activedoc*)
  (vl-load-com)
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark *kpblc-activedoc*)
  (vlax-for item (vla-get-blocks *kpblc-activedoc*)
    (vlax-for sub_item (vla-item (vla-get-blocks *kpblc-activedoc*)
				 (vla-get-name
				   item
				   ) ;_ end of vla-get-name
				 ) ;_ end of vla-item
      (if (vlax-property-available-p sub_item 'normal t)
	(progn
	  (vla-put-elevation sub_item 0.0)
	  (vla-put-normal sub_item (vlax-3d-point '(0.0 0.0 1.0)))
	  (vla-regen *kpblc-activedoc* acactiveviewport)
	  ) ;_ end of progn
	) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of vlax-for
  (vla-endundomark *kpblc-activedoc*)
  ) ;_ end of defun
По барабану. Все одно плывет черт-те куда - меняй строки, не меняй...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.04.2006, 11:59
#4
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


>kpblc

Аналогично Asys. Flatten работает.

AutoCAD 2004. СПДС - отсутствует
Хмурый вне форума  
 
Автор темы   Непрочитано 18.04.2006, 12:01
#5
Кулик Алексей aka kpblc
Moderator

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


Flatten сносит ширину полилиний, чего сделать как бы не очень можно. Да и тексты там будут... В общем, flatten мимо кассы
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.04.2006, 12:27
#6
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,342


:? м-да, задница какая-то, попробовал выставить в ноль по Z такое получил :shock: Этож как так чертить-та надо.
asys вне форума  
 
Автор темы   Непрочитано 18.04.2006, 12:30
#7
Кулик Алексей aka kpblc
Moderator

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


Что самое хреновое, так это то, что автора не притянешь на переделку. Типа крыс - программер? Программер. Вот и трахайся!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.04.2006, 12:43
#8
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


После Flatten
Ширина полилиний сохранилась
[ATTACH]1145349795.rar[/ATTACH]
Хмурый вне форума  
 
Непрочитано 18.04.2006, 12:48
#9
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,342


там и размеры проставлены странно, вроде в мировой а точки и текст размера по Z на разных отметках. Я пытался ноги притянуть - ругается что не в плоскости :shock: но ведь поставили же как-то
asys вне форума  
 
Непрочитано 18.04.2006, 12:55
#10
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


Реакция на 3D-Orbit

'_3dorbit
** Orbit commands cannot be used at this scale **
Хмурый вне форума  
 
Непрочитано 18.04.2006, 12:58
#11
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,342


Цитата:
Сообщение от Хмурый
Реакция на 3D-Orbit

'_3dorbit
** Orbit commands cannot be used at this scale **
хе-хе, еще и zoom extence попробуй найди
asys вне форума  
 
Автор темы   Непрочитано 18.04.2006, 13:01
#12
Кулик Алексей aka kpblc
Moderator

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


> Хмурый : А скрытые ты не удалял, я так понимаю?
> Asys : Да это-то ладно, там мне удалось отредактировать эти размеры.
---
Всем спасибо, что откликнулись. Тему пока можно и прикрыть.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.04.2006, 13:09
#13
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


Да, без удаления
Хмурый вне форума  
 
Автор темы   Непрочитано 18.04.2006, 14:03
#14
Кулик Алексей aka kpblc
Moderator

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


Цитата из аськи:
Цитата:
Сообщение от "Елпанов Евгений
Код:
[Выделить все]
(defun c:test (/ LST N SSET X X1)
  (if (setq SSET (ssget "_X" '((0 . "LWPOLYLINE"))))
    (foreach x (mapcar
           (function vlax-ename->vla-object)
           (vl-remove-if
             (function listp)
             (mapcar (function cadr) (ssnamex sset))
           ) ;_ vl-remove-if
            ) ;_  mapcar
      (setq
     n   (vlax-safearray->list
           (vlax-variant-value (vla-get-normal x))
         ) ;_  vlax-safearray->list
     e (vla-get-elevation x)
     lst (apply 'append
             (mapcar '(lambda (x)
                     ((lambda (x1) (list (car x1) (cadr x1)))
                    (trans (list (car x)(cadr x)e) 0 (trans '(0. 0. 1.) n 0))
                     )
                   ) ;_  lambda
                  (2d-lw-pt (vlax-safearray->list
                           (vlax-variant-value (vla-get-coordinates x))
                         ) ;_  vlax-safearray->list
                  )
             ) ;_  mapcar
         ) ;_  apply
      ) ;_  setq
      (vla-put-Coordinates
     x
     (vlax-safearray-fill
       (vlax-make-safearray vlax-vbDouble
                      (cons 0 (1- (length lst)))
       ) ;_  vlax-make-safearray
       lst
     ) ;_  vlax-safearray-fill
      ) ;_  vla-put-Coordinates
      (vla-put-elevation x 0.)
      (vla-put-normal x (vlax-3d-point 0. 0. 1.))
      (vla-update x)
    ) ;_  foreach
  ) ;_  if
) ;_  defun
(defun 2d-lw-pt (lst)
    (if lst
      (cons (list (car lst) (cadr lst)) (2d-lw-pt (cddr lst)))
    ) ;_  if
  )
(c:test)
Пересчитывает все полилинии в мировую систему.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Невнятное поведение elevation