Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  sendcommand

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  sendcommand (2082 mal gelesen)
Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3446
Registriert: 07.06.2001

erstellt am: 21. Sep. 2007 12:38    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

Servus

Will aus Excel einen Befehl in Autocad aufrufen und hab das im Forum gefunden. Der Befehl wird durch Formeln zusammengestellt und steht in im Layout Bestimmt Zelle D13.

Ich weiß das bei vbastmt der Befehl aus der Zelle reingehört aber wie hab ich keinen Schimmer.

Der Befehl dreht in Acad das UCS auf Welt setzt einen Block mit Attribut und dreht dann UCS wieder zurück.

Code:
(command "_ucs" "_w") (command "_insert" "Kot_Hoehe_LP" "-101941.8499051,203057.2992329" "" "" "" "1023.2" ) (command "_ucs" "_p")

Code:

Sub test()
    Dim acApp As Object, x
    Set acApp = GetObject(, "Autocad.application")
    x = acApp.activedocument.FullName
    Cells(1, 1) = x
    AppActivate "Autodesk Architectural Desktop 2005"
    ''acApp.activedocument.sendcommand "commandName" & chr(13)
    acApp.activedocument.sendcommand "vbastmt" & Chr(13) & "msgbox now" & Chr(13)
    '''AppActivate "Microsoft Excel"
End Sub


------------------
"Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark  Bernd P.
<----- Bitte Systeminfo eintragen, warum siehst du hier.

[Diese Nachricht wurde von Bernd P am 21. Sep. 2007 editiert.]

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: 21. Sep. 2007 18:48    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 Bernd P 10 Unities + Antwort hilfreich

Hallo Bernd
 
Zitat:
Original erstellt von Bernd P:
    acApp.activedocument.sendcommand "vbastmt" & Chr(13) & "msgbox now" & Chr(13)


Damit machst du deiner Signatur ("Warum Einfach es geht auch kompliziert") alle Ehre.
Du bist in Excel, holst dir eine ActiveX Instanz von AutoCAD, nutzt da den Bypass um AutoCAD Kommandos aufzurufen, um da mit dem Hilfskommado VBASTMT einen VB Befehl auszuführen. 
Was willst du denn eigentlich machen  

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 23. Sep. 2007 01: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 Bernd P 10 Unities + Antwort hilfreich

Ich meine ich habe mal folgendes gebraucht:
Ich habe Werte in Excel und mit diesen soll in Autocad was gezeichnet werden!
Das Hauptprogramm das die Werte verarbeitet befindet sich aber in Autocad (ist einfach viel viel schneller)

########Programm in Excel

Public mspace, acad

Sub Zeichne()

    Call initacad
   
    AppActivate acad.Caption
    Hilfstool_Cad.acad.ActiveDocument.SendCommand "-vbarun Ergebnislinienzeichnen.Zeichne_Mom "
'Das Programm Zeichne_Mom holt sich dann aus Excel die Daten und verarbeitet diese dann in Autocad"

End Sub


Sub initacad()
On Error Resume Next
Set acad = GetObject(, "AutoCAD.Application")
Set mspace = acad.ActiveDocument.ModelSpace
If Err.Number <> 0 Then
Set acad = CreateObject("AutoCAD.Application")
Set mspace = acad.ActiveDocument.ModelSpace
End If
acad.Visible = True
End Sub

########Ende Programm in Excel

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3446
Registriert: 07.06.2001

erstellt am: 08. Okt. 2007 15: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

Servus
Jo mei, wenn mans logisch durch denkt geht´s eh.

Code:
Sub Export_Bestimmt2()
    Dim acApp As Object, x, y
    Application.ScreenUpdating = False
    Set acApp = GetObject(, "Autocad.application")
    x = acApp.activedocument.FullName
    y = Worksheets("bestimmt").Cells(13, 4).Value
    AppActivate "Autocad 2006"
    ''acApp.activedocument.sendcommand "commandName" & chr(13)
    acApp.activedocument.sendcommand y
    '''AppActivate "Microsoft Excel"
    Sheets("start").Select
End Sub


------------------
"Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark  Bernd P.
<----- Bitte Systeminfo eintragen, warum siehst du hier.

[Diese Nachricht wurde von Bernd P am 08. Okt. 2007 editiert.]

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 08. Okt. 2007 15:48    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 Bernd P 10 Unities + Antwort hilfreich

