| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Objekt AutoCad.Acad3DSoilid.Volume aufrufen??? (706 mal gelesen)
|
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 16. Dez. 2005 22:58 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hab eine Frage zum aufrufen eines Objektes. Ich verwende AutoCad 2002, und möchte das Volumen eines Volumenkörpers in VBA ermitteln. Das dieser Wert in dem Projekt "AutoCad.Acad3DSolid.Volume" zu finden ist, fand ich bereits raus ;-). Nun möchte ich, dass dieser Wert in die von mir defienierte Variable "Volumen" geschreiben wird. Kann mir jemand sagen wie das geht? Über Programmierbeispiele würde ich mich sehr freun, da ich noch "Lehrling" in diesem Gebiet bin! ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! [Diese Nachricht wurde von Einstein am 16. Dez. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Clayton Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 07.02.2004 AMD Athlon Phantom II, 6GB, Nvidia Quadro Pro FX 1800 Inventor Series 10 Mathcad 13+14
|
erstellt am: 17. Dez. 2005 00:20 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hi, Was Du hier siehst ist direkt von der Hilfe in AutoCad, mit meiner Uebersetzung. War ja nicht viel - ist also umsonst. Ich habe allerdings das dunkle Gefuehl, dass dies nicht ist, was Du meinst, weil es eben zu Nahe liegt, aber meine Kristalkugel ist zu Hause. Gruss Sub Beispiel_Volumen() ' Dieses Beispiel erstellt einen Quader im Modellraum. ' Das Volumen wird in der Variablen "Volumen" ausgegeben. Dim boxObj As Acad3DSolid Dim Laenge As Double, Weite As Double, Hoehe As Double Dim Zentrum(0 To 2) As Double ' Definition fuer den Quader Zentrum(0) = 5#: Zentrum(1) = 5#: Zentrum(2) = 0 Laenge = 5#: Weite = 7: Hoehe = 10# ' Zeichne den Quader (3DSolid) im Modellraum Set boxObj = ThisDrawing.ModelSpace.AddBox(Zentrum, Laenge, Weite, Hoehe) ' Damit man die Kiste besser sehen kann, aendere die Perspektive Dim NewDirection(0 To 2) As Double NewDirection(0) = -1: NewDirection(1) = -1: NewDirection(2) = 1 ThisDrawing.ActiveViewport.direction = NewDirection ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport ZoomAll ' Und schliesslich gib das Volumen aus: Dim Volumen As Double Volumen = boxObj.Volume MsgBox "Das Volumen des Quaders ist " & Volumen, , "Beispiel fuer Volumen" End Sub [Diese Nachricht wurde von Clayton am 17. Dez. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 17. Dez. 2005 13:12 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die nützliche Antwort Clayton! ...Genau das wollt ich wissen! Doch jetzt hat sich schon die nächste Frage ergeben. Ich will, das man in AutoCad den Volumenkörper, dessen Volumen man ermitteln möchte, nur anklicken muss und das Makro nur von diesem das Volumen anzeigt. Wie geht das? Ich vermute, das die "Set"-Zeile geändert werden muss. ...So das, dass Programm bei mir schließlich wie folgt aussieht. Dim boxObj As Acad3DSolid ??? Set boxObj = ThisDrawing.ModelSpace ??? Dim Volumen As Double Volumen = boxObj.Volume Nur die "Set"-Zeile müsste der Gegebenheit angepasst werden, dass man den gewünschten Volumenkörper anklicken kann. ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 17. Dez. 2005 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hi, das geht mit GetEntity:
Code:
Sub xxx() Dim ent As AcadEntity, p As Variant ThisDrawing.Utility.GetEntity ent, p, "Ein Volumenkörper please:" If TypeName(ent) = "IAcad3DSolid" Then MsgBox ent.Volume End Sub
Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 17. Dez. 2005 14:16 <-- editieren / zitieren --> Unities abgeben:
Danke startrek, mit deiner Antwort haben sich gerade all meine Probleme in "Luft aufgelöst"! ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Elektrokonstrukteur (m/w/d) EPLAN / Zuken E³ | Die besten Köpfe für die unterschiedlichsten Aufgaben zu finden sowie Menschen und Technologien zu verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns:
Elektrokonstrukteur (m/w/d) EPLAN / Zuken E³ Chemnitz Das ist zukünftig dein Job - Planung und Projektierung elektrotechnischer Anlagen und Systeme mit EPLAN P8 oder Zuken E³
- ...
| Anzeige ansehen | Elektrotechnik, Elektronik |
|
Clayton Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 07.02.2004 AMD Athlon Phantom II, 6GB, Nvidia Quadro Pro FX 1800 Inventor Series 10 Mathcad 13+14
|
erstellt am: 17. Dez. 2005 17:28 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hi, Oder: Public Sub Finde_Volumen() Dim returnObj As AcadObject Dim basePnt As Variant Dim Volumen As Double On Error Resume Next ' Im folgenden Beispiel wartet AutoCad auf User Input RETRY: ThisDrawing.Utility.GetEntity returnObj, basePnt, "Waehle einen Koerper" If Err <> 0 Then Err.Clear MsgBox "Programm gelaufen.", , "Beispiel: Finde das Volumen" Exit Sub Else returnObj.Update ' Und schliesslich gib das Volumen aus: Volumen = returnObj.Volume MsgBox "Das Volumen des Quaders ist " & Volumen, , "Beispiel fuer Volumen" End If GoTo RETRY End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|