Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  alle Blöcke (und deren Werte) einer Zeichnung in Datei auslesen (Seite 1)

  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Thema geschlossen  Thema geschlossen!
Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen Dieses Thema ist 2 Seiten lang:   1  2

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 bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
Autor Thema:  alle Blöcke (und deren Werte) einer Zeichnung in Datei auslesen (7686 mal gelesen)
kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 22. Nov. 2004 12: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

Hallo,

ich habe eine Frage:

wie kann ich mit VBA alle Blöcke einer Zeichnung in eine Datei auslesen?
Wichtig sind mir dabei die Koordinaten der Referenz-(Basis-)Punkte von den Blöcken, ihre Drehwinkel sowie ihr Name. Denn mit denen will ich weiterarbeiten. Die Darstellung der Daten soll tabellarisch sein -gibts Alternativen zu Excel?.

Ich habe hier schon ein bißchen in anderen Threads rumgeschaut, aber noch nicht das richtig passende gefunden.

Hat irgendwer einen Tipp oder sogar einen Code?

Thanx
Tobias

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 22. Nov. 2004 13:12    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

Also ideal wäre eine Datei, die in VBA integriert ist, somit man nicht auf externe Programme wie Excel zurückgreifen muß (wenn es jedoch nicht anders gehen sollte, dann wäre das doch eine Variante).

Die Daten sollen tabellarisch aufgelistet werden:

Blockname, X-Koordinate, Y-Koordinate, Z-Koordinate, Drehwinkel

Und ganz wichtig:
ich muß diese Daten weiterverarbeiten können.

-----

Ich habe einen Code (auch mal hier bekommen), bei dem die Blockattribute in eine Textdatei exportiert werden. Aber die Werte werden ungeordnet dargestellt - auch wenn ich als Ausgabedatei eine Excel-Datei wähle.

-----

Tobias

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 22. Nov. 2004 14:19    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

Also so sieht mein Code derzeit aus. Was mir noch nicht gefällt, ist, dass er mir die Koordinaten der Blöcke mit etlichen Stellen ausliest.
Kann ich da irgendwas dran deichseln, dass der mir z.B. nur zwei Nachkommastellen einträgt?


Sub ReadBlockProperties()

Dim AcMapEntity As AcadEntity
Dim AcMapBlock As AcadBlockReference
Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim TxtFile As TextStream
Set TxtFile = fso.OpenTextFile("v:\ausgabe.xls", ForWriting, True)

For Each AcMapEntity In ThisDrawing.ModelSpace
    If AcMapEntity.ObjectName = "AcDbBlockReference" Then
       
        Set AcMapBlock = AcMapEntity
        TxtFile.WriteLine AcMapBlock.Name & _
            vbTab & AcMapBlock.InsertionPoint(0) & _
            vbTab & AcMapBlock.InsertionPoint(1) & _
            vbTab & AcMapBlock.InsertionPoint(2) & _
            vbTab & AcMapBlock.Rotation & vbCr
    End If
Next

TxtFile.Close
Set TxtFile = Nothing
Set fso = Nothing
Set AcMapEntity = Nothing
Set AcMapBlock = Nothing

End Sub

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9803
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 22. Nov. 2004 14: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 Nur für kiltswitch 10 Unities + Antwort hilfreich

Auf die erste Frage war mein Tippp,
lies dir die VBA Beispiele im Samples\VBA Ordner von AutoCAD mal durch (speziell BlockReplace.dvb oder attext.dvb).
Natürlich geht auch ein simples ATTEXT oder EATTEXT evt. in Verbindung mit SendCommand.
Zur 2. Frage eine Gegenfrage
Wonach sollen die Werte den sortiert werden, Namen, aufsteigende Werte der X oder Y-Koordinate? Da gibt es so viele Möglichkeiten, das muss man eben selbst wie gewünscht programmieren. Es gibt ja fertige Sortieralgoritmmen in VBA.

Mit freundlichem Gruß
Udo Hübner

------------------
Das Siddharta Prinzip:
Mit zwei Schritten kann man keinen Fluß überqueren.

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 22. Nov. 2004 14:50    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

Zunächst Danke für Deine Antwort.

Den Tipp, mal den Ordner Samples zu durchstöbern, werde ich gern annehmen.

Mit ungeordnet meinte ich nur, dass die Werte nicht separat in eigene Spalten abgelegt worden, sondern hintereinanderweg da standen. Aber das Problem habe ich lösen können.

Es sollen wie schon erwähnt alle Blöcke/Blockreferenzen der aktuellen Zeichnung in eine Datei ausgelesen werden. Dabei ist der Blockname, die Koordinaten seines Basispunktes sowie sein Drehwinkel von Interesse. Mein Code tut das ja auch, nur gibt es noch einige Fehler:

1. Er stellt mir einige Koordinaten unverständlicherweise in einem Vielfachen des eigentlichen Wertes dar (also z.B. statt 1500 --> 150.000.000.000.000 !!!)

2. Den Wert der Drehung übernimmt er auch nicht richtig aus CAD - bei manchen Blöcken steht ein Wert da (aber falsch), bei anderen gar nichts, obwohl der Block in CAD gedreht ist usw.!!!

Woran könnte das denn liegen?

Tobias

Zitat:
Original erstellt von CAD-Huebner:
Auf die erste Frage war mein Tippp,
lies dir die VBA Beispiele im Samples\VBA Ordner von AutoCAD mal durch (speziell BlockReplace.dvb oder attext.dvb).
Natürlich geht auch ein simples ATTEXT oder EATTEXT evt. in Verbindung mit SendCommand.
Zur 2. Frage eine Gegenfrage
Wonach sollen die Werte den sortiert werden, Namen, aufsteigende Werte der X oder Y-Koordinate? Da gibt es so viele Möglichkeiten, das muss man eben selbst wie gewünscht programmieren. Es gibt ja fertige Sortieralgoritmmen in VBA.

Mit freundlichem Gruß
Udo Hübner


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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 22. Nov. 2004 16:37    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

Hat irgendwer eine Idee, woran es liegen kann, dass die Koordinatenwerte so groß sind? Könnten das durch Rundungsfehler sein?

Und was könnte der Grund sein, warum manche Drehwinkel-Werte nicht (korrekt) in die Datei übernommen werden? Bspw. hat ein Block in der Zeichnung die Verdrehung 90°, aber in der Excel-Datei steht der Wert 0 ?!

Und meine letzte Frage, die habe ich vorhin schon einmal gestellt:
kann ich mit VBA auch eine interne Datei - also keine eines externen Programmes wie Excel - erstellen, welche mir die Daten tabellarisch darstellt und die weiterverarbeitbar ist (z.B. zurücklesen der Daten)?

Ich bin über jeden Tipp dankbar.

