Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  VBA - Auswahl

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
Autor Thema:  VBA - Auswahl (1283 mal gelesen)
RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Autodesk Building Design Suite Premium 2021
Windows 10 Pro 64bit
HP Workstation Z620, 24GB
GeForce GTX 970

erstellt am: 12. Sep. 2002 13:45    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

Hollo VBA-Spezialisten,
folgendes Problem.
Ich habe eine Routine programmiert die ähnlich dem MESSEN-Befehl funktioniert, mit dem Unterschied das man einen Anfangspunkt und die Richtung, sowie die Anzahl angeben muß.
Es werden wie beim MESSEN-Befehl Blöcke oder Punkte eingesetzt.

Nun zu meiner Frage. Beim MESSEN-Befehl kann man danach alle Objekte mit V (vorige) auswählen, bei mir wird nur das letzte ausgewählt. Gibt es da eine möglichkeit die eingesetzten Blöcke oder Punkte auch auf einmal auszuwählen?

Danke

------------------
Roland

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

Bernd Cuder
Mitglied
Selbständig


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

Beiträge: 692
Registriert: 10.07.2002

AutoCAD 2002/2004/2005
unter Windows 2000
Professional SP3
PIV 3.4GHz 1024MB
NVIDIA GeForce FX Go5700

erstellt am: 12. Sep. 2002 13:58    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 RoSiNiNo 10 Unities + Antwort hilfreich

Erzeugst du die Objekte im Code oder mit Befehl Messen?

Wenn im Code würde ich die Objekte in einem Objekt-Array
speichern und am Ende der Erstellung kannst du über das
Array darauf zugreifen, oder du startest einen Reactor (objectAdded)
und läßt den Reactor die neuen Objekte in einem Array speichern.

------------------
Ing. Bernd Cuder
Cad&Co makes CAD easy

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Autodesk Building Design Suite Premium 2021
Windows 10 Pro 64bit
HP Workstation Z620, 24GB
GeForce GTX 970

erstellt am: 12. Sep. 2002 14:06    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

Zitat:
Original erstellt von Bernd Cuder:
Wenn im Code würde ich die Objekte in einem Objekt-Array
speichern und am Ende der Erstellung kannst du über das
Array darauf zugreifen, oder du startest einen Reactor (objectAdded)
und läßt den Reactor die neuen Objekte in einem Array speichern.

Hallo Bernd,
ich wußte auf dich kann man zählen. Das mit dem Array ist ein guter Vorschlag, muß ich einmal ausprobieren, wie das mit dem Reactor funktioniert verstehe ich nicht ganz. Ich haffe auch mich klar ausgedrückt zu haben, ich möchte nicht in meiner Routine darauf zugreifen, sondern erst nachher in ACAD.

Danke dir auf jeden Fall

------------------
Roland

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

Bernd Cuder
Mitglied
Selbständig


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

Beiträge: 692
Registriert: 10.07.2002

AutoCAD 2002/2004/2005
unter Windows 2000
Professional SP3
PIV 3.4GHz 1024MB
NVIDIA GeForce FX Go5700

erstellt am: 12. Sep. 2002 14: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 Nur für RoSiNiNo 10 Unities + Antwort hilfreich

Nacher ist schlecht, aber mit Trick gehts:

Dur erzeugst die Objekte, speicherst sie im Array, und am Ende
der Routine gibst du sie vom Array in einen neuen Auswahlsatz.

Wenn du jetzt in AutoCAD z.B. schieben->vorher eingibst bekommst
du deinen Auswahlsatz (da der Letzte) zurück.

------------------
Ing. Bernd Cuder
Cad&Co makes CAD easy

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

Bernd Cuder
Mitglied
Selbständig


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

Beiträge: 692
Registriert: 10.07.2002

AutoCAD 2002/2004/2005
unter Windows 2000
Professional SP3
PIV 3.4GHz 1024MB
NVIDIA GeForce FX Go5700

erstellt am: 12. Sep. 2002 14:20    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 RoSiNiNo 10 Unities + Antwort hilfreich

Das mit dem Array muß natürlich nicht sein, wenn du am Anfang der Routine
einen neuen Auswahlsatz erzeugst und die Dinger nacheinander reingibst
tuts das auch.

