乐筑天下

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

[编程交流] 自定义菜单栏

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 17:15:52 | 显示全部楼层 |阅读模式
大家好
 
我不熟悉autocad。过去4年,我一直在为Microstation编程/定制。但我的新工作需要autocad自定义。我有一个小问题。我想制作一个自定义菜单栏,这样当操作员从该菜单中选择任何命令时,当前层名称应自动更改并激活所需的命令。
例如,操作员想要绘制一条中心线,然后他将从我的菜单中选择“cntrLine”命令,然后活动层应更改为“中心线”层(已经存在),同时line命令应激活。
 
这类似于Microstation中的边栏菜单(sbm文件)。
 
有人能帮我做这个话题吗。
收获与感谢
萨提亚
回复

使用道具 举报

NBC

4

主题

182

帖子

178

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 17:28:26 | 显示全部楼层
这将更容易在工具选项板中实现。
回复

使用道具 举报

1

主题

61

帖子

65

银币

初来乍到

Rank: 1

铜币
4
发表于 2022-7-6 17:36:44 | 显示全部楼层
是的,我认为你可以用几种不同的方式来实现,每个按钮都有一个小的lisp,或者作为一个包含所有命令的lisp,由每个按钮调用,或者将每个命令lisp添加到acad中。lsp,在工具托盘中,我在工具栏和托盘中都使用它们,我不是专家,但我使用这样的小Lisp。
 
  1. ^C^C(cont) ^P(PROGN (command "layer" "t" "[color=red]centerline[/color]" "s" "[color=#ff0000]centerline[/color]" "f" "*" "t" "0,defpoints" "")(command "line")(princ))

 
并添加其他命令
回复

使用道具 举报

13

主题

146

帖子

136

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2022-7-6 17:41:20 | 显示全部楼层
我在工作的地方做类似的设置。
 
下面的宏为我实现了这一点。
 
  1. ^C^C-LAYER;SET;CenterLine;ON;;;_line
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 17:49:29 | 显示全部楼层
谢谢大家的建议。我对自动Lisp程序一无所知。我擅长VBA。我会努力研究你的建议。
非常感谢你
萨提亚
回复

使用道具 举报

1

主题

56

帖子

80

银币

初来乍到

Rank: 1

铜币
1
发表于 2022-7-6 17:56:24 | 显示全部楼层
 
这里有一个又快又脏的,其中一半是从帮助文件中偷来的。
它动态创建工具栏,并将VBA子例程附加到它添加的每个按钮。希望它能让你开始。
 
 
  1. Sub ToolbarButton()
  2.    
  3.    Dim currMenuGroup As AcadMenuGroup
  4.    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
  5.    
  6.    ' Create the new toolbar
  7.    Dim newToolBar As AcadToolbar
  8.    Set newToolBar = currMenuGroup.Toolbars.Add("TestToolbar5")
  9.    
  10.    ' Add a button to the new toolbar
  11.    Dim newButton1 As AcadToolbarItem, newButton2 As AcadToolbarItem
  12.    Dim openMacro1 As String, openMacro2 As String
  13.    
  14.    ' Assign the macro string the VB equivalent of "ESC ESC _open "
  15.     openMacro1 = "-VBARUN " & "SampleSub1" & " " ' add a space to enmnu item to emulate the ENTER key]'
  16.     Set newButton1 = newToolBar.AddToolbarButton("", "NewButton1", "Sample Macro 1", openMacro1)
  17.    
  18.     ' Assign the macro string the VB equivalent of "ESC ESC _open "
  19.     openMacro2 = "-VBARUN " & "SampleSub2" & " " ' add a space to enmnu item to emulate the ENTER key]'
  20.     Set newButton2 = newToolBar.AddToolbarButton("", "NewButton2", "Sample Macro 2", openMacro2)
  21.    
  22.    ' Display the toolbar
  23.    newToolBar.Visible = True
  24.    
  25. End Sub
  26. Sub SampleSub1()
  27.    Dim tmpLayer As AcadLayer
  28.    Set tmpLayer = ThisDrawing.Layers.Item("0")
  29.    ThisDrawing.ActiveLayer = tmpLayer
  30.    ThisDrawing.SendCommand "Line "
  31. End Sub
  32. Sub SampleSub2()
  33.    Dim tmpLayer As AcadLayer
  34.    Set tmpLayer = ThisDrawing.Layers.Item("0")
  35.    ThisDrawing.ActiveLayer = tmpLayer
  36.    ThisDrawing.SendCommand "Circle "
  37. End Sub
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 18:03:27 | 显示全部楼层
我正在acad中寻找创建lisp或运行lisp。。2008
找不到选项。。
有人能帮我一下吗。。
回复

使用道具 举报

2

主题

26

帖子

27

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 18:10:14 | 显示全部楼层
 
欢迎rajuks,让另一个灵魂从“黑暗面”走出来
祝贺
回复

使用道具 举报

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 18:19:23 | 显示全部楼层
是的,到模型空间。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:22 , Processed in 0.377412 second(s), 70 queries .

© 2020-2025 乐筑天下

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