Autor
|
Thema: Fläche auswählen und Oberfläche messen (3453 mal gelesen)
|
Blade9969 Mitglied Ingenieur
Beiträge: 7 Registriert: 12.04.2010
|
erstellt am: 12. Apr. 2010 11:14 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Blade9969
|
Blade9969 Mitglied Ingenieur
Beiträge: 7 Registriert: 12.04.2010
|
erstellt am: 12. Apr. 2010 16:07 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 7 Registriert: 12.04.2010
|
erstellt am: 13. Apr. 2010 13:39 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Blade9969
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
Beiträge: 7 Registriert: 12.04.2010
|
erstellt am: 13. Apr. 2010 15:41 <-- editieren / zitieren --> Unities abgeben:
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 14. Apr. 2010 01:23 <-- editieren / zitieren --> Unities abgeben: Nur für Blade9969
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
Beiträge: 7 Registriert: 12.04.2010
|
erstellt am: 14. Apr. 2010 08:13 <-- editieren / zitieren --> Unities abgeben:
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 ansehen | Mechaniker |
|
DanielFr. Moderator Manager
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 / zitieren --> Unities abgeben: Nur für Blade9969
|