| |
 | 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: Excel und AutoCAD (1605 mal gelesen)
|
CADLER06 Mitglied Techniker
 Beiträge: 6 Registriert: 22.06.2006
|
erstellt am: 22. Jun. 2006 15:27 <-- editieren / zitieren --> Unities abgeben:         
Hallo liebe CAD´ler, möchte mich doch gerne auch aktiv am Forum beteiligen, bin aber noch ziemlich grün hinter den Ohren. Habe hier im Forum schon viele nützliche Tipps gefunden. Jetzt habe ich ein anderes Problem. Ich muss aus Excel Werte als Punkte an AutoCAD übergeben, damit nach diesen Punkten Rechtecke gezeichnet werden. Habe mich dazu entschieden das per VBA zu lösen (ginge mit Sicherheit auch mit LISP, oder ??) Kann mir jemand einen Tipp über die Vorgehensweise geben ? im Voraus vielen Dank der CADLER06 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 22. Jun. 2006 15:35 <-- editieren / zitieren --> Unities abgeben:          Nur für CADLER06
Hi Cadler06, Erst einmal Willkommen im Forum. Schau dir doch mal im Sample-Ordner unter VBA das Beispiel Excellink.dvb an. Dort werden Daten von Autocad nach Excel und zurück übertragen. Das sollte, denke ich schon mal ein Anfang sein. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADLER06 Mitglied Techniker
 Beiträge: 6 Registriert: 22.06.2006
|
erstellt am: 22. Jun. 2006 15:59 <-- editieren / zitieren --> Unities abgeben:         
Hi Carsten, danke für den Tipp, wenn die Lösung nun auch noch fast vor der Nase liegt ;-))) Daten werden wenn ich das VBA-Projekt anpasse importiert, aber irgendwie bekomme ich es nicht hin, das er mir daraus ein Rechteck macht ! Muss ich das im VBA Script per Aufruf des Zeichenbefehls aktivieren ? Gruß Joe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 22. Jun. 2006 16:09 <-- editieren / zitieren --> Unities abgeben:          Nur für CADLER06
Hi Joe, Du kannst ja, wenn du die Daten von Excel je Rechteck hast, mit den Koordinaten (errechnet oder vorliegend) mittels AddPolyline die Rechtecke zeichnen. Danach rufst du den nächsten Datensatz ab und so weiter. Wenn du schon mal etwas zusammen hast kannst du es ja uploaden / posten und dann kann man weiterschauen. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADLER06 Mitglied Techniker
 Beiträge: 6 Registriert: 22.06.2006
|
erstellt am: 23. Jun. 2006 09:33 <-- editieren / zitieren --> Unities abgeben:         
Hallo Carsten, Public Function rechteck(Punkt1, Punkt2) As AcadLWPolyline Dim eckpunkt(0 To 7) As Double, poly As AcadLWPolyline eckpunkt(0) = CDbl(Punkt1(0)): eckpunkt(1) = CDbl(Punkt1(1)) eckpunkt(2) = CDbl(Punkt2(0)): eckpunkt(3) = CDbl(Punkt1(1)) eckpunkt(4) = CDbl(Punkt2(0)): eckpunkt(5) = CDbl(Punkt2(1)) eckpunkt(6) = CDbl(Punkt1(0)): eckpunkt(7) = CDbl(Punkt2(1)) Set poly = ThisDrawing.ModelSpace.AddLightWeightPolyline(eckpunkt) poly.Closed = True Set rechteck = poly End Function Das habe ich fürs Rechteckzeichnen (beispielhaft) ! Irgendwie importiert mein Modul nun auch die Daten, es wird aber kein Objekt erstellt. Irgendwas fehlt noch! Für deine Hilfe bis hierhin vielen Dank !
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 23. Jun. 2006 10:02 <-- editieren / zitieren --> Unities abgeben:          Nur für CADLER06
|
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 23. Jun. 2006 11:26 <-- editieren / zitieren --> Unities abgeben:          Nur für CADLER06
Hallo Joe, Das sollte eigentlich klappen. Als was für ein Datentyp bekommst du die Daten von Excel? Hier 2 Beispiele, wie du das verarbeiten kannst: Public Function Rechteck(Punkt1, Punkt2) As AcadLWPolyline Dim eckpunkt(0 To 7) As Double eckpunkt(0) = Punkt1(0): eckpunkt(1) = Punkt1(1) eckpunkt(2) = Punkt2(0): eckpunkt(3) = Punkt1(1) eckpunkt(4) = Punkt2(0): eckpunkt(5) = Punkt2(1) eckpunkt(6) = Punkt1(0): eckpunkt(7) = Punkt2(1) Set Rechteck = ThisDrawing.ModelSpace.AddLightWeightPolyline(eckpunkt) Rechteck.Closed = True End Function Public Sub joe1() Dim x1$, x2$, y1$, y2$ x1 = "0": y1 = "0": x2 = "100": y2 = "100" 'Werte liegen einzeln als String vor (x1 und y1, x2 und y2) Dim p1(1) As Double Dim p2(1) As Double p1(0) = CDbl(x1) 'X-Wert Punkt 1 p1(1) = CDbl(y1) 'Y-Wert Punkt 1 p2(0) = CDbl(x2) 'X-Wert Punkt 2 p2(1) = CDbl(y2) 'Y-Wert Punkt 2 Rechteck p1, p2 End Sub
Public Sub joe2() Dim Pt1$, Pt2$ Pt1 = "0,0": Pt2 = "100,100" 'Werte liegen kombiniert als String vor (Pt1 und Pt2) Dim p1(1) As Double Dim p2(1) As Double Dim strTeil() As String strTeil = Split(Pt1, ",") 'Teilt Pt1 in Strings mit Trennung (,) p1(0) = CDbl(strTeil(0)) p1(1) = CDbl(strTeil(1)) strTeil = Split(Pt2, ",") 'Teilt Pt2 in Strings mit Trennung (,) p2(0) = CDbl(strTeil(0)) p2(1) = CDbl(strTeil(1)) Rechteck p1, p2 End Sub
Gruß, Carsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADLER06 Mitglied Techniker
 Beiträge: 6 Registriert: 22.06.2006
