工程测量内业中提取横断面线折点坐标数据并写入文件

在工程测量内业处理中,有时需将横断面线数据提取出来,横断面线关键点是以“偏轴距,高程”二维形式提取,使用时选择一条横断面线(多义线),指定横断面的基准点(通常是一个特别的交叉点及其在横断面中的坐标,一般选择断面轴线与某一已高程的点),程序将把断面线(多义线)的折点坐标逐点计算出对应于横断面的平面坐标写入文件。

(defun c:zzDMX ()
  (setvar "cmdecho" 0)
  (setq ffn (getfiled "选取文件" "d:/" "dmx" 1))
  (setq ff (open ffn "w"))
  (close ff)
  (setq secCount 0)
  (setq	cadPoint (cond ((= cadPoint nil) '(0.0 0.0))
		       (cadPoint)
		 )
  )
  (setq	secPoint (cond ((= secPoint nil) '(0.0 0.0))
		       (secPoint)
		 )
  )

  (setq	cadPoint (cond ((getpoint (strcat "请选取断面基准点<"
					  (rtos (car cadPoint) 2 3)
					  ","
					  (rtos (cadr cadPoint) 2 3)
					  ">:"
				  )
			)
		       )
		       (cadPoint)
		 )
  )
  (setq	secPoint (cond ((getpoint (strcat "请输入断面基准点断面坐标<"
					  (rtos (car secPoint) 2 3)
					  ","
					  (rtos (cadr secPoint) 2 3)
					  ">:"
				  )
			)
		       )
		       (secPoint)
		 )
  )
					;(setq secPoint (getpoint "请输入断面基准点断面坐标:"))
  (setq dltX (- (car secPoint) (car cadPoint)))
  (setq dltY (- (cadr secPoint) (cadr cadPoint)))
  (princ "\n顺序选取横断面线...")
  (setq ss (ssget))
  (setq i 0)
  (setvar "pdmode" 33)
  (repeat (sslength ss)
    (setq secCount (1+ secCount))
    (setq ff (open ffn "a"))
    (princ (strcat "第," (itoa secCount) ",根线\n") ff)
    (close ff)

    (setq ii 1)
    ;;输出点号

    (setq ssn (ssname ss i))
    (setq endata (entget ssn))
    (setq n 0)
    (repeat (length endata)
      (setq pp (nth n endata))
      (setq key (car pp))
      (if (= key 10)
	(progn
	  (setq x_temp (cadr pp))
	  (setq y_temp (caddr pp))
	  (setq x (rtos (+ x_temp dltX) 2 3))
	  ;;把x后小数点变为3位输出
	  (setq y (rtos (+ y_temp dltY) 2 3))
	  ;;把y后小数点变为3位输出
	  (setq iii (itoa ii))
	  (setq ff (open ffn "a"))
	  (princ iii ff)
	  (princ "," ff)
	  (princ x ff)
	  (princ "," ff)
	  (princ y ff)
					;(princ "," ff)
					;(princ "0 " ff)
	  (princ "\n" ff)
	  (close ff)
	  (setq ii (1+ ii))
	)
      )
      (setq n (1+ n))
    )
    (setq ii ii)
    (setq i (1+ i))
  )
  (princ (strcat "\n文件写至=> " ffn))
  (prin1)
)
(princ
  "\nQinDong qd@cehuis.com 2017.3,键入 zzDMX 运行本插件"
)