Autor
|
Thema: Middelpunkt / Center mathematisch bestimmen (3370 mal gelesen)
|
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: 17. Aug. 2010 15:44 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich hätte ein komisches Problem, eigentlich im CAA, aber ihr müsst ja ähnliche Berechnungen anstellen. Zunächst einmal: Ich möchte keine greifbare Geometrie erzeugen sondern nur rein visuelle und auch keine Features. Herausforderung ist nämlich so ne Art Richtungspfeile zu errichten, wie ihr sie ja auch von CATIA gewohnt seid. Diese sind also nur für den Anwender temporär wichtig und daher wollt' ich sie auch nur rein visuell darstellen. Dann mal zum eigentlichen Problem: Dafür benötige ich den Mittelpunkt einer beliebigen Fläche, die der Anwender angeklickt hat. Ist die Fläche ein CATBody bekomme ich relativ gute Ergebnisse mit der EstimateCenter() Methode. Allerdings sind einige Flächen eben nur vom Typ CATSurface, bei diesen hole ich mir die Limits und von denen dann die Begrenzungskoordinaten (ne Art Boundingbox) über GetExtremities(). Dann errechne ich mir einen Punkt auf halber U und V Strecke über EvalPoint() vom CATSurface. Damit bekomme ich zumindest verwertbare Ergebnisse, auch wenn der Punkt nicht immer auf der Fläche liegt, so wäre er zumindest mit einer Projektion nahe an der Mitte. Jetzt gibt es aber auch planare Flächen (eigentlich trivial) aber genau die machen mich einfach fertig. Das besonders schlimme: Nicht alle sondern nur einige wenige. Mittlerweile aber auch schon einige gekrümmte. Wenn ich diese nach den Limits frage verhalten sie sich nämlich wie Ebenen und haben diese Limits: lowParam {_U_param=-10000000.000000000 _V_param=-10000000.000000000 _U_number=1 ...} CATSurParam highParam {_U_param=10000000.000000000 _V_param=10000000.000000000 _U_number=1 ...} CATSurParam Dadurch ist mein Mittelpunkt natürlich genau auf dem Ursprung, was völlig falsch ist. Hättet ihr Ideen zu meiner Problemstellung oder warum sich manche Flächen von ihren Limits wie Ebenen verhalten? Wie würdet ihr den Mittelpunkt berechnen? Anmerkung: Ich möchte keine CATIA-Features erzeugen. ------------------ 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 |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 17. Aug. 2010 18:27 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo HoBlila, vorweg: ich habe keine Ahnung von CAA. Warum die Flächen sich so komisch verhalten weiß ich auch nicht. Mir fällt dazu ein, dass es auf der Skript-Seite die Funktion Measurable gibt, die mit GETCOG den Flächenschwerpunkt berechnet. In CAA wird es dann solch eine Berechnung sicherlich auch geben. Vielleicht kannst Du damit den Punkt bestimmen, den Du brauchst. ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 18. Aug. 2010 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, ich würde noir333 zustimmen. Kannst das ja mal damit versuchen. Die Koordinaten sind aber bezogen auf den Partursprung das macht evtl. eine Umrechnung auf ein anderen Bezug erforderlich. Sub Messen() Dim MyDocument As Document Dim MyPart As Part Dim TheSPAWorkbench As SPAWorkbench Dim TheMeasurable 'As Measurable Dim MySurface As Object Dim MyPoint(2) 'Beispielflaeche holen Set MyDocument = CATIA.ActiveDocument Set MyPart = MyDocument.Part Set MySurface = MyPart.FindObjectByName("BeispielFlaeche") 'Messe Flaeche If Not MySurface Is Nothing Then Set TheSPAWorkbench = MyDocument.GetWorkbench("SPAWorkbench") Set TheMeasurable = TheSPAWorkbench.GetMeasurable(MySurface) TheMeasurable.GetCOG MyPoint End If Debug.Print "Punkt X:" & MyPoint(0) & " Y:" & MyPoint(1) & " Z:" & MyPoint(2) End Sub mfG Mario [Diese Nachricht wurde von roccat am 18. Aug. 2010 editiert.] 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: 18. Aug. 2010 21:17 <-- editieren / zitieren --> Unities abgeben:
*omg* bin ich doof, da sehe ich den Wald vor lauter Bäumen nicht, zumal ich die Klasse schon geschrieben habe... Werd's dann mal versuchen und euch Rückmeldung geben, wenn's klappt und ich den Schwerpuntk dann projiziere wär's echt meine Lösung. Klingt jedenfalls schon einmal super. ------------------ 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 |
AndiKrue Mitglied Berater
Beiträge: 72 Registriert: 04.12.2008 Windows XP Prof x64 Edition Intel Xeon W3520 @ 2.67 GHz 8 GB RAM, Nvidia Quadro FX 1800 CATIA V5R19
|
erstellt am: 19. Aug. 2010 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
der projizierte schwerpunkt landet knapp neben der stelle, wo catia den richtungspfeil hinsetzt, aber ist glaub ich zu verkraften. hatte auch schon mal in vba versucht, den richtungspfeil selbst darzustellen. als geometrie.. naja ging so einigermaßen. aber beim rein- und rauszoomen müsste der richtungspfeil immer gleich groß bleiben, das habe ich dann nicht hinbekommen. [Diese Nachricht wurde von AndiKrue am 19. Aug. 2010 editiert.] 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: 19. Aug. 2010 11:11 <-- editieren / zitieren --> Unities abgeben:
Dass der Richtungspfeil gleichgroß bleibt, das habe ich schon. Mit der Projektion ist er aber definitiv nicht nahe an dem CATIA-Punkt, denn der Schwerpunkt ist bei unseren Flächen oft außerhalb der jeweiligen Fläche, daher erwische ich logischer Weise nur eine Kante, aber das wäre erst einmal okay, da der Punkt auf der Kante nahe der Mitte ist. So, also ich versuch jetzt mal das Measure im CAA zu bauen. ------------------ 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 |
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: 19. Aug. 2010 11:53 <-- editieren / zitieren --> Unities abgeben:
Measure funzt nicht auf meine planre Fläche *heul*. Die Idee war sehr gut, aber von meiner Problemfläche bekomme ich leider kein Measurable-Interface, von den ohne hin funktionierenden dafür schon. Interessant wäre mal zu erfahren wie Dassault den Mittelpunkt errechnet, wenn man z.B. ein PointOnSurface machen möchte... ------------------ 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 |
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: 19. Aug. 2010 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
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: 19. Aug. 2010 12:31 <-- editieren / zitieren --> Unities abgeben:
Doch komme an die U und V ran, die nutze ich ja für meinen Standard-Algorithmus. Und zwar so: Code:
CATSurLimits surLimits; pSurf->/*GetGeometricRep( )->*/GetLimits(surLimits); CATSurParam lowParam, highParam; surLimits.GetExtremities(lowParam, highParam); //CATMathBox mtBoundingBox = pSurf->GetBoundingBox(); // Defines the starting and end parameters relative to the surface limits double iLambdaU = 0.5; double iLambdaV = 0.5; //ie middle of relimited surface CATSurParam SurfaceMidPointParam (iLambdaU,iLambdaV,surLimits); pSurf->EvalPoint(SurfaceMidPointParam, mtPointCenter); //extract middle point of the surface pSurf->EvalNormal(SurfaceMidPointParam, mtDirNormal); // extract surface normal at middle point
Problem ist hier eben, dass die Limits falsch sind bei einigen Flächen (vorwiegend planare, aber auch nicht alle) und ich einfach nicht dahinter steige wieso. Hatte daher auch schon über ein topologisches Extract nachgedacht, aber das baue ich genauso über die Limits auf. :) Die falschen Limits sind leider so als hätte ich eine Ebene vor mir mit den CATIA üblichen Begrenzern. Daher dachte ich mir Code:
CATIMeasurablePlane_var spiMeasurePlane = pSurf;
müsste wenigstens ein Interface liefern, mit dem ich dann zwar nix anfangen könnte, aber nicht einmal das geht. Merkwürdig ist auch, dass ich in der Selection nur CATSurface zulasse, diesen dann aber scheinbar irgendwie doch nicht drin ist. Wobei auf der anderen Seite, es ist ein Objekt im Zeiger drin und das gibt mir eben auch die Limits aus. Das CATIA-PointOnSurface kann damit umgehen, aber nur wenn ich die Fläche nicht vorher selektiert habe. Selektiere ich die Fläche erst und mache dann PointOnSurface scheint CATIA ähnliche Probleme zu haben. Allerdings wenn ich Erst PointOnSurface sage und dann die Fläche wähle, dann geht's. Also rein interaktiv. Das dumme ist, dass jede Funktion, von mir, entweder mit CATBody Objekten arbeitet oder mit den Limits. Ein Surface in ein CATBody umwandeln kann ich (das heißt nicht, dass es auch anders geht) aber nur über ein Extract von ::CATTopSkin, der eben die Limits braucht, ein Teufelskreis. Aber schon mal vielen Dank, für eure Ideen, waren echt gut! ------------------ 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 [Diese Nachricht wurde von HoBLila am 19. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 19. Aug. 2010 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, was ist dass genau für eine Fläche die dir Sorgen bereitet? Ich hab mal bissl rumprobiert und es hat irgendwie immer die Mitte ausgegeben egal ob ich eine planare Surface oder direkt eine Plane als Element genommen habe. Ist die Fläche offen oder geschlossen also ich meine ein Volume oder hat die Fläche an sich Fehler (Löcher, Twisted...) ist sie kompliziert oder nur ein planares Rechteck? Was ist die Fläche für ein ObjectTyp oder wie wurde sie erzeugt? Sehr komisch... mfG Mario 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: 19. Aug. 2010 13:20 <-- editieren / zitieren --> Unities abgeben:
Habe mal ein Bild angehangen. Könnt von mir aus aber auch das Part haben, ist ja nur was zusammengeschustertes. Interessant ist hier, das beim zweiten Pad alle Flächen OK sind. Beim Problempad dagegen die Deckel- und Bodenfläche das Problem bereiten. Edit: Umlaute sind dumm ^^ ------------------ 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 [Diese Nachricht wurde von HoBLila am 19. Aug. 2010 editiert.] 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: 19. Aug. 2010 13:24 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
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: 19. Aug. 2010 13:48 <-- editieren / zitieren --> Unities abgeben:
Lol, Daniel, wie ich sehe hast Du den Glauben noch nicht verloren, dass CATIA rational handelt. Habe mal das Part angehängt. Und auch noch ein Foto, wo man sieht wo die Mittelpunkte errechnet wurden. Dass ich CATIA nicht benutzen kann, bitte ich zu verzeihen, dafür kommen dabei Konstruktionen raus, wo kein Know-How verloren geht. *g* ------------------ 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 |
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: 19. Aug. 2010 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, also bei mir funktioniert die Fläche die du als böse gekennzeichnet hast einwandfrei wenn ich den COG bestimmen will. Anbei das Script. Das erzeugt gleich einen Punkt mit den Koordinaten die ich auslesen. Da ist dann auch der von CATIA gewohnte Pfeil zu sehen Code: Sub CATMain() Dim intDocObj As Document Dim intSurfaceObj As Object Dim intSPAWBObj As Object Dim intSelObj As Object Dim intFilter(0) Dim intStateStr As String Dim intPointCoord(2) Dim intPartObj As Part Dim intHybBodyObj As HybridBody Dim intShapeFacObj As HybridShapeFactory Dim intTempPointObj As Point Dim intCOGPointObj As Point Dim intFaceRefObj As Reference Dim intPointRefObj As Reference 'Beispielflaeche holen Set intDocObj = CATIA.ActiveDocument Set intPartObj = intDocObj.Part Set intSelObj = intDocObj.Selection intFilter(0) = "Face" intStateStr = intSelObj.SelectElement2(intFilter, "Flaeche waehlen", False) If intStateStr <> "Normal" Then MsgBox "Selection error", vbCritical, "CANCEL" Exit Sub Else Set intSurfaceObj = intSelObj.Item(1).Value End If
'Messe Flaeche If Not intSurfaceObj Is Nothing Then Set intSPAWBObj = intDocObj.GetWorkbench("SPAWorkbench") Set intMeasureAbleObj = intSPAWBObj.GetMeasurable(intSurfaceObj) intMeasureAbleObj.GetCOG intPointCoord End If 'PUNKT ERSTELLEN Set intShapeFacObj = intPartObj.HybridShapeFactory Set intPartObj = intDocObj.Part Set intHybBodyObj = intPartObj.HybridBodies.Item("MITTELPUNKTE") Set intTempPointObj = intShapeFacObj.AddNewPointCoord(intPointCoord(0), intPointCoord(1), intPointCoord(2)) intHybBodyObj.AppendHybridShape intTempPointObj intTempPointObj.Name = "TempPoint" intPartObj.UpdateObject intTempPointObj End Sub
------------------ 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 |
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: 19. Aug. 2010 14:32 <-- editieren / zitieren --> Unities abgeben:
Ja im Skript habe ich damit auch keine Probleme, aber im CAA und komischer Weise eben auch nur bei den einfachen Flächen, das ist ja das was mich wurmt. ------------------ 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 |
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 19. Aug. 2010 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, auch wenn Daniel eher war bei mir funktionierts ebenfalls oder habe ich was falsch verstanden es geht ausschließlich um den Mittelpunkt einer Fläche oder? Mein TestCode:
Sub Messen() Dim MyDocument As Document Dim MyPart As Part Dim TheSPAWorkbench As SPAWorkbench Dim TheMeasurable 'As Measurable Dim MySurface As Object Dim MyPoint(2) Dim MyBody As Body Dim MyHybBody As HybridBody Dim MySelection 'As Selection Dim InputObjectType(0) Dim MyFactory As HybridShapeFactory Dim My3DPoint As HybridShapePointCoord 'Beispielflaeche holen Set MyDocument = CATIA.ActiveDocument Set MyPart = MyDocument.Part Set MySelection = MyDocument.Selection Set MyHybBody = MyPart.HybridBodies.Add() MyHybBody.Name = "MittelPunkt" Set MyFactory = MyPart.HybridShapeFactory InputObjectType(0) = "Face" Do MySelection.Clear Status = MySelection.SelectElement2(InputObjectType, "Flaeche selektieren [ESC=Exit]", False) If Status <> "Normal" Then Exit Do End If Set MySurface = MySelection.Item(1).Value 'Messe Mittelpunkt If Not MySurface Is Nothing Then Set TheSPAWorkbench = MyDocument.GetWorkbench("SPAWorkbench") Set TheMeasurable = TheSPAWorkbench.GetMeasurable(MySurface) TheMeasurable.GetCOG MyPoint End If Debug.Print "Punkt X:" & MyPoint(0) & " Y:" & MyPoint(1) & " Z:" & MyPoint(2) 'Punkt erzeugen Set My3DPoint = MyFactory.AddNewPointCoord(MyPoint(0), MyPoint(1), MyPoint(2)) My3DPoint.Name = "Punkt_X:" & MyPoint(0) & "mm_Y:" & MyPoint(1) & "mm_Z:" & MyPoint(2) & "mm" MyHybBody.AppendHybridShape My3DPoint MyPart.UpdateObject My3DPoint Loop End Sub mfG Mario EDIT: War mal wieder zu spät, hab jetzt erst gelesen das es ein CAA-Problem ist Sorry.
[Diese Nachricht wurde von roccat am 19. Aug. 2010 editiert.] EDIT2: Vorschlag: Mit CAA Script zum Messen starten und Werte zurückgeben. [Diese Nachricht wurde von roccat am 19. Aug. 2010 editiert.] 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: 19. Aug. 2010 14:55 <-- editieren / zitieren --> Unities abgeben:
ist ja kein Problem. Hab's ja absichtlich hier gepostet, da ihr ja durchaus Erfahrung habt wie sich CATIA verhält. Im VB ist das über measure aber in der Tat kein Problem. Da nimmt die SPA-Workbench aber auch jedes Objekt entgegen, im CAA zickt sie da ganz schön rum. Im CAA bleibt es mir dagegen unergründlich. Von daher: Eure Lösung ist absolut korrekt, funzt in meinem CAA aber nicht. Vermute nun fast, dass in meiner Selection irgendetwas falsch ist, also dass der User was anderes als ein CATSurface anklicken sollte, mir fällt nur nicht ein was. Face und CATFace habe ich schon probiert, die taugen beide nix im CAA. CATIMfBiDimResult ist noch gut, da bekomme ich CATBodies von Flächenobjekten. ------------------ 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 |
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: 19. Aug. 2010 17:35 <-- editieren / zitieren --> Unities abgeben:
Yeeeeeehhhhhaaaaaaaaa!!! Ich habe die Lösung!!! Und zwar kann ich von der selektierten Fläche über QueryInterface() einen BRep bilden. Dieser BRep enthält einen CATBody, von dem CATBody kann ich mir alle Flächen holen und die erste Fläche nach EstimateCenter() fragen. Und siehe da! Es ist ein Mittelpunkt. Interessant an dieser Stelle ist aber wenn ich über GetSurface() das Face nach seinem CATSurface frage bekomme ich den gleichen Mist wieder. Scheinbar sind BReps ungeeignet für geometrische Operationen. Und das schöne ist, dass ich über den CATBody auch super projizieren kann. Und ich wollte über ::CATTopSkin mein CATSurface über ein Extract in ein CATBody verwandeln... Edit: Es ist ohne Projektion exakt der Punkt, den CATIA für PointOnCurve als Mitte betrachtet, auch wenn er außerhalb der Fläche liegt. Herrlich und das mit so ner einfachen Lösung. ------------------ 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 [Diese Nachricht wurde von HoBLila am 19. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 19. Aug. 2010 17:45 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo HoBLila, tja, CAA scheint auch nicht immer das gelbe vom Ei zu sein. Ich habe noch einen ganz anderen Vorschlag: Es geht doch nur darum, an einer Stelle auf der Fläche ein Pfeilchen darzustellen. Warum nicht die XYZ-Koordinaten der Stelle verwenden, wo der Benutzer die Fläche (oder jedes Objekt) selektiert hat? Im VBA gibt es dafür eine Eigenschaft der Selection. Name habe ich gerade nicht parat, aber das wird es doch wohl auch im CAA geben, oder? ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Techniker (m/w/d) Elektrotechnik mit SPS- Programmierung | Mit unseren innovativen Lösungen bewegen wir nicht nur faszinierende Objekte und Emotionen auf den Showbühnen dieser Welt, sondern auch Ihre Karriere. Zur Verstärkung unseres Teams suchen wir in Eilenburg ab sofort einen: Techniker (m?/?w?/?d) Elektrotechnik Seit Markteinführung der CHAINMASTER-Produkte im Jahr 1994 hat sich unser Unternehmen zu ... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
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: 19. Aug. 2010 17:57 <-- editieren / zitieren --> Unities abgeben:
PicingPoint oder so, ja Vorschlag ist gut und die Idee hatte ich auch schon, aber der User kann auch im Baum selektieren. Wobei die Vorgabe auch ist den Mittelpunkt zu verwenden, aber das könnte man sicher kommunizieren. Die Normale hätte wahrscheinlich dann auch das selbe Vorgehen erfordert. Jedenfalls funktioniert es jetzt bis dahin, jetzt kann ich mich mit dem restlichen Gedöns, wie selektierbarer Pfeil und so rumschlagen und dafür ne ordentliche Klasse schreiben. ------------------ 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|