Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Elemente an befehlszeile übergeben

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:  Elemente an befehlszeile übergeben (2764 mal gelesen)
RalphRX8
Mitglied
Kontruktionsbüro


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

Beiträge: 333
Registriert: 17.11.2004

AutoCAD-Mechanical 2017, SolidEdge ST8

erstellt am: 21. Mrz. 2007 19: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

Hallo,

Ich habe folgendes Problem:
Ich möchte mit der Mechanical-Desktop Funktion _AMSweepSF so eine Art Freiromfläche erstellen.
Leider scheint es in VBA dafür keine Zugriffsmöglichkeit zu geben.
Also bleibt mir eigentlich nur die Befehlszeile.


Nun meine Frage, kann man, wenn man in AutoCAD mit VBA einen Befehl über die Befehlszeile startet, irgendwie definierte Elemente übergeben.
Wenn ich den Befehl gestartet habe, steht in der Befehlszeile "Objekte wählen:"
Ich könnte zum Beispiel mit den benötigten Elementen(Splines) ein selection-set definieren.
Da ein selectionset ja in einer Zeichnung definiert bleibt bis man es löscht, könnte ich mir gut vorstellen dass sowas geht.
Ist es also möglich ein VBA-selectionset manuell über die Befehlszeile abzurufen?

Beispiel: Ich habe per VBA ein selectionset mit einigen Linien definiert. Anschließend gehe ich in AutoCAD auf "Move" und gebe dann irgendwie das sset an.

Die Andere Möglichkeit wäre jedes Element einzeln zu übergeben.

Geht sowas und wenn ja, wie???

Viele Grüße
Ralph

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

erstellt am: 21. Mrz. 2007 19:53    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 RalphRX8 10 Unities + Antwort hilfreich

Hi Ralph,

Hast du es schon einmal mit der Option "_p" für previous versucht?!

Ist nicht unbedingt schön aber siehe hier:

ThisDrawing.SendCommand "_move" & vbCr & "_p" & vbCr & vbCr & "0,0,0" & vbCr & "@100,0,0" & vbCr

Gruß, Carsten

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

RalphRX8
Mitglied
Kontruktionsbüro


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

Beiträge: 333
Registriert: 17.11.2004

AutoCAD-Mechanical 2017, SolidEdge ST8

erstellt am: 21. Mrz. 2007 20: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

Danke für die Antwort, aber das kommt denke ich nicht in Frage, da ich zweierlei Auswahlen treffen muß.
(Eine ganze Latte Splines und anschließend 2 Linien)

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

erstellt am: 21. Mrz. 2007 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 Nur für RalphRX8 10 Unities + Antwort hilfreich

Hi Ralph,

Kannst du denn die Splines nicht zuerst in den Auswahlsatz packen und dann mittels add-Funktion die beiden Linien hinzufügen?!

Gruß, Carsten

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: 1521
Registriert: 17.08.2005

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

erstellt am: 21. Mrz. 2007 20:56    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 RalphRX8 10 Unities + Antwort hilfreich

Hallo Ralph,

mir fehlt's am passenden Lisp.

Code:

Dim sset As AcadSelectionSet
Dim ent As AcadEntity

Set sset = ThisDrawing.SelectionSets("MS")

sset.Clear
sset.Select acSelectionSetAll
For Each ent In sset
    ' Per Lisp ein Objekt per handle zum Selektionset hinzufügen
    Debug.Print ent.Handle
    'ThisDrawing.SendCommand "lisp'eln"
Next ent
' Befehl mit Auswahl aus dem Selectionset SS
ThisDrawing.SendCommand "_move !ss " & vbCrLf



Vielleicht hat ja noch jemand den passenden Lisp Ausdruck 

Stelli

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

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

RalphRX8
Mitglied
Kontruktionsbüro


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

Beiträge: 333
Registriert: 17.11.2004

erstellt am: 22. Mrz. 2007 21: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

Danke Stelli1,

aber ich bekomme das nicht hin.
Ich denke es müsste heißen:

Set sset = ThisDrawing.SelectionSets.Add("SS")

anstatt

Set sset = ThisDrawing.SelectionSets("MS")

Oder??

Und dann kann ich doch auch mit VBA Elemente dem SelectionSet hinzufügen, oder?
Das passende Lisp finde ich leider nicht.

Also ich habe auf jeden Fall die Zeile geändert und die Elemente mit der VBA-Add Methode dem Selectionset hinzugefügt.
Wenn ich dann "_move !ss " mache, sagt er ungültige Auswahl.

Kannst Du mir vielleicht nochmal auf die Sprünge helfen?

Danke vorab.
Ralph

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: 1521
Registriert: 17.08.2005

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

erstellt am: 23. Mrz. 2007 10:09    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 RalphRX8 10 Unities + Antwort hilfreich

Hallo Ralph,

der Code war ja auch nicht fertig. Ich dachte jemand hätte noch eine Idee für die fehlende Zeile.

Auf jeden Fall hat das VBA Selektionset nichts mit dem in AutoCAD zu tun. Nachfolgend aber noch eine andere Möglichkeit.

Code:
Sub test()

    ' Zum Testen einige Linien ud einige Kreise zeichnen
   
    Dim FilterType(0) As Integer
    Dim FilterData(0) As Variant
    Dim sset As AcadSelectionSet
   
    Set sset = ThisDrawing.ActiveSelectionSet
   
    ' Alle Linien wählen
    FilterType(0) = 0
    FilterData(0) = "LINE"
    sset.Clear
    sset.Select acSelectionSetAll, , , FilterType, FilterData
    ' Auswahl als "Lisp"Selectionset speichern
    ' Die Auswahl aus sset wird mit _p (vorherige) an Autocad übergeben
    ThisDrawing.SendCommand ("(setq ssetLine (ssget ""_P""))") & vbCr
   
    ' Alle Kreise wählen
    FilterType(0) = 0
    FilterData(0) = "CIRCLE"
    sset.Clear
    sset.Select acSelectionSetAll, , , FilterType, FilterData
    ' Auswahl als "Lisp"Selectionset speichern
    ThisDrawing.SendCommand ("(setq ssetCircle (ssget ""_P""))") & vbCr
   
    ' Alle Linien schieben
    ThisDrawing.SendCommand "_move !ssetLine " & vbCr & "0,0 2,2" & vbCr
   
    ' Alle Kreise schieben
    ThisDrawing.SendCommand "_move !ssetCircle " & vbCr & "2,2 0,0" & vbCr

End Sub



Hierbei wirden in VBA zwei Selektionen (als Beispiel) vorgenommen und in AutoCAD als zwei Selektionen gespeichert. Auf diese hast du dann auch aus AutoCAD einen Zugriff.
z.B. "Schieben !ssetCircle"
Durch die Eingabe von !ssetCircle als Objektauswahl wird die Auswahl jedem Befehl von AutoCAD zugänglich.

Stelli

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

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