Danke
Tobias

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 22. Nov. 2004 16:39    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 kiltswitch 10 Unities + Antwort hilfreich

Es ist irgendwie sehr interessant wie du eine Excelldatei öffnest und auch hineinschreibst.
Steht etwas anders in der ACAD-Hilfe, sieh einmal das Beispiel dort an.
Der Winkel ist in Radian, vielleicht stört dich das etwas.
Die Anzahl der Nachkommastellen kannst du ja in Excell auch noch einstellen, ist nicht unbedingt notwendig das schon in Acad zu erledigen, wenn du das aber möchtest gibt es da mehrere Möglichkeiten:
1. Round
2. Format
Beschreibung steht in der Hilfe.

------------------
Roland

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 22. Nov. 2004 16:45    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 kiltswitch 10 Unities + Antwort hilfreich

Hast du die Komma richtig dargestellt, in Excell ist es wichtig die Werte mit dem richtigen Kommazeichen einzufügen, also Komma oder Punkt beachten!

------------------
Roland

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 22. Nov. 2004 16:55    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

Die Kommawerte habe ich gar nicht beachtet, sondern lasse die Werte - ohne Einflüsse durch mich - einfach nach Excel übertragen.

Der Tipp mit Round war gut, die Koordinaten stimmen jetzt. Nur bei
dem Drehwinkel bin ich noch nicht im klaren, ob er stimmt. Ich vermute, der Wert in Excel (z.B. steht da 4,71) ist das umgerechnete Bogenmaß. Ich muß das mal zurückrechnen.
Mich wundert nur, dass z.B. bei einer Angabe von 10° in der Zeichnung kein Wert in Excel eingetragen wird, da müßte doch wenigstens IRGENDWAS stehen? Und nicht bloß "0"?? Mmh...

Zitat:
Original erstellt von RoSiNiNo:
Hast du die Komma richtig dargestellt, in Excell ist es wichtig die Werte mit dem richtigen Kommazeichen einzufügen, also Komma oder Punkt beachten!


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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 22. Nov. 2004 23:12    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 kiltswitch 10 Unities + Antwort hilfreich

Alle Winkel kleiner als ca. 57° sind kleiner als 1, wenn sie in Rad dargestellt werden. Liegt da ein Trennzeichen-Konflikt vor, werden alle Winkel kleiner als diese 57° als 0 in Excel dargestellt (bis 114° ist es dann 1 usw.)

Excel/MSOffice liest das verwendete Trennzeichen aus den Windows-Ländereinstellungen aus, AutoCAD verwendet immer den Punkt (ausser bei Bemaßungstexten, wenn das eingestellt ist). Verwirrend aber, dass VBA bei der Eingabe von float/double-Literalen plötzlich auch den Punkt als Trennzeichen verlangt.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 08:44    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

Also hat es wie von mir schon vermutet mit dem Bogenmaß zu tun und Excel hat damit Probleme? Wie kann man denn dieses Problem lösen?

Wie bekomme ich es hin, dass mir Excel die Werte richtig darstellt,
am besten in Grad wie in der CAD-Zeichnung?
Gibt es zu Excel eine Alternative? Mein Vorgesetzter meinte, in VBA direkt gäbe es evtl. auch die Möglichkeit, eine Datei zu schreiben - man bräuchte dann evtl. nicht Excel als externes Programm. Stimmt das und wenn ja, was für ein Dateityp wäre das dann und wie kann ich die Datei anlegen?

Kann ich die Daten sortieren lassen, z.B. nach dem Blocknamen? Und wie kann ich am Anfang der Tabelle einen Spaltenkopf integrieren?

Noch zu dem Thema Trennzeichen: also mit Round konnte ich die Werte runden, z.B. zwei Stellen nach dem Komma. Er stellt mir die Koordinaten nun korrekt dar. Nur das mit dem Drehwinkel funktioniert noch nicht.

Zitat:
Original erstellt von mapcar:
Alle Winkel kleiner als ca. 57° sind kleiner als 1, wenn sie in Rad dargestellt werden. Liegt da ein Trennzeichen-Konflikt vor, werden alle Winkel kleiner als diese 57° als 0 in Excel dargestellt (bis 114° ist es dann 1 usw.)

Excel/MSOffice liest das verwendete Trennzeichen aus den Windows-Ländereinstellungen aus, AutoCAD verwendet immer den Punkt (ausser bei Bemaßungstexten, wenn das eingestellt ist). Verwirrend aber, dass VBA bei der Eingabe von float/double-Literalen plötzlich auch den Punkt als Trennzeichen verlangt.

Gruß, Axel Strube-Zettler


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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4187
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 23. Nov. 2004 09:01    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 kiltswitch 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kiltswitch:
Also hat es wie von mir schon vermutet mit dem Bogenmaß zu tun und Excel hat damit Probleme? Wie kann man denn dieses Problem lösen?

Wie bekomme ich es hin, dass mir Excel die Werte richtig darstellt,
am besten in Grad wie in der CAD-Zeichnung?


erstellt von Brischke am: 04. Nov. 2004 10:13 in diesem Thread

Zitat:
Original erstellt von kiltswitch:
Gibt es zu Excel eine Alternative? Mein Vorgesetzter meinte, in VBA direkt gäbe es evtl. auch die Möglichkeit, eine Datei zu schreiben - man bräuchte dann evtl. nicht Excel als externes Programm. Stimmt das und wenn ja, was für ein Dateityp wäre das dann und wie kann ich die Datei anlegen?

Dem VBA-Programm ist es vollkommen egal, was für eine Datei es schreibt, diese muss nur in der entsprechenden Syntax des Zielprogrammes geschrieben sein. Der Weg, die Daten jedoch direkt in eine Excel-Datei zu schreiben ist doch recht praktisch, gerade im Hinblick auf ...
Zitat:
Original erstellt von kiltswitch:
Kann ich die Daten sortieren lassen, z.B. nach dem Blocknamen? Und wie kann ich am Anfang der Tabelle einen Spaltenkopf integrieren?

... klingt doch verdammt nach Excel
Zitat:
Original erstellt von kiltswitch:
Noch zu dem Thema Trennzeichen: also mit [b]Round konnte ich die Werte runden, z.B. zwei Stellen nach dem Komma. Er stellt mir die Koordinaten nun korrekt dar. Nur das mit dem Drehwinkel funktioniert noch nicht.[/B]

... siehe oben

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13527
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 23. Nov. 2004 09: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 kiltswitch 10 Unities + Antwort hilfreich

Also hat es wie von mir schon vermutet mit dem Bogenmaß zu tun und Excel hat damit Probleme? Wie kann man denn dieses Problem lösen?

Sag mal ist das jetzt ver***, oder hast du in Mathe echt nicht aufgepasst?

