| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Pickfirstselectionset (487 mal gelesen)
|
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 12. Feb. 2009 13:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute eine Frage wenn ich den Event Beginncommand Abfange und zb Erase abfange dann möchte ich ja die derzeit selektierten Objekte erhalten eben mit Pickfirst!(wenn ich zb zuerst die Polylinie anklicke und dann entferne) Das Problem ist wenn ich zb mal Zurück anklicke dann geht beim nächsten Löschen die Pickfirst Variable nicht mehr?? Warum ist das so? Oder gibts dafür ne sichere bessere Lösung???? Mfg Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 12. Feb. 2009 13:30 <-- editieren / zitieren -->
Hi, ganz verstehe ich die Vorgehensweise nicht, aber aus meiner Interpretation heraus: Wenn Du die Polylinie selektierst (dann ist sie im PickFirstSelSet drin), dann mit 'löschen' oder mittels 'ENTF'-Taste diese löschst, dann ist sie weg, kann daher IMHO auch nicht mehr im PickFirstSelSet sein. Wenn Du jetzt 'zurück'/'_undo' machst, ist die Polylinie wieder in der Zeichnung, aber nicht selektiert (gegript), wieso erwartest Du jetzt, dass diese im PickFirstSelSet sein sollte? ...oder was verstehe ich falsch? - alfred - ------------------ www.hollaus.at |
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 12. Feb. 2009 13:46 <-- editieren / zitieren --> Unities abgeben:         
Hallo Also beim Beginn Command Event ist im Pickfirst selectionset normalerweise Pickfirst noch gefüllt DH das Programm funktioniert Tadellos! Bis ich einmal zurück anklicke(Der Fehler tritt leider nicht immer auf daher schwer nachvollziehbar) Ein Neues Objekt anklicke!!und wieder lösche. Beim X-ten Ausführen funktioniert das Programm dann Plötzlich nicht mehr Und ich weiß nicht wieso! Hier der Code Function Getactivesset() As AcadSelectionSet Dim ACTIVESSET, ent, ACTIVESSET2, SSetact As AcadSelectionSet Dim a On Error Resume Next Set ACTIVESSET = ThisDrawing.ActiveSelectionSet On Error Resume Next Set ACTIVESSET2 = ThisDrawing.PickfirstSelectionSet On Error Resume Next If ACTIVESSET2.count = 0 Then Set Getactivesset = ACTIVESSET Else Set Getactivesset = ACTIVESSET2 End If End Function [Diese Nachricht wurde von c.schojer am 12. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 12. Feb. 2009 14:13 <-- editieren / zitieren -->
Hi, Code: On Error Resume Next Set ACTIVESSET = ThisDrawing.ActiveSelectionSet On Error Resume Next Set ACTIVESSET2 = ThisDrawing.PickfirstSelectionSet On Error Resume Next If ACTIVESSET2.count = 0 Then Set Getactivesset = ACTIVESSET Else Set Getactivesset = ACTIVESSET2 End If
Zum einen, Du kannst Dir die vielen 'On Error Resume Next' spaaren, denn der erste call gilt bis zum Prozedurende oder bis Du eine andere 'On Error ...'-Anweisung durchführst. Wieso es nicht funktioniert, kann ich Dir nicht sagen, aber ich hätte mal die Fehler (die Du mit 'On Error Resume Next' übergehst), nicht ignoriert, sondern mal angesehen. Und dazu noch die Vermutung, dass es eben manchmal in AutoCAD wechselt, was PickFirst.. und Active... ist. Du gehst aber immer davon aus, dass es das SelectionSet gibt, wenn Du 'xxx.Count' abrufst Code: On Error Resume NextSet ACTIVESSET = ThisDrawing.ActiveSelectionSet if Err.Number <> 0 then Debug.Print "ActiveSelSet: " & Err.Description Err.Clear Set ACTIVESSET2 = ThisDrawing.PickfirstSelectionSet if Err.Number <> 0 then Debug.Print "PickFirstSelSet: " & Err.Description Set Getactivesset = Nothing 'zuerst mal pruefen, ob PickFirstSelectionSet was ergeben hat If (not (ACTIVESSET2 is nothing)) then If ACTIVESSET2.count = 0 Then 'da sind Elemente drin, damit sichern wir uns das Set Getactivesset = ACTIVESSET2 End If End If 'sollte Getactivesset oben nicht gesetzt worden sein, dann ActiveSelSet pruefen If (not (Getactivesset is nothing)) then if (not (ACTIVESELET is nothing)) then if ACTIVESELSET.Count > 0 then Set Getactivesset = ACTIVESSET end if end if end if If (Getactivesset is Nothing) then Debug.Print "Fehler" End If
Ich brauch wohl auch nicht zu sagen, dass man da keine SelSet's (Pointer zu diesen) zwischenspeichern muss, denn eigentlich kann man ActiveSetSet und PickFirstSelSet auch pruefen ohne diese als ACTIVESELSET und ACTIVESELSET2 zu referenzieren. - alfred - ------------------ www.hollaus.at |
c.schojer Mitglied
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 12. Feb. 2009 14:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Vielen Dank für die Hilfe! Hab deinen Code mal(mit kleineren Änderungen) in Verwendung mal sehen ob da dieser Merkwürdige Fehler auch wieder auftaucht Ich melde mich auf jeden Fall wieder mal! Lg Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |