乐筑天下

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

使用VLISP加载-运行-卸载VBA项目

[复制链接]

0

主题

9

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2008-4-22 13:39:02 | 显示全部楼层

我显然会先和他们谈谈这件事;如果他们公然蔑视标准,我想我会进入下一步。
幸运和不幸的是,我在这里没有那种权威。
一些公司对标准过于宽松,可能有点胆小,不敢坚持要求人们遵守。
我想那些公司需要在他们的猕猴桃上多一点模糊。
回复

使用道具 举报

0

主题

10

帖子

6

银币

初来乍到

Rank: 1

铜币
11
发表于 2008-4-22 13:43:46 | 显示全部楼层

鲍勃,
我正在看你的代码
  1. sub unloadify(strMacro as string)
  2. Dim PauseTime, Start
  3.     PauseTime = 1
  4.     Start = Timer
  5.     Do While Timer < Start + PauseTime
  6.     Loop  'The pause so you give time for the macro to finish before trying to unload
  7. thisdrawing.sendcommand "vbaunload" "Projectname.dvb"

如果我错了,请纠正我。
现在,这是一个单独的子例程,对吗
此外,该行是否应显示sub unload(项目名称为字符串)
谢谢
马克
回复

使用道具 举报

0

主题

12

帖子

5

银币

初来乍到

Rank: 1

铜币
12
发表于 2008-4-22 14:23:29 | 显示全部楼层
鲍勃:我以前说过,现在我再说一遍;
你是最棒的!
我认为您在sendcommand中漏掉了几个输入,但我得到了它代码4]
以下是结果:
  1. Sub BlockonlayersLoop() 'This Sub will keep prompting for the next block until user escapes.
  2.       Dim B As AcadBlock
  3.       Dim ent As AcadEntity
  4.       Dim P
  5.       Dim LayerCol As New Collection
  6.       Dim slayer As String
  7.       Dim Picked As Boolean
  8.       Dim i As Integer
  9.       Dim PauseTime, Start 'Bob's Code
  10.            
  11.       PauseTime = 1 'Bob's Code
  12.       Start = Timer 'Bob's Code
  13.       
  14.       Do While Timer < Start + PauseTime 'This pause gives time for the macro to finish before trying to unload 'Bob's Code
  15.       Do
  16.        On Error Resume Next
  17.        ThisDrawing.Utility.GetEntity ent, P, "Pick a blockref"
  18.        If Not TypeOf ent Is AcadBlockReference Then
  19.         Picked = False
  20.         GoTo ExitOut
  21.        Else
  22.         Picked = True
  23.        End If
  24.        If ent Is Nothing Then
  25.         Picked = False
  26.         GoTo ExitOut
  27.        Else
  28.         Picked = True
  29.        End If
  30.       
  31.        Set B = ThisDrawing.Blocks(ent.Name)
  32.        Debug.Print "The block " & B.Name & " uses the following layers:"
  33.       
  34.        For Each ent In B
  35.         slayer = ent.Layer
  36.         For i = 1 To LayerCol.Count
  37.          If LayerCol(i) = slayer Then GoTo Skip
  38.         Next
  39.         LayerCol.Add slayer
  40. Skip:
  41.         Next
  42.         For i = 1 To LayerCol.Count
  43.          Debug.Print LayerCol(i)
  44.         Next
  45. ExitOut:
  46.         Dim Num As Integer
  47.          For Num = 1 To LayerCol.Count
  48.           LayerCol.Remove 1
  49.          Next
  50.         Loop Until Picked = False
  51.        Loop
  52.        ThisDrawing.SendCommand "vbaunload" & vbCr & "Tools.dvb" & vbCr 'Bob's Code
  53.      End Sub        

它看起来非常有效
谢谢您,先生!
回复

使用道具 举报

0

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
9
发表于 2008-4-22 14:31:45 | 显示全部楼层
我实际上是建议你做一个lisp等价的sub来卸载它,只是为了更接近你所尝试的,我只是没有时间去弄清楚如何将信息传递给lisp或者如何暂停一段特定的时间。很高兴你满意了。
回复

使用道具 举报

0

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
9
发表于 2008-4-22 14:41:26 | 显示全部楼层

我明白了
不幸的是我不太擅长LISP
LISP例程是CM传给我的。
这是一个很好的程序,我只是不知道如何按照你建议的方式编辑它。
“如果”你有时间,我当然希望看到它
这种方法也很好,不是吗?
标记
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 21:21 , Processed in 0.588453 second(s), 60 queries .

© 2020-2025 乐筑天下

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