Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Polyline auswählen in Blocknähe

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
Autor Thema:  Polyline auswählen in Blocknähe (1208 mal gelesen)
Karl01
Mitglied



Sehen Sie sich das Profil von Karl01 an!   Senden Sie eine Private Message an Karl01  Schreiben Sie einen Gästebucheintrag für Karl01

Beiträge: 55
Registriert: 15.06.2004

Win 7; Map2012

erstellt am: 01. Sep. 2004 08:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo

wie kann ich mit VBA eine Polylinie auswahlen die sich auf oder in einem Umkreis von 0.05m von einem selectierten Block befindet.


Gruß

Karl


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mapcar
Mitglied
CADmin



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 01. Sep. 2004 11:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Karl01 10 Unities + Antwort hilfreich

Eine sehr fragwürdige Aufgabenstellung mit einem noch viel fragwürdigeren Ansatz dahinter.

Zunächst mal: Geht's wirklich um einen Block? Dann müsste man zuerst den Block-Umriss ermitteln, was schon ziemliche Schwierigkeiten verursachen würde. Oder geht's um einen Punkt (der der Einfügepunkt eines Blocks oder auch etwas anderes sein könnte)?

Und was sind 0,05m? AutoCAD kennt doch nur Zeichnungseinheiten. Da müsste dann erst ein Maßstab ermittelt werden usw., aber wie?

Angenommen, man hätte die Block-Kontur, bräuchte man eine VBA-Emulation des Versetz-Befehls (oder man könnte auch über SendCommand den Versetz-Befehl ausführen), dann wäre es möglich, mit SelelectionSet.Select ... acSelectionSetCrossing jedwede Geometrie zu wählen, die hier erfassbar ist.

Das Problem ist aber, dass es eben jede Geometrie ist, die in diesen Bereich hineinragt. Anschließend müsste man aber filtern, was davon applikationsrelevant ist. Wer weiß denn schon, was der User in seiner unendlichen Weisheit da so alles hingemalt hat? Gibt es jedoch Merkmale, die die gefundenen Polylinien als relevant auszeichnen, kann man diese Polylinien meist auch anhand dieses Merkmals auffinden.

Lisp stellt da Funktionen wie (OSNAP ...) zur Verfügung, damit ist so etwas schnell programmiert. Aber: Ob so etwas funktioniert, ist reine Glücksache. Man sollte nie versuchen, in einem Programm das interaktive Arbeiten mit AutoCAD nachzuprogrammieren. Der Unterschied ist nämlich der, dass der User a) einen Bildschirm und b) eine Vorstellung von Plausibilität hat. Programme haben weder das eine noch das andere.

Es gibt Tausende von Lisp-Routinen, die mit emulierten Bildschirmpicks arbeiten. Keine davon funktioniert noch, wenn User z.B. auf die Idee kommen, nicht mehr relevante Zeichnungsteile mit einer Zickzacklinie durchzustreichen - eine durchaus gängige Praxis;-) Nach dem Motto "Diese Variante kann man ja vielleicht noch mal brauchen" wird durchgestrichen, eingerahmt und was den Leuten sonst noch so einfällt (das als Block auf einen Layer "Entwürfe" zu verschieben, ist einfach zu viel Arbeit). Ich habe in Zeichnungen auch schon mal Einkaufszettel für die Mittagspause gefunden;-)

Wirklich funktionieren werden solche Ansätze nur dann, wenn die Geometrie vom selben Programm gerade vorher erzeugt wurden und der User die Zeichnung noch nicht in die Finger gekriegt hat. Nur - dann braucht man diese Methoden eben nicht.

Wenn der Datenbestand nun mal so ist und es keine andere Möglichkeit gibt, musst du es so wie oben beschrieben machen. Nach meiner Erfahrung gibt es dann einfach eine gewisse Fehlerquote, nachträgliche Sicht- und Plausibilitätskontrolle ist also notwendig.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Karl01
Mitglied



Sehen Sie sich das Profil von Karl01 an!   Senden Sie eine Private Message an Karl01  Schreiben Sie einen Gästebucheintrag für Karl01

Beiträge: 55
Registriert: 15.06.2004

Win 7; Map2012

erstellt am: 01. Sep. 2004 12:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Axel

Vorerst Danke für die rasche Antwort!

