Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Pickfirst selectionset ergaenzen und ausgeben

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:  Pickfirst selectionset ergaenzen und ausgeben (1439 mal gelesen)
rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 26. Jun. 2013 20: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

Hi

hat von euch schon mal jemand herausgefunden wie man in VBA ein selectionset
(per VBA automatisch anhand von z.B. objectnamen)erzeugt* und das
mit allen Griffen etc aktiviert ausgibt ? **
entity.hilite true ist da nicht der bringer.

Klar ich kann mir nen workaround basteln farbe der selektiereten elemente temporaer setzen, groups basteln usw. usw.
Nur elegant ist das alles nicht wirklich.

Bitte KEIN Lisp und kein .NET und kein C++
Wenns nicht anders geht ist mir da ein workaround allemal lieber.

LG Thomas

*null problema
** PROBLEM

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 26. Jun. 2013 20:55    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 rexxitall 10 Unities + Antwort hilfreich

Du hast einen SendCommand nicht ausgeschlossen..
Wenn du dafür sorgst das der Befehl _PSELECT geladen ist, dann würde es darüber gehen 

------------------
Link: User:FAQ (einiges Wissenswertes über AutoCAD)

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 27. Jun. 2013 01: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

hi,
ok muss ich mal testen - ist na klar keine reinrassige VBA Loesung - und den send.command Befehl hass ich wie die Pest - je nach Laune von Acad tut der oder Acad schmollt komplett.
Fix ist der (warumauchimmer) auch nicht.

Aber coole Umgehung meiner "Vorgaben" da denkt wer kreativ loesungszentriert ! 

LG aus finnland
Thomas

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 27. Jun. 2013 20:55    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

Nochmal danke feur den undokumentierten Befehl

Die letzte selektion nochmal auswaehlen das hab ich lange vermisst.
Gerade wenn man 8000 Elemente selektiert hat und die nicht nur rotieren sondern auch noch verschieben etc. moechte  ))

Ein Toolboxmakro sieht wie folgt aus:
^C^C_PSELECT;_p;;

damit das auf Anhieb hinhaut muss die
acopm.arx geladen sein (Anwendungen laden) die liegt im acad hauptverzeichnis)

Haken - mit den elementen muss einmal etwas passiert sein, damit das funktioniert.
auswaehlen und ESC = nix ist's 

Nachher mal guggen was vba dazu sagt 
Es ist ja nicht so das acad nix kann,
aber sowas gehoert wie der m2p Befehl auf ne standart toolbox.

LG aus Finnland

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 28. Jun. 2013 01: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 rexxitall 10 Unities + Antwort hilfreich


Die acopm.arx bringt _pselect mit, jawoll (die Datei wird normal erst mit dem _PROPERTIes/Eigenschaftenfenster geladen)


"Haken - mit den elementen muss einmal etwas passiert sein, damit das funktioniert."
Man muß nur einen Auswahlsatz mit den Elemente haben.
"auswaehlen und ESC = nix ist's " -> Hört sich auch nicht sinng an.
Damit hat man halt noch keinen Auswahlsatz erstellt.


Der Befehl WAHL/_select macht nichts anderes als einen Auswahlsatz erstellen (den nutze ich aber nur um Objektwahlmethoden
zu testen bzw., in Makros - da mir hier eine ordentliche Möglichkeit zur Verfügung steht um eine Objektwahl in Makros zu nutzen.


Leider kann man in der Befehlszeile, in AutoCAD Befehlen nur auf Lispdefinierte Auswahlsätze direkt zugreifen,
neben dem fehlen des PickSet in VBA die 2. Sache die schade ist.


------------------
Link: User:FAQ (einiges Wissenswertes über AutoCAD)

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 28. Jun. 2013 17: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

Ein moeglicher workaround waere hier mit vba eine Gruppe zu erstellen und die per sendcommand zu selectieren.
Die kann man ja hinterher wieder aufloesen.
Da muss ich noch ein wenig mit spielen 

Gestern war leider eine SOFICAD "ausmist" routine dringlicher.
Die speichern alle Bewehrungselemente in allen Massstaeben uebereinander ab.
Der Modellbereich ist demzufolge entsprechend "uebersichtlich"
Einfach die Layer loeschen bringts da nichht weil Je nach Viewport im layout brauch man da mehr als einen.
Ab ins Wochenende
LG aus Finnland

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !

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

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: 2624
Registriert: 02.05.2006

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

erstellt am: 04. Jul. 2013 13:11    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 rexxitall 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von rexxitall:
Gerade wenn man 8000 Elemente selektiert hat und die nicht nur rotieren sondern auch noch verschieben etc. moechte   nosmile:)
[/B]

Nur mal eine Frage:
Du weißt schon, dass man auf vorselektierte mit dem vordefinierten SelectionSet("CURRENT") oder ("PICKFIRST") zugreifen kann?

Kannst auch Deine Selection vor Beenden des Programmes auf CURRENT übergeben, dann kann man mit Schnellauswahl vorher gleich wieder darauf zugreifen.

Grüße
Klaus 

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