Winkel in Grad = Winkel in Bogenmaß * 180 / Pi


Gibt es zu Excel eine Alternative? Mein Vorgesetzter meinte, in VBA direkt gäbe es evtl. auch die Möglichkeit, eine Datei zu schreiben - man bräuchte dann evtl. nicht Excel als externes Programm. Stimmt das und wenn ja, was für ein Dateityp wäre das dann und wie kann ich die Datei anlegen

Auch 'ne ver*** ?
<dream> .. du kannst mit VBA / Lisp / Delphi Text, Bild , Access, html und was weiß ich für Dateien erstellen, du mußt bloß die genaue Dateispezifikation(= Aufbau kennen). Wenn die diese kennst,öffnest du einfach mit einer OS-Funktion (evtl. in VBA/Lisp usw. integriert) eine Datei und schreibst die Zeichen in der Reihenfolge rein, das sie das spätere Progamm lesen kann. So einfach.

Ich vermute bloß, das du das Dateiformat nicht kennst! Deshalb nimm Excel , oder ne Textdatei, da kannste am wenigsten falsch machen.
Sag das deinem Chef!

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 09:15    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 Holger,

danke für Deinen Beitrag hier.
Nun, die Umrechnung von DEG in RAD ist mir ja bekannt (hast Du mir ja damals gesagt), aber das eigentliche Problem ist: wenn ich das im Code anwende, funktioniert es nicht!

Hier mal mein Code, vielleicht findest Du einen Fehler. Oder hast Du eine bessere Idee bezüglich des Codes?

Sub ReadBlockProperties()
Dim AcMapEntity As AcadEntity
Dim AcMapBlock As AcadBlockReference
Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim TxtFile As TextStream
Set TxtFile = fso.OpenTextFile("v:\Praxis_Konstruktionsabteilung\Blockauslesung\ausgabe.xls", ForWriting, True)

TxtFile.WriteLine ("Blockname") & _
vbTab & ("Block-ID") & _
vbTab & ("X-Koordinate") & _
vbTab & ("Y-Koordinate") & _
vbTab & ("Z-Koordinate") & _
vbTab & ("Drehwinkel") & vbCr

For Each AcMapEntity In ThisDrawing.ModelSpace
    If AcMapEntity.ObjectName = "AcDbBlockReference" Then
       
        Set AcMapBlock = AcMapEntity
        TxtFile.WriteLine AcMapBlock.Name & _
            vbTab & AcMapBlock.ObjectID & _
            vbTab & Round(AcMapBlock.InsertionPoint(0), 2) & _
            vbTab & Round(AcMapBlock.InsertionPoint(1), 2) & _
            vbTab & Round(AcMapBlock.InsertionPoint(2), 2) & _
            vbTab & Round((AcMapBlock.Rotation*180/Pi), 2) & vbCr
    End If
Next

TxtFile.Close
Set TxtFile = Nothing
Set fso = Nothing
Set AcMapEntity = Nothing
Set AcMapBlock = Nothing

End Sub


Wenn ich das mit *180/Pi reinschreibe (wie oben im Code), bringt er mir einen Laufzeitfehler. Habe ich das einen Fehler drin?
Das mit dem Sortieren in Excel ist auch klar, aber mir gehts darum, wie ich das mit VBA gleich programmtechnisch machen kann? Gibts da eine Möglichkeit?

Gibt es denn nun ein eigenes Dateiformat in VBA zum tabellarischen Ablegen von ausgelesenen Daten?

Tobias

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 09:21    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

Nein, mit Ver*** hat das Ganze nun wahrlich nichts zu tun. Mir ist auch durchaus bekannt, wie man Grad in Bogenmaß umrechnet. Darum gehts mir ja auch nicht, sondern wie der CODE dazu aussieht!

Zitat:
Original erstellt von CADmium:
[b]Also hat es wie von mir schon vermutet mit dem Bogenmaß zu tun und Excel hat damit Probleme? Wie kann man denn dieses Problem lösen?

Sag mal ist das jetzt ver***, oder hast du in Mathe echt nicht aufgepasst?

Winkel in Grad = Winkel in Bogenmaß * 180 / Pi


Gibt es zu Excel eine Alternative? Mein Vorgesetzter meinte, in VBA direkt gäbe es evtl. auch die Möglichkeit, eine Datei zu schreiben - man bräuchte dann evtl. nicht Excel als externes Programm. Stimmt das und wenn ja, was für ein Dateityp wäre das dann und wie kann ich die Datei anlegen

Auch 'ne ver*** ?
<dream> .. du kannst mit VBA / Lisp / Delphi Text, Bild , Access, html und was weiß ich für Dateien erstellen, du mußt bloß die genaue Dateispezifikation(= Aufbau kennen). Wenn die diese kennst,öffnest du einfach mit einer OS-Funktion (evtl. in VBA/Lisp usw. integriert) eine Datei und schreibst die Zeichen in der Reihenfolge rein, das sie das spätere Progamm lesen kann. So einfach.

Ich vermute bloß, das du das Dateiformat nicht kennst! Deshalb nimm Excel , oder ne Textdatei, da kannste am wenigsten falsch machen.
Sag das deinem Chef!

[/B]


Na gut, dann wird es wohl bei Excel oder einer Textdatei bleiben. Ich dachte nur, dass es direkt in VBA auch eine Möglichkeit gibt, sich die Daten in tabellarischer Form ausgeben zu lassen. Weil mit diesen Daten in VBA weitergearbeitet werden soll, dann bräuchte man vielleicht kein externes Programm.

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13527
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 23. Nov. 2004 09: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 Nur für kiltswitch 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kiltswitch:
Na gut, dann wird es wohl bei Excel oder einer Textdatei bleiben. Ich dachte nur, dass es direkt in VBA auch eine Möglichkeit gibt, sich die Daten in tabellarischer Form ausgeben zu lassen. Weil mit diesen Daten in VBA weitergearbeitet werden soll, dann bräuchte man vielleicht kein externes Programm.[/B]

wenn du mit deinem VBA-Programm die Daten in eine Datei schreibst, und später diese Daten mit deinem VBA-Programm wieder einlesen willst, kannst du das Format der Daten doch selbst festlegen. Und VBA ist es total egal, ob die Daten Tabellarisch vorliegen ,oder nicht.
Wenn du allerdings mit einem 3.Proggi die Daten Betrachten/ Bearbeiten willst, mußt du natürlich dessen Datenformat nehmen.

Ist das so schwer?

Ende!

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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: 23. Nov. 2004 09: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 kiltswitch 10 Unities + Antwort hilfreich

Tobias, VBA kennt kein Pi.
Die Zahl wirst Du wohl oder übel erstmal hinterlegen müssen.

