|
na upresnenie posielam kod.
1. v pripade ze v pripojenom vykrese sa nachadzaju objekty s layer = 0 SelectionSet po query vrati objekty s layer = 0. Ak sa nenachadza, vrati vsetky objekty z predchadzajuceho SelectionSet-u.
2. taktiez v danom pripade nefunguje Query.Execute, ale iba ThisDrawing.SendCommand "_MAPWSQUERYEXECUTE "
Sub QueryToSelectionSet() Dim oQry As Query Dim oQLeaf As QueryLeaf Dim oQBranch As QueryBranch Dim oProject As Project Dim oUtil As AcadUtility Dim sLayer As String sLayer = "0" Dim oProjectOptions As ProjectOptions Dim oAcadSelSet As AcadSelectionSet Set oUtil = ThisDrawing.Utility Set oProject = ThisDrawing.Application.GetInterfaceObject("AutoCADMap.Appli cation").Projects(ThisDrawing) Set oProjectOptions = oProject.ProjectOptions Set oAcadSelSet = ThisDrawing.SelectionSets.Add("AllObjectsSelected") If Not Nothing Is oAcadSelSet Then oAcadSelSet.Select acSelectionSetAll oUtil.Prompt "Before _MAPWSQUERYEXECUTE oAcadSelSet.Name = " & oAcadSelSet.Name & vbCrLf oUtil.Prompt "Before _MAPWSQUERYEXECUTE oAcadSelSet.Count = " & CStr(oAcadSelSet.Count) & vbCrLf oAcadSelSet.Clear oAcadSelSet.Delete End If oProjectOptions.MkSelSetWithQryObj = True Set oQry = oProject.CurrQuery oQry.Clear Set oQBranch = oQry.QueryBranch Set oQLeaf = oQBranch.Add(kPropertyCondition, kOperatorAnd) If True = oQLeaf.SetPropertyCond(kLayer, kCondEq, sLayer) Then oQry.Mode = kQueryDraw If True = oQry.Define(oQBranch) Then '   ; If False = oQry.Execute( ) Then '   ; ThisDrawing.Utility.Prompt "Query.Execute fail" '   ; End If ThisDrawing.SendCommand "_MAPWSQUERYEXECUTE " oUtil.Prompt "Execute Query for Layer = " & sLayer & vbCrLf End If End If Set oAcadSelSet = ThisDrawing.ActiveSelectionSet If Not Nothing Is oAcadSelSet Then oUtil.Prompt "After _MAPWSQUERYEXECUTE oAcadSelSet.Name = " & oAcadSelSet.Name & vbCrLf oUtil.Prompt "After _MAPWSQUERYEXECUTE oAcadSelSet.Count = " & CStr(oAcadSelSet.Count) & vbCrLf oAcadSelSet.Clear oAcadSelSet.Delete End If oQry.Clear Set oUtil = Nothing Set oQry = Nothing Set oQBranch = Nothing Set oQLeaf = Nothing Set oAcadSelSet = Nothing End Sub
|