(Senior) Entwicklungsingenieur mechanische Integration (m/w/d)

Als Entwicklungsingenieur (m/w/d) sind Sie verantwortlich für die ganzheitliche mechanische Integration von Rüstsätzen/Gerätesätzen in militärische Fahrzeuge.
Zu Ihrem Aufgabenfeld gehören unter anderem folgende Punkte:

  • Realisierung von kundenspezifischen Projekten unter Einhaltung von internen Konstruktionsrichtlinien und Lastenheftanforderungen der Kunden ...
Anzeige ansehenEntwicklung
rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 11. Aug. 2013 22:00    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

DURCH DIE BRUST INS AUGE DURCHS KNIE GESCHOSSEN 

Selektionen an "CURRENT" uebertragen geht nur wenn die elemente einmal durch die selectionset.select funktion
wie auch immer gelaufen sind. Kann man gut mit selectonscreen testen aber das wollte ich ja gerade nicht  

Elemente einfach nur ins "CURRENT" reinzukopieren funktioniert nicht.
Mit der xdata loesung bin ich noch nicht ganz zufrieden aber sie tut das was sie soll.
der lisp teil kann sicherlich auch durch vba ersetzt werden.
Nur ich hab es irgendwie nicht hinbekommen Gruppen nach Namen zu filtern oder nach XDATA werten.

Anyhow, es tut ersteinmal und nun kann ich mir z.B ein besseres Quickselect bauen,
eine gescheite Gruppenselektion nachruesten, bestimmte Biegeformen aktivieren usw.

LG aus finnland

Sub selection_previous_delete()

'purpose is to clear the last setelctionset
'otherwise the last used might be activated

    Dim xDataType(1) As Integer
    Dim xDataValue(1) As Variant
    Dim P As AcadPoint

    Dim location(0 To 2) As Double

    'create fake pointelement
    location(0) = 0#: location(1) = 0#: location(2) = 0#
    Set P = ThisDrawing.modelspace.AddPoint(location)

    XAPPNAME = "SEL"
    xDataType(0) = 1001
    xDataValue(0) = XAPPNAME
    xDataType(1) = 1000
    xDataValue(1) = "1"

    'set xdata to fakeelement
    P.SetXData xDataType, xDataValue

    'first wait until acad is bored
    Set State = GetAcadState
    Do Until State.IsQuiescent
        DoEvents
        Set State = GetAcadState
    Loop

    'activate fakepointelement
    CMD1 = Chr(27) & Chr(27) & "(setq #filter (ssget " & Chr(34) & "x" & Chr(34) & "'((-3 (" & Chr(34) & XAPPNAME & Chr(34) & ")))))" & vbLf
    CMD2 = (Chr(27) & Chr(27) & "_PSELECT" & vbLf & "_P" & vbLf & vbLf)
    ThisDrawing.SEndCommand CMD1 & CMD2

    'delete fake

    Application.UPDATE
    P.Delete


End Sub

Sub selection_set_activate(ByVal selectionset As AcadSelectionSet)

'to set the entitys active you has first usually to use the
'selectionset.select function
'otherwise the selectionset can not be activated


'ensure nothing is selectef
    Application.UPDATE

    If SLOPEFORM.CURRENTGROUP.Value = "" Then Exit Sub
    Dim GROUP As AcadGroup
    Dim entity As AcadEntity
    Dim handle As Long

    Dim xDataType() As Integer
    Dim xDataValue() As Variant

    ReDim xDataType(1)
    ReDim xDataValue(1)
    Dim XAPPNAME As String

    'kill the last selection first
    selection_previous_delete


    'mark all entitys inside selectionset with a temporary xdata mark

    XAPPNAME = "SEL"
    xDataType(0) = 1001
    xDataValue(0) = XAPPNAME
    xDataType(1) = 1000
    xDataValue(1) = "1"


    For Each entity In selectionset
        entity.SetXData xDataType, xDataValue
    Next


    'ensure acad is bored

    Set State = GetAcadState
    Do Until State.IsQuiescent
        DoEvents
        Set State = GetAcadState
    Loop


    'use a lisp function to select the desired xdata marked elements, cmd1 should be also possible with plain VBA just got the filter not created  
    CMD1 = Chr(27) & Chr(27) & "(setq #filter (ssget " & Chr(34) & "x" & Chr(34) & "'((-3 (" & Chr(34) & XAPPNAME & Chr(34) & ")))))" & vbLf
    'activate last selectionset from cmd1
    CMD2 = (Chr(27) & Chr(27) & "_PSELECT" & vbLf & "_P" & vbLf & vbLf)

    ThisDrawing.SEndCommand CMD1 & CMD2

    'remove temporary xdata
    ReDim Preserve xDataType(0)
    ReDim Preserve xDataValue(0)

    For Each entity In selectionset
        entity.SetXData xDataType, xDataValue

    Next

End Sub


------------------
Wer es nicht versucht, hat schon verlorn  
Und bei 3 Typos gibts den vierten gratis !

[Diese Nachricht wurde von rexxitall am 11. Aug. 2013 editiert.]

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