Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Objektauswahl wie beim Dehnen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Objektauswahl wie beim Dehnen (746 mal gelesen)
Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 410
Registriert: 08.10.2008

erstellt am: 27. Okt. 2016 15:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo an Alle,

ich habe mir ein kleines Programm geschrieben welches Linien an anderen Linien unterbricht. Das funktioniert jetzt so weit ganz gut. Ich wähle mit GetEntity erst die erste Linie und dann die zweite Linie dann wird diese bearbeitet und danach kann wieder eine Linie ausgewählt werden. Jetzt dachte ich es wäre schön wenn man als zweites auch mehrere Linien auswählen könnte und diese alle an der ersten Linie unterbrochen würden. Es sollte so sein wie beim Dehnen-Befehl von AutoCAD, da kann man als zweite Auswahl, einzelne Objekte wählen oder wenn man ins leere klickt wird automatisch eine Kreuzen-Auswahl an dieser Stelle gestartet und man kann mehrere Objekte auswählen. Bekomme ich dieses Auswahlverhalten irgendwie hin? Gibt's da ein Beispiel?

Gruß Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


Sehen Sie sich das Profil von Ingenieur Studio HOLLAUS an!   Senden Sie eine Private Message an Ingenieur Studio HOLLAUS  Schreiben Sie einen Gästebucheintrag für Ingenieur Studio HOLLAUS

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 28. Okt. 2016 18:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

Zitat:
Ich wähle mit GetEntity
Zitat:
da kann man als zweite Auswahl, einzelne Objekte wählen oder wenn man ins leere klickt wird automatisch eine Kreuzen-Auswahl an dieser Stelle gestartet und man kann mehrere Objekte auswählen
Das wäre doch genau die SelectionSet Funktion, mit GetEntity kann man das nicht durchführen (oder nur sehr gewaltsam).

------------------


www.cars4fun.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 410
Registriert: 08.10.2008

erstellt am: 31. Okt. 2016 08:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich glaube die SelectionSet-Methode erwartet die Eingabe mehrerer Objekte. Das heißt man muß die Objektwahl durch ein Return abschließen. Somit habe ich keine Möglichkeit auf die Wahl eines einzelnen Objektes zu reagieren. Das ist dann wie beim Schieben-Befehl, es wird ein Auswahlsatz gebildet und dieser wird dann verarbeitet(verschoben). Beim Dehnen-befehl ist es nicht ganz so.
Hier werden einzelne Elemente sofort bearbeitet und danach läuft die Auswahl weiter. Trotzdem ist es auch möglich mehrere Objekte auszuwählen. Mir ist klar daß das schon ein bisschen spezieller ist.
ich erwarte auch nicht eine kpl. Lösung zu bekommen. Mir würde es schon reichen eine Idee oder einen Lösungsansatz zu bekommen.
Du schreibst "oder nur sehr gewaltsam". Wie könnte diese "Gewaltsam" aussehen? Soll ich nur noch Punkte abfragen und diese auswerten? Oder soll ich mit Getentity weitermachen. oder doch getselection. Oder gibt's nen ganz anderen Lösungsweg, mit Jigs z.B.?

Danke Gruß Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


Sehen Sie sich das Profil von Ingenieur Studio HOLLAUS an!   Senden Sie eine Private Message an Ingenieur Studio HOLLAUS  Schreiben Sie einen Gästebucheintrag für Ingenieur Studio HOLLAUS

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 31. Okt. 2016 10:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

Zitat:
Soll ich nur noch Punkte abfragen und diese auswerten?
Z.B. mit SelectionSet arbeiten, aber gleichzeitig einen Event mitlaufen haben, der auf SelectionAdded reagiert. Kommt der Event beim ersten SelectionSet-Klick, dann SelectionSet abbrechen ... da Du ein Element schon hast, anderen falls das SelectionSet weiterlaufen lassen.
Oder mit PointMonitor checken, ob beim Klick ein Element darunter liegt.
Oder mit GetEntity Punkt merken, wenn kein Element retourniert wird, dann diesen Punkt dem SelectionSet als ersten Punkt simuliert übergeben (keine Ahnung, ob das geht, ist nur als Idee hier).
Alle diese Maßnahmen können aber gestört werden, wenn man 3D drauf schaut (weil der retounierte Punkt dann anders auszuwerten ist), oder SELECTIONCYCLING aktiv wurde (der Dialog geöffnet ist), ... darum eben mein Begriff "gewaltsam", denn da läuft man die ganze Zeit den unterschiedlichen Varianten hinterher, die AutoCAD so bietet im Zuge einer Selektion.

------------------


www.cars4fun.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 410
Registriert: 08.10.2008

erstellt am: 07. Nov. 2016 15:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich bin bei GetEntity geblieben. Ich löse im PromptForEntityEnding-Event einen Fehler aus, den ich mit Try abfange. Bei Catch mache ich dann mit Selection weiter. Bestimmt keine schöne Lösung, funktioniert aber bisher ohne Fehler. Irgendwann mache ich auch noch ein Jig für diese Lösung, so dass der User auch noch ne Vorschau bekommt. Im Augenblick habe ich leider zu wenig Zeit und es wäre ja auch nur schön, aber nicht wirklich notwendig. Für den Fall dass es jemand interessiert, habe ich die entsprechenden Zeilen unten rein kopiert.

Gruß Theo

  AddHandler MyEditor.PromptForEntityEnding, AddressOf PFE
        Try
            Answer = MyEditor.GetEntity(Frage)
            RemoveHandler MyEditor.PromptForEntityEnding, AddressOf PFE
        Catch ex As Exception
            Dim MySelection As PromptSelectionResult
            Dim MyResult As PromptPointResult
            Dim MyOpts As PromptCornerOptions
            MyOpts = New PromptCornerOptions("Entgegengesetzte Ecke angeben:", LastPickedPoint)
            MyOpts.UseDashedLine = True
            MyResult = MyEditor.GetCorner(MyOpts)
            MySelection = MyEditor.SelectCrossingWindow(LastPickedPoint, MyResult.Value)
            If MySelection.Status = PromptStatus.OK Then
                SecondEntyIDcoll = New ObjectIdCollection
                For Each MyId In MySelection.Value.GetObjectIds
                    SecondEntyIDcoll.Add(MyId)
                Next
                RemoveHandler MyEditor.PromptForEntityEnding, AddressOf PFE
                Return True
            End If
        End Try
.
.
.
.
  Sub PFE(sender As Object, e As EditorInput.PromptForEntityEndingEventArgs)
        If e.Result.Status = PromptStatus.Error Then
            LastPickedPoint = e.Result.PickedPoint
            Throw New Exception()
        End If
    End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz