geraldxyz 发表于 2008-5-27 00:34:00

[求助]这个功能(快速解组)能否将其编成一个按钮? (附代码)

<p><font face="宋体" size="2">在晓东cad板块发现了这样一篇帖子:<br/>原文地址:</font><a href="http://www.xdcad.net/forum/showthre...4063#post894063" target="_blank"><font face="宋体" color="#003300" size="2">http://www.xdcad.net/forum/showthre...4063#post894063</font></a><br/><br/><font face="宋体" size="2">摘录精华如下:<br/><br/>回复: 最初由 chenhang 发布<br/>请问怎么把组分解开<br/>因为我图中的组都没有命名,而且有很多组,如果把要分解的组在GROUP的菜单中找出来再分解很麻烦。有什么命令可以直接分解组。就象炸开块一样? <br/><br/><br/><br/>这是别人写的,借花献佛<br/><br/>代码:<br/><br/><br/>'将选定的组合分解开<br/>'由于不能通过选定的对象来直接找到其组合名称,只能通过循环比较对象ID的方法<br/>'来解决这个问题,运行时可能会慢点,但对象不多的情况下应该没问题<br/>Sub DelUnNameGroup()<br/><br/>Dim SelGroup As AcadGroup<br/>Dim SelObjects As AcadSelectionSet<br/>Set SelObjects = GetSelSet<br/>Dim ObjInSelSet As AcadObject<br/>Dim I As Integer<br/>Dim J As Integer<br/>Dim K As Integer<br/>Dim ObjInGroup As AcadObject<br/>On Error Resume Next<br/>For I = 0 To SelObjects.Count - 1<br/>Set ObjInSelSet = SelObjects.Item(I)<br/>For J = 0 To ThisDrawing.Groups.Count - 1<br/>For K = 0 To ThisDrawing.Groups.Item(J).Count - 1<br/>Set ObjInGroup = ThisDrawing.Groups.Item(J).Item(K)<br/>If ObjInGroup.ObjectID = ObjInSelSet.ObjectID Then<br/>ThisDrawing.Groups.Item(J).Delete<br/>Exit For<br/>End If<br/>Next<br/>Next<br/>Next<br/>End Sub<br/><br/>'对象选择函数<br/>Function GetSelSet() As AcadSelectionSet<br/>Dim ss As AcadSelectionSet<br/>Set ss = ThisDrawing.PickfirstSelectionSet<br/>If ss.Count = 0 Then<br/>Dim ssName As String<br/>ssName = "strSSet"<br/>On Error Resume Next<br/>Set ss = ThisDrawing.SelectionSets(ssName)<br/>If Err &lt;&gt; 0 Then<br/>Err.Clear<br/>Set ss = ThisDrawing.SelectionSets.Add(ssName)<br/>End If<br/>ss.Clear<br/>ss.SelectOnScreen<br/>End If<br/>Set GetSelSet = ss<br/>End Function<br/><br/><br/><br/><br/>看代码似乎可以实现在CAD正式版中得到像CAD LT版一样的快速解组功能,但是不知道如何才能把它编为一个工具栏的按钮,哪位朋友可以帮忙编译一下生成一个直接可以用的脚本啊?多谢了!</font></p>

mccad 发表于 2008-5-27 18:12:00

把以下内容编辑成LSP文件并加载到启动组中去:;;加载VBA程序
(vl-vbaload (findfile "UnNameGroup.dvb"))
;;一些VBA程序的触发程序
(defun c:ag()(princ))
(defun c:dg()(princ))把以下文件下载并保存到AUTOCAD支持目录下:

命令:
AG:将选择集自动转化为无名组合。
DG:将选定的组合打散。

geraldxyz 发表于 2008-5-28 21:12:00

<p>多谢管理员热情相助!问题已经完美解决了!</p>
页: [1]
查看完整版本: [求助]这个功能(快速解组)能否将其编成一个按钮? (附代码)