Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Blöcke nach Position suchen

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
  
PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  Blöcke nach Position suchen (2527 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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 25. Mrz. 2009 19: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

Hallo,


ich wollte per "select" alle Blöcke an einer Position suchen. Aber irgendwie funktioniert das nicht, hab auch nichts im Internet oder hier im Forum gefunden(Vielleicht hab ich auch einfach die falschen Schlüsselworte verwendet). Ich denke das ganze scheitert bei mir am Zusammenbauen des Filter.

Code:

dim x as double
x = 10
dim y as double
y = 5
dim z as double
z = 0

' Filter für die Auswahl
Dim filterType(2) As Integer
Dim filterData(2) As Variant

' <Elementtyp = "Insert" für Block und den x-Wert (DXF-Gruppencode 10 ist Einfügepunkt)>
filterType(0) = 0
filterData(0) = "INSERT"
filterType(1) = -4
filterData(1) = "="
filterType(2) = 10
filterData(2) = x

' Durchführen der Suche
selectionSet.Select acSelectionSetAll, , , filterType, filterData


Ich hab mich jetzt erstmal nur auf den x-wert beschränkt aber das haut schon nicht hin. Vielleicht kann mir ja jemand weiterhelfen, evtl. sogar mit y und z.

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 25. Mrz. 2009 19:41    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 Gloem 10 Unities + Antwort hilfreich

Hi,

wie wärs mit SelectAtPoint ?

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 25. Mrz. 2009 20:13    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

SelectAtPoint iefert glaub ich immer nur ein Ergebnis kann das sein?
Die Funktion liefert mir jedenfalls keinen Block wenn darüber ne Linie liegt. Nehm ich die Linie weg bekomm ich einen Block als Rückgabewert

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 25. Mrz. 2009 20:28    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 Gloem 10 Unities + Antwort hilfreich

Hallo,

es kann doch keine Linie kommen, oder ?

Du hast doch deinen Filter. Du brauchst doch nur das Insert stehen lassen.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 25. Mrz. 2009 20: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

Wenn ich das "Insert" stehen lasse und über dem Block eine Linie liegt(also mit selectAtPoint) bekomm ich eine leere Rückgabe

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 25. Mrz. 2009 21:28    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 Gloem 10 Unities + Antwort hilfreich

Hallo,

hab es jetzt auch mal getestet. 
Du hast Recht. Es gibt wohl einige Feinheiten.
Auf die Schnelle habe ich da für heute auch keine Lösung.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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


Ex-Mitglied

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

Hi,

Vorsicht bei SelectBefehlen, die was mit Bildschirm-Inhalt zu tun haben, denn wenn das gewünschte Objekt ausserhalb des sichtbaren Bereichs ist, geht schon mal relativ wenig.

Ebenfalls Vorsicht, der Zoom-Ausschnitt kann hier auch schon mal eine große Rolle spielen, denn weit heraus (weit weg) gezoomt und Die Anzahl der Elemente, die AutoCAD z.B. bei SelectCrossing erwischt, steigt

Und dann wären dann auch noch die Koordinaten mit vielen, vielen Dezimalstellen, d.h. es gobt Situationen, da fügst Du eine BlockReferenz auf 10,10 ein, modifizierst den Block (skalieren, drehen, ...) und wenn Du dann bis zur letzten Dezimalstelle den Einfügepunkt abfragst, dann kann schon mal sowas wie 10.00000000456 vorkommen.
==> und damit läufst Du schon mal in Gefahr, dass ES (Dein AutoCAD) bei Punktangaben gar nix findet.

Vorschlag (zumindest würde ich es so machen):

a) ein SelectionSet über alle Blockreferenzen (nehme mal an, auch Filterung auf Modellbereich)

b) durchscannen und dabei Toleranz verwenden

Code:
if abs(BlRef.InsertionPoint(0) - MeinSuchPunkt(0)) < Tolerance then
  if abs(BlRef.InsertionPoint(1) - MeinSuchPunkt(1)) < Tolerance then

HTH, - alfred -

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 26. Mrz. 2009 11:10    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

An das mit der Toleranz habe ich auch schon gedacht. Wenn ich aber prüfen will wieviele Blöcke an der Stelle liegen muss ich erst das komplette SelektionSet durchlaufen.


Vielleicht erläutere ich erst noch einmal was ich genau machen möchte:

Es soll eine kleine Anwendung geschrieben werden die so ähnlich wie die Abstandsberechnung von AutoCad funktioniert. Die Anzeige soll neben den Abständen aber auch noch eine Punktnummer anzeigen falls ein Punkt mit einer Punktnummer ausgewählt wurde. Da die Punkte(Endpunkte, Einfügepunkte, Zentren, ...) aber in AutoCAD ja dumme Punkte sind, werden viele der Punkte bei uns durch Blöcke mit Attributen dargestellt, die unter anderem eine Punktnummer enthalten.

