Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Probl. mit 3DFlächen

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:  Probl. mit 3DFlächen (1362 / mal gelesen)
Gerd_Ecke
Mitglied
Bergbauingenieur


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

Beiträge: 141
Registriert: 28.08.2002

Civil 3D 2020, GeoCAD
BricsCAD 18

erstellt am: 14. Aug. 2018 10:59    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 wahrscheinlich nen Aussetzer oder es ist das Alter.

Ich lese von einem Dreieck mit entget die Koordinaten in den Codes 10, 11, 12 und 13 aus.
Zeige mir die Liste, X und Y sind nur einstellig, Z ist dreistellig.
Im Eigenschaften-Fenster sehe ich 3 Nachkommastellen.
Wandele ich X in einen Text um, hat die Koordinate 3 NK. Wandle ich wieder in RealZahl um wieder nur 1 NK.
Wenns nur ein Anzeigeproblem wäre, wärs mir egal. Aber ich will über (ssget Koordinate) alle anhängenden Dreiecke finden, er findet aber nicht einmal das Ausgangsdreieck.

Ist bestimmt nur eine SyS-Variable verstellt ?

MfG
GE

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 14. Aug. 2018 11: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 Gerd_Ecke 10 Unities + Antwort hilfreich

>"Ich lese von einem Dreieck"
Es gibt keine Dreiecke, bitte nennen die richtige Objektbezeichnung

>"Zeige mir die Liste, X und Y sind nur einstellig, Z ist dreistellig."
WIE lässt du dir die Anzeigen/womit, woher?

>"Im Eigenschaften-Fenster sehe ich 3 Nachkommastellen."
Die Anzeige in den GUI-Elementen ist abhängig von LUPREC (&AUPREC) und DIMZIN

>"Wandele ich X in einen Text um,"
WIE genau wandest du es in Text um? Nach deiner Beschriebung nutzt du (rtos DATA 2) wenn luprec=3 oder (rtos DATA 2 3)


"hat die Koordinate 3 NK."
Wenn beim gleichen Vorgang einmal nur eine Nachkommastelle kommt und einmal drei,
dann handelt es sich um Nullen und Dimzin ist entsprechend eingestellt das diese Nachkomma-Nullen unterdrückt werden.


"Wandle ich wieder in RealZahl um wieder nur 1 NK."
Was nicht da ist kann auch nicht umgewandelt werden und denn du die Nachkomma-Nullen unterdrückst werden auch diese nicht angezeigt.

"Wenns nur ein Anzeigeproblem wäre,"
Ist es so lange du nichts in Text umwandalst und danach wieder in einen REAL.

>"Aber ich will über (ssget Koordinate) alle anhängenden Dreiecke finden"
Dabei gibt es ja ganz unabhängig diverse Dinge zu berücksichtigen.
Die grafisch abhängigen Objektwahlmethoden sind auch abhängig von der aktuellen Ansicht,
ich nehme an du stolperst hier über diesen Sachverhalt mit der AutoCAD-Objektwahl (kein Lispspezifisches Thema).

>"er findet aber nicht einmal das Ausgangsdreieck."
Das kann von vorgenannten Fakt abhängen, abe du kannst auch sonstige Fehler gemacht haben,
ohne deinen Code PLUS Beispiel DWG (möglichst wenig Inhalt) müßten wir unnötig raten um dir zu helfen.

"Ist bestimmt nur eine SyS-Variable verstellt ?"
Das würde ich im Fall von SSGET, bis auch eine bestimmte Ausnahme welcher so oder so vermieden werden sollte, ausschließen.

Also:

Code:
CODEBEISPIEL als *.LSP anhängen oder falls der Code kurz ist direkt in der Antwort, möglichst lauffähig

Und die Beispiel-DWG anhängen.

Dann ist das Problem schnell gefunden 

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

Gerd_Ecke
Mitglied
Bergbauingenieur


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

Beiträge: 141
Registriert: 28.08.2002

Civil 3D 2020, GeoCAD
BricsCAD 18

erstellt am: 14. Aug. 2018 11: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


test_aussenrand.dwg


code.lsp

 
- Unter Dreieck verstehe ich eine 3DFACE, unsere DGM's bestehen aus dreieckigen 3DFACE.
- Koordinatenanzeige mittels Princ und im Überwachungsfenster
- LUPREC steht auf 6 DIMZIM auf 3
- in Text umwandeln mit (rtos Data 2 4)
- Die Koordinaten sind mit 3 nachkommastellen, wie im Eigenschaftenfenster angezeigt
- Nachkommanullen erst ab der 4.stelle
IM Grunde will ich einen Außenrand um alle Dreiecke generieren, Suche einen Maximal-Punkt und gehe die Aussen-Dreiecke durch.

MfG
GE

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

Gerd_Ecke
Mitglied
Bergbauingenieur


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

Beiträge: 141
Registriert: 28.08.2002

Civil 3D 2020, GeoCAD
BricsCAD 18

erstellt am: 14. Aug. 2018 11:44    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

Sorry, im Code die letzte Zeile löschen, war schon weiter am probieren 
MfG
GE

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 14. Aug. 2018 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 Nur für Gerd_Ecke 10 Unities + Antwort hilfreich

