| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für BricsCAD |
Autor
|
Thema: Chelev Höhenlinien (1382 mal gelesen)
|
bergaus Mitglied
Beiträge: 4 Registriert: 14.06.2018
|
erstellt am: 14. Jun. 2018 12:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Projektdatei mit Höhenlinien und bekannten Höhen. Die Datei beschreibt eine Senke mit umliegenden Steigungen. Die Höhenlinien beschreiben eine Höhendifferenz von 0,625m. Wenn ich mit chelev in der Senke den ersten Punkt setze und am Höchsten Punkt (eine Kuppel) und die Starthöhe, erhalte ich zwei Gruppen von Höhenschichtlinien. Der höchste Punkt der unteren Gruppe (Gelb) beginnt am untersten Punkt der oberen Gruppe (Cyan). Setze ich das Tool falsch ein? Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 BricsCAD V11 - V22 Pro Visual Basic
|
erstellt am: 14. Jun. 2018 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für bergaus
Hallo bergaus, Willkommen im Forum Hm, vermutlich hast Du ein anderes chelev.lsp wie ich, ich habe mir das gerade von hier geholt. Damit bekommt man zwar keine zwei Gruppen aber die Reihenfolge passt. Was mir in Deiner rechten Zeichnung auffiel: Du befindest Dich mit Deinen Höhenwerten im Weltall ( 468125.00 m). Hast Du evtl. ein Komma anstelle des Dezimalpunktes eingegeben? Außerdem liegen die gelben Linien 30000 m tiefer als die daneben liegenden cyanfarbenen Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bergaus Mitglied
Beiträge: 4 Registriert: 14.06.2018
|
erstellt am: 14. Jun. 2018 14:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, es ist der selbe Link/ die selbe lsp-Datei die ich verwende. Die hohen Werte können daher kommen, dass ich die Geometrie per Copy'n'Paste in eine neue Zeichnung eingefügt habe und die Skalierung eine andere ist. Bei mir ist die vorletzte Polylinie auf 461.875m, auch in der hochgeladenen Datei. Ich habe immer den "." für die Zahlenwerte verwendet. EDIT: Ich habe, um mein Problem zu verdeutlichen, die tieferliegenden Linien Gelb eingefärbt. Meine Frage ist ja, warum liegen diese Linien tiefer als die anderen? Der Abstand innerhalb der jeweiligen Farbgruppe beträgt genau den Abstand den ich bei "interval" eingegeben habe. EDIT 2: Ich habe jetzt die unteren Linien auf die richtige Höhe geschoben/gesetzt (Erhebung) und die Cyan-Linien dann immer um 10 Meter nach unten verschoben. Ich hoffte genau das nicht per Hand erledigen zu müssen... Die gelben Linien haben jeweils einen höhen Abstand von 2.5m und die vier Höhenlinien dazwischen jeweils 0.5m. [Diese Nachricht wurde von bergaus am 14. Jun. 2018 editiert.]
[Diese Nachricht wurde von bergaus am 14. Jun. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 BricsCAD V11 - V22 Pro Visual Basic
|
erstellt am: 14. Jun. 2018 16:45 <-- editieren / zitieren --> Unities abgeben: Nur für bergaus
Hallo bergaus, Jetzt habe ich verstanden was Du meinst und ja, Du hast Recht, mit Deinen Zeichnungselementen erreiche ich das gleiche Ergebnis wie Du, die Reihenfolge der Höhenlinien stimmt nicht. Bei näherer Betrachtung der Lisp ist das auch verständlich, das Programm kann eigentlich nur funktionieren wenn die Höhenlinien in einer bestimmten Reihenfolge erzeugt wurden. Vermutlich wurden in Deiner Zeichnung zunächst die Haupthöhenlinien kopiert und anschließend die Nebenhöhenlinien, damit ergäbe sich die Reihenfolge in der ZeichnungsDB die dann auch in den SelectionSet übernommen wird. Für ein richtiges Ergebnis hätte man das Programm ganz anders aufbauen müssen ... Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bergaus Mitglied
Beiträge: 4 Registriert: 14.06.2018
|
erstellt am: 15. Jun. 2018 07:41 <-- editieren / zitieren --> Unities abgeben:
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 BricsCAD V11 - V22 Pro Visual Basic
|
erstellt am: 15. Jun. 2018 12:28 <-- editieren / zitieren --> Unities abgeben: Nur für bergaus
Jein Für die Haupthöhenlinien könnte das funktionieren aber bei den Nebenhöhenlinien hast Du ja unterschiedliche Intervalle da die Haupthöhenlinie dort in der Reihenfolge nicht enthalten ist Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Grebe Mitglied
Beiträge: 536 Registriert: 16.12.2002
|
erstellt am: 18. Jun. 2018 08:42 <-- editieren / zitieren --> Unities abgeben: Nur für bergaus
Ich vermute, dass die geschnittenen Polylinien in AutoCad in aufsteigender Entfernung vom Startpunkt der Schnittlinie aufgelistet werden und in BricsCAD nach ihrer Zeichenreihenfolge. Hab's mir daher so umgeschrieben, dass die Schnittlinie ab dem Startpunkt in vielen kleinen Abschnitten untersucht wird, sodass jeweils nur max. 1 Element gefunden wird. Damit klappt's bisher fehlerfrei: (defun _getPoints (/ lst pt) (if (car (setq lst (list (getpoint "\nErster Punkt: ")))) (progn (while (setq pt (if (> (length lst) 1) (progn (initget "Undo") (getpoint (car lst) "\nNaechster Punkt [Undo]: ") ) (getpoint (car lst) "\nNaechster Punkt: ") ) ) (redraw) (mapcar '(lambda (a b) (grdraw a b 1 1)) (setq lst (if (eq pt "Undo") (cdr lst) (cons pt lst) ) ) (cdr lst) ) ) (cond ((> (length lst) 1) lst)) ) ) ) (defun c:chelevBrx (/ ss1 elev interval a plst pt1 pt2 ename x1 x2 dx y1 y2 dy aktx akty) (princ "\nLiniezug vom Fusspunkt bis zum Hochpunkt angeben:") (setq plst (reverse (_getPoints))) (setq elev (getreal "\nStart-Höhe : ")) (setq interval (getreal "\nSchrittweite : ")) (command "regen") (setq x1 (car (nth 0 plst))) (setq y1 (cadr (nth 0 plst))) (setq plst (cdr plst)) (while plst (setq x2 (car (nth 0 plst))) (setq y2 (cadr (nth 0 plst))) (setq dx (/ (- x2 x1) 100.0)) (setq dy (/ (- y2 y1) 100.0)) (if (or (equal dx 0 0.01) (equal dy 0 0.01))(progn (alert "Keine horizontalen oder vertikalen Linien verwenden") )) (setq aktx1 x1) (setq akty1 y1) (setq aktx2 (+ x1 dx)) (setq akty2 (+ y1 dy)) (while (and (not (equal aktx1 x2 0.01)) (not (equal akty1 y2 0.01))) ; (command "_point" (list aktx1 akty1)) (if (setq ss1 (ssget "_F" (list (list aktx1 akty1) (list aktx2 akty2))))(progn (setq alen (sslength ss1)) (if (= alen 1)(progn (setq ename (ssname ss1 0)) (command "_CHANGE" ename "" "_P" "_E" elev "") (setq elev (+ elev interval)) )) (if (> alen 1)(progn (command "_point" (list aktx1 akty1)) (command "_point" (list aktx2 akty2)) (alert (strcat (itoa alen) " Linien gefunden (siehe eingefügte Punkte)")) (exit) )) )) (setq aktx1 aktx2) (setq akty1 akty2) (setq aktx2 (+ aktx2 dx)) (setq akty2 (+ akty2 dy)) ) (setq plst (cdr plst)) (setq x1 x2) (setq y1 y2) ) (princ) ) Mathias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bergaus Mitglied
Beiträge: 4 Registriert: 14.06.2018 Windows 7 Professional BricsCAD Pro 17.2.08 (x64) Rev 48934 VESTRA Infravision
|
erstellt am: 18. Jun. 2018 10:52 <-- editieren / zitieren --> Unities abgeben:
|