•  
CESCogito, ergo sum
Мыслю, следовательно, существую
  •  
Новости сайта:

2020-04-30: Программа CES-Топо обновлена до версии 1.15.0
Новые модули


2020-03-23: Программа CES-Топо обновлена до версии 1.14.0
Новые модули


2020-02-12: Программа CES-Топо обновлена до версии 1.13.0
Изменения
В следующие модули добавлена возможность работы с поверхностью Civil (только для AutoCAD Civil 3D):

Все новости...



2014-04-24: Lisp и Autocad Civil 3D: как получить отметку Z с поверхности Civil.

Замечательная команда
(vlax-dump-object(vlax-ename->vla-object (car(entsel)))T)
позволяет исследовать методы и свойства объектов. Применив данную команду к поверхности Civil, среди прочих видим метод с интересным названием: FindElevationAtXY. Опробовав, убеждаемся в том что это то что нам нужно. Однако, есть незадача: метод возвращает ошибку и прерывает работу Lisp-приложения, если координаты точки, отметку Z которой нужно узнать, находятся за пределами поверхности. Поэтому вызов метода нужно заключить в обработчик ошибок. И так, в окончательном виде функция для нахождения отметки Z по поверхности Civil и координатам XY примет вид:
(defun SURFACE_FindElevationAtXY (obj p / result)
(setq result (vl-catch-all-apply(function(lambda()(vlax-invoke-method (vlax-ename->vla-object obj) "FindElevationAtXY" (car p) (cadr p))))))
(if(vl-catch-all-error-p result)
(setq result 0.0)
); end if
result
); end defun
PS. Перед вызовом вышеописанной функции, равно как и перед вызовом vlax-dump-object... необходимо загрузить поддержку ActiveX командой
(vl-load-com)
Просмотров: 3041
Вернуться назад


  •  

Добавить комментарий

Ваше имя:

Ваше сообщение:



Для отправки сообщения введите код, который изображен на картинке:

Если Вы не можете прочитать код, обновите страницу.

Рейтинг@Mail.ru

При использовании материалов сайта ссылка на первоисточник обязательна!
Разработка сайта: cj_lex