Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Fläche auswählen und Oberfläche messen

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
Autor Thema:  Fläche auswählen und Oberfläche messen (3453 mal gelesen)
Blade9969
Mitglied
Ingenieur

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

Beiträge: 7
Registriert: 12.04.2010

erstellt am: 12. Apr. 2010 11: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!
Habe schon die Suchfunktion ausgiebig strapaziert, bin dabei jedoch auf keine befriedigenden Ergebnisse gestoßen.
Ich hoffe ihr könnt mir weiterhelfen!

Also...
Folgendes Problem:
Ich habe ein Part, in welchem sich 2 oder mehr Flächen befinden.
In einem Makro soll zuerst die zu messende Fläche durch anklicken ausgewählt werden und anschließend die Oberfläche gemessen werden.

Das auswählen etc. habe ich hinbekommen. Aber bei der Funktion "Messen" komme ich nicht weiter.
Das Programm endet mit der selektierten Fläche:

Set selectedflaeche = UserSelection.Item(1).Value

nun soll von dieser Fläche das Maß der Oberfläche in die Variable "AArea" geschrieben werden. In der Hilfe habe ich dafür folgendes gefunden:

Dim AArea As double
AArea = NewMeasurable.Area

Umgesetzt habe ich dies dann so:

Dim AArea As double
AArea = selectedflaeche.Area

hierbei tritt dann der Fehler auf.
Vielen Dank schon mal für eure Hilfe

------------------
Gruß
Blade

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 12. Apr. 2010 11: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 Nur für Blade9969 10 Unities + Antwort hilfreich

Hallo,

du musst dir erst mal ein messbares Referenzobjekt erzeugen um zu messen. Hier mal der Code aus der Hilfe:

Code:

    Dim referenceObject As referenceObject
    Set referenceObject = "GetReference"
    Dim TheSPAWorkbench As Workbench
    Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" )
    Dim TheMeasurable As Measurable
    Set TheMeasurable = TheSPAWorkbench.GetMeasurable(referenceObject)


Als Referenzobjekt (referenceObject) musst du dann die Selektion nehmen. Auf diese TheMeasurable-Objekt kannst du dann die Funktion "Area" anwenden

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

Blade9969
Mitglied
Ingenieur

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

Beiträge: 7
Registriert: 12.04.2010

erstellt am: 12. Apr. 2010 16:07    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,

also hat mit deiner Erklärung super geklappt!
Hier der Quellcode, den ich verwendet habe:

Dim reference1 As Reference
Set reference1 = selectedflaeche
   
Dim TheSPAWorkbench As Workbench
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

Dim TheMeasurable As Measurable
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(reference1)

AArea = TheMeasurable.Area

MsgBox ("Flächeninhalt= " & AArea)

Danke nochmal für deine Hilfe

------------------
Gruß
Blade

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

Blade9969
Mitglied
Ingenieur

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

Beiträge: 7
Registriert: 12.04.2010

erstellt am: 13. Apr. 2010 13: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

Hi,
also bis hier hin hat alles wunderbar geklappt.
Mein Programm funktioniert jetzt auch.
Jedoch nur mit Flächen!
Ich habe hier jedoch ein Solid, welches von einer Fläche abgeleitet wurde. Die Oberfläche des Solids soll nun selektiert werden und anschließend ein Boundary erzeugt werden. Wie gesagt habe ich bereits ein Programm geschrieben welches dies kann, jedoch nur bei Flächen:

Code:
Dim SelectionType(1)
SelectionType(0) = "HybridShape"
SelectionType(1) = "AnyObject"

Dim selectedflaeche
Set selectedflaeche = UserSelection.Item(1).Value

UserSelection.Clear
UserselectionLocal.Clear

Dim reference1 As Reference
Set reference1 = selectedflaeche

Dim hybridShapeBoundary1 As HybridShapeBoundary
Set hybridShapeBoundary1 = hybridShapeFactory1.AddNewBoundaryOfSurface(reference1)

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = partDocument1.HybridBodies

untergeoset.AppendHybridShape hybridShapeBoundary1

partDocument1.InWorkObject = hybridShapeBoundary1

hybridShapeBoundary1.Name = "Flaeschenumriss"
partDocument1.Update