Wird jetzt ein Punkt durch den Benutzer ausgewählt, soll mit der Select-Anweisung überprüft werden, ob und wieviele Blöcke dort liegen. Sprich Rückgabewerte als String wären:
    - .count = 0 => "    "
    - .count > 1 => " Nicht eindeutig "
    - .count = 1 => Wert des Punktnummerattributes des Blockes

Am schönsten wäre natürlich wenn es mit einer Toleranz gehen würde, aber das sollte doch auch mit dem Filter der Select-Funktion machbar sein.

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


Ex-Mitglied

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

wieviele zu scannende Blockreferenzen gibt es denn im Modellbereich (durchschnittlich und zu erwartender Maximalwert)?

- alfred -

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 26. Mrz. 2009 11:23    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 Gloem 10 Unities + Antwort hilfreich

Hallo,

mal nur ungetestet. Würde das nicht mit SelectByPolyon gehen. Vorher generierst du ein Polygon rund um deinen Punkt !?
Im einfachsten Fall ein kleines Quadrat 

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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


Ex-Mitglied

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

Hi,

nochmals mein Hinweis: vorsicht vor den SelectMethoden!

Ich veranschauliche das mit folgendem Beispiel:

Ein Block mit Inhalt ein Kreis (in der Blockdefinition Radius 1), eingefügt bei Koordinate 10,10

folgender Code dazu:

Code:
Public Sub mySelect()
  Dim tSSet As AcadSelectionSet
  On Error Resume Next
  Set tSSet = ThisDrawing.SelectionSets.Add("pSSet")
  If tSSet Is Nothing Then Set tSSet = ThisDrawing.SelectionSets.Item("pSSet")
  tSSet.Clear
 
  Dim tPntArr(11) As Double
  tPntArr(0) = 9.5: tPntArr(1) = 9.5: tPntArr(2) = 0
  tPntArr(3) = 10.5: tPntArr(4) = 9.5: tPntArr(5) = 0
  tPntArr(6) = 10.5: tPntArr(7) = 10.5: tPntArr(8) = 0
  tPntArr(9) = 9.5: tPntArr(10) = 10.5: tPntArr(11) = 0
  tSSet.SelectByPolygon acSelectionSetCrossingPolygon, tPntArr
 
  Debug.Print tSSet.Count
 
  On Error GoTo 0
End Sub

und jetzt gibt es folgende Ergebnisse:

a) obwohl der Einfügepunkt auf 10,10 liegt, und der Code rund um 10,10 sucht, findet er gar nix, weil keine Geometrie an dieser Stelle ist, der Kreis in der Blockdefinition geht ja rund um meine Select-Fenster-Punkte rundherum 

b) skaliere ich den Block z.B. mit 0.1, sodass auch der Kreis innerhalb meine Select-Punkte liegt, dann:

b1) wenn die Geometrie am Bildschirm sichtbar ist, findet er hin und gibt mir die BlockRef ins SelectionSet 

