| |
 | 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

 Beiträge: 3446 Registriert: 07.06.2001
|
erstellt am: 21. Sep. 2007 12:38 <-- editieren / zitieren --> Unities abgeben:         
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.
    
 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 / zitieren --> Unities abgeben:          Nur für Bernd P
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
 
 Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 23. Sep. 2007 01:54 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd P
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

 Beiträge: 3446 Registriert: 07.06.2001
|
erstellt am: 08. Okt. 2007 15:41 <-- editieren / zitieren --> Unities abgeben:         
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
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 08. Okt. 2007 15:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd P
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

 Beiträge: 3446 Registriert: 07.06.2001
|
erstellt am: 08. Okt. 2007 16:20 <-- editieren / zitieren --> Unities abgeben:         
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
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 08. Okt. 2007 16:26 <-- editieren / zitieren --> Unities abgeben:          Nur für Bernd P
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.
    
 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 / zitieren --> Unities abgeben:          Nur für Bernd P
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

 Beiträge: 3446 Registriert: 07.06.2001
|
erstellt am: 09. Okt. 2007 08:18 <-- editieren / zitieren --> Unities abgeben:         
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 |