Nehmen wir mal an, dass der ganze String wirklich eins zu eins in einem Excelferld steht

Eyxcelfeld Inmhalt : (command "_ucs" "_w") (command "_insert" "Kot_Hoehe_LP" "-101941.8499051,203057.2992329" "" "" "" "1023.2" ) (command "_ucs" "_p")

jetzt holst du dir diesen Inhalt einfach in eine Variable z.B.: StringAusExcelFeld und  schiesst es so ins Autocad:

acadObj.ActiveDocument.sendcommand "(progn" & StringAusExcelFeld & ")" & vbcr


------------------
   
Ing. Anton Fuchs
WWW.FFZELL.AT.TC

[Diese Nachricht wurde von fuchsi am 08. Okt. 2007 editiert.]

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3446
Registriert: 07.06.2001

erstellt am: 08. Okt. 2007 16: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

Servus

Genau das war das Problem wie bekomme ich den String StringAusExcelFeld richtig rüber.
Hier auch der Code zum persönlichen anpassen (die FETT markierten stellen.)


Code:

Sub Export_Bestimmt2()
    Dim acApp As Object, x, y
    Application.ScreenUpdating = False
    Set acApp = GetObject(, "Autocad.application")
    x = acApp.activedocument.FullName
    y = Worksheets("bestimmt").Cells(13, 4).Value
    AppActivate "Autocad 2006"
    ''acApp.activedocument.sendcommand "commandName" & chr(13)
    acApp.activedocument.sendcommand y
    '''AppActivate "Microsoft Excel"
    Sheets("start").Select
End Sub

------------------
"Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark  Bernd P.
<----- Bitte Systeminfo eintragen, warum siehst du hier.

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 08. Okt. 2007 16:26    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 Bernd P 10 Unities + Antwort hilfreich


Sub Export_Bestimmt2()
    Dim acApp As Object, x, y
    Application.ScreenUpdating = False
    Set acApp = GetObject(, "Autocad.application")
    x = acApp.activedocument.FullName
    y = Worksheets("bestimmt").Cells(13, 4).Value
    AppActivate "Autocad 2006"
    ''acApp.activedocument.sendcommand "commandName" & chr(13)
    acApp.activedocument.sendcommand y
    '''AppActivate "Microsoft Excel"
    Sheets("start").Select
End Sub[/code]

Und im Excel Feld 13,4 steht wirklich dieser ganze Codeschnippsel (command "ucs" ...

dann sollte es so gehen
acApp.activedocument.sendcommand "(progn " & y & ")" & vbcr

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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: 08. Okt. 2007 18:26    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 Bernd P 10 Unities + Antwort hilfreich

Hallo,

IMHO müsste aber die richtige Caption beim AppActivate verwendet werden um das Fenster auch wirklich zu aktivieren.
Oder ist keine Zeichnung offen ?

Code:
''AppActivate "Autocad 2006"
AppActivate acApp.Caption


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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3446
Registriert: 07.06.2001

erstellt am: 09. Okt. 2007 08:18    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

Servus

Der Code funktioniert jetzt soweit danke @all
Hier der Code für
Eine Zelle

Code:

Sub Export_Bestimmt2()
    Dim acApp As Object, x, y
    Application.ScreenUpdating = False
    Set acApp = GetObject(, "Autocad.application")
    x = acApp.activedocument.FullName
    y = Worksheets("bestimmt").Cells(13, 4).Value
    AppActivate "Autocad 2006"
    ''acApp.activedocument.sendcommand "commandName" & chr(13)
    acApp.activedocument.sendcommand y
    '''AppActivate "Microsoft Excel"
    Sheets("start").Select
End Sub

mehrere Zellen untereinander
Code:

Sub Export_intervall()
    Dim acApp As Object, x, y
    Application.ScreenUpdating = False
    Set acApp = GetObject(, "Autocad.application")
    x = acApp.activedocument.FullName
    For i = 13 To 112
    y = Worksheets("intervall").Cells(i, 4).Value
    AppActivate "Autocad 2006"
    '''acApp.activedocument.sendcommand "commandName" & chr(13)
    acApp.activedocument.sendcommand y
    '''AppActivate "Microsoft Excel"
    Next
End Sub

------------------
"Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark  Bernd P.
<----- Bitte Systeminfo eintragen, warum siehst du hier.

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