b2) mit pan verschiebe ich jetzt den sichtbaren Ausschnitt soweit, dass der Block nicht mehr sichtbar ist (halt ein bisschen mehr pan machen, im Randbereich geht's noch), dann bekomme ich als Resultat ein leeres SelectionSet 

Ich hoffe, dass es zumindest soweit als Info dient, dass da einiges schief gehen kann!!

- alfred -

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 26. Mrz. 2009 20:04    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

@Alfred: Es können sagen wir mal bis zu maximal 10.000 Blöcke in einer Zeichnung sein. Wie würdest du den nach einem Block suchen wenn man der select-Funktion nicht trauen kann.

@Stelli: Gar nicht mal so dumm. Warum umständlich mit den Filtern ein Rechteck basteln wenn es dafür doch extra ne Funktion gibt. Irgendwie muss ich das überlesen haben

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


Ex-Mitglied

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

Hi, 
Zitat:
Es können sagen wir mal bis zu maximal 10.000 Blöcke in einer Zeichnung sein. Wie würdest du den nach einem Block suchen
so wie zuerst dargestellt, zuerst alle BlockRef selektieren und dann durchscannen mit Vergleich InsertionPoint zu gesuchter Koordinate (+/- Toleranz).

Abhängig von der Gesamtgröße der Zeichnung darf das nie mehr als 1sec dauern, wobei der längste Vorgang darin sicher das SelectionSet.Select mit AutoCAD ist.

- alfred -

PS: ich hab einen kleinen Versuch gemacht, 10000 Blöcke erzeugt, dann suchen lassen, es war nicht wirklich messbar. Code als Beispiel:

Code:
Public Sub test()
  Dim tSSet As AcadSelectionSet
  Set tSSet = ThisDrawing.SelectionSets.Add("AA8")
  Dim tDxfCodes(0) As Integer: tDxfCodes(0) = 0
  Dim tDxfValues(0) As Variant: tDxfValues(0) = "INSERT"
  tSSet.Select acSelectionSetAll, , , tDxfCodes, tDxfValues
 
  Debug.Print Format(Now(), "hhmmss")
 
  Dim tCol As Collection: Set tCol = New Collection
  Dim tBlRef As AcadBlockReference
  Dim tSearchPntMinX As Double: tSearchPntMinX = 999.9
  Dim tSearchPntMinY As Double: tSearchPntMinY = 499.9
  Dim tSearchPntMaxX As Double: tSearchPntMaxX = 1000.1
  Dim tSearchPntMaxY As Double: tSearchPntMaxY = 500.1
  For Each tBlRef In tSSet
      Dim tPnt As Variant
      tPnt = tBlRef.InsertionPoint
      If tPnt(0) > tSearchPntMinX Then
        If tPnt(1) > tSearchPntMinY Then
            If tPnt(0) < tSearchPntMaxX Then
              If tPnt(1) < tSearchPntMaxY Then
                  Call tCol.Add(tBlRef)
              End If
            End If
        End If
      End If
  Next
  Debug.Print Format(Now(), "hhmmss")
  Debug.Print tCol.Count
End Sub

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 26. Mrz. 2009 20:47    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

aber ich dachte dem select ist nicht wirklich zu trauen

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


Ex-Mitglied

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

ich habe beim Select auch kein 'SelectCrossing' oder 'SelectWindow' oder irgend eine Art von geometrischem Filter!!

Ich hoffe mich nicht falsch ausgedrückt zu haben, 'Select' funkt schon, nur in Verbindung mit positionsbestimmenden Filterangaben liefern z.T. Schrott.

- alfred -

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13530
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 26. Mrz. 2009 20: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 Nur für Gloem 10 Unities + Antwort hilfreich

du kannst auch alle items des Layouts durchlaufen, testen, ob es sich um eine Blockref handelt und die Einfügepunktkoordinaten mit dem vorgegebenen Wert vergleichen ...

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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


Ex-Mitglied

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

Hi Thomas,  
Zitat:
testen, ob es sich um eine Blockref handelt

was ist Deine Erfahrung mit 'auf Objekttyp prüfen'?

Sowohl 'if TypeOf Ent is AcadBlockReference' als auch 'Ent.ObjectName' sind von der Performance schon langsamer als ein SelectionSet oder hast eine schnelle Methode?


[EDIT]wobei sich diese Frage auf VB/VBA bezieht, mit .NET geb ich Dir zweifellos recht  [/EDIT]

- alfred -

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

[Diese Nachricht wurde von a.n. am 26. Mrz. 2009 editiert.]

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13530
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 26. Mrz. 2009 20:59    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 Gloem 10 Unities + Antwort hilfreich

ich mach kein vba  ... und ob ein ssget oder ein layoutscan .... hängt bei mir immer vom Einsatzzweck ab.

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 26. Mrz. 2009 21:44    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

ok, das mit dem positionsbezogenen Filter hatte ich verkehrt verstanden. Besten DAn, werden das so umsetzen

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 29. Mrz. 2009 14:59    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

Hab nochmal ne andere Frage und da die auch mit dem Select zusammenhängt schreib ich das einfach mal hier rein:

Ist es möglich bei einem select nur den Modelbereich zu durchsuchen? Mit einem .thisdrawing.modelspace.item und dann überprüfen ob es sich um einen Block handelt würde es prinzipell gehen aber in meinem Fall gerade nicht, da ich dann doch einigen umbauen müsste.

Am liebsten wäre mir ein Filter oder eine Methode oder Eigenschaft der Blockreferenz die mir sagt ob er im Modelbereich oder in einem Layout liegt

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


Ex-Mitglied

erstellt am: 29. Mrz. 2009 15:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Code:
if SelSet.Item(x).OwnerID = ThisDrawing.ModelSpace.ObjectID then
  'dann ist das Element x im modellbereich

und für den Filter wäre da der DXFCode 410 verantwortlich

- alfred -

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

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

Diverses PCs mit Windows 10/11 auf Basis von Intel-Prozessoren (i5-i9)
Quadro oder Gaming-Grafikkarten
AutoCAD normal, Map, Civil in den Varianten 2020-2025

erstellt am: 29. Mrz. 2009 15: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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 29. Mrz. 2009 18:17    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 Gloem 10 Unities + Antwort hilfreich

Vielleicht noch zur Ergänzung zu Alfreds Code:

Zitat:
  Dim tSSet As AcadSelectionSet
  Set tSSet = ThisDrawing.SelectionSets.Add("AA8")
  Dim tDxfCodes(0) As Integer: tDxfCodes(0) = 0
  Dim tDxfValues(0) As Variant: tDxfValues(0) = "INSERT"
  tSSet.Select acSelectionSetAll, , , tDxfCodes, tDxfValues


könnte man auch so machen:

Code:
  Dim tSSet As AcadSelectionSet
  Set tSSet = ThisDrawing.SelectionSets.Add("AA8")
  Dim tDxfCodes(1) As Integer 
  Dim tDxfValues(1) As Variant

  tDxfCodes(0) = 0
  tDxfValues(0) = "INSERT"
  tDxfCodes(1) = 67  'Filter ob Modell oder Layout
  tDxfValues(1) = 0    'Modell (0) / Layout (1)

  tSSet.Select acSelectionSetAll, , , tDxfCodes, tDxfValues


Klaus

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