| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: GetEntity - PickedPoint & WCS (883 mal gelesen)
|
Huebi Mitglied Vermessungsing.
Beiträge: 107 Registriert: 08.01.2004 Intel Core Duo E6750@2.66GHz NVIDIA GeForce 8600 GT AutoCAD 2004, 2007, 2008 AcadMAP 2004 und 2007 Civil 3D 2008 ADT 2009
|
erstellt am: 26. Nov. 2007 11:11 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe VBA-ler, kann es möglich sein, dass der Befehl "GetEntity" die Variable "PickedPoint" nicht, wie in der VBA-Hilfe angegeben im WCS sondern im USC zurückgibt? Oder gibt's hier versionsbedingte Unterschiede? (Ich nutze "Pickedpoint" für die Fallunterscheidung, welche Seite einer Linie ausgewählt wurde). Kennt evtl. von Euch jemand einen Walkaround, ohne vorher das Benutzerkoordinatensystem nach UCS umzustellen? Für Antworten wäre ich natürlich wieder sehr dankbar! Liebe Grüße aus München Hübi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 26. Nov. 2007 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für Huebi
..guck dir mal die TranslateCoordinates Methode des Utility-Objectes an.. --> F1 Sub Example_TranslateCoordinates() ' This example creates a UCS with an origin at 2, 2, 2. ' Next, a point is entered by the user. The WCS and UCS ' coordinates of that point are output in a Msgbox. ' Create a UCS named "New_UCS" in current drawing Dim ucsObj As AcadUCS Dim origin(0 To 2) As Double Dim xAxisPnt(0 To 2) As Double Dim yAxisPnt(0 To 2) As Double ' Define the UCS origin(0) = 2#: origin(1) = 2#: origin(2) = 2# xAxisPnt(0) = 5#: xAxisPnt(1) = 2#: xAxisPnt(2) = 2# yAxisPnt(0) = 2#: yAxisPnt(1) = 6#: yAxisPnt(2) = 2# ' Add the UCS to the UserCoordinatesSystems collection Set ucsObj = ThisDrawing.UserCoordinateSystems.Add(origin, xAxisPnt, yAxisPnt, "New_UCS") ThisDrawing.ActiveUCS = ucsObj ' Get the active viewport and make sure the UCS icon is on Dim viewportObj As AcadViewport Set viewportObj = ThisDrawing.ActiveViewport viewportObj.UCSIconOn = True viewportObj.UCSIconAtOrigin = True ThisDrawing.ActiveViewport = viewportObj ' Have the user enter a point Dim pointWCS As Variant pointWCS = ThisDrawing.Utility.GetPoint(, "Enter a point to translate:") ' Translate the point into UCS coordinates Dim pointUCS As Variant pointUCS = ThisDrawing.Utility.TranslateCoordinates(pointWCS, acWorld, acUCS, False) ' Display the coordinates of the point MsgBox "The point has the following coordinates:" & vbCrLf & _ "WCS: " & pointWCS(0) & ", " & pointWCS(1) & ", " & pointWCS(2) & vbCrLf & _ "UCS: " & pointUCS(0) & ", " & pointUCS(1) & ", " & pointUCS(2), , "TranslateCoordinates Example" End Sub
------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Huebi Mitglied Vermessungsing.
Beiträge: 107 Registriert: 08.01.2004 Intel Core Duo E6750@2.66GHz NVIDIA GeForce 8600 GT AutoCAD 2004, 2007, 2008 AcadMAP 2004 und 2007 Civil 3D 2008 ADT 2009
|
erstellt am: 26. Nov. 2007 12:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, Deiner (sehr schnellen) Antwort entnehme ich, dass ich mit der Vermutung, dass der "PickedPoint" im UCS und nicht wie beschreiben im WCS zurückgegeben wird, recht habe und ich nicht über ein versionsabhängiges Problem gestolpert bin. Schade, dass VBA da so inkonsequent realisiert wurde. Da wird mir nichts anderes übrig bleiben als zu transformieren, was mit all seinen UCS-Möglichkeiten erfahrungsgemäss sehr aufwändig ist (z.B. unbenanntes UCS etc.)! Herzlichen Dank, liebe Grüße und 10 Punkte vom Hübi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
c.schojer Mitglied
Beiträge: 299 Registriert: 23.05.2007 Autocad 2018
|
erstellt am: 26. Nov. 2007 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für Huebi
Naja es geht ist mit ein wenig Aufwand verbunden am besten einige Funktionen fürs Transformieren schreiben und diese dann verwenden. (Das andere kannst dann vergessen) Hat aber auch Vorteile das mitn Transformieren (vor allem bei Arbeiten in 3D) zb Text längs ner Linie Schreiben Ohne Transformieren ein Horror zum Programmieren. Mfg Chris [Diese Nachricht wurde von c.schojer am 26. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|