> Gibt es denn nun ein eigenes Dateiformat in VBA zum tabellarischen Ablegen von ausgelesenen Daten?

Nun, am besten Du lässt die Endung gleich ganz weg ...

Das ist doch schnurz, es kommt auf's Trennzeichen an, Tab, Kommata, Semikolon, $, |, weissderGeier
Momentan schreibst Du eh' nur ein Textfile mit der Endung *.xls,
wenn Du diese mit Excel öffnest, hast Du sicher schon bemerkt, dass erst mal der Texterkennungsassi aufgeht
und nach dem Spaltenseparator fragt.
Öffne mal eine Original xls Datei mit nem Editor und vergleiche sie mal mit der von Dir erstellten,
dann solltes klarer werden.

Gruss Nancy

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 09:44    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

na ich will die Daten auf jeden Fall betrachten. Also ist wohl Excel dann eine Lösung. Ich dachte aber eben, es gäbe vielleicht direkt in VBA so eine Ausgabemöglichkeit in Tabellenform zum betrachten?

Hast Du einen Tipp, warum das bei mir mit dem Drehwinkel der Blöcke nicht funktionieren tut? Erkennst Du einen Fehler im oben dargestellten Code?

Zitat:
Original erstellt von CADmium:
wenn du mit deinem VBA-Programm die Daten in eine Datei schreibst, und später diese Daten mit deinem VBA-Programm wieder einlesen willst, kannst du das Format der Daten doch selbst festlegen. Und VBA ist es total egal, ob die Daten Tabellarisch vorliegen ,oder nicht.
Wenn du allerdings mit einem 3.Proggi die Daten Betrachten/ Bearbeiten willst, mußt du natürlich dessen Datenformat nehmen.

Ist das so schwer?

Ende!



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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 23. Nov. 2004 09:50    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 kiltswitch 10 Unities + Antwort hilfreich

Was soll ich nun noch sagen, Axel hat dir eigentlich schon erklärt waran es höschstwarscheinlich liegt. Auch ich habe dir diesen Hinweis schon etwas weiter oben angegeben.
Meine erste Antwort hat sich auch schon auf deine Methode eine XLS-Datei zu öffnen bezogen.
Darum meine Frage, hast du dir meine oder Axel's Antworten überhaupt angesehen und vielleicht einmal die Hilfe zu Hand genommen?

Ich wage zu behaupten, NEIN!!!

------------------
Roland

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 09:59    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

Natürlich habe ich mir eure Antworten durchgelesen! Und ich weiß auch, was ihr damit meint.

Das Einzigste, was ich nicht weiß, ist, wie ich diese Erkenntnisse nun im Code verarbeite??? DAS ist mein Problem. Die Hilfe habe ich auch schon bemüht, aber noch nicht das Brauchbare gefunden.


Zitat:
Original erstellt von RoSiNiNo:
Was soll ich nun noch sagen, Axel hat dir eigentlich schon erklärt waran es höschstwarscheinlich liegt. Auch ich habe dir diesen Hinweis schon etwas weiter oben angegeben.
Meine erste Antwort hat sich auch schon auf deine Methode eine XLS-Datei zu öffnen bezogen.
Darum meine Frage, hast du dir meine oder Axel's Antworten überhaupt angesehen und vielleicht einmal die Hilfe zu Hand genommen?

Ich wage zu behaupten, NEIN!!!



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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 23. Nov. 2004 10:05    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 kiltswitch 10 Unities + Antwort hilfreich

Ich habe jetzt ca. zwei Minuten gebraucht um folgendes in der ACAD-Hilfe zu finden:
Auflisten von AutoCAD-Attributen in einer Excel-Tabelle 


 

Dieses Unterprogramm sucht alle Blockreferenzen in der aktuellen Zeichnung. Anschließend sucht es die mit diesen Blockreferenzen verknüpften Attribute und listet sie in einer Excel-Tabelle auf. Gehen Sie zum Ausführen dieses Beispiels wie folgt vor:

Öffnen Sie eine Zeichnung, die Blockreferenzen mit Attributen enthält. (Die Musterzeichnung sample/activeX/attrib.dwg enthält solche Blockreferenzen.)
Öffnen Sie die VBA-IDE mit dem AutoCAD-Befehl VBAIDE.
Wählen Sie in der VBA-IDE mit der Menüoption Extras  Verweise das Objektmodell Microsoft Excel 8.0.
Kopieren Sie dieses Unterprogramm in ein VBA-Codefenster, und führen Sie es aus.
Sub Ch12_Extract()
    Dim Excel As Excel.Application
    Dim ExcelSheet As Object
    Dim ExcelWorkbook As Object
   
    Dim RowNum As Integer
    Dim Header As Boolean
    Dim elem As AcadEntity
    Dim Array1 As Variant
    Dim Count As Integer
   
    ' Excel starten.
    Set Excel = New Excel.Application
   
    ' Erstellen einer neuen Arbeitsmappe und Suchen des aktiven Arbeitsblatts.
    Set ExcelWorkbook = Excel.Workbooks.Add
    Set ExcelSheet = Excel.ActiveSheet
    ExcelWorkbook.SaveAs "Attribute.xls"
   
    RowNum = 1
    Header = False
    ' Modellbereich durchlaufen, um
    ' alle Blockreferenzen zu finden.
    For Each elem In ThisDrawing.ModelSpace
        With elem
            ' Gefundene Blockreferenz auf
            ' Attribute prüfen
            If StrComp(.EntityName, "AcDbBlockReference", 1) _
                = 0 Then
                If .HasAttributes Then
                    ' Attribute abrufen
                    Array1 = .GetAttributes
                    ' Tagstrings für die Attribute
                    ' in Excel kopieren
                    For Count = LBound(Array1) To UBound(Array1)
                        If Header = False Then
                            If StrComp(Array1(Count).EntityName, _
                                  "AcDbAttribute", 1) = 0 Then
                                ExcelSheet.Cells(RowNum, _
                                    Count + 1).value = _
                                    Array1(Count).TagString
                            End If
                        End If
                    Next Count
                    RowNum = RowNum + 1
                    For Count = LBound(Array1) To UBound(Array1)
                        ExcelSheet.Cells(RowNum, Count + 1).value _
                                    = Array1(Count).textString
                    Next Count
                    Header = True
                End If
            End If
        End With
    Next elem
    Excel.Application.Quit
End Sub


Also, such lieber noch einmal.

------------------
Roland

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 10: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

