在这里,我修改了Lee的提交,以查看每个LWPolyline顶点的一个点,并从中获取高程,如果不是,则获取选定LWPolyline(在该顶点)的高程。
- ;;-------------=={ LWPolylines to 3D Polylines }==------------;;
- ;; ;;
- ;; Converts a selection of LWPolylines to 3D Polylines. ;;
- ;;------------------------------------------------------------;;
- ;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
- ;; Edited: Alan J. Thompson, 02.08.11 ;;
- ;;------------------------------------------------------------;;
- (defun c:LWpt3D (/ ss i elist z pt)
- (vl-load-com)
- ;; © Lee Mac 2011
- ;; Edited by: Alan J. Thompson, 02.08.11
- (if (setq ss (ssget "_:L" '((0 . "LWPOLYLINE"))))
- (repeat (setq i (sslength ss))
- (entmakex
- (append '((0 . "POLYLINE") (10 0. 0. 0.) (70 . )
- ;; AJT edit
- (vl-remove-if
- (function
- ;; AJT edit
- (lambda (pair) (member (car pair) '(0 10 38 40 41 42 43 70 90 91 100)))
- )
- (setq elist (entget (setq e (ssname ss (setq i (1- i))))))
- )
- )
- )
- (setq z (list (cdr (assoc 38 elist))))
- (while (setq elist (member (assoc 10 elist) elist))
- (entmakex
- (list
- (cons 0 "VERTEX")
- ;; AJT edit BEGIN
- (if (setq pt (ssget "_C"
- (trans (cdar elist) 0 1)
- (trans (cdar elist) 0 1)
- '((0 . "POINT"))
- )
- )
- (assoc 10 (entget (ssname pt 0)))
- (append (assoc 10 elist) z)
- )
- (cons 70 32)
- ;; AJT edit END
- (assoc 40 elist)
- (assoc 41 elist)
- (assoc 42 elist)
- )
- )
- (setq elist (cdr elist))
- )
- (entmakex '((0 . "SEQEND")))
- (entdel e)
- )
- )
- (princ)
- )
|