Community
AutoCAD Produktfamilie - Deutsch
Das Forum für alle Fragen zu AutoCAD, LT, Architecture, Electrical, Map 3D, Mechanical, MEP, Plant 3D, Raster Design, Web App, sowie Autodesk Civil 3D und Advance Steel.
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

Überlappende oder sich kreuzende/schneidende Polylinien finden

9 ANTWORTEN 9
Antworten
Nachricht 1 von 10
sabine_kelle
220 Aufrufe, 9 Antworten

Überlappende oder sich kreuzende/schneidende Polylinien finden

Hallo zusammen

 

Mein Problem ist folgendes:

Ich muss in der AutoCAD Zeichnung Flächenpolygone finden, die sich überlappen oder sich schneiden/kreuzen.

Ist dies irgendwie möglich?

 

Beste Grüsse und vielen Dank

Sabine

9 ANTWORTEN 9
Nachricht 2 von 10
cadffm
als Antwort auf: sabine_kelle

Hi,

 

im reinen AutoCAD gibt es keine Funktionen dafür, aber das Programm kann ja problemlos

um weitere Funktionen erweitert werden und da deine Anforderung sehr häufig besteht,

gibt es auch schon fertige Lösungen (und natürlich richtige Applikationen die genau dafür erstellt wurde).

 

Selbst-schneidend ist ein Problem welche in Acad ootb nicht zu lösen ist,

dafür brauchts ein Tool. Tip: Auch auf englisch suchen!

Hier ein Beispiel

 

folgender Fall wird dabei als nicht-selbstschneidend erachtet:

CADffm_0-1672921778720.png

 

;  Self-Intersection Test by Lee McDonnell  ~  17.03.09 ~ CADffm 05.12.22
; 
(defun c:SelfInt+ (/ ss1 ss2 ent iArr vLst iLst ptLst)
 (vl-load-com)
 (princ "\nFor POLYLINEs ONLY   (2D-POLYLINEs are not supported)")
 (if (setq ss2 (ssadd) ss1 (ssget '((0 . "LWPOLYLINE"))))
     (foreach i (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1)))
	 (if (and (setq ent (vlax-ename->vla-object i))
	      (> (vlax-safearray-get-u-bound
	       (setq iArr (vlax-variant-value
	         (vla-IntersectWith ent ent acExtendNone))) 1) 0))
	   (progn
	     (setq vLst (mapcar '(lambda (x) (append (cdr x) '(0.0)))
	            (vl-remove-if-not '(lambda (x) (= 10 (car x)))
	               (entget (vlax-vla-object->ename ent)))))
	      (setq iLst (vlax-safearray->list iArr))
	     (while (not (zerop (length iLst)))
	       (setq ptLst (cons (list (car iLst) (cadr iLst) (caddr iLst)) ptLst)
	          iLst (cdddr iLst)))
	     (setq ptLst (vl-remove-if '(lambda (x) (member x vLst)) ptLst))
	     (if ptLst (ssadd i ss2))
	    )
	  )
     )
     (princ "\nNothing valid selected")
  )
  (princ (strcat "\n" (if (zerop(sslength ss2)) "No self-intersecting objects detected" "Self-intersecting objects selected")))
  (sssetfirst nil ss2)
  (princ)
 )

 

 

und für die Überlappungen untereinander:

Man könnte einfach mal (in einer Kopie) die Polygone in REGIONen umwandeln, danach VEREINIGen.

Hat man danach noch soviele Regionen wie zuvor Polylinien, dann gibt es Überlappungen->

Nun vergleicht man einfach die bearbeitete Kopie mit der originalen Datei - mit der anderen, Befehl: VERGLEICH

Es ist also ein sehr schöner visueller Abgleich.

 

 

Natürlich ist auch hier ein entsprechendes Tool der beste Weg.

Zum Beispiel spendet man dem LM etwas für seine schöne Arbeit und bedient sich seinem LM:intersectionsinset

;; LeeMAc  http://www.lee-mac.com/intersectionfunctions.html#intersectionsinset

 

Diese Funktion kopierst du dann zusammen mit meiner in eine *.lsp Datei und schon klappt es recht gut:


; hier noch die LM:intersectionsinset Funktion von LM hineinkopieren