bei "Set hybridShapeBoundary1 = hybridShapeFactory1.AddNewBoundaryOfSurface(reference1)" tritt ein Run-time error auf.

Ich hoffe ihr könnt mir auch bei diesem Problem so schnell und kompetent weiterhelfen.
Danke schon im Vorraus für eure Mühe!

------------------
Gruß
Blade

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 13. Apr. 2010 15: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 Blade9969 10 Unities + Antwort hilfreich

Set reference1 = UserSelection.Item(1).Reference

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

Blade9969
Mitglied
Ingenieur

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

Beiträge: 7
Registriert: 12.04.2010

erstellt am: 13. Apr. 2010 15: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

Hi,

habe die Änderung getestet!
Hat leider nichts gebracht. Der Fehler bleibt der gleiche.

Trotzdem Danke.

------------------
Gruß
Blade

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 14. Apr. 2010 01:23    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 Blade9969 10 Unities + Antwort hilfreich

Hallo Blade9969,

bring doch mal die folgende Änderung in Deinen Code ein:

Code:
Set reference1 = partDocument1.CreateReferenceFromObject(selectedflaeche)
Hilft dies?

Übrigens: Ich weiß ja nicht, wo Du den Code her hast, doch logisch sind die Bezeichnungen nicht! Warum? Dein 'PartDocument1' bezeichnet kein 'Document' (Datei) sondern ein 'Part'! Damit macht man sich als Programmierer das Leben nur unnötig schwer!


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

Blade9969
Mitglied
Ingenieur

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

Beiträge: 7
Registriert: 12.04.2010

erstellt am: 14. Apr. 2010 08: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

Hi,

Danke aber jetzt tritt der fehler an deiner Programmzeile auf.
Ist aber auch nicht mehr so dringend. Werde halt für diese Funktion die entsprechenden Solidflächen zuerst per Extract ableiten. Dann funktioniert der Programmcode auch so! (Es sind sowieso nicht so viele Flächen)
Falls euch doch noch was einfallen sollte könnt ihr dies jedoch gerne noch posten :-)

Ach und natürlich auch Danke für deinen Hinweis bezüglich meinen Bezeichnungen. Ich bin noch ziemlich neu in der Materie (seit ca. 3 Tagen) und da hab ich einfach ein paar Deklarationen von anderen Codes übernommen. Habe selbst gemerkt, dass das nicht so der Hit ist. Jetzt habe ich allerdings schon eine ganze Menge Code zusammen und habe kein Bock mehr alles zu ändern.
In zukünftigen Projekten werde ich dies jedoch berücksichtigen. ^^

Also... thx für eure Hilfe

------------------
Gruß
Blade

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



Ausbildung als Zerspanungsmechaniker (m/w/i)
Die IMS Röntgensysteme GmbH mit Hauptsitz in Heiligenhaus entwickelt und produziert Röntgensysteme für die berührungslose Inspektion unterschiedlichster organischer und nicht organischer Materialien zur Optimierung von Produkten und Prozessen sowie zur Qualitätssicherung.

Verstärke ab Sommer 2024 unser Team und schaffe Dir einen tollen Start ins Berufsleben mit einer

Ausbildung als Zerspanungsmechaniker (m/w/i)
Industrie 4....
Anzeige ansehenMechaniker
DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 14. Apr. 2010 13: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 Blade9969 10 Unities + Antwort hilfreich


GetSolidBoundary_v1.rar

 
Hallo Blade,

schau mal hier. IMHO kannst du das ganze Thema nur noch über dynamische BREP Strings lösen. Vor allem beim selektieren von "Faces" spuckst dir die Selektion immer einen String aus den du weiterverarbeiten musst um in einsetzen zu können. Schau dir mal die *.bas Datei im Anhang an. Hier kannst du jetzt eine Fläche (egal ab ein Part oder ein GSD Feature) auswählen und es wird eine Boundary erzeugt und der Flächeninhalt ausgespuckt.

Das Ganz ist eine VBA Sicherung. Musst also den Visual Baisc Editor öffnen -> File -> Import -> *.bas auswählen. Danach kannst du die wie ein CATScript ausführen

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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