------------------
Ing. Bernd Cuder
Cad&Co makes CAD easy

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Autodesk Building Design Suite Premium 2021
Windows 10 Pro 64bit
HP Workstation Z620, 24GB
GeForce GTX 970

erstellt am: 12. Sep. 2002 14:22    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

Zitat:
Original erstellt von Bernd Cuder:
Das mit dem Array muß natürlich nicht sein, wenn du am Anfang der Routine
einen neuen Auswahlsatz erzeugst und die Dinger nacheinander reingibst
tuts das auch.


Danke für den Tipp, jetzt ist mir aber ein Stein vom Herzen gefallen, ich hab nämlich gerade nicht viel Zeit, wenn ich aber kein array brauche geht es ein bischen schneller.

------------------
Roland

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Autodesk Building Design Suite Premium 2021
Windows 10 Pro 64bit
HP Workstation Z620, 24GB
GeForce GTX 970

erstellt am: 12. Sep. 2002 14: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

Also, jetzt hab ich die Dinger in ein SelectionSet hineingegeben, aber leider nimmt er mir nicht die Punkte sondern das letzte Element das ich vorher verschoben habe. :-(

anbei ein Auszug des Codes

Code:

            BlElem.Update
                       
            Set objArray(0) = BlElem
            SS.AddItems objArray

            BlElem = Nothing



------------------
Roland

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

Bernd Cuder
Mitglied
Selbständig


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

Beiträge: 692
Registriert: 10.07.2002

AutoCAD 2002/2004/2005
unter Windows 2000
Professional SP3
PIV 3.4GHz 1024MB
NVIDIA GeForce FX Go5700

erstellt am: 12. Sep. 2002 15:03    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 RoSiNiNo 10 Unities + Antwort hilfreich

Der Code ist ein bischen wenig wenn er nicht zu geheim
ist hier rein sonst an

bernd.cuder@chello.at

ich sehs mir dann an

------------------
Ing. Bernd Cuder
Cad&Co makes CAD easy

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

Bernd Cuder
Mitglied
Selbständig


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

Beiträge: 692
Registriert: 10.07.2002

AutoCAD 2002/2004/2005
unter Windows 2000
Professional SP3
PIV 3.4GHz 1024MB
NVIDIA GeForce FX Go5700

erstellt am: 12. Sep. 2002 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 Nur für RoSiNiNo 10 Unities + Antwort hilfreich

Der Trick mit dem Hüftknick:

Public Sub Test()

    Dim ss As AcadSelectionSet
    Dim Auswahl As AcadSelectionSet
    Dim objArray(1) As AcadEntity
   
    On Error Resume Next
    Set ss = ThisDrawing.SelectionSets("Auswahl")
    If Err Then Set ss = ThisDrawing.SelectionSets.Add("Auswahl")
    ss.Clear
   
    On Error GoTo 0
   
    Set Auswahl = CreateSelectionSet("Auswahl")
   
    Dim objLine As AcadLine
    Dim dblPkt1(2) As Double
    Dim dblPkt2(2) As Double
   
    dblPkt1(0) = 0
    dblPkt1(1) = 0
    dblPkt1(2) = 0
   
    dblPkt2(0) = 5
    dblPkt2(1) = 5
    dblPkt2(2) = 0
   
    Set objLine = ThisDrawing.ModelSpace.AddLine(dblPkt1, dblPkt2)
   
    Set objArray(0) = objLine
   
    dblPkt1(0) = 0
    dblPkt1(1) = 5
    dblPkt1(2) = 0
   
    dblPkt2(0) = 5
    dblPkt2(1) = 0
    dblPkt2(2) = 0
   
    Set objLine = ThisDrawing.ModelSpace.AddLine(dblPkt1, dblPkt2)
   
    ThisDrawing.Application.Update
   
    Set objArray(1) = objLine
 
    Dim varObj As Variant
   
    Dim Xtyp(1) As Integer
    Dim Xdat(1) As Variant
 
    Xtyp(0) = 1001: Xdat(0) = "CCNC_Auswahl"
    Xtyp(1) = 1000: Xdat(1) = "Auswahl"
 
    For Each varObj In objArray
      varObj.SetXData Xtyp, Xdat
    Next
 
    Xtyp(0) = 1001: Xdat(0) = "CCNC_Auswahl"
    Xtyp(1) = 1000: Xdat(1) = ""
 
    Dim Ftyp(0) As Integer
    Dim Fdat(0) As Variant
    Dim P1 As Variant
    Dim P2 As Variant
 
    Ftyp(0) = 1001
    Fdat(0) = "CCNC_Auswahl"
   
    Auswahl.Select acSelectionSetAll, , , Ftyp, Fdat
   
    For Each varObj In Auswahl
      varObj.SetXData Xtyp, Xdat
    Next
       
    Auswahl.Delete

End Sub

------------------
Ing. Bernd Cuder
Cad&Co makes CAD easy

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

Bernd Cuder
Mitglied
Selbständig


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

Beiträge: 692
Registriert: 10.07.2002

AutoCAD 2002/2004/2005
unter Windows 2000
Professional SP3
PIV 3.4GHz 1024MB
NVIDIA GeForce FX Go5700

erstellt am: 12. Sep. 2002 16:02    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 RoSiNiNo 10 Unities + Antwort hilfreich

Opps, so muß sein:

    Dim Xtyp() As Integer
    Dim Xdat() As Variant
    ReDim Xtyp(1)
    ReDim Xdat(1)
 
    Xtyp(0) = 1001: Xdat(0) = "CCNC_Auswahl"
    Xtyp(1) = 1000: Xdat(1) = "Auswahl"
 
    For Each varObj In objArray
      varObj.SetXData Xtyp, Xdat
    Next
 
    ReDim Xtyp(0)
    ReDim Xdat(0)
    Xtyp(0) = 1001: Xdat(0) = "CCNC_Auswahl" 'Damit Xdata gelöscht werden

------------------
Ing. Bernd Cuder
Cad&Co makes CAD easy

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Autodesk Building Design Suite Premium 2021
Windows 10 Pro 64bit
HP Workstation Z620, 24GB
GeForce GTX 970

erstellt am: 12. Sep. 2002 16:02    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

Zitat:
Original erstellt von Bernd Cuder:
Der Trick mit dem Hüftknick:

Hallo Bernd,
wie ich sehe kennst du die Seite http://code.acadx.com/
Oder liege ich da falsch?
Wenn ja, möchtest du die Funktion die ich geschrieben habe?
Ich schicke sie dir per Mail, ist doch etwas umfangreicher, natürlich nur wenn du sie möchtest.
Man braucht dafür die VLAX.cls und CURVE.cls. Ich möchte allerdings versuchen das ganze mit der AcadX.arx neu zu programmieren, vielleicht geht das ding dann etwas schneller.

------------------
Roland

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Autodesk Building Design Suite Premium 2021
Windows 10 Pro 64bit
HP Workstation Z620, 24GB
GeForce GTX 970

erstellt am: 12. Sep. 2002 16:12    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

wofür braucht man eigentlich das SS am Anfang?
eigentlich machst du ja zwei SelectionSets, aber wozu?

Hab dir auch die ganze Prozedur per Mail geschickt.

------------------
Roland

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

Bernd Cuder
Mitglied
Selbständig


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

Beiträge: 692
Registriert: 10.07.2002

AutoCAD 2002/2004/2005
unter Windows 2000
Professional SP3
PIV 3.4GHz 1024MB
NVIDIA GeForce FX Go5700

erstellt am: 12. Sep. 2002 16:27    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 RoSiNiNo 10 Unities + Antwort hilfreich

Ich habe zwei gemacht weil ich zu blöd zu löschen bin.

Ich habe die Funktion direkt eingebaut aber vergessen

Set Auswahl = CreateSelectionSet("Auswahl")

rauszulöschen und ss umzubenennen.

Das hat mich dann auch verraten bzgl AcadX oder?
   
   

------------------
Ing. Bernd Cuder
Cad&Co makes CAD easy

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Autodesk Building Design Suite Premium 2021
Windows 10 Pro 64bit
HP Workstation Z620, 24GB
GeForce GTX 970

erstellt am: 12. Sep. 2002 16:31    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

Zitat:
Original erstellt von Bernd Cuder:

Das hat mich dann auch verraten bzgl AcadX oder?


Genau das war es, ich verwende genau das gleiche, ich finde die Leute bei AcadX genial, die Funktionen sind auch sehr gelungen.

------------------
Roland

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