Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Unterscheiden zwischen Blöcken und externen Referenzen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
Autor Thema:  Unterscheiden zwischen Blöcken und externen Referenzen (1344 mal gelesen)
Gloem
Mitglied
Geoinformatiker


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

Beiträge: 181
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 26. Mrz. 2010 18:52    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 möchte dem Anwender per editor.getEntity eine BlockReferenz auswählen lassen, jedoch bekomm ich hier auch Externe Referenzen. Kann man das irgendwie einschränken?

Code:
            ' Blockreferencen auch auf gesperrten Layern und Keywords: Name
            Dim getBlockReferenceOptions As New PromptEntityOptions(ControlChars.CrLf & "Bitte eine der zu ändernden Blockreferenzen auswählen oder: ")
            getBlockReferenceOptions.SetRejectMessage(ControlChars.CrLf & "Es sind nur Blockreferenzen erlaubt")
            getBlockReferenceOptions.AddAllowedClass(GetType(BlockReference), False)
            getBlockReferenceOptions.AllowObjectOnLockedLayer = True
            getBlockReferenceOptions.AllowNone = False
            getBlockReferenceOptions.Keywords.Add("Name")

            ' Auswahl eine der Blockreferenzen durch den Benutzer
            Dim getBlockReferenceResult As PromptEntityResult = editor.GetEntity(getBlockReferenceOptions)


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


Ex-Mitglied

erstellt am: 26. Mrz. 2010 20:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Grundübel für diese Thematik ist, dass die Information, ob es ein XRef ist oder nicht, nicht in der BlockReference ersichtlich ist, damit geht auch kein Filter, weil es keine 'IchBinXRef'-Eigenschaft gibt. Diese Information steht nur in der Blockdefinition und auf diese Info's kann nicht gefiltert werden.

Wenn Du bei der Selektion das Highlighting der Objektwahl verhindern willst, dann hab ich nur eine (dumme, aber einfache) Idee:

- BlockTable durchscannen durch alle Blockdefinitionen
- beurteilen, welche XRef's (bzw. Layouts oder unnamed) sind und welche nicht, dabei die Blocknamen sammeln
- in SelectionSet einen Filter einbauen, der diese Blocknamen prüft

Beispiel: hier werden die Blockreferenzen (nur aus Modellbereich) mit dem Blocknamen 'A', 'B', 'C' und 'X' zulässig, alle anderen Objektarten und alle anderen Blockreferenzen werden schon von vornherein ausgeschlossen (und damit auch kein Highlight)

Code:
Dim tSelRes As EditorInput.PromptSelectionResult
Dim tDxfFilter As ResultBuffer = New DatabaseServices.ResultBuffer
'filter mal zurechtlegen
tDxfFilter.Add(New TypedValue(DxfCode.LayoutName, "Model"))    'nur Modellbereich
tDxfFilter.Add(New TypedValue(DxfCode.Start, "INSERT"))
tDxfFilter.Add(New TypedValue(DxfCode.BlockName, "A,B,C,X"))

Dim tPromptSelOpts As EditorInput.PromptSelectionOptions = New EditorInput.PromptSelectionOptions
tPromptSelOpts.MessageForAdding = "Objekte hinzufügen"

Dim tSelFilter As New EditorInput.SelectionFilter(tDxfFilter.AsArray)
tSelRes = tAcadDoc.Editor.GetSelection(tPromptSelOpts, tSelFilter)



Eine zweite Variante wäre, einen Event zu bauen, der während des getSelection aktiv ist, die Objektwahl-Hinzufügung abfängt, prüft, ob es sich um ein XRef handelt und wenn ja, dann die Selection dessen canceled.

----------

Ist das Highlighting egal während der Selection, kannst Du ja beim Durcharbeiten der selektierten Elemente immer noch die XRef's rausschmeissen.


HTH, - alfred -

------------------
www.hollaus.at

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)2024 CAD.de | Impressum | Datenschutz