| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Mittelpunkt suchen? (2446 mal gelesen)
|
Moony Mitglied Werkzeugmacher
Beiträge: 49 Registriert: 29.02.2004
|
erstellt am: 05. Nov. 2004 09:03 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte Layernamen suchen, die gesuchten sind alles Rechtecke und den Mittelpunkt bestimmen, also die x,y Koordinate. Private Sub CommandButton1_Click() z = 1 suchname = "Chip" & z For Each Ly In ThisDrawing.Layers MsgBox "gefunden Layername " & Ly.Name If Ly.Name = suchname Then MsgBox Ly.Name With ThisDrawing.Utility posX = .GetDistance ?? posY = ?? End With suchname = "Chip" & z + 1 End If Next Aber ohne die Punkte über " .GetDistance" oder " .Getpoint" zu markieren. Gruß moony Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 05. Nov. 2004 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für Moony
Hallo moony, überlege noch einmal genau was du suchst. Ein Layer ist meines Wissens ein nichtgrafisches Objekt, was deshalb auch keine Eigenschaft "Mittelpunkt" besitzt. Das objekt Rechteck gibt es im AutoCAD auch nicht. Wenn ich das mal übersetzen darf, dann suchst du Linien oder Polylinienobjekte, die augenscheinlich ein Rechteck darstellen. Diese Elemente sollen zusätzlich noch eine bestimmte Layereigenschaft besitzen. - Richtig? Die Schwierigkeit besteht nun darin, überhaupt erstmal die augenscheinlichen Rechtecke zu ermitteln. Was letztendlich nur über die Prüfung der Lage der Koordinaten zueinander erfolgen kann. Hat man nun Gewissheit, dass es sich um ein 'Rechteck' handelt, kann man aus den Eckpunkt-Koordinaten auch den Mittelpunkt berechnen. Soweit mal das prinzipielle Vorgehen. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Moony Mitglied Werkzeugmacher
Beiträge: 49 Registriert: 29.02.2004
|
erstellt am: 05. Nov. 2004 10:46 <-- editieren / zitieren --> Unities abgeben:
Sorry, es sind in der Zeichnung Layer mit Namen Chip1 bis Chip8 vorhanden, die alle Polylinienobjekte Rechtecke darstellen. Die wollte ich suchen (s. 1.Beitrag) und aktivieren. Im aktivierten Zustand, war jetzt meine Idee das ich die Eckpunkte ermitteln kann, um dann die Mitte zu bekommen ohne Getpoint usw. In der Zeichnung geht es über: Eigenschaft ==> das Rechteck wählen Scheitelpunkt 1 - 4 auswählen Scheitelpunkt X ==> 2.34 Scheitelpunkt Y ==> 9.87 usw. Aus diesen Werten könnte ich die Mitte des Rechtecks beechnen. Gruß Moony
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 05. Nov. 2004 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für Moony
|
Moony Mitglied Werkzeugmacher
Beiträge: 49 Registriert: 29.02.2004
|
erstellt am: 05. Nov. 2004 11:33 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 05. Nov. 2004 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für Moony
Hallo Moony, wozu soll der Layer aktiviert werden? Moony, zuerst musst du dir erstmal die Struktur einer AutoCAD-Zeichnung ansehen. Ein Layer ist ein nicht grafisches Element. Das kann man nicht auswählen. Es ist einfach nur ein Container bestimmter Eigenschaften, der von grafischen Elementen referenziert wird. Du musst einen Auswahlsatz bilden, der nur Elemente enthält, denen bestimmte Eigenschaften zugewiesen wurden. Dann erst kannst du beginnen diese Elemente zu analysieren. Soll heißen, aus den Polylinien die Scheitelpunkte ermitteln, und daraus den Mittelpunkt errechnen. Schau bitte mal in der AutoCAD-Hilfe in die ActiveX-Referenz. Dort sind alle Elemente, und deren Eigenschaften und Methoden erklärt. Klar? Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Moony Mitglied Werkzeugmacher
Beiträge: 49 Registriert: 29.02.2004
|
erstellt am: 05. Nov. 2004 14:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, nicht grafisches Element das leutet mir ein, ich wollte mir so die Suche erleichtern z.B.. Im Layer mit Namen "Chip1" gibt es dann nur das eine Rechteck und das möchte ich per VBA selektieren um die Scheitelpunkte zu ermitteln. Mit Getpoint funktioniert es. Es kann ja sein, daß ich da auf dem Holzweg bin, ich weiß nicht wie ich in einer Zeichnung ohne den Get... Befehl eine Ecke vom Rechteck selektieren soll. Gruß Moony
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Nov. 2004 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für Moony
Moony, wenns wirklich nur eine Pline[Rechteck]/gesuchten Layer enthalten ist, und nicht so dolle viel Elemente in der Zeichnung sind , dann als Ansatz evtl auch: Code:
Sub x() Dim i&, min, max With ThisDrawing.ModelSpace For i = 0 To .Count If TypeOf .Item(i) Is AcadLWPolyline And .Item(i).Layer = "test" Then .Item(i).GetBoundingBox min, max MsgBox "minPoint: " & min(0) & " | " & min(1) & Chr(13) _ & "maxPoint: " & max(0) & " | " & max(1) Exit For End If Next End With End Sub
Wobei, schau Dir trotzdem mal Holgers Code im Link gut an ;-) lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Die Phönizier haben das Geld erfunden - aber warum so wenig? (Johann Nepomuk Nestroy)
|
erstellt am: 06. Nov. 2004 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für Moony
|