乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 211|回复: 14

更好的写法

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-6-21 14:35:28 | 显示全部楼层 |阅读模式
我正试图压缩我的dvb文件以使事情更简单,我想知道是否有人可以将这个子文件压缩得更小。该接头使用Select Case替换6-8个其他接头。如果这不合理,我会尽量解释得更好。
  1. Public Sub BATCHP(SIZE As String)
  2.     Dim currentline As String
  3.     Dim PLOTTYPE As String
  4.     Open "c:\dwgnum.dat" For Input As 1
  5.     While Not EOF(1)
  6.         Line Input #1, currentline
  7.         Documents.Open currentline
  8.         Debug.Print currentline
  9.         ThisDrawing.Regen acAllViewports
  10.         Select Case SIZE
  11.         Case "VA"
  12.             Call SetupAndPlot("11x17Draft.pc3", "STANDARDS.ctb", "Business_Letter_(8.50_x_11.00_Inches)", ac1_1, ac0degrees)
  13.             ThisDrawing.Plot.PlotToDevice
  14.             ThisDrawing.Close (True)
  15.         Case "V11"
  16.             Call SetupAndPlot("11x17Draft.pc3", "11X17-CHECKSET.ctb", "ANSI_B_(11.00_x_17.00_Inches)", acScaleToFit, ac90degrees)
  17.             ThisDrawing.Plot.PlotToDevice
  18.             ThisDrawing.Close (True)
  19.         Case "VC"
  20.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "VENDOR MEDIUM.ctb", "ARCH_expand_C_(24.00_x_18.00_Inches)", acScaleToFit, ac0degrees)
  21.             ThisDrawing.Plot.PlotToDevice
  22.             ThisDrawing.Close (True)
  23.         Case "VD"
  24.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "VENDOR MEDIUM.ctb", "ARCH_expand_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  25.             ThisDrawing.Plot.PlotToDevice
  26.             ThisDrawing.Close (True)
  27.         Case "T11"
  28.             Call SetupAndPlot("11x17Draft.pc3", "11X17-CHECKSET.ctb", "ANSI_B_(11.00_x_17.00_Inches)", acScaleToFit, ac90degrees)
  29.             ThisDrawing.Plot.PlotToDevice
  30.             ThisDrawing.Close (True)
  31.         Case "TC"
  32.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "tep.ctb", "ARCH_expand_C_(24.00_x_18.00_Inches)", acScaleToFit, ac0degrees)
  33.             ThisDrawing.Plot.PlotToDevice
  34.             ThisDrawing.Close (True)
  35.         Case "TD"
  36.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "tep.ctb", "ARCH_expand_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  37.             ThisDrawing.Plot.PlotToDevice
  38.             ThisDrawing.Close (True)
  39.         Case Else
  40.             Call Vendor1117
  41.         End Select
  42.     Wend
  43.     Close 1
  44. End Sub

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-21 14:36:14 | 显示全部楼层
这里是 SetupAndPlot 子
代码
  1. Public Sub SetupAndPlot(ByRef Plotter As String, CTB As String, SIZE As String, PSCALE As String, ROT As String)
  2.     Dim Layout As AcadLayout
  3.     On Error GoTo Err_Control
  4.     Set Layout = ThisDrawing.ActiveLayout
  5.     Layout.RefreshPlotDeviceInfo
  6.     Layout.ConfigName = Plotter    ' CALL PLOTTER
  7.     Layout.PLOTTYPE = acExtents
  8.     Layout.PlotRotation = ROT    ' CALL ROTATION
  9.     Layout.StyleSheet = CTB    ' CALL CTB FILE
  10.     Layout.PlotWithPlotStyles = True
  11.     Layout.CanonicalMediaName = SIZE    ' CALL SIZE
  12.     Layout.PaperUnits = acInches
  13.     Layout.StandardScale = PSCALE    'CALL PSCALE
  14.     Layout.ShowPlotStyles = False
  15.     ThisDrawing.Plot.NumberOfCopies = 1
  16.     Layout.CenterPlot = True
  17.     Layout.ScaleLineweights = False
  18.     Layout.RefreshPlotDeviceInfo
  19.     ThisDrawing.Regen acAllViewports
  20.     ZoomExtents
  21.     Set Layout = Nothing
  22.     ThisDrawing.Save
  23. Exit_Here:
  24.     Exit Sub
  25. Err_Control:
  26.     Select Case Err.Number
  27.     Case "-2145320861"
  28.         MsgBox "Unable to Save Drawing- " & Err.Description
  29.     Case "-2145386493"
  30.         MsgBox "Drawing is setup for Named Plot Styles." & (Chr(13)) & (Chr(13)) & "Run CONVERTPSTYLES command", vbCritical, "Change Plot Style"
  31.     Case Else
  32.         MsgBox "Unknown Error " & Err.Number
  33.     End Select
  34. End Sub

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-21 14:53:35 | 显示全部楼层
这是我要替换的内容代码2]
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-21 16:09:50 | 显示全部楼层
在我看来,它看起来很流线型。你可以移动情节,靠近SetupandPlot潜艇。然后,你可以离开他们。看起来不错。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-21 16:15:04 | 显示全部楼层