(defun c:Schnittpunkte? ( / sel )
    (vl-load-com)
    (if (ssget "_X" (list '(0 . "POINT") '(8 . "_X-Points") '(62 . 211) (cons 410 (getvar 'CTAB))))
        (command "_.LAYER" "_th" "_X-Points" "_unl" "_X-Points" "_on" "_X-Points" "" "_.ERASE" "_p" "")
    )
    (if (setq sel (ssget))
        (foreach pnt (setq sel (LM:intersectionsinset sel))
            (entmake (list '(0 . "POINT") '(8 . "_X-Points") (cons 10 pnt) '(62 . 211)))
        )
    )
    (if sel
        (or
	  (and (< (getvar 'PDMODE) 3) (alert "Change your PDMODE to see the POINTs"))
	  (princ "\nInters marked by POINTs on Layer '_X-Points' in color211 ")
	)
    )
    (princ)
)

:

 

 

- Sebastian -
Nachricht 3 von 10
sabine_kelle
als Antwort auf: cadffm

Hallo, vielen Dank, werde es ausprobieren. LG
Nachricht 4 von 10
Udo_Huebner
als Antwort auf: sabine_kelle

"Flächenpolygone"? Das klingt eher nach einer GIS Aufgabenstellung. Wenn AutoCAD MAP oder Civil 3D am Start sind, dann stehen die eingebauten GIS Funktionen von AutoCAD MAP zur Verfügung. Eine Beispiel DWG mit 2-3 "Flächenpolygonen" wäre sinnvoll um zu erkennen, ob es sich um 2D Polylinien, MAP Polygone, Schraffurobjekte oder Kartenobjekte handelt.
Bei Polylinien könnte man schon 
Befehl: MAPCLEAN verwenden, um die Schnittpunkte aufzuspüren.

Udo_Huebner_0-1672936272049.png

Oder man verwendet Topologien, um die Daten zu analysieren.

Udo_Huebner_1-1672936635301.png

 

 

Gruß Udo Hübner (CAD-Huebner)
Nachricht 5 von 10
sabine_kelle
als Antwort auf: Udo_Huebner

Hallo Udo_Huebner
Danke für Deine Antwort. Leider habe ich kein GIS-Problem, und auch nicht die erwähnten zusätzlichen Programme. Hier geht es um Raumpolygone in Geschossen. Kennt jemand den Befehl zum Aufspüren von sich kreuzenden und überlappenden Polylinien?
LG Sabine
Nachricht 6 von 10
Udo_Huebner
als Antwort auf: sabine_kelle

Das keine weiteren Antworten kommen, liegt wohl an der fehlenden Beispieldatei, die das Problem einfach verdeutlichen würde.

Sind die Raumpolygone tatsächlich nur Polylinien? Sind die Erhebungen unterschiedlich. Eigentlich sollten alle vorgeschlagenen Methoden ein Ergebnis mit Polylinien liefern können.

 

Gruß Udo Hübner (CAD-Huebner)
Nachricht 7 von 10
sabine_kelle
als Antwort auf: Udo_Huebner

Hallo Udo, danke für Deine Antwort. Man kann einfach irgendeinen Grundriss oder Grundstücksplan nehmen auf dem es ein Raumpolygon gibt, dass sich mit einem anderen überlappt oder kreuzt. Leider darf hier keinen Beispielplan zeigen. Ich möchte diese Stellen identifizieren können. LG Sabine 

Nachricht 8 von 10
cadffm
als Antwort auf: sabine_kelle

Liebe Sabine,

 

Zu deiner Rückmeldung für Udo:

Es gibt in AutoCAD weder Flächenpolygone noch Raumpolygon und da es hier um etwas sehr

technisches geht, ist es für die eine oder andere Antwort wichtig zu wissen was du wirklich vor dir hast.

Polylinie,2D-Polylinie,3D-Polylinie sind bereits drei Objekt-Typen mit dem Wort "Poly" im Namen

und das sind noch nicht alle die es gibt.

 

Zur Aufgabe:

Neben Udos CIVIL3D Ausflug hast du auch zu meiner Hilfestellung bisher nichts gesagt,

auch hier wäre es schön wenn du darauf eingehen würdest.

 

 

Gruß Sebastian

 

 

- Sebastian -
Nachricht 9 von 10
sabine_kelle
als Antwort auf: cadffm

Hallo zusammen
Bin leider im Projekt extrem eingespannt, daher die späten Rückmeldungen. Wie im Titel schon vermerkt, geht es um Polylinien. Polylinien gibt es in Form von Raumpolygonen und Flächenpolygonen in der Immobilienbranche. Diese Info ist aber auch nicht so wichtig. Mir geht es darum den Vorgang einer Überschneidung oder Überlappung von Linien, egal welcher Art, überhaupt identifizieren zu können. Zusatztools werden bei uns nicht angeschafft. Geht also nicht.
Danke für die bisherigen Feedbacks. Gerne schaue ich mir Sebastians Feedback, wenn Zeit da ist, noch an.
Gruss Sabine
Nachricht 10 von 10
cadffm
als Antwort auf: sabine_kelle


@sabine_kelle  schrieb:

>>"von Linien, egal welcher Art"

Dafür benötigt man diese drei Funktionen von der verlinkten Seite:
LM:intersections
LM:intersectionsinset
und
c:interset

Ab in eine *.lsp Datei,
die Datei mit APPLOAD laden
den neuen Befehl mit INTERSET starten


Wobei man beim testen nicht auf PDMODE PDSIZE und ggf. den aktuellen Layer oder Farbe für die Punktobjekte achten solltem
sonst sieht man das Ergebnis ggf. nicht und wundert sich (und der "Müll") bleibt in der Datei zurück.

 

Oder stattdessen die von mir für dich optimierte Variante

 LM:intersectionsinset

und meinen Code c:Schnittpunkte? in eine Datei und laden, gestartet wird mit Schnittpunkte?

Da ist das PUNKT-Händling schon mit drin.


>>" Zusatztools werden bei uns nicht angeschafft. Geht also nicht."
Da ist die Frage was "angeschafft" im Detail bedeuten soll.. Der Code oben bzw. im Link ist auch
eine Programmerweiterung und wenn du diese anwendest.. hast du dies dann angeschafft?
(PS: Schönen Gruß an die Entscheider: Ein eindeutigeres Statement für 'dämlich' kann man kaum geben.)



 

- Sebastian -

Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.

In Foren veröffentlichen  

Autodesk Design & Make Report