ARKANCE - globální Platinum partner Autodesk ARKANCE | KONTAKT - CZ | SK | EN | DE
Registrujte se na 22. ročník konference CADfórum 2025 - 30.9. Zámek Valeč.
Přes 119.000 registrovaných u nás, celkem 1.098.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků. Vyzkoušejte nový přesný Inženýrský kalkulátor a aktualizovaný Generátor čarových kódů.
Registrujte se na konferenci CADfórum 2025 - automatizace navrhování
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

?
CAD diskuze, rady, výměna zkušeností

CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoActiveSelectionSet po Query.Execute

 Odpovědět Odpovědět archiv
Autor
MarianA Zobrazit panel
Nováček
Nováček

Přihlášen: 12.led.2006
Lokalita: Slovensko
Stav: Offline
Bodů: 3
Přímý odkaz na tuto zprávu Téma: ActiveSelectionSet po Query.Execute
    Zasláno: 12.led.2006 v 14:22

Zdravim,  

mam problem vo VBA pri ziskani objektov po Query.Execute do SelectionSet-u pomocou ThisDrawning.ActiveSelectionSet. V pripade, ze query vyberie nejake objekty ActiveSelectionSet ich vrati v SelectionSet-e. 

 Ked Query.Execute nevyberie ziadny objekt ActiveSelectionSet vrati objekty vybrate v poslednom SelectionSet-e. A nie prazdny SelectionSet ako ocakavam.

Vdaka za kazdu radu, pomoze mi tiez rada ako dostat vo VBA objekty pomocou Query do SelectionSet-u.

                                                   Marian

Zpět nahoru
MarianA Zobrazit panel
Nováček
Nováček

Přihlášen: 12.led.2006
Lokalita: Slovensko
Stav: Offline
Bodů: 3
Přímý odkaz na tuto zprávu Zasláno: 17.led.2006 v 09:24

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

Zpět nahoru
MarianA Zobrazit panel
Nováček
Nováček

Přihlášen: 12.led.2006
Lokalita: Slovensko
Stav: Offline
Bodů: 3
Přímý odkaz na tuto zprávu Zasláno: 18.led.2006 v 11:32

Zdravim,

podobny kod som nasiel ako odpoved na Query so Selection Setu na adn.autodesk.com. Je v podstate identicky, akurat volanie query je

ThisDrawing.SendCommand "(ade_qryexecute)" & Chr(13)

No aj tak to neriesi problem, ked je pocet objektov, ktore vyberie query rovne nule. Je nejaka moznost zistit vo VBA pocet objektov, ktore vrati Query?

dik

 

Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 5411:VIPJak odlišit bloky stejného jména z různých DWG výkresů?
Tip 177:problem with order of polygons in thematic query
Tip 2445:Raster Design vypisuje chybu: 'Function AeciAddComponent:Unable to execute database view'
Tip 4468:KRITICKÁ CHYBA: Unhandled Access Violation Reading 0x0004 Exception at 634f4923h
Tip 11134:Automatické načtení pluginu Arnold Render do Maya.
Tip 6964:Jak určit cestu programu ArchVision Content Manager (ACM)?


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,379 sekund.