Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Zugriff auf die Variable des Objektvolumens?

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:  Zugriff auf die Variable des Objektvolumens? (1667 mal gelesen)
CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 21: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

Hallo Kollegen! 

Ich habe bei einer Attributsdefinition (ACAD 2008 / Win XP) folgendes Problem:

Ich habe mir einen Plankopf aus verschiedenen Attributen, welche teilweise mit Werten vordefiniert sind und andere erst beim Einfügen des Plankopfblockes ausgefüllt werden müssen, als Block erstellt. Eines dieser Attribute enthält die Dichte des Werkstoffes. Aus diesem Dichtewert und dem Volumen des Zeichenobjektes (3D-Solid und nur ein Stück pro Zeichnung) soll die Masse berechnet werden und in einem anderen Attributsfeld im Plankopf automatisch eingetragen werden.

Da sich das Volumen des 3D-Volumenkörpers während der Konstruktion (z.b. Start mit Quader, dann einsetzen von Bohrungen, addieren von andern 3D-Solids mittels Bool´scher Operation, etc.) ändert, möchte ich nach "attsync" im Feld "Masse", den aktuellen Wert stehen haben.

Hier nun die Fragen:
a) in welcher Variable wird das Volumen eines 3D-Solids abgespeichert?
b) muß ich dabei auch eine Objekt-ID beachten?
c) wie baue ich dies am intelligentesten ohne Programmierung (VBA, Lisp) in den Plankopf ein?

Anmerkung: der Plankopf wird im "Papierbereich" eingefügt

Vielen Dank im voraus!

Georg

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


Ex-Mitglied

erstellt am: 27. Okt. 2009 21:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Georg,

>> in welcher Variable wird das Volumen eines 3D-Solids abgespeichert?

leider gar nicht gespeichert, sondern nur per Befehl '_massprop' nachträglich zu berechnen.


>> muß ich dabei auch eine Objekt-ID beachten?

solange Du nicht über Programmierung nachdenkst, nein.


>> wie baue ich dies am intelligentesten ohne Programmierung (VBA, Lisp) in den Plankopf ein?

zumindest ich habe dazu leider keine Idee.


Sorry für die schlechten Nachrichten, - alfred -

------------------
www.hollaus.at

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Okt. 2009 21: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 CAD-Tiger 10 Unities + Antwort hilfreich

Eigenschaften von Objekten werden nie in Variablen gespeichert !?

Ein Volumenkörper hat keine Eigenschaft "Masse" oder "Volumen" .

Die zur Verfügung stehenden Eigenschaften für ein SCHRIFTFELD kannst
du selbst abfragen: Schriftfeld Objekt <volumenkörper klicken> voila...

Und wenn eine Eigenschaft bestehen würde: Dann müßte man den Objektnamen natürlich
berücksichtigen - Acad muß ja wissen von welchem Objekt der Wert ausgelesen werden soll
- allerdings bin ich nicht sicher was DU mit "Objekt-ID" meintest.

Attsync gleicht Attribute mit der aktuellen Attributdefinition ab,
das was du gebrauchen könntest wäre bei der Verwendung von Schriftfeldern
die Systemvariable _fieldeval und/oder die Funktion _updatefield/Schriftfeldakt
Attsync ist aber sicher nicht "richtig" .

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 22: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

Hallo Alfred!

Danke für die schnelle Antwort. Ich hatte ursprünglich an die Möglichkeit über die Schriftfelder gedacht. Wäre es den möglich den Wert von "_massprop" in ein Attributsfeld umzuleiten und dann auf dieses Attributsfeld über die Schriftfelder zuzugreifen? Es würde mir ja reichen kurz vor dem Drucken dann ein attsync zu starten. Der Massenwert muß ja nicht permanent in Echzeit während der Kunstruktion berechnet werden.

Liebe Grüße,
Georg

Edit: hatte den Beitrag von cadffm beim Absenden meines Beitrages noch nicht gesehen

[Diese Nachricht wurde von CAD-Tiger am 27. Okt. 2009 editiert.]

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

CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 22: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

Hallo cadffm!

Mit Objekt-ID meinte ich folgendes. ACAD vergibt ja intern jedem Objekt (Kreis, Kugel, Linie, etc.) ja eine eindeutige ID, oder? Wenn ich nun beim Konstruieren 2 3D-Solids erstelle und diese dann verschmelze, weist dann ACAD diesem "neuen" Objekt ja eine neue ID zu (hoffe ich zumindest) damit ich dann eindeutig darauf bezug nehmen kann für Programmierungen, Attributsfelder, etc..

LG, Georg

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


Ex-Mitglied

erstellt am: 27. Okt. 2009 22:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Wäre es den möglich den Wert von "_massprop" in ein Attributsfeld umzuleiten

...nicht dass ich wüsste (nicht ohne Programmierung)


>> ein attsync zu starten

cadffm hat Dir schon beschrieben, dass '_attsync' nicht das ist, was Du brauchst (schau Dir mal in der Hilfe den Befehl an, damit Du siehst, was dieser macht).

- alfred -

------------------
www.hollaus.at

CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 22:17    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 Alfred,

bin schon dabei (siehe auch mein "Tante Edit" oben  )

Georg

P.S.: ich hoffe ich finde diesbezüglich noch eine halbautomatische Lösung, ansonsten muß ich vor dem Drucken die Masse manuell rechnen und einfügen.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Okt. 2009 22:18    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 CAD-Tiger 10 Unities + Antwort hilfreich

