具体说明如下:
使用AutoCAD绘制的线性地图(类似googlemap的样子),将其中的图形数据读出,
生成指定的矢量图形格式。
然后导出的矢量图形用于二次开发,最后在web页面中显示图形输出。
望详解!
[b]问题补充:[/b]
具体说明如下:
使用AutoCAD绘制的线性地图(类似googlemap的样子),将其中的图形数据读出,
生成指定的矢量图形格式。
然后导出的矢量图形用于二次开发,最后在web页面中显示图形输出。
望详解!
主要是用于web的矢量图形格式,理想格式是svg。
目前发现一国外转换工具,但注册费很贵,求开源方案
N年以前的autocad可以导出一种文本格式,另存为就可以。但是现在已经忘记是什么扩展名了。从这种文件中可以看出矢量图的格式。我们那个时候做GIS,将autocad文件生成我们自己的gis图形文件。你可以试试,这个功能应该还保留着,分析这个文本文件当然是很艰苦的事情,但是可以从文档中找到一些提示。那时候我们做成了,可惜这个项目因为架构的原因搁浅了。
楼主的这个问题使我想起了当年编程的时候...
这里估计没人会这个吧
记得用AutoCAD的时候是2.6版本,开发是用LISP语言,现在都不知道发展到哪个版本了。
通过LISP可以操作AutoCAD很多绘制的东西,现在的新版本里应当会对这个进行增强了吧。
不太理解这个怎么就难了,用得少。
参见
http://www.citt.org.cn/Article.aspx?AID=49e59aa6-b2ec-4534-8d61-58264887ad03
save as
export
选你需要的格式
用下DWF格式
常规条件下,通过数字化桌配合数字化软件,实现地质平面图或剖面图的坐标点数据采集,由于这种手工数字化方式费时费力, 数据差错率高,效率低,推广使用受到限制,一种可以替代数字化桌的地质图形屏幕数字化技术,以其快捷、高效和自动化的特点,显示出较强的实用性。
我们知道,在AutoCAD环境下,不管是通过数字化仪对地质图形数字化生成的矢量图形,还是直接绘制的地质图形,都不能自动输出等值线、断层的采集点(节点)标准坐标数据文本文件,而地质专业人员往往需要获取这些数据及其标准文本文件,以实现与工作站的油藏数模等地质绘图系统完全数据文件格式交换。
为满足这一需要,笔者采用AutoLisp语言编程技术,设计了AutoCAD矢量图形等值线或断层的采集点(节点)标准坐标数据文本文件生成程序,配合AutoCAD已具有的通过数字化桌数字化生成矢量图形的功能,不仅可以在AutoCAD环境下的输出具有实际坐标概念的地质矢量图形文件,又可生成其采集点(节点)标准坐标数据文本文件,并可根据AutoCAD已有功能对不同比例的地质矢量图形达到求解圈闭实际含油面积、油(气)井间距的功能。
该程序getlwpn.lsp 要求用户选定对象,然后自动过滤识别选区内的多义线,将获取的每条多义线的每个节点坐标由对象坐标系统(OCS)转换为世界坐标系统(WCS),实现节点坐标数据屏幕打印和以文本文件格式的自动保存。
程序运行方法:启动AutoCAD,选择菜单“Tools” “Load application…” ,加载getlwpn.lsp程序,在命令行键入“getlwpoly”,提示用户选择对象,然后出现保存文件对话框,并提示用户确定用于保存节点标准坐标数据的*.txt文本文件。选取范围确定后,命令窗口中每行将以“Li X Y Z”格式显示选定的每条多义线的每个节点坐标数据,其中Li(i=0,1……n-1,n为选定多义线数目)为多义线名,X Y Z分别代表该多义线某个节点X Y Z坐标数据;同时,节点标准坐标数据保存在用户指定的*.txt文本文件中。
以下为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)
)
导成HP的点阵图格式试试