阅读:1720回复:1
[求助]提取图元坐标点到CAD中
我想将MAPINFO中的图形转换到cad中,用VB写的程序,为什么在CAD里的坐标跟MAPINFIO中的坐标不一样呢?
|
|
1楼#
发布于:2008-01-18 20:10
<P>这是我的代码:请大家帮我看看要怎么改才使得转换出来的坐标一至。</P>
<P>Private Sub Form_Load()<BR>Dim lj As String<BR>Dim X, y As Double<BR>Dim ysm, ddsm, sm As Integer<BR>Dim cz As String<BR>Dim dl As Integer<BR>Dim zzb() As Variant<BR>Dim fzb() As Double<BR>On Error Resume Next<BR> Dim iDo As Integer<BR> Dim acadDoc As AcadDocument<BR> Dim acadApp As New AcadApplication<BR> lj = "d:\sy\"<BR> Set acadApp = GetObject(, "AutoCAD.Application.16")<BR> If Err Then<BR> MsgBox "AUTOCAD图形软件未打开!"<BR> End<BR> End If<BR> If Err Then<BR> Err.Clear<BR> ' 创建一个新的AutoCAD应用程序对象<BR> Set acadApp = CreateObject("AutoCAD.Application.16")<BR> <BR> If Err Then<BR> MsgBox Err.Description<BR> Exit Sub<BR> End If<BR> End If<BR> <BR> ' 显示AutoCAD应用程序<BR> acadApp.Visible = True<BR> Set acadDoc = acadApp.ActiveDocument<BR> Dim ty As AcadLWPolyline<BR>Dim MapInfo As New MapInfoApplication<BR>Set MapInfo = CreateObject("MapInfo.Application")<BR>MapInfo.Do "Set CoordSys Earth Projection 9, 104, " ; _<BR> """m"", 0, 0, 0, 0, 0, 0"<BR>'MapInfo.Do "Set CoordSys Earth Projection 0, 10"<BR>MapInfo.Do "Open Table """ ; lj ; "\aa.tab"""<BR>ysm = MapInfo.Eval("TableInfo(aa," ; TAB_INFO_NROWS ; ")") '图元个数<BR>ReDim zzb(ysm - 1) As Variant<BR>MapInfo.Do "Fetch First From aa"<BR>For i = 0 To ysm - 1<BR>'Do While Not EOT(aa)<BR>'Counter = MapInfo.Eval("ObjectInfo(aa.obj, OBJ_INFO_NPOLYGONS)")<BR> ddsm = MapInfo.Eval("ObjectInfo(aa.obj," ; OBJ_INFO_NPOLYGONS ; ")")<BR>For j = 1 To ddsm<BR> sm = MapInfo.Eval("ObjectInfo(aa.obj," ; OBJ_INFO_NPOLYGONS + 1 ; ")")<BR> ReDim fzb(sm * 2 - 1)<BR> 'For k = 1 To sm - 1<BR> For k = 1 To sm<BR>fzb(k * 2 - 2) = MapInfo.Eval("ObjectNodeX(aa.obj, " ; j ; "," ; k ; ")") ' read longitude<BR>'X2 = MapInfo.Eval("ObjectNodeX(aa.obj, 1, ObjectInfo(aa.obj, 20))") ' read longitude<BR>fzb(k * 2 - 1) = MapInfo.Eval("ObjectNodeY(aa.obj, " ; j ; ", " ; k ; ")") ' read latitude<BR>'Y2 = MapInfo.Eval("ObjectNodeY(aa.obj, 1, ObjectInfo(aa.obj, 20))") ' read latitude<BR>iDo = DoEvents()<BR>Next k<BR>Set ty = acadDoc.ModelSpace.AddLightWeightPolyline(fzb)<BR>Next j<BR>'zzb(i) = fzb<BR>'cz = MapInfo.Eval("aa.cz")<BR>'dl = MapInfo.Eval("aa.dl")<BR>'Print "村组: " + cz<BR>'Print "地类" + dl<BR>'Print X1<BR>ty.Closed = True<BR>MapInfo.Do "Fetch Next From aa"<BR>'Loop<BR>Next i<BR>End<BR>'MapInfo.Do ("Open Table """ + wj + """ As " + "aa")<BR>End Sub<BR></P> |
|