Der Code ist ja ganz gut und schön, aber diese Werte will ich doch gar nicht? Ich will keine Blockattribute haben. Sondern wie schon erwähnt: Blockname, ObjectID der Blöcke, Koordinaten des Basispunktes der Blöcke und den Drehwinkel der Blöcke in eine Excel-Tabelle ausgeben. Das klappt ja auch alles, nur stellt er mir die Werte des Drehwinkels auf Grund des Problems RAD <--> DEG nicht richtig dar. Ich habe auch schon die Umrechnung versucht, habe mit Runden gearbeitet - aber es ändert sich einfach nichts.

Diesen Beispielcode finde ich nicht in meiner Hilfe? Wo gibts den denn? Was für ein Stichwort hast Du bei der Suche eingegeben?

Tobias

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 10:57    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

Verdammt, ich bekomme es einfach nicht hin, dass die Werte der Drehwinkel der Blöcke mit ihrem korrekten Wert in Excel dargestellt werden. :-(

Habe schon in der Hilfe rumgesucht, finde dort aber einfach nichts passendes.
Auch im Internet schon rumgestöbert - nix brauchbares gefunden. :-(

Kann mir keiner helfen? Oben steht ja mein Code da zum Anschauen, ob ein Fehler drin ist.

Tobias

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

harryk
Mitglied
Projektleiter


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

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 23. Nov. 2004 11:11    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 kiltswitch 10 Unities + Antwort hilfreich

ohoh, der thread ist gleich auch zu...

harry

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 11:21    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

Warum denn? Ich habe doch nichts falsches gesagt? Ich habe ein Problem und habe es hier in dem Thread dargestellt, sodaß mir andere evtl. helfen können. Das ist doch das Ziel des Forums?

Ich weiß ja schon, wie ihr das mit den Antwort-Beiträgen meint und was das Problem sein könnte. Es geht mir hier doch aber einzig und allein darum, den Code entsprechend ändern zu können, sodaß es funktioniert.

Kannst Du mir nochmal sagen, wo Du den Code in der Hilfe gefunden hast?

Zitat:
Original erstellt von harryk:
ohoh, der thread ist gleich auch zu...

harry


[Diese Nachricht wurde von kiltswitch am 23. Nov. 2004 editiert.]

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 23. Nov. 2004 11:31    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 kiltswitch 10 Unities + Antwort hilfreich

Tobias,

du hast alles, was du brauchst. Wie man Einfügepunkt und Drehwinkel ausliest, hast du selber hier gepostet, ebenso, wie man eine Textdatei schreiben kann. Wie man direkt nach Excel überträgt, hat dir Roland aus der Hilfe reinkopiert. Wenn du keine Attributdaten brauchst, ersetze diesen Teil des Codes durch eigenen, der das leistet, was du brauchst.

Das Problem mit den Trennzeichen wurde von Roland und mir ausführlich besprochen, und Nancy hat dir mitgeteilt, warum dein Code so nicht läuft. Schau in der VBA-Hilfe unter 'Function' und schreib dir zwei - die eine rechtet Radians in Grad um, die andere umgekehrt. Du wirst sie vielleicht noch öfters brauchen.

Und nun noch ein Hinweis: Weder die AutoCAD-Hilfe noch dieses Forum noch das ganze Internet sind eine unendliche Bibliothek im Sinne von Jorge Luis Borges. Findest du in der Acad-Hilfe eine Anleitung zum Zeichnen eines grünen Kreis, wirst du wahrscheinlich keine zum Zeichnen eines roten Kreises finden. Wegen ihre exemplarischen Charakters heissen die Code-Bruchstücke auch 'Beispiele'. Es wird einfach vorausgesetzt, dass der Benutzer genügend Abstraktionsvermögen besitzt, das Beispiel 'grüner Kreis' auch als Grundlage für einen roten Kreis zu verwenden.

Wenn es dir aber auf Dauer nicht gelingt, mit VBA-Mitteln eine Zahl durch Pi zu teilen und dann mit 180 zu multiplizieren, dann hast du ein echtes Problem. Es nützt auch gar nichts, wenn du da schon wieder nach Alternativen rufst! Meiner Ansicht ist Access sowie die bessere Alternative, denn Excel ist ja eine Tabellenkalkulation, wo nach dem Motto "Was wäre wenn..." gearbeitet wird. Du hast aber von einer Datenbank gesprochen, und die Datenbank im MSOffice-Paket ist nun mal Access.

Aber das ist sowieso egal, denn glaubst du wirklich, dass bei Verwendung von Access irgendetwas von diesen kleinen Problemchen anders wäre?

Ich jedenfalls werde mich nicht hinsetzen und deine Fehler suchen bzw. dir deinen Code schreiben. Wie gesagt, die Informationen hast du alle.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 13: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 Mapcar,

mal zu Deinem Beitrag. Ich toleriere das, was Du schreibst, aber verstehe doch auch mal mich:

ich will nichts weiter wissen als, wie ich das mit dem Drehwinkel hinbekomme. Den Code zum Auslesen habe ich ja da, aber es steckt nun mal ein Fehler drin, das mit RAD und DEG. Ich habe das mit DEG=RAD*180/Pi ja auch schon getestet, aber es klappt einfach nicht, dass die Werte richtig in Excel eingetragen werden. Ich will, dass die Grad-Werte des Drehwinkels vom Block - wie sie in AutoCAD im Eigenschaftenmenü stehen - genauso in Excel stehen.

Das mit den Datenbanken ist noch Zukunftsmusik, mein Praktikum geht hier nur noch bis Weihnachten, also 4-5 Wochen, dann bin ich erstmal eine ganze Zeit nicht mehr da. Ich soll jetzt rausbekommen, wie das mit dem Auslesen von den Blöcken geht - mehr erstmal nicht.

Tobias

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 13: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

Hier nochmal mein Code, was ist denn daran nur falsch, sodaß die Werte des Drehwinkels falsch übertragen werden...?

Sub ReadBlockProperties()
Dim AcMapEntity As AcadEntity
Dim AcMapBlock As AcadBlockReference
Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim TxtFile As TextStream
Dim Pi As Double

Pi = 3.141592654

Set TxtFile = fso.OpenTextFile("v:\Praxis_Konstruktionsabteilung\Blockauslesung\ausgabe.txt", ForWriting, True)

TxtFile.WriteLine ("Blockname") & _
vbTab & ("Block-ID") & _
vbTab & ("X-Koordinate") & _
vbTab & ("Y-Koordinate") & _
vbTab & ("Z-Koordinate") & _
vbTab & ("Drehwinkel") & vbCr

For Each AcMapEntity In ThisDrawing.ModelSpace
    If AcMapEntity.ObjectName = "AcDbBlockReference" Then
       
        Set AcMapBlock = AcMapEntity
       
        TxtFile.WriteLine AcMapBlock.Name & _
            vbTab & AcMapBlock.ObjectID & _
            vbTab & Round(AcMapBlock.InsertionPoint(0), 2) & _
            vbTab & Round(AcMapBlock.InsertionPoint(1), 2) & _
            vbTab & Round(AcMapBlock.InsertionPoint(2), 2) & _
            vbTab & Round(((AcMapBlock.Rotation) * Pi / 180), 2) & vbCr
    End If
Next

TxtFile.Close
Set TxtFile = Nothing
Set fso = Nothing
Set AcMapEntity = Nothing
Set AcMapBlock = Nothing

End Sub


Wie ihr seht, habe ich auch mit Pi und 180 mein Glück probiert.

Tobias

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13527
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 23. Nov. 2004 13:57    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 kiltswitch 10 Unities + Antwort hilfreich

ersetzte mal Pi durch 3.1415926 !

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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: 23. Nov. 2004 14: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 Nur für kiltswitch 10 Unities + Antwort hilfreich

Code:

Sub Träume_am_laufenden_Block()
Dim elem As AcadEntity
Dim rownum As Long, ip As Variant
Dim ExcelApp As Excel.Application
Dim ExcelWbk As Excel.Workbook
Dim ExcelWks As Excel.Worksheet
rownum = 2
Set ExcelApp = New Excel.Application
Set ExcelWbk = ExcelApp.Workbooks.Add
ExcelApp.ActiveWorkbook.SaveAs "D:\Mappe1.xls"
Set ExcelWks = ExcelWbk.ActiveSheet
With ExcelWks
  .Cells(1, 1) = "x": .Cells(1, 2) = "y" 'usw
  For Each elem In ThisDrawing.ModelSpace
        If TypeOf elem Is IAcadBlockReference Then
            ip = elem.InsertionPoint
            .Cells(rownum, 1) = ip(0)
            .Cells(rownum, 2) = ip(1)
            .Cells(rownum, 3) = ip(2)
            .Cells(rownum, 4) = elem.Rotation * 180 / WorksheetFunction.Pi
            rownum = rownum + 1
        End If
    Next
End With
ExcelApp.ActiveWorkbook.Close 1
ExcelApp.Quit
Set ExcelWks = Nothing
Set ExcelWbk = Nothing
Set ExcelApp = Nothing
End Sub

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 14: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

Na aber Pi ist doch eine Variable, die ich weiter oben im Code deklariert habe?

Zitat:
Original erstellt von CADmium:
ersetzte mal Pi durch 3.1415926 !


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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 14:22    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

Also ich habe den Code gerade mal ausprobiert, aber irgendwie geht das
mit der Datei nicht. Ich kann die Excel-Datei nämlich nicht öffnen bzw. beim Öffnen bleibt es hängen?

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 23. Nov. 2004 14:22    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 kiltswitch 10 Unities + Antwort hilfreich

@kiltswitch: Du hast ein erstaunliches Talent, die Leute dazu zu kriegen, deine Arbeit zu machen. Und wenn die Arbeit erledigt, ist bist du auch noch nicht zufrieden. Ich habe es zwar nicht ausprobiert, bin mir aber sehr sicher, dass Nancys Code ganz genau das macht, was du wolltest.

Nancy benutzt aber die Pi-Konstante aus den Excel-Funtionen. Warum auch nicht, da gibt es ja eine Pi-Definition. Die gibt es aber nicht, wenn du in ein Textfile schreibst. In diesem Falle musst du Pi selber definieren. Allerdings ist der Vorschlag von Cadmium etwas schwach: Wenn schon, dann muss man Pi mit doppelter Fließkomma-Genauigkeit (Datentyp Double) definieren, in diesem Fall also am besten mit 16 Kommastellen.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 14:29    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

@mapcar:

Das ist nun wirklich nicht mein Vorwand, andere Leute dazu zu zwingen, meine Arbeit zu machen!!!

Wenn ich es nun mal nicht hinbekomme - rumprobiere, abändere und es trotzdem noch nicht geht - dann muß ich doch nun mal auf Hilfe anderer Leute hoffen?
Der Code von Nancy funktioniert leider nicht so richtig. Wie gerade schon beschrieben, hängt sich bei mir immer die Excel-Datei auf, wenn ich sie öffnen will.

Pi habe ich in meinem Code als Datentyp Double deklariert.

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: 23. Nov. 2004 14:36    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 kiltswitch 10 Unities + Antwort hilfreich

tja, dumm gelaufen ;-)

versuchs mal mit Excelapp vor Worksheetfunction

Code:

.Cells(rownum, 4) = elem.Rotation * 180 / ExcelApp.WorksheetFunction.Pi

ansonsten bin ich für meinen Teil planlos.

Nancy

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 14:39    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

Also Nancy ihr Code funktioniert, wenn ich das mit der Pi-Funktion von Excel (WorksheetFunction.Pi) herausnehme und dafür die Variable Pi einsetze, die ich vorher mit dem Datentyp Double deklariert habe.

ABER:

Es passiert genau das Gleiche wie bei meinem Code, die Werte des Drehwinkels sind in der Exceldatei einfach falsch. Mich wundert, dass es 5 Blöcke gibt, da steht ein Wert drin, der wie bei den anderen Blöcken nicht dem Wert "0" entspricht. Mmh....

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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4187
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 23. Nov. 2004 14: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 Nur für kiltswitch 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kiltswitch:
Wenn ich es nun mal nicht hinbekomme - rumprobiere, abändere und es trotzdem noch nicht geht - dann muß ich doch nun mal auf Hilfe anderer Leute hoffen?...

Falsch! Das ist die vollkommen verkehrte Herangehensweise. Du fummelst irgendwas, irgendwie, ziellos in dem zufällig gefundenen VBA-Editor rum. Der zufall entscheidet allein darüber, ob du nun ein paar lauffähige Zeilen damit erzeugt hast, oder auch nicht.

Tobias, du solltest aufhören dein Halbwissen mit Fachwissen (der Antwortenden) zu vermengen.
Bring dich erst einmal auf einen Stand, der dich befähigt die Antworten nicht nur lautgetreu, sondern auch verstehend zu lesen.

Grundlagen können in einem Forum nicht vermittelt werden, denn gerade hier ist es erforderlich, dass das Grundwissen und Fachvokabular sitzt, denn sonst sind alle Mühen vergebens.
Und genau an diesem Punkt sind wir hier. Alle deine Beiträge haben ein Vielfaches an der sonst eher geringen Zahl an Antworten hervorgebracht. Hast du eine Ahnung warum?

Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13527
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 23. Nov. 2004 14:42    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 kiltswitch 10 Unities + Antwort hilfreich

Offtopic :
@kiltswitch : Übrigens : Glückwunsch zum (über) 100. Post zum gleichen Thema!! Rekordverdächtig!

SCNR

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 14:43    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

Nein, es funktioniert auch so nicht - genau das Gleiche: er legt die Datei an, aber ich kann sie nicht öffnen. Bzw. genauer: er will sie öffnen, aber Excel hängt sich auf.

Zitat:
Original erstellt von startrek:
tja, dumm gelaufen ;-)