Du wählst 3DFACE,
machst irgendwas (ich habe es mir nicht näher angesehen / vielleicht erkläst du es einfach mla kurz?)
und möchtest dann ganz unten einen Auswahlsatz erstellen.


(setq GE_AWS (ssget GE_Max_Koo))


GE_Max_Koo ist eine Liste mit drei Zahlen, also eine zulässige Punktangabe,
die Zeile entspricht dann einem Mausklick an dieser Stelle.

Neben der langen Linie welche sicher nur wegen einem Test vorhanden ist(?),
gibt es an den Koordinaten noch eine Blockreferenz,
eine 2D-Polyline(die würde wohl in den meisten Fällen ausgewählt werden)
und vier 3D-FACE.

Eine Punktwahl ist ja generell schon selten sinnvoll, aber in dem Fall (ssget ohne Filter und mehrere
in Frage kommende Objekte gleichen Typs an einer Stelle) komplett unbrauchtbar.

?

Ich denke du erklärst kurz was das Ganze (Programm) soll und dann schauen wir weiter 


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

Gerd_Ecke
Mitglied
Bergbauingenieur


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

Beiträge: 141
Registriert: 28.08.2002

Civil 3D 2020, GeoCAD
BricsCAD 18

erstellt am: 14. Aug. 2018 12: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

Danke für Deine Geduld 

Ich habe ein DGM aus 3DFaces und möchte den Außenrand aller 3DFaces ermitteln.
Mein Ablaufplan ist : einen Anfangspunkt zu finden der schon am Außenrand ist.
Ich ermittle also den größten Rechtswert, das ist der Punkt Ge_MaxKoo.
Ich will dann alle 3Dfaces finden die auch Koordinaten an diesem Punkt haben. 
Eigentlich über (ssget GE_Max_Koo "X" (List '(0 . "3DFACE")(cons 8 GE_Layer))). Das nur (ssget GE_Max_Koo) war nur zum testen.
Wenn ich dann alle 3Dfaces habe, die an der Koordinate hängen kann ich abfragen ob es eine Dreieckseite gibt an der ein anderes Dreieck hängt. Wenn kein anderes Dreieck an der Seite liegt, ist es die erste Seite meines Außenrandes.

Die Polylinie geht aus die gerundeten Koordinaten .

MfG
GE

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

Brischke
Moderator
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: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 14. Aug. 2018 12:35    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 Gerd_Ecke 10 Unities + Antwort hilfreich

... der hier verfolgte Ansatz ist sehr aufwändig.

Ich habe folgenden umgesetzt:
1) die 3DFACE-Objekte werden auf Z=0 projiziert
2) die 3DFACE-Objekte werden in Regionen umgewandelt
3) die Regionen werden vereinigt
==> es existiert eine Region, die nur noch die Außenkontur darstellt
(4) aus der Region eine Polylinie machen

Den folgenden Code kannst du noch aufhübschen, der stellt nur das Prinzip dar, läuft aber.

Code:

(defun c:xa (/ bau_elemli ellis naws)
  (defun bau_elemli (asatz / n elemli)
    (setq n 0)
    (repeat (sslength asatz)
      (setq elemli (cons (ssname asatz n) elemli)
    n      (1+ n)
    )
      )
    elemli
    )
  (setq naws (ssadd))
  (mapcar '(lambda (e)
    (mapcar '(lambda (dxf)
(entmod (subst (cons dxf (list (car (cdr (assoc dxf (entget e))))
      (cadr (cdr (assoc dxf (entget e))))
      0.0
      )
    )
      (assoc dxf (entget e))
      (entget e)
      )
)
)
    '(10 11 12 13)
    )
    (command-s "_.region" e "")
    (ssadd (entlast) naws)
    )
  (bau_elemli (ssget "_X" '((0 . "3DFACE"))))
  )
  (command-s "_.union" naws "")
  )

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

Gerd_Ecke
Mitglied
Bergbauingenieur


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

Beiträge: 141
Registriert: 28.08.2002

Civil 3D 2020, GeoCAD
BricsCAD 18

erstellt am: 14. Aug. 2018 12:51    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

Danke Brischke,

ich muss mich also mit Regionen beschäftigen. ;-)
Ich hätte mich von Dreieck zu Dreieck gehangelt und über Abfragen die Aussen-Dreiecke ermittelt und eine Polylinie gebaut ...

Manchmal reicht ein Gedankenanstoß um auf ganz einfache Lösungen zu kommen.

Mit freundlichen Grüßen
Gerd_Ecke

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8075
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 14. Aug. 2018 13:22    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 Gerd_Ecke 10 Unities + Antwort hilfreich

Kurze Zwischenfrage:
Wenn Du ein DGM hast, warum extrahierst Du dessen Rand nicht einfach?
Befehl: SURFACEEXTRACTOBJECTS im Civil3D
Mutmaßlich beherrscht diese Extraktion auch jedes andere Programm, mit dem das DGM erzeugt wurde.
Fände ich persönlich jetzt die einfachste Lösung, aber ich kenn mich auch im Klammerwald nicht sonderlich gut aus 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

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