laoxie_9802
路人甲
路人甲
  • 注册日期2008-01-12
  • 发帖数4
  • QQ
  • 铜币115枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1580回复:1

[求助]提取图元坐标点到CAD中

楼主#
更多 发布于:2008-01-17 08:22
我想将MAPINFO中的图形转换到cad中,用VB写的程序,为什么在CAD里的坐标跟MAPINFIO中的坐标不一样呢?
喜欢0 评分0
laoxie_9802
路人甲
路人甲
  • 注册日期2008-01-12
  • 发帖数4
  • QQ
  • 铜币115枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部