versuchs mal mit Excelapp vor Worksheetfunction

Code:

.Cells(rownum, 4) = elem.Rotation * 180 / [b]ExcelApp
.WorksheetFunction.Pi

ansonsten bin ich für meinen Teil planlos.

Nancy[/B]


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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 14:46    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

Weil man hier so fürsorgend ist und auch noch hoffnungslosen Fällen wie mir hilft... :-)

Also der Code von Nancy und mein Code unterscheiden sich in keinster Weise beim Ergebnis. :-(
Es tritt wieder das gleiche Problem wie immer auf: die Werte des Drehwinkels stimmen nicht.

@Nancy: Trotzdem Danke für Deinen Code!

Zitat:
Original erstellt von Brischke:
[b]Falsch! Das ist die vollkommen verkehrte Herangehensweise. Du fummelst irgendwas, irgendwie, ziellos in dem zufällig gefundenen VBA-Editor rum. Der zufall entscheidet allein darüber, ob du nun ein paar lauffähige Zeilen damit erzeugt hast, oder auch nicht.

Tobias, du solltest aufhören dein Halbwissen mit Fachwissen (der Antwortenden) zu vermengen.
Bring dich erst einmal auf einen Stand, der dich befähigt die Antworten nicht nur lautgetreu, sondern auch verstehend zu lesen.

Grundlagen können in einem Forum nicht vermittelt werden, denn gerade hier ist es erforderlich, dass das Grundwissen und Fachvokabular sitzt, denn sonst sind alle Mühen vergebens.
Und genau an diesem Punkt sind wir hier. Alle deine Beiträge haben ein Vielfaches an der sonst eher geringen Zahl an Antworten hervorgebracht. Hast du eine Ahnung warum?

Holger

[/B]


[Diese Nachricht wurde von kiltswitch am 23. Nov. 2004 editiert.]

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 15: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

Oh, danke!
Nun, das Thema ist ja nun sehr komplex und es gibt viele viele Fragen und Teilprobleme: Datenbanken, automatisches Mastzusammensetzen, Blockauslesen, Konzeptbildung....

Da können schon schnell über 100 Beiträge zusammenkommen.

Zitat:
Original erstellt von CADmium:
Offtopic :
@kiltswitch : Übrigens : Glückwunsch zum (über) 100. Post zum gleichen Thema!! Rekordverdächtig!

[b]SCNR

[/B]


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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 15:31    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

Also hier nochmal mein Code. Ich habe jetzt auch schon Bücher vor mir liegen und wälze darin rum, ob ich irgendwas zu dem Problem mit dem Drehwinkel finde - leider bisher ohne Erfolg. Mir ist es langsam unerklärlich, wieso das nicht richtig an die Datei übertragen wird.
Es muß doch eine Lösung geben... :-(

Sub ReadBlockProperties()

Dim AcMapEntity As AcadEntity
Dim AcMapBlock As AcadBlockReference
Dim Pi As Double
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Pi = 3.141592654
Dim TxtFile As TextStream
Set TxtFile = fso.OpenTextFile("v:\Praxis_Konstruktionsabteilung\Blockauslesung\Datei 1-Blockauslesung.xls", ForWriting, True)

TxtFile.WriteLine ("Blockname") & _
vbTab & ("Block-ID") & _
vbTab & ("X-Koordinate") & _
vbTab & ("Y-Koordinate") & _
vbTab & ("Z-Koordinate") & _
vbTab & ("Drehwinkel") & vbCr

For Each AcMapEntity In ThisDrawing.ModelSpace
    If AcMapEntity.ObjectName = "AcDbBlockReference" Then
       
        Set AcMapBlock = AcMapEntity
       
        TxtFile.WriteLine AcMapBlock.Name & _
            vbTab & AcMapBlock.ObjectID & _
            vbTab & Round(AcMapBlock.InsertionPoint(0), 2) & _
            vbTab & Round(AcMapBlock.InsertionPoint(1), 2) & _
            vbTab & Round(AcMapBlock.InsertionPoint(2), 2) & _
            vbTab & Round((AcMapBlock.Rotation * 180 / Pi), 2)
   
   
    End If
Next

TxtFile.Close
Set TxtFile = Nothing
Set fso = Nothing
Set AcMapEntity = Nothing
Set AcMapBlock = Nothing

End Sub

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: 23. Nov. 2004 16:45    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 kiltswitch 10 Unities + Antwort hilfreich

Dein 'Winkelproblem' kann ich nicht nachvollziehen, ebensowenig wie das was Du da zusammencodest.
Prüfe mal die Werte im Direktfenster / Lokalfenster [elem]
Die kannst Du ja ggf. via copypaste in Excel einfügen und dann Daten/Text in Spalten ...
Code:

Sub x()
   Const Pi# = 3.14159265358979
   Dim elem As AcadEntity, ip
   For Each elem In ThisDrawing.ModelSpace
        If TypeOf elem Is IAcadBlockReference Then
            ip = elem.InsertionPoint
            Debug.Print ip(0), ip(1), ip(2), elem.Rotation * 180 / Pi
        End If
    Next
End Sub

und versuche bitte bitte auch mal, das eine oder andere was hier gepostet wurde zu beherzigen.
Mehr kann und will ich auch nicht dazu sagen.

Nancy  

[Diese Nachricht wurde von startrek am 23. Nov. 2004 editiert.]

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 23. Nov. 2004 16:55    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 den Tipp.

Aber wieso denkt ihr denn alle, ich würde eure Tipps nicht beherzigen?Dein Code von vorhin habe ich z.B. auch ausprobiert - ich habe ALLES getestet und jeden Tipp angenommen. Nur habe ich eben damti noch nicht das Problem lösen können.

Tschüs
Tobias

Zitat:
Original erstellt von startrek:
und versuche bitte bitte auch mal, das eine oder andere was hier gepostet wurde zu beherzigen.
Mehr kann und will ich auch nicht dazu sagen.

Nancy  


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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 23. Nov. 2004 21:25    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 kiltswitch 10 Unities + Antwort hilfreich

Tobias, bitte versuch mal, nur das zu zitieren, worauf du dich beziehst. Ich habe deinen letzten Beitrag dahingehend geändert (wie schon ein paarmal). Wiederholungen gibt es schon genug, und wenn Codepassagen dann auch immer noch in Zitaten wiederholt werden, wird das alles sehr schwer lesbar.

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 24. Nov. 2004 08:04    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 Mapcar,

in Ordnung, ich werde mich daran halten.

Tobias

Zitat:
Original erstellt von mapcar:
Tobias, bitte versuch mal, nur das zu zitieren, worauf du dich beziehst. Ich habe deinen letzten Beitrag dahingehend geändert (wie schon ein paarmal). Wiederholungen gibt es schon genug, und wenn Codepassagen dann auch immer noch in Zitaten wiederholt werden, wird das alles sehr schwer lesbar.


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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 24. Nov. 2004 08:43    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

Guten Morgen Nancy,

also ich habe jetzt mal Deinen Ratschlag befolgt und mit Deinem oben angegebenen Code die Werte im Direktfenster / Lokalfenster überprüft.

Bei allen Blöcken (AcadBlockReference) stimmen die Werte der Rotation im Lokalfenster mit denen in der Exceltabelle überein. Das heißt ja dann wohl, die Werte werden richtig an Excel übertragen, oder...?

Copy/Paste bringt mir nichts. Ich könnte zwar die Werte so in die Excel-Tabelle eintragen, aber das will ich ja nicht. Die Werte sollen automatisch in die Tabelle eingefügt werden, was ja auch klappt.

Nur eines verstehe ich nicht:
Woher die Werte der Rotation im Lokalfenster kommen. Dass es Bogenmaß ist, ist wohl klar, aber wenn ich das z.B. in Grad umrechne (*180/Pi), dann stimmen die Zahlen einfach nicht mit den Werten überein, die man im Eigenschaftenfenster von AutoCAD lesen kann? Habe ich hier einen Denkfehler drin? Weißt Du, was ich meine?

Z.B. steht bei einem Block im Eigenschaftenmenü von AutoCAD eine Drehung von 170°, aber im Lokalfenster und Excel steht 4,8869. Rechne ich die 4,8869 in Grad um, so komme ich auf 280°?! Das ist das, was ich nicht kapiere?

Ich habe mal einen neuen Block eingefügt und ein bißchen mit seinen Drehwinkelwerten experimentiert:

bei 90° im Eigenschaftenmenü ---> 0 (= 0°) in Excel
bei 100°        -"-          ---> 6,10865238 (= 350°) in Excel
bei 0°          -"-          ---> 1,57079633 (= 90°) in Excel

Kann man über eine Formel diese Unterschiede irgendwie ermitteln? Mir wäre es nämlich am liebsten, wenn in der Exceltabelle (auch) die Werte des Eigenschaftenmenüs stehen.

Könnte es auch einen Zusammenhang zur Richtungssteuerung in AutoCAD (Menü: Format --> Einheiten) geben?

Vielleicht hast Du oder jemand anderes einen Tipp für mich, warum dieser Unterschied auftritt.

Tobias

 

Zitat:
Original erstellt von startrek:
Dein 'Winkelproblem' kann ich nicht nachvollziehen, ebensowenig wie das was Du da zusammencodest.
Prüfe mal die Werte im Direktfenster / Lokalfenster [elem]
Die kannst Du ja ggf. via copypaste in Excel einfügen und dann Daten/Text in Spalten ...

Nancy  


[Diese Nachricht wurde von kiltswitch am 24. Nov. 2004 editiert.]

[Diese Nachricht wurde von kiltswitch am 24. Nov. 2004 editiert.]

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: 24. Nov. 2004 09:31    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 kiltswitch 10 Unities + Antwort hilfreich


rotate.jpg

 
Moin Tobias,

nen Tip hab ich nicht auf die Schnelle, ausser geh' mal die Sub im Einzelschritt mit F8 durch.
Im Lokalfenster schaust Du mal, sobald elem belegt wurde, was da unter Rotation steht
und vergleichst mal mit den Werten im Direktfenster.
Sorry, bin etwas in Eile, siehe Pic.

Gruss Nancy 

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 24. Nov. 2004 09: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

Ok, habe das mal gemacht.
Also aus dem Lokalfenster die Bogenmaßwerte werden über die Formel *180/Pi (im Code) in die Gradzahlen umgerechnet, welche dann im Direktfenster stehen. Diese Werte findet man dann auch in der Exceltabelle wieder, denn im Grunde ist diese Tabelle ja nur eine ähnliche Abbildung vom Direktfenster, könnte man so sagen.

ABER:

Was ich jetzt gerade geprüft habe, darum geht es mir ja jetzt gar nicht so richtig! Sondern ich will herausfinden, warum im AutoCAD-Menü "Eigenschaften" bei den Blöcken völlig andere Drehwinkel stehen. DAS ist das, was mich interessiert und WIE ich an diese Werte über die Werte in Excel herankomme! Ob es eine Umrechnungsmöglichkeit gibt, damit dieselben Werte auch in der Exceltabelle stehen.

Was mich auch noch interessiert:
kann ich über VBA die Exceltabelle gleich sortieren lassen, z.B. nach dem Blocknamen? Ich will das nicht erst nachträglich in Excel machen.

Tobias

Zitat:
Original erstellt von startrek:
Moin Tobias,

nen Tip hab ich nicht auf die Schnelle, ausser geh' mal die Sub im Einzelschritt mit F8 durch.
Im Lokalfenster schaust Du mal, sobald elem belegt wurde, was da unter Rotation steht
und vergleichst mal mit den Werten im Direktfenster.
Sorry, bin etwas in Eile, siehe Pic.

Gruss Nancy 


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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 24. Nov. 2004 09:55    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 kiltswitch 10 Unities + Antwort hilfreich

Keine Ahnung, was du da machst. Ich habe diesen Code von Nancy ausprobiert:
Code:

Sub x()
   Const Pi# = 3.14159265358979
   Dim elem As AcadEntity, ip
   For Each elem In ThisDrawing.ModelSpace
        If TypeOf elem Is IAcadBlockReference Then
            ip = elem.InsertionPoint
            Debug.Print ip(0), ip(1), ip(2), elem.Rotation * 180 / Pi
        End If
    Next
End Sub

Ein Block, sukzessive um 90° gedreht, ergibt dieses Ergebnis im DFenster:

Code:

13,2          11,5          0             0
13,2          11,5          0             90,0000000000001
13,2          11,5          0             180
13,2          11,5          0             270

Ich hätte dir auch meine Testzeichnung drangehängt zum Vergleich, aber das ist zwecklos, da du trotz meiner entspr. Bitte du es immer noch nicht für nötig hältst, mal dein Profil auszufüllen. So weiss kein Mensch, mit welcher Acad-Version du arbeitest.

Prüf mal deine Systemvariablen ANGBASE und ANGDIR, die sollten auf null stehen. Und setze AUPREC auf den Wert 8, sonst schneidet dein Eigenschaftenfenster alle Nachkommastellen von Winkeln ab.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Dieses Thema ist 2 Seiten lang:   1  2

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag öffnen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz