Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Objekt AutoCad.Acad3DSoilid.Volume aufrufen???

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

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Objekt AutoCad.Acad3DSoilid.Volume aufrufen??? (706 mal gelesen)
Einstein
Mitglied
Zerspanungsmechaniker-Drehtechnik


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

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 16. Dez. 2005 22:58    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 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


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

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 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 Einstein 10 Unities + Antwort hilfreich

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


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

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 17. Dez. 2005 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

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


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: 17. Dez. 2005 13:32    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 Einstein 10 Unities + Antwort hilfreich

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


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

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 17. Dez. 2005 14:16    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 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 ansehenElektrotechnik, Elektronik
Clayton
Ehrenmitglied
Konstrukteur


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

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 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 Einstein 10 Unities + Antwort hilfreich

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

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

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


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

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

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

(c)2023 CAD.de | Impressum | Datenschutz