| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Object.Centroid ? (1100 mal gelesen)
|
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ..., einige AutoCADs 200x & SWX 2kX
|
erstellt am: 27. Dez. 2003 14:53 <-- editieren / zitieren --> Unities abgeben:
Hallo, und im Vorraus ein schönes 2004. Nun kommen wir mal zur dem Problem: wenn ich mit dem alten gutten _masspop von einer 3D-Region abfrage bekomme ich ein 3'er Punktepaar beim Schwerpunkt, jedoch mit VBA habe ich noch keine Lösung gefunden da schon im Objekt-Modell das "Centroid"-Property der Region z.B. auf ein 2'er Array von Doubles als Variant definiert ist. Ist das eigentlich ein Fehler oder Feature von AutoDesk ? Ist es dann überhaupt möglich mit VBA auch 3D-Körper abzufragen und entsprechende Nachfolgefunktionen zu realisieren ?
------------------ (entmake (entget (entlast))) | Die Pro-Version auf Anfrage erhältlich. "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 29. Dez. 2003 20:06 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
Hi Proxy, nur ein Versuch, hab' mal einfach das dritte(2) zugedichtet, frag' mich nicht warum : Set Box1 = ThisDrawing.ModelSpace.AddBox(center, laenge, breite, hoehe) Centroid = Box1.Centroid Debug.Print "The Centroid is " & Centroid(0) & ", " & Centroid(1)& ", " & Centroid(2) Allerdings hatte ich immer welche mit z = 0 erwischt, hat er aber angezeigt ohne Fehlermeldung (2, 2, 0) Kann auch sein ist ein Trugschluss, versuchs mal ... lg Nancy
[Diese Nachricht wurde von startrek am 29. Dez. 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 29. Dez. 2003 22:16 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
Nochmals Hallo, hab' das mit z<>0 probiert, ging auch komischerweise. Ich hoffe es hilft Dir in irgendeiner Art weiter, und ausserdem, dass ich nix total falsch verstanden habe (falsch_verstanden ist nämlich mein zweiter Vorname) Sub test() Dim xxx As Acad3DSolid Dim center(0 To 2) As Double Dim radius As Double Dim hoehe As Double Dim Centroid As Variant center(0) = 2: center(1) = 2: center(2) = 0 radius = 20: hoehe = 100 Set xxx = ThisDrawing.ModelSpace.AddCone(center, radius, hoehe) Centroid = xxx.Centroid MsgBox "Schwerpunkt x = " & Centroid(0) MsgBox "Schwerpunkt y = " & Centroid(1) MsgBox "Schwerpunkt z = " & Centroid(2) End Sub lg Nancy -- A dozen, a gross, and a score, Plus three times the square root of four, Divided by seven, Plus five times eleven, Equals nine squared plus zero, no more. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ..., einige AutoCADs 200x & SWX 2kX
|
erstellt am: 04. Jan. 2004 11:47 <-- editieren / zitieren --> Unities abgeben:
danke euch beiden, war mein "Denkfehler", dann kommt sowas raus Code:
Sub Centroid_2_Point() Dim Object As Object Dim ssget As AcadSelectionSet Dim Centroid As Variant Dim location(0 To 2) As Double Dim ZielLayer As String Dim AcadPoint As AcadPoint ZielLayer = "Mein Layername hier" On Error Resume Next ThisDrawing.Utility.GetEntity Object, PickedPoint, "Bitte Objekt wählen:" If TypeName(Object) = "Region" Then Set Object = Object End If Centroid = Object.Centroid location(0) = Centroid(0): location(1) = Centroid(1): location(2) = Centroid(2) If ((location(0) = 0) And (location(1) = 0) And (location(2) = 0)) Then MsgBox ("Funktion nicht ausführbar !"), vbInformation Else Set pointObj = ThisDrawing.ModelSpace.AddPoint(location) pointObj.Layer = ZielLayer End If End Sub
------------------ (entmake (entget (entlast))) | Die Pro-Version auf Anfrage erhältlich. "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 04. Jan. 2004 15:26 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
... sag' mal, lief der Code bei Dir, oder hat da der 'Kopierteufel' zugeschlagen ??? wollts mal probieren, ging aber erst als ich 'pickedPoint' entfernt habe und dim AcadPoint in dim pointObj umgetauft hatte. Ansonsten, ... nett lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ..., einige AutoCADs 200x & SWX 2kX
|
erstellt am: 04. Jan. 2004 18:11 <-- editieren / zitieren --> Unities abgeben:
scheint zu funktionieren. kA warum bei dir nicht. ------------------ (entmake (entget (entlast))) | Die Pro-Version auf Anfrage erhältlich. "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|