|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
08.06.2005, 14:33 | #1 | |
LISP: как задать нормаль
Штаб
Регистрация: 21.08.2003
Сообщений: 943
|
||
Просмотров: 8185
|
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Всегда чё-то так туго до меня доходит, но может быть
что-то вроде: (setq B (vlax-ename->vla-object (car (entsel "\nSelect line\n"))) norm (vla-get-normal B) val_norm (vlax-get B 'Normal)) (alert (vl-prin1-to-string val_norm)) (setq A (vlax-ename->vla-object (car (entsel"\nSelect object\n")))) (setq norm2 (vla-get-normal A) val_norm2 (vlax-get A 'Normal))) (alert (vl-prin1-to-string val_norm2)) (vla-put-normal A norm) (vla-update A) (alert (vl-prin1-to-string (vlax-get A 'Normal))) Только не забудь что объект потом нужно будет двигать поскоку он будет улетать если не привязан крепко к линии Happy computing Fatty |
|||
|
||||
Регистрация: 21.08.2003
Штаб
Сообщений: 943
|
>>Fatty
Программа не пашет На строчке (vla-put-normal A norm) выдает ошибку "Несовпадение типов" (интересно почему на русском?) >>AY Теперь понятно. Спасибо Вообще я хочу сделать следущее: На рис. 1 - исходная ситуация: [ATTACH]1118234946.jpg[/ATTACH] |
|||
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Согласен, не досмотрел насчет ситуации
когда объект - регион (if (not (vl-catch-all-error-p (setq result (vl-catch-all-apply (function (lambda () (vla-put-normal A norm))))))) T (vl-catch-all-error-message result)) > "ActiveX Server returned an error: Несовпадение типов" И тут с регионом не пролазит: (demo)> "ActiveX Server returned an error: Несовпадение типов" Счас принесут пиво - будем думать... |
|||
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Невнимательно смотрел список свойств (дуйствительно Alaspher)
Полез уже было в дебри пришлось кропать свою функцию, чтобы проверить свойство Normal для объекта Region (для нашего случая) удивительно, но свойство не подлежит модификации Видно пиво невовремя... (defun check-prop-modify (obj prop) (if (and (vlax-property-available-p obj prop) (null (vlax-property-available-p obj prop T)) ) nil T ) ) TesT: (my-check-prop-modify A "normal");->nil оба-на? Похоже что maestro Alaspher is absolutely right |
|||
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Чёй-то не могу отловить ашипку хотя и выравнивает вроде
но смещает нет времени после пива видно нужно транлировать точки но кажись нуно в этом мняправлении... (defun test#bad (/ ) (vl-load-com) (setq adoc (vla-get-activedocument (vlax-get-acad-object) ) appd (vla-get-application adoc) ) (vla-startundomark adoc) (if (and (setq b (vlax-ename->vla-object (car (entsel "\nselect line\n")) ) ) (setq a (vlax-ename->vla-object (car (entsel "\nselect object\n")) ) ) ) (progn (setq p1 (vla-get-startpoint b) po (trans (vlax-get b 'Startpoint) 1 0 t) pd (vlax-get b 'Endpoint) p2 (vla-get-endpoint b)) (vl-cmdf "ucs" "m" po) (setq norm1 (vlax-get a "normal") norm2 (vlax-get b "normal") ang (- (angle norm2 norm1))) (setq matx (list (list (cos ang) (- (sin ang)) 0 (car po)) (list (sin ang) (cos ang) 0 (cadr po)) (list 0 0 1 (caddr po)) (list 0 0 0 1) ) ) (setq txm (vlax-tmatrix matx)) (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda ()(vla-transformby a txm)))))) (vla-update a) (princ "Объект выровнен но перемещен! ")) (princ "Чёй-то глючит! ")) (vl-cmdf "ucs" "w") (vla-zoomall acapp) (vla-endundomark adoc) (princ) ) |
|||
|
||||
Регистрация: 21.08.2003
Штаб
Сообщений: 943
|
>>Alaspher
Упс... Не пашет. Опять "несовпадение типов" на (vla-put-normal). >>Fatty Что-то делает, а что - не понятно. В результате получаем следущее: [ATTACH]1118298511.jpg[/ATTACH] Т.е. нормаль региона не совпадает с направлением отрезка. |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
|
|||
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Скинь мне на мыло этот кусок в виде DWG
[email protected] мое мыло закончилось это моего отпрыска Fatty |
|||
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
>>Torino
Наздоровье , только имей ввиду, что код детально не тестировался и не имеет никакой защиты от пользовательских ошибок. >>Fatty Сам-то код достаточно простой, если помнить геометрию :wink: (мне пришлось пару раз в справочник глянуть). А грызть..., это да - долго грызу. |
|||