Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Schnittpunkt zweier Linien

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:  Schnittpunkt zweier Linien (305 mal gelesen)
AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 11. Sep. 2002 13:26    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,

folgendes habe ich geschrieben, was so auch funktioniert:
(defun c:SP ()
(setq Linie_a (entsel)) ; 1. Linie
  (setq data_a (entget (car Linie_a))) ; speichert Objektdaten
  (setq a1 (cdr (assoc 10 data_a)))    ; speichert Anfangspunkt
  (setq a2 (cdr (assoc 11 data_a)))    ; speichert Endpunkt

(setq Linie_b (entsel)) ; 2. Linie
  (setq data_b (entget (car Linie_b))) ; speichert Objektdaten
  (setq b1 (cdr (assoc 10 data_b)))    ; speichert Anfangspunkt
  (setq b2 (cdr (assoc 11 data_b)))    ; speichert Endpunkt

  (setq SP (inters a1 a2 b1 b2))

(command "punkt" SP) ; zeichnet Schnittpunkt
)

Jetzt möchte ich aber, dass die zwei Linien nicht manuell ausgewählt werden, sondern automatisch. Mit "ssget"
  (setq Linie_a (ssget"X" '((8 . "GEWEBELÄNGE"))))
  (setq Linie_b (ssget"X" '((8 . "HILFSLINIEN")(-4 . "*,*,<=")(10 0 0 0.1)(-4 . "*,*,<=")(11 0 0 0.1)))) geht das aber nicht.

Wie bekomme ich trotzdem den SP der in den beiden Variablen Linie_a und  Linie_b gespeicherten Linien.

Gruß Andrea

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

StephanJP
Mitglied
CAD-Admin


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

Beiträge: 830
Registriert: 09.11.2000

erstellt am: 11. Sep. 2002 15:24    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 AB 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von StephanJP:
Hallo Andrea,

so ganz verstehe ich nicht:

(setq Linie_a (ssget"X" '((8 . "GEWEBELÄNGE"))))
(setq Linie_b (ssget"X" '((8 . "HILFSLINIEN")(-4 . "*,*,<=")(10 0 0 0.1)(-4 . "*,*,<=")(11 0 0 0.1))))

erstellt immer Auswahlsätze. Da ist dann immer nur eine Linie drin?

(ssget "X" ...: heisst ja: alle Elemente der Zeichnung werden nach Deinem Filterkriterium durchsucht!

Wenn dann da immer nur eine drin ist musst Du diese mit:
(setq data_a<b> (entget (ssname Linie_a<Linie_b> 0)))
übernehmen!


Aber, wie gesagt: Sinnvoll erscheint mir das so nicht????



------------------


gruß
stephan

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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4185
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 11. Sep. 2002 15:28    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 AB 10 Unities + Antwort hilfreich

Hallo Andrea,

(ssname...) ist das Geheimnis, mit welchem man aus einem Auswahlsatz, der ja mit (ssget...) erstellt wird, den Objektnamen ermitteln kann.

Ohne Prüfung der (ssget...) Anweisungen sollte es dann wie folgt funktionieren.

(defun c:SP ()
  (setq as_Linie_a (ssget"X" '((8 . "GEWEBELÄNGE")))
as_Linie_b (ssget"X" '(
      (8 . "HILFSLINIEN")
      (-4 . "*,*,<=")
      (10 0 0 0.1)
      (-4 . "*,*,<=")
      (11 0 0 0.1)
      )
)
Linie_a (ssname as_Linie_a 0) ; 1. Linie
data_a (entget Linie_a) ; speichert Objektdaten
a1 (cdr (assoc 10 data_a))    ; speichert Anfangspunkt
a2 (cdr (assoc 11 data_a))    ; speichert Endpunkt
Linie_b (ssname as_Linie_b 0)
data_b (entget Linie_b) ; speichert Objektdaten
b1 (cdr (assoc 10 data_b))    ; speichert Anfangspunkt
b2 (cdr (assoc 11 data_b))    ; speichert Endpunkt
SP (inters a1 a2 b1 b2)
);setq
  (command "punkt" SP) ; zeichnet Schnittpunkt
  )

Bei Fragen...

Grüße Holger

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

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 12. Sep. 2002 09: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 Nur für AB 10 Unities + Antwort hilfreich

Hi Andrea,

was die Programmstruktur angeht, da haben Stephan und Holger Recht. Ich möchte dich nur auf einen kleinen Denkfehler hinweisen:

(-4 . "*,*,<=")(10 0 0 0.1)(-4 . "*,*,<=")(11 0 0 0.1)

Mit diesem ssget-Filter kriegst du nicht(!) die Linien, die in der XY-Ebene liegen. Beim GC -4 gibts leider keine (abs)-Funktion. Es geht ja darum zu testen, ob die Abweichung von 0 im Rahmen der Toleranz liegt. So filterst du aber auch alle Linien, deren Z-Werte bei -5 oder -1000 liegen!

Wenn schon, musst du also in beide Richtungen testen:

(-4 . "<and")
  (-4 . "*,*,<=")(10 0 0 +0.1)(-4 . "*,*,<=")(11 0 0 +0.1)
  (-4 . "*,*,>=")(10 0 0 -0.1)(-4 . "*,*,>=")(11 0 0 -0.1)
(-4 . "and>")

Das "and" kannst du allerdings wahrscheinlich weglassen, es gilt ja bei ssget immer ein implizites "and". Nur falls es innerhalb von anderen Verknüpfungen vorkommen soll, muss man es hinschreiben.

Gruss, Axel

------------------
http://www.tutorial.autolisp.info

http://www.advanced.autolisp.info


http://www.activex.autolisp.info

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

Sparky
Mitglied
Techniker / Fertigungstechnik


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

Beiträge: 366
Registriert: 27.11.2000

erstellt am: 12. Sep. 2002 11:16    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 AB 10 Unities + Antwort hilfreich

Hallo zusammen,

das ist ein interessanter Beitrag. Ich bin zwar was das AutoLisp betrifft total unbedarft, aber es ist ein Thema was ich als nächstes angehen möchte. Und mit den Links kann man doch schon eine Menge lernen.
Danke dafür

Sparky

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