⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 export2base.bas

📁 Surfer是地学中常用的一个软件
💻 BAS
字号:
'Export2Base.bas script exports all non-map items to DXF,
' loads the DXF as a base map and overlays it with the existing map.
' TB - 24 Jun 03
Sub Main
	Debug.Print "----- ";Time;" -----"
	On Error Resume Next
		Set surf = GetObject(,"Surfer.Application")
		If Err<>0 Then
			Debug.Print "Can't GetObject"
			GoTo errmsg
		End If
	On Error GoTo 0
	path1 = surf.Path+"\samples\"
	Set plotdoc1 = surf.ActiveDocument
	If plotdoc1.Type <> srfDocPlot Then
		Debug.Print "Active document is not a plot document"
		GoTo errmsg
	End If
	Set plotwin1 = surf.ActiveWindow
	Set shapes1 = plotdoc1.Shapes
	If shapes1.Count < 2 Then
		Debug.Print "Less than two objects in active document"
		GoTo errmsg
	End If
	If plotdoc1.Selection.Count>0 Then plotdoc1.Selection.DeselectAll
	For Each shp In plotdoc1.Shapes
		'Get mapframe name.
		If shp.Type = srfShapeMapFrame Then
			shp.Select
			mapname = shp.Name
			maptop = shp.Top
			mapleft = shp.Left
		End If
	Next 'shp

	If plotdoc1.Selection.Count > 1 Then
		Debug.Print "More than one map."
		GoTo errmsg
	End If

	'Export to save scaling info only.
	plotdoc1.Export(path1+"x1.dxf",selectiononly:=True, _
		options:="ScalingSourceApp=1, SaveScalingInfo=1")

	'Save map scale and limits
  With shapes1(mapname)
		xscale = .xMapPerPU
		yscale = .yMapPerPU
		mapxmin = .xMin
		mapxmax = .xMax
		mapymin = .yMin
		mapymax = .yMax
	End With 'shapes1(mapname)

	Debug.Print mapxmin;mapxmax;mapymin;mapymax

	'Get Top and Left of topmost and leftmost objects.
	plotdoc1.Shapes.SelectAll
	topall = plotdoc1.Selection.Top
	leftall = plotdoc1.Selection.Left

	'Select all objects except the mapframe.
	plotdoc1.Selection.DeselectAll
	For Each shp In plotdoc1.Shapes
		If shp.Type <> srfShapeMapFrame And _
			 shp.Type <> srfShapeScale And _
			 shp.Type <> srfShapeColorScale And _
			 shp.Type <> srfShapeLegend Then _
			 shp.Select
	Next

	'Export with saved scaling info.
	plotdoc1.Export(path1+"x1.dxf",selectiononly:=True, _
		options:="ScalingSourceApp=0")

	'Load non-map objects as base map.
	shapes1.AddBaseMap path1+"x1.dxf"
	plotdoc1.Selection.Delete
	shapes1.SelectAll
	Set mapframe2 = plotdoc1.Selection.OverlayMaps

	'Restore map scale, limits, and position.
	With mapframe2
		.xMapPerPU = xscale
		.yMapPerPU = yscale
		.SetLimits(xmin:=mapxmin,xmax:=mapxmax, _
			ymin:=mapymin,ymax:=mapymax)
		.Top = topall
		.Left = leftall
	End With

	'mapframe2.SetLimits(xmin:=mapxmin,xmax:=mapxmax, _
			'ymin:=mapymin,ymax:=mapymax)


	End

	errmsg:
	MsgBox("This script converts drawn objects to a base map" +vbCrLf+ _
			"using the coordinates of the map." +vbCrLf+ _
			"Open a Surfer plot document with one map and any" +vbCrLf+ _
			"number of drawn objects before running this script.",vbOkOnly, _
			"Error")

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -