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) Просмотров: 3278 Вернуться назад
|