Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  ACAD-Befehl aus Excel starten

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
  
PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
Autor Thema:  ACAD-Befehl aus Excel starten (2519 mal gelesen)
Alfonso
Mitglied
Holztechniker


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

Beiträge: 44
Registriert: 24.08.2005

HP Workstation Z400
Intel(R) Xeon(R) CPU W3550 @ 3.06GHz
16.0 GB RAM
Nvidea Quadro 4000
3Dconnexion SpacePilot Pro
Windows 7 Proffessional 64bit
AutoCAD 2010 32bit
AutoCAD 2012 64bit
AutoCAD 2013 64bit
Inventor 2013
Navisworks Manage 2013
Autodesk Vault 2013
Visual Studio 2012 Professional
OpenDCL Studio 6.0.2.3

erstellt am: 14. Feb. 2006 18:14    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 zusammen,

Ich habe mir in Excel ein Programm erstellt um Stücklisten zu erstellen. Nun möchte ich gerne das ich von Excel aus die Maße von Objekten aus AutoCAD einfüge.

Das ganze soll folgendermaßen aussehen:

- Button in Excel klicken
- automatisch nach AutoCAD wechseln
- automatisch Befehl aufrufen
  (der Befehl ist ein Lispprogramm womit ich maße in der
  Zwischenablage speicher)
- automatisch zurück nach Excel wechseln


Nun zu meiner Frage:
Was muss ich im VBA-Editor in Excel eingeben, das nach AutoCAD gewechselt wird, der Befehl durchgeführt wird und danach nach Excel zurückgekehrt wird.

Ich hoffe mir kann jemand helfen da ich über VBA nur
sehr wenig kenne.  


mfg Alfonso

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 14. Feb. 2006 19:08    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 Alfonso 10 Unities + Antwort hilfreich

Hallo Alfonso,

bin mir nicht sicher, obs einwandfrei läuft, da ich nicht weiss,
was dein Lisp genau macht (Usereingaben? etc)
U.U. braucht man ja nicht unbedingt ein appactivate,
anyway, spiele mal bissel rum, achja ich bin mal einfach davon ausgegangen, dass Acad gestartet ist;-)

HTHHope this helps (Hoffe, es hilft weiter), Nancy
--

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

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

Alfonso
Mitglied
Holztechniker


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

Beiträge: 44
Registriert: 24.08.2005

erstellt am: 14. Feb. 2006 20:23    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 Nancy,

danke für die schnelle Antwort. Es funktioniert gut.

Ist es auch noch möglich das eine Meldung in Excel kommt, wenn AutoCAD oder eine Zeichnung nich geöffnet ist?


Hier der VBA-Code:

Sub Maßstabholen()
    Dim acApp As Object, x
    Set acApp = GetObject(, "Autocad.application")
    ''x = acApp.activedocument.FullName
    Cells(1, 1) = x
    AppActivate "AutoCAD 2000"
    acApp.activedocument.sendcommand "T2" & Chr(13)
    ''acApp.activedocument.sendcommand "vbastmt" & Chr(13) & "msgbox now" & Chr(13)
    AppActivate "Microsoft Excel"
    ActiveSheet.Paste
    Selection.TextToColumns Destination:=ActiveCell, DataType:=xlFixedWidth, _
    FieldInfo:=Array(Array(0, 1), Array(3, 1)), TrailingMinusNumbers:=True
End Sub


und der Lisp-Code:

(defun c:T2 (/)
  (setq exitflag nil)
  (setq obj nil)
  (setq P1 (getpoint "\nErsten Punkt angeben:"))
  (setq P2 (getcorner P1 "\Zweiten Punkt angeben:"))
  (setq xwert (rtos (- (car P2) (car P1)) 2 0))
  (setq ywert (rtos (- (cadr P2) (cadr P1)) 2 0))
  (setq wert (strcat xwert " " ywert))
  (vl-load-com)
  (setq a1 (vlax-create-object "avbClipboardDLL.avbClipboard"))
  (vlax-invoke a1  "clear")
  (vlax-invoke a1  "SetText" wert)
  (vlax-release-object a1)
  (princ)
)


mfg Alfonso

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 14. Feb. 2006 21:40    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 Alfonso 10 Unities + Antwort hilfreich

Abend Alfonso,

habs nicht auf alle Eventualitäten getestet, naja ein Versuch s.u.,
aber mal general - ich hab' zwar keinen Sprachfehler;-) - aber wenn
ich das richtig deute, misst du da nur zwei Längen in dem Lisp?

Wenn ja, ist das wie von hinten durch die Brust übers clipboard ins xlsheet ;-)
Hab dir mal eine vba-getpoint Methode reingesetzt, da bekommst folgenden Return:

p1(0 to 2) ==> p1(0)=x-Wert : p1(1)=y-Wert : p1(2)=z-Wert

selbiges bei p2.

Rein theoretisch kannste dir das ja dann gleich aus p1 und p2 errechnen, also sprich, das Lisp brauchste dann garnicht.
Wenn das also so in etwa hinkommen könnte mit meiner Vermutung,
stellt sich vielleicht noch die nächste Frage, ob es nicht gleich besser wäre, von Acad nach Excel zu schreiben, als - wie jetzt - andersrum.
Aber okay, kann auch sein ich bin da auf dem Holzweg und du machst in dem Lisp was ganz andres, ich habs nämlich nicht probiert;-)

[edit]achja, die sendcommand-zeile hab ich auskommentiert, wenn du es doch darüber machst, kannst/musst alles ab da bis auf die letzte Zeile mit appActivate auskommentieren.[/edit]

Gruss, Nancy
--

Code:

Sub test()
    Dim acApp As Object
    Dim myFile, p1, p2
    On Error Resume Next
    Set acApp = GetObject(, "Autocad.application")
    'wenn Acad nicht gestartet > Acad starten und Zeichnung öffnen
    If Err.Number = 429 Then
        Set acApp = CreateObject("Autocad.application")
        AppActivate Application.Caption
        myFile = Application.GetOpenFilename("dwg-Dateien (*.dwg),*.dwg", , "Zeichnung wählen")
        If myFile <> False Then
            acApp.documents.Open myFile
        Else
            MsgBox "ungültig"
            acApp.Quit
            Set acApp = Nothing
        End If
    End If
    AppActivate acApp.Caption
    '''acApp.activedocument.sendcommand "T2" & Chr(13)
    p1 = acApp.activedocument.utility.getpoint(, "erster Punkt:")
    p2 = acApp.activedocument.utility.getpoint(, "zweiter Punkt:")
    Range(Cells(1, 1), Cells(1, 3)) = Array("x", "y", "z")
    Range(Cells(2, 1), Cells(2, 3)) = p1
    Range(Cells(3, 1), Cells(3, 3)) = p2
    AppActivate Application.Caption
End Sub

[Diese Nachricht wurde von startrek am 14. Feb. 2006 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)2025 CAD.de | Impressum | Datenschutz