|
erstellt am: 26. Jun. 2006 11:12 <-- editieren / zitieren --> Unities abgeben:         
Juhu, also das klappt so ganz gut ! Rechteck wird gezeichnet wunderbar. Besteht auch eine Möglichkeit aus Excel heraus per VBA Zeichnen- Befehle aufzurufen ?? Ich habe da folgende Zeile die aber irgendwie unter ACAD 2006 nicht funktioniert: ac.thisdrawing.sendcommand "_zoom " zum Beispíel. Gruß und dank an alle für die Superhilfe 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: 26. Jun. 2006 16:32 <-- editieren / zitieren --> Unities abgeben:          Nur für CADLER06
|
CADLER06 Mitglied Techniker
 Beiträge: 6 Registriert: 22.06.2006
|
erstellt am: 28. Jun. 2006 10:36 <-- editieren / zitieren --> Unities abgeben:         
Hi Stelli, habe die Zeilen in mein Script eingefügt. AutoCAD startet wunderbar, dann bekomme ich in Excel jedoch einen Laufzeitfehler 438, Object unterstützt dies Eigenschaft oder Methode nicht. Hmm hab ich es vielleicht an der falschen Stelle eingefügt? *grübel *rätsel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jun. 2006 10:46 <-- editieren / zitieren --> Unities abgeben:          Nur für CADLER06
Dein Acad-Objekt hast Du aber schon davorgesetzt oder? ac.ThisDrawing.SendCommand "_zoom " ac.ThisDrawing.Application.ZoomPickWindow oder versuch's mal direkt, etwa so: ac.ZoomExtents oder ac.ZoomAll oder so ... Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADLER06 Mitglied Techniker
 Beiträge: 6 Registriert: 22.06.2006
|
erstellt am: 28. Jun. 2006 13:26 <-- editieren / zitieren --> Unities abgeben:         
Juhu Nancy, hmm ich armer VBA Lehrling, ich hab das folgender massen eingefügt Private Sub CommandButton1_Click() Dim ac As Object Set ac = CreateObject("Autocad.application") ac.Visible = True ac.ZoomExtens End Sub Ist doch so richtig oder ??? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jun. 2006 14:07 <-- editieren / zitieren --> Unities abgeben:          Nur für CADLER06
Hmm, so rein formell ist das schon richtig, allein mir erschließt sich der Sinn des Button-Codes [noch] nicht ganz, momentan startest du ein Acad und zoomst auf die Grenzen einer leeren Zeichnung? ;;-)) Code:
Private Sub CommandButton1_Click() Dim ac As Object Set ac = CreateObject("Autocad.application") ac.Visible = True 'to do, z.B. with ac.activedocumnet .modelspace.addpoint(p) ac.ZoomExtens .saveas "c:\irgendwo\blablub.dwg" 'ggf. beenden? '.close end with 'ac.quit 'set ac=nothing End Sub
Gruss Nancy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |