你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
AutoCAD环境下实现地质图形自动屏幕数字化功能
 

 常规条件下,通过数字化桌配合数字化软件,实现地质平面图或剖面图的坐标点数据采集,由于这种手工数字化方式费时费力, 数据差错率高,效率低,推广使用受到限制,一种可以替代数字化桌的地质图形屏幕数字化技术,以其快捷、高效和自动化的特点,显示出较强的实用性。

我们知道,在AutoCAD环境下,不管是通过数字化仪对地质图形数字化生成的矢量图形,还是直接绘制的地质图形,都不能自动输出等值线、断层的采集点(节点)标准坐标数据文本文件,而地质专业人员往往需要获取这些数据及其标准文本文件,以实现与工作站的油藏数模等地质绘图系统完全数据文件格式交换。

为满足这一需要,笔者采用AutoLisp语言编程技术,设计了AutoCAD矢量图形等值线或断层的采集点(节点)标准坐标数据文本文件生成程序,配合AutoCAD已具有的通过数字化桌数字化生成矢量图形的功能,不仅可以在AutoCAD环境下的输出具有实际坐标概念的地质矢量图形文件,又可生成其采集点(节点)标准坐标数据文本文件,并可根据AutoCAD已有功能对不同比例的地质矢量图形达到求解圈闭实际含油面积、油()井间距的功能。

    该程序getlwpn.lsp 要求用户选定对象,然后自动过滤识别选区内的多义线,将获取的每条多义线的每个节点坐标由对象坐标系统(OCS)转换为世界坐标系统(WCS),实现节点坐标数据屏幕打印和以文本文件格式的自动保存。

程序运行方法:启动AutoCAD,选择菜单“Tools   Load application…” ,加载getlwpn.lsp程序,在命令行键入“getlwpoly”,提示用户选择对象,然后出现保存文件对话框,并提示用户确定用于保存节点标准坐标数据的*.txt文本文件。选取范围确定后,命令窗口中每行将以“Li X Y Z”格式显示选定的每条多义线的每个节点坐标数据,其中Lii=0,1……n-1,n为选定多义线数目)为多义线名,X Y Z分别代表该多义线某个节点X Y Z坐标数据;同时,节点标准坐标数据保存在用户指定的*.txt文本文件中。

1  文本文件保存窗口

2  getlwpn.lsp程序运行窗口


 


 

 

 

3  形成的节点坐标文本文件文件窗口

 


以下为getlwpn.lsp程序清单:

        ; getlwpn.lsp

 

(defun c:getlwpoly ( / ss lwpolycounter counter ename ent

listlength elementcounter

            kind OCSpoint WCSpoint string f q)

; 要求用户选定多义线

(princ "\nSelect LWPolylines: ")

(setq ss (ssget '((0 . "LWPOLYLINE"))))

(if (equal ss NIL)

(exit) ; 没有选择对象或已取消

)

(setq lwpolycounter (sslength ss) ; 多义线数

counter 0)

(setq q " ")

(if (and jdzb (findfile jdzb))

            (setq jdzb (getfiled "保存为..." jdzb "txt" 1))

            (setq jdzb (getfiled "保存为..." "" "txt" 1))

        )

(while (/= counter lwpolycounter)

(setq f (open  jdzb "w"))

 

; 获得单个多义线

(setq ename (ssname ss counter)

ent (entget ename)

listlength (length ent)

elementcounter 0)

 

; 从多义线清单中获得每个元素

(while (< elementcounter listlength)

 

; 从清单中获得一个元素

(setq element (nth elementcounter ent)

    kind (car element))

    (if (equal kind 10)

   

; 该元素所含的坐标

    (progn

  

 ; 获取坐标 (OCS系统)

    (setq OCSpoint (list (nth 1 element) ; x坐标

    (nth 2 element) ; y坐标

0)) ; z坐标

   

    ; 将它们转为 WCS系统

    (setq WCSpoint (trans OCSpoint ename 0))

   

    ; 显示坐标

    (write-char 10 )

   

    (setq string (itoa counter))

    (setq string (strcat "L" string))

    (setq string (strcat string " " (rtos (nth 0 WCSpoint))))

    (setq string (strcat string " " (rtos (nth 1 WCSpoint))))

    (setq string (strcat string " " (rtos (nth 2 WCSpoint))))

    (write-line string)

    (setq string (strcat q "\n" string))

    (setq q string)

     

    )

    )

(setq elementcounter (1+ elementcounter))

)

 

; 转到下一个选定的多义线

(setq counter (1+ counter))

 (write-line q f) 

(close f)

 

; 打印空行

(write-char 10)

)

 

;释放选择设置

(setq ss NIL)

(princ "\nReady.")

(princ)

)

 

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089