Was brauche ich wirklich?

Ich habe ein Leitungsnetz mit Absperrschiebern. Die Absperrschieber sind als Blöcke eingefügt und die Leitung zwischen den Absperrschiebern sind mit Polyline´s konstruiert.
Der Einfügepunkt des Absperrschiebers befindet sich auf bzw bis zu 5 cm (0.05 Einheiten) neben der Polylinie. Die Drehwinkel der bisherigen Absperrschieber = 0 Grad.
Ich muß jetzt alle Absperrschieber durch einen anderen Block ersetzen (kein Problem) und die Drehung des Blockes soll normal (90°),zu der Polylinie auf der sich der Einfügepunkt des Blockes befindet, betragen.

Dazu muss ich eben diese Polyline ermitteln und daraus den Winkel für die Drehung des neuen Blocks ermitteln.

Gruß

Karl

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mapcar
Mitglied
CADmin



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 01. Sep. 2004 12:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Karl01 10 Unities + Antwort hilfreich

> Was brauche ich wirklich?

Tja, keine Ahnung, wie ein Absperrschieber aussieht.. stelle mir da so was vor wie im Krankehaus, nur mit Schloß am Deckel;-)

Mal im Ernst: Das können ja nicht viele unterschiedliche Blöcke sein, oder? Mach dir (von Hand) für jeden Block eine Außenkontur (mit UMGRENZUNG oder so. Die versetzt du (mit VERSETZ) um die 0.05 ZE nach außen. Die Stützpunkte dieser Schnittkontur überträgst du in ein Punkt-Array, das du dann im Programm benutzen kannst. Alles, was nicht gerade ist (Kreisbögen ...) musst du aber durch gerade Segmente annähern.

Für jeden unterschiedlichen Block kannst du dann z.B. mit

Code:

SelectionSet.SelectByPolygon acSelectionSetCrossingPolygon, <PunktArray>

die Geometrie wählen, die in den Bereich hineinragt. Was das dann ist: Das musst DU wissen.

Die Aussage "Der Einfügepunkt ... befindet sich auf bzw bis zu 5 cm (0.05 Einheiten) neben ..." würde ich, wenn sie von einem Auftraggeber kommt, etwa so übersetzen: "Wir arbeiten hier nicht mit Ofang, so tatterig sind wir nicht!" Ich würde dann davon ausgehen, dass in 80% der Fälle tatsächlich eine Polylinie innerhalb von 0.05 ZE da ist, in 20% ist sie eben ein bisschen weiter weg... Je größer du die Toleranz ansetzt, umso größer wird dann die Wahrscheinlichkeit, dass auch beispielsweise der Zeichnungrahmen durch einen Absperrschieber ersetzt wird;-)

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Anzeige:Infos zum Werbeplatz >>

ELCOVISION 10 CAD APP für GIS, Vermessung und Kartografie, Messtechnik, Tiefbau

ELCOVISION 10 berechnet aus Bildern normaler Kameras oder Drohnen vollautomatisch hochgenaue und hochdetaillierte 3D Modelle und Punktwolken in nahezu Laserscanqualität. Diese Punktwolken können dann z.B. einfach nach BricsCAD für weitere Auswertung importiert werden.

Karl01
Mitglied



Sehen Sie sich das Profil von Karl01 an!   Senden Sie eine Private Message an Karl01  Schreiben Sie einen Gästebucheintrag für Karl01

Beiträge: 55
Registriert: 15.06.2004

Win 7; Map2012

erstellt am: 01. Sep. 2004 13:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Axel

Dieses Leitungsnetz wurde vor ca 10 Jahren erstellt. Als Grundlage für die Digitalisierung des Leitungsneztes diente eine terrestrisch Naturbestandsvermessung in der neben den Straßenränder, Häusern Kanalschächte usw. auch die Absperrventile vermessen wurden.

Nun wurden im Laufe der Zeit einige Straßen saniert bzw. umgebaut und in diesem Bereich die Naturbestandsdaten aktualisiert (neu vermessen). Aufgrund der Toleranz bei der Vermessung ergeben sich diese Differenzen von den paar Zentimetern.
Die Apsperrventilblöcke sind alle gleich (Kreissymbol).

Ich werde deinen Vorschlag mal ausprobieren.

Gruß
Karl


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz