乐筑天下

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

更好的书写方式

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-6-21 14:35:28 | 显示全部楼层 |阅读模式
本人'我试图压缩我的dvb文件,使事情更简单,并想知道是否有人可以压缩这个子更小&nbsp 此接头使用Select Case替换6-8个其他接头 如果没有'没有意义,我'I’我会尽力解释得更好
  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 | 显示全部楼层
这就是我要替换的内容
  1. Public Sub BATCHPLOT1824()
  2.     Dim currentline As String
  3.     Open "c:\dwgnum.dat" For Input As 1
  4.     While Not EOF(1)
  5.         Line Input #1, currentline
  6.         Documents.Open currentline
  7.         Debug.Print currentline
  8.         ThisDrawing.Regen acAllViewports
  9.         Call VendorQuickPlotC
  10.     Wend
  11.     Close 1
  12. End Sub
  13. Public Sub BATCHPLOT2436()
  14.     Dim currentline As String
  15.     Open "c:\dwgnum.dat" For Input As 1
  16.     While Not EOF(1)
  17.         Line Input #1, currentline
  18.         Documents.Open currentline
  19.         Debug.Print currentline
  20.         ThisDrawing.Regen acAllViewports
  21.         ThisDrawing.MSpace = False
  22.         Call VendorQuickPlotD
  23.     Wend
  24.     Close 1
  25. End Sub
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-6-21 16:09:50 | 显示全部楼层
在我看来,它看起来很流线型;您可以移动绘图并靠近SetupandPlot sub;再说一次,你可以离开他们 看起来不错。
回复

使用道具 举报

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 | 显示全部楼层
有单独的函数并没有什么错,事实上它是35;039;s可能更快,因为测试更少(您的switch语句包含许多测试),其中作为单独的函数直接调用函数的地址偏移量
如果你想简化开关,请按最常用的顺序排列。i、 e.如果BATCHPLOT1824是最常用的,将其作为第一个开关,这样您就可以退出开关,以避免测试更频繁
为了串列现有函数,我看到在每个函数中重复了相同的代码行(注意:更多的是作为一个示例,而不是这个特定代码段的要求)
  1.     Dim currentline As String
  2.     Open "c:\dwgnum.dat" For Input As 1
  3.     While Not EOF(1)
  4.         Line Input #1, currentline
  5.         Documents.Open currentline
  6.         Debug.Print currentline
也许这可以放在自己的子系统中,并将其减少到每个工作子系统中的一行,这样每个子系统都会重新使用相同的代码(内存中的相同地址可以节省空间)
这可能并不适用于所有情况,但你明白了
这也是为什么几乎所有的应用程序都需要在你'我已经完成了第一个版本或beta版
回复

使用道具 举报

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 | 显示全部楼层
谢谢Bryco,我甚至没有看到我重复了8次的最后2行 这缩短了很多。
回复

使用道具 举报

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 | 显示全部楼层
那么Mick,你会用这个列表做什么
  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:13 , Processed in 1.203684 second(s), 83 queries .

© 2020-2025 乐筑天下

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