Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Nächstgelegenes Objekt suchen

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
Autor Thema:  Nächstgelegenes Objekt suchen (1246 mal gelesen)
straubi
Mitglied


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

Beiträge: 5
Registriert: 10.08.2010

erstellt am: 10. Aug. 2010 13:10    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,

ich habe folgende Aufgabe zu lösen: Ich möchte wissen, ob ein Objekt innerhalb oder außerhalb einer Polylinienumgrenzung liegt. Die Umgrenzung kann beliebig sein (Dreieck, Rechteck, Polygon...), die Polylinie ist aber geschlossen. Wir nutzen Autocad 2010. Vielleicht könnt ihr mir helfen.

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 10. Aug. 2010 13:19    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 straubi 10 Unities + Antwort hilfreich

Wohl am einfachtsen über
(ssget "_WP" Punktliste) 'WindowPoligon
Wobei die Punktliste, den Eckpunkten der Polylinie entspricht.
Ist das gesuchte Objekt im Auswahlsatz drin, ist es (komplett) innerhalb des Poligons.
Aber Achtung. Dazu muss das Poligon komplett am Bildschirm sichtbar sein. Dass (ssget "Wx" funktiert nur im sichtbaren ZOOM Bereich)


Eine Methode zum herausfinden, ob ein PUNKT innerhalb eines Poligons ist, einfach das Poligon mit einer LINIE zu schneiden, die vom zu untersuchenden Punkt unendlich nach links verläuft. (Methode IntersetWidth)
Ist die Anzahl der gefunden Schnittpunkt 0 oder eine gerade Zahl, ist der Punkt ausserhalb, ist es eine ungerade Anzahl, müsste der Punkt innerhalb des Poligonzuges sein.

[Diese Nachricht wurde von fuchsi am 10. Aug. 2010 editiert.]

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

straubi
Mitglied


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

Beiträge: 5
Registriert: 10.08.2010

erstellt am: 10. Aug. 2010 14:31    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 Fuchsi,

vielen Dank. Die Befehlsoption "_WP" zu ssget steht gar nicht in meinem Buch - kannst du mir ein aktuelles Buch zu Autolisp 2010 empfehlen?

Die Funktion zeigt mir, daß entweder keines oder mindestens ein Objekt innerhalb der geschlossenen Polylinie liegt. Wie bekomme ich jetzt die Objekte, die im letzten Auswahlsatz gespeichert sind, in eine Variable für das Lispprogramm, um z.B. die Farbe aller betroffener Objekte zu ändern?

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 10. Aug. 2010 14:42    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 straubi 10 Unities + Antwort hilfreich

also

(setq ss1 (ssget "_wp" ...)) ; speichert alle gefundenen Objekte ind er Lispvariable ss1


Möglichkeit 1
Alle Objekte durchlaufen

Code:
(setq i1 0)
(repeat (sslength ss1)
  (setq ename (ssname ss1 i1))

  ; mach was mit dem Element (Elemntname)

  (setq i1 (1+ i1))
)


Möglichkeit 2
Ändern aller gefundene Objekte auf Farbe rot

Code:
(command "._chprop" ss1 "" "_color" "_red" "")


Buch. nein kann ich keins empfehlen. Aber die Hilfe in der VLIDE

Zitat:

Selection sets can contain objects from both paper and model space, but when the selection set is used in an operation, ssget filters out objects from the space not currently in effect. Selection sets returned by ssget contain main entities only (no attributes or polyline vertices).

Arguments

sel-method
A string that specifies the object selection method. Valid selection methods are

C Crossing selection.

CP Cpolygon selection (all objects crossing and inside of the specified polygon).

F Fence selection.

I Implied selection (objects selected while PICKFIRST is in effect).

L Last visible object added to the database.

P Last selection set created.

W Window selection.

WP WPolygon (all objects within the specified polygon).

X Entire database. If you specify the X selection method and do not provide a filter-list, ssget selects all entities in the database, including entities on layers that are off, frozen, and out of the visible screen.

:E Everything within the cursor's object selection pickbox.

:N Call ssnamex for additional information on container blocks and transformation matrices for any entities selected during the ssget operation. This additional information is available only for entities selected through graphical selection methods such as Window, Crossing, and point picks.

Unlike the other object selection methods, :N may return multiple entities with the same entity name in the selection set. For example, if the user selects a subentity of a complex entity such as a BlockReference, PolygonMesh, or old style polyline, ssget looks at the subentity that is selected when determining if it has already been selected. However, ssget actually adds the main entity (BlockReference, PolygonMesh, and so on) to the selection set. The result could be multiple entries with the same entity name in the selection set (each will have different subentity information for ssnamex to report).

:R Allows entities in a long transaction to be selected.

:S Allow single selection only.

:U Enables subentity selection. Cannot be combined with the duplicate (":D") or nested (":N") selection modes. In this mode, top-level entities are selected by default, but the user can attempt to select subentities by pressing the CTRL key while making the selection. This option is supported only with interactive selections, such as window, crossing, and polygon. It is not supported for all, filtered, or group selections.

:V Forces subentity selection. Treats all interactive, graphic selections performed by the user as subentity selections. The returned selection set contains subentities only. This option cannot be combined with the duplicate (":D") or nested (":N") selection modes. This option is supported only with interactive selections, such as window and crossing. It is not supported for all, filtered, or group selections.



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

straubi
Mitglied


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

Beiträge: 5
Registriert: 10.08.2010

erstellt am: 10. Aug. 2010 15:06    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 Fuchsi,

vielen Dank. So klappt es wie gewünscht. 

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

autocart
Mitglied
Technischer Redakteur


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

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 03. Dez. 2010 11:09    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 straubi 10 Unities + Antwort hilfreich

Aber Achtung:
Das funkt nur mit sich NICHT selbst überschneidenden Polylinien bzw. Punktlisten für den ssget-Befehl.

Außerdem findet ssget auch Elemente, die eine andere Z-Höhe (vereinfachte Sichtweise) haben als die Punktliste. Das kann gewünscht sein, muss es aber nicht.

Siehe auch http://ww3.cad.de/foren/ubb/Forum145/HTML/000602.shtml (Punkt in Fläche)
und eventuell http://ww3.cad.de/foren/ubb/Forum145/HTML/002569.shtml (Alle Konturen nach innen versetzen) - allerdings glaube ich, dass im ersten Link bereits alles Wesentliche gesagt wurde.

------------------
Gruß, Stephan
www.stbartl.at

"Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher." - Albert Einstein

[Diese Nachricht wurde von autocart am 03. Dez. 2010 editiert.]

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)2023 CAD.de | Impressum | Datenschutz