你听起来像个气象员。
[气象员声音]今天可能会下雨,然后又可能不会[/气象员声音]
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-21 18:41:42 | 显示全部楼层
使用单独的函数并没有什么问题,事实上,这样可能会更快,因为测试更少(您的switch语句包含许多测试),单独的函数在被直接调用时会直接进入函数的地址偏移量。
如果您想简化开关,请按最常用的顺序摆放您的箱子。也就是说,如果BATCHPLOT1824使用最频繁,将其作为您的第一个开关,这样您可以更频繁地退出您的开关进行测试。
为了对您现有的函数进行流处理,我在每个函数中都看到了相同的代码行-
(注意:这只是一个示例,而不是对这个特定代码片段的要求)代码3]
也许可以将它放在自己的sub中,并在每个工作sub中将它减少到一行,这样每个sub都可以重用相同的代码(内存中相同的地址,从而节省空间)。
这可能不是在所有情况下都适用,但您会明白。
这也是为什么一旦你完成了第一个版本或测试版,几乎任何应用程序都需要重写。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-21 23:46:27 | 显示全部楼层
我不知道这是否适合您,但我经常使用goto来尝试缩短我的代码。
  1. Public Sub BATCHP(SIZE As String)
  2.     Dim currentline As String
  3.     Dim PLOTTYPE As String
  4.     Open "c:\dwgnum.dat" For Input As 1
  5.     While Not EOF(1)
  6.         Line Input #1, currentline
  7.         Documents.Open currentline
  8.         Debug.Print currentline
  9.         ThisDrawing.Regen acAllViewports
  10.         Select Case SIZE
  11.         Case "VA"
  12.             Call SetupAndPlot("11x17Draft.pc3", "STANDARDS.ctb", "Business_Letter_(8.50_x_11.00_Inches)", ac1_1, ac0degrees)
  13.         Case "V11"
  14.             Call SetupAndPlot("11x17Draft.pc3", "11X17-CHECKSET.ctb", "ANSI_B_(11.00_x_17.00_Inches)", acScaleToFit, ac90degrees)
  15.         Case "VC"
  16.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "VENDOR MEDIUM.ctb", "ARCH_expand_C_(24.00_x_18.00_Inches)", acScaleToFit, ac0degrees)
  17.         Case "VD"
  18.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "VENDOR MEDIUM.ctb", "ARCH_expand_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  19.         Case "T11"
  20.             Call SetupAndPlot("11x17Draft.pc3", "11X17-CHECKSET.ctb", "ANSI_B_(11.00_x_17.00_Inches)", acScaleToFit, ac90degrees)
  21.         Case "TC"
  22.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "tep.ctb", "ARCH_expand_C_(24.00_x_18.00_Inches)", acScaleToFit, ac0degrees)
  23.         Case "TD"
  24.             Call SetupAndPlot("OCE DesignJet 750C.pc3", "tep.ctb", "ARCH_expand_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  25.         Case Else
  26.             Call Vendor1117
  27.             GoTo skip
  28.         End Select
  29.         ThisDrawing.Plot.PlotToDevice
  30.         ThisDrawing.Close (True)
  31. skip:
  32.     Wend
  33.     Close 1
  34. End Sub

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-22 10:16:40 | 显示全部楼层
谢谢布莱科,我甚至没有看到我重复了8遍的最后两行。这缩短了很多。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-22 10:19:03 | 显示全部楼层
谢谢你,米克!在我开始把它压缩成可重复使用的碎片之前,你应该看看这是多么的混乱。不管怎么说,你说的有道理,所以我会尽我所能把零件拔出来。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-22 10:44:10 | 显示全部楼层
那么米克,
你会用这个列表做什么?
  1. Public Sub VendorA()
  2.     Call SetupAndPlot("11x17Draft.pc3", "STANDARDS.ctb", "Business_Letter_(8.50_x_11.00_Inches)", ac1_1, ac0degrees)
  3.     ThisDrawing.Plot.PlotToDevice
  4.     ThisDrawing.Close (True)
  5. End Sub
  6. Public Sub Vendor1117()
  7.     Call SetupAndPlot("11x17Draft.pc3", "11X17-CHECKSET.ctb", "ANSI_B_(11.00_x_17.00_Inches)", acScaleToFit, ac90degrees)
  8.     ThisDrawing.Plot.PlotToDevice
  9.     ThisDrawing.Close (True)
  10. End Sub
  11. Public Sub VendorQuickPlotC()
  12.     Call SetupAndPlot("OCE DesignJet 750C.pc3", "VENDOR MEDIUM.ctb", "ARCH_expand_C_(24.00_x_18.00_Inches)", acScaleToFit, ac0degrees)
  13.     ThisDrawing.Plot.PlotToDevice
  14.     ThisDrawing.Close (True)
  15. End Sub
  16. Public Sub VendorQuickPlotD()
  17.     Call SetupAndPlot("OCE DesignJet 750C.pc3", "VENDOR MEDIUM.ctb", "ARCH_expand_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  18.     ThisDrawing.Plot.PlotToDevice
  19.     ThisDrawing.Close (True)
  20. End Sub
  21. Public Sub TEPQuickPlot11x17()
  22.     Call SetupAndPlot("11x17Draft.pc3", "11X17-CHECKSET.ctb", "ANSI_B_(11.00_x_17.00_Inches)", acScaleToFit, ac90degrees)
  23.     ThisDrawing.Plot.PlotToDevice
  24.     ThisDrawing.Close (True)
  25. End Sub
  26. Public Sub TEPQuickPlotC()
  27.     Call SetupAndPlot("OCE DesignJet 750C.pc3", "tep.ctb", "ARCH_expand_C_(24.00_x_18.00_Inches)", acScaleToFit, ac0degrees)
  28.     ThisDrawing.Plot.PlotToDevice
  29.     ThisDrawing.Close (True)
  30. End Sub
  31. Public Sub TEPQuickPlotD()
  32.     Call SetupAndPlot("OCE DesignJet 750C.pc3", "tep.ctb", "ARCH_expand_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  33.     ThisDrawing.Plot.PlotToDevice
  34.     ThisDrawing.Close (True)
  35. End Sub
  36. Public Sub TEP9800D()
  37.     Call SetupAndPlot("OCE 9800 DesignJet 750C.pc3", "tep.ctb", "ARCH_expand_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  38.     ThisDrawing.Plot.PlotToDevice
  39.     ThisDrawing.Close (True)
  40. End Sub
  41. Public Sub TEPDWFD()    'Setups for C size and 11x17 do not exist, need to be created.
  42.     Call SetupAndPlot("DWF6 ePlot.pc3", "tep.ctb", "ARCH_full_bleed_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  43.     ThisDrawing.Plot.PlotToDevice
  44.     ThisDrawing.Close (True)
  45. End Sub
  46. Public Sub VENDORDWFD()    'Setups for C size and 11x17 do not exist, need to be created.
  47.     Call SetupAndPlot("DWF6 ePlot.pc3", "VENDOR MEDIUM.ctb", "ARCH_full_bleed_D_(36.00_x_24.00_Inches)", ac1_1, ac0degrees)
  48.     ThisDrawing.Plot.PlotToDevice
  49.     ThisDrawing.Close (True)

由于它们都是独立的,您会保持原样还是尝试压缩? 所有这些都在同一个VBA模块中
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 23:37 , Processed in 0.768306 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表