;;;可导出桩号的代码
(defun C:GM (/ cur pt fi mile)
;;自定义错误处理函数
(defun myerror (s)
(if (and (/= s "函数被取消")
(/= s "函数已取消")
(/= s "Function cancelled")
(/= s "quit / exit abort")
)
(princ (strcat "错误:" s))
)
(if fi (setq fi (close fi)))
(setq *error* olderror)
(command "UNDO" "END")
(setvar "CMDECHO" 1)
(princ)
)
;;系统变量设置
(setvar "cmdecho" 0)
(setq olderror *error*
*error* myerror
)
(while (not cur)
(princ "\n请选择曲线:")
(setq cur (car (entsel)))
(if cur (setq cur (vlax-ename->vla-object cur)))
)
(setq fi (open "D:\\桩号.txt" "w"))
(while (not pt)
(setq pt (getpoint))
(if (not pt) (exit))
(setq pt (vlax-curve-getClosestPointTo cur pt T))
(setq mile (rtos (vlax-curve-getDistAtPoint cur pt) 2))
(princ (strcat "\n桩号 = " mile))
(write-line mile fi)
(setq pt nil)
)
(iffi (setq fi (close fi)))
;;还原系统变量
(setq *error* olderror)
(setvar "CMDECHO" 1)
(princ)
)