ok, Schriftfelder arbeiten zwar nicht mit dem CAD-Handle oder dem Objektnamen sondern
mit einer 3. "ID" - aber das nur am Rande.

Zurück zum Thema: Ausgerechnet das Ergebnis des Volumens welches MASSEIG errechnet
wird NICHT zwischengespeichert, daher kann man sich auch nicht temporär darauf beziehen.

Soviel zu meinem Kenntnisstand.

Bleibt nur ein Programm um es per Knopfdruck, aber "dumm" in das
Attribut einzutragen und das war hier ja ausdrücklich nicht gesucht.

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 22:24    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

Hi cadffm,

danke für die Korrektur.
Programmierung habe ich deswegen ausgeschlossen, da ich selber keinerlei VBA bzw. Lisp-Erfahrung besitze, wehre mich aber nicht prinzipiell gegen solche Lösungen. Ich lerne gerne dazu. Wie aufwendig wäre den so etwas zu proggen? ("nur" ein 2-Zeiler oder doch etwas mehr?)

Georg

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


Ex-Mitglied

erstellt am: 27. Okt. 2009 22:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Georg,

>> Wie aufwendig wäre den so etwas zu proggen?
>> "nur" ein 2-Zeiler oder doch etwas mehr?

hast Glück gehabt, hat mich interessiert. Mit 2 Zeilen geht's (mit VBA) nicht, der Hauptteil (wie bei jedem Programm) sind Anwenderfehler abfangen, der Rest ist eigentlich Muki.


VBA-Editor starten (Befehl: _vbaide), folgenden Code einfügen und in VBA mal speichern.
Dann Befehl: _vbarun ==> im folgenden Dialog 'xxx.SolidVol_to_Attribute' auswählen ==> Button 'Ausführen'. Der Rest wird in der Befehlszeile von AutoCAD abgefragt und sollte klar sein (Hoffe ich )

Code:
Public Sub SolidVol_to_Attribute()
  Dim tEnt As AcadEntity
  Dim tPnt As Variant
  Dim tVolume As Double
 
  On Error Resume Next
  Call ThisDrawing.Utility.GetEntity(tEnt, tPnt, "Volumenkörper zeigen: ")
  If tEnt Is Nothing Then
      Call MsgBox("Kein Element gewählt")
  ElseIf Not (TypeOf tEnt Is Acad3DSolid) Then
      Call MsgBox("Gewähltes Element war kein Volumenkörper")
  Else
      Dim tSol As Acad3DSolid
      Set tSol = tEnt
      tVolume = tSol.Volume
  End If
 
  If tVolume > 0 Then
      Set tEnt = Nothing
      Dim tMatrix As Variant
      Dim tCData As Variant
      Call ThisDrawing.Utility.GetSubEntity(tEnt, tPnt, tMatrix, tCData, "Attribut zeigen")
      If tEnt Is Nothing Then
        Call MsgBox("Kein Element gewählt")
      ElseIf (Not (TypeOf tEnt Is AcadAttributeReference)) Then
        Call MsgBox("Gewähltes Element war keine AttributReferenz")
      Else
        Dim tAttRef As AcadAttributeReference
        Set tAttRef = tEnt
        tAttRef.TextString = CStr(tVolume)
      End If
  End If
End Sub

- alfred -

------------------
www.hollaus.at

CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 22:53    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

Da kann ich nur noch staunen!!!!

Vielen Dank Alfred, werde ich gleich ausprobieren!

 

Gruß Georg

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Okt. 2009 23:00    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 CAD-Tiger 10 Unities + Antwort hilfreich

Wenn man es so macht wie hier (da ging es um den Schwerpunkt) : KLICK!
Dann ist der Aufwand nicht groß (weil es ja bereits den eigentlich Code gibt).

Inhalt:
1.) MASSEIG ausführen
2.) Ergebnis in die Analyse Datei umleiten
3.) Analysedatei einlesen und die 5.Zeile verarbeiten

Den Wert kann man dann zB. in die USERR1-5 Variablen speichern, so bleibt der zuletzt berechnete
Wert erhalten <In Zeichnung gespeicherte Variablen>

Ein Schriftfeld im Plankopf(attribute) kann dann USERR1 zB. auslesen
(bzw. eine Formel im Schriftfeld kann den Wert als Berechnungsgrundlage nutzen)

PS: So ein Schriftfeld was sich einen Wert aus einem anderen Attribut holt, kann
aber erst NACH einfügen der Plankopf-Blockreferenz erstellt werden, also nicht bereits
in der Blockdefinition !

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 23: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

So  , die Variante von Alfred funktioniert einmal sauber 

Die von Dir cadffm, werde ich morgen dann einmal antesten, da muß ich mir den Text genauer durchlesen.

Vielen Dank Euch beiden vorerst. Üs sind reichlich unterwegs 

Liebe Grüße,
Georg 

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Okt. 2009 23:13    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 CAD-Tiger 10 Unities + Antwort hilfreich

Nein, die kannst du wieder verwerfen 
Ich wollte damit nur aufzeigen das es "sowas" schon im Forum gibt, jedoch
angepasst werden müßte. Zumal das wenig elegant ist in dem Beispiel

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

CAD-Tiger
Mitglied



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

Beiträge: 12
Registriert: 25.08.2009

erstellt am: 27. Okt. 2009 23: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

Hi cadffm, ok 

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