| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Polylinien in Segmente zerlegen (8027 mal gelesen)
|
jime Mitglied
Beiträge: 2 Registriert: 02.03.2004 P4 2,8 512MB, WinXp,
|
erstellt am: 02. Mrz. 2004 11:17 <-- editieren / zitieren --> Unities abgeben:
weis jemand, ob es für autocad 2000 ein tool gibt, mit dem man eine polylinie automatisch in 100m lange einzelsegmente zerlegen kann? also eine kombination aus messen und bruch, die automatisch durchläuft. habe so etwas bisher nur für das teilen von linien gefunden, aber dies hilft uns nicht weiter (wir brauchen feste einzelne 100m abschnitte, denen sachdaten zugewiesen werden sollen). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matgehrke Mitglied Landschaftsarchitekt
Beiträge: 651 Registriert: 31.08.2003 - ACAD 2015
|
erstellt am: 03. Mrz. 2004 08:26 <-- editieren / zitieren --> Unities abgeben: Nur für jime
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 03. Mrz. 2004 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für jime
Zitat: Original erstellt von matgehrke: ...ist echt merkwürding, das niemand eine lösung für so eine einfach aufgabe hat. wenn ich lisp könnte hätte ich dir ein paar zeilen geschrieben.
Hallo matgehrke, ja, wenn du Lisp könntest, dann hättest du das nicht geschrieben, denn das ist nicht mit 5 Zeilen erledigt. Der Knackpunkt: Eine Polylinie, wenn diese gebrochen wird, bekommt einen neuen Elementnamen. Ebenso, die dadurch neu erzeugte Polylinie. Dies muss irgendwie in dem Programm beachtet werden. Machbar ist das, keine Frage, aber es ist ein gewisser Aufwand. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 03. Mrz. 2004 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für jime
Servus Is a bisserl Handarbeit aber: Sieh dir die Befehle "Teilen" u. "Messen" an. teilen markiert die PLinie in Anzahl X (z.B. 5 Stück) messen markiert die Plinie in Abstand X (z.B. 100 Meter) ------------------ Same shit, different DAU. DAU Jones Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matgehrke Mitglied Landschaftsarchitekt
Beiträge: 651 Registriert: 31.08.2003 - ACAD 2015
|
erstellt am: 03. Mrz. 2004 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für jime
hallo bernd. schon klar, ich bekommen mit MESSEN genau die richtigen bruchpunkte auf der linie eingetragen, jedoch bei linienlängen von mehreren tausend einheiten ist es anschließend mit BRUCH doch sehr mühsam. ich dachte nur es gäbe einen einfachen weg ohne viel programmieraufand. schade, wenn dem halt nicht so ist. ------------------ herzliche grüße aus göttingen matthias ____________________________________ g.matthias@gmx.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 03. Mrz. 2004 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für jime
Anbei mal ein Grundgerüst für so ein Tool, (defun DistBreak ( KURVE DIST / LASTOBJEKT PKT vla-Kurve) (if (and (=(type KURVE) 'ENAME) (=(cdr(assoc 0 (entget KURVE))) "LWPOLYLINE") (numberp DIST) ) (progn (setvar "cmdecho" 0) (setq vla-Kurve (vlax-ename->vla-object KURVE)) (if (< DIST (abs (vlax-curve-getdistatpoint VLA-KURVE (vlax-curve-getENDpoint VLA-KURVE) ) ) ) (progn (setq a 0) (setq LASTOBJEKT (entlast)) (setq PKT (vlax-curve-getPointAtDist KURVE DIST)) (command "_break" KURVE PKT PKT) (While (setq KURVE (entnext LASTOBJEKT)) (setq LASTOBJEKT KURVE) (DISTBREAK KURVE DIST) ) ) ) (setvar "cmdecho" 1) ) ) ) Aufruf dann z.B. mit (distbreak (car(entsel)) 100000) ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel Rose Mitglied
Beiträge: 71 Registriert: 24.07.2003 Autocad 2011, Win 7 64 Bit
|
erstellt am: 03. Mrz. 2004 15:13 <-- editieren / zitieren --> Unities abgeben: Nur für jime
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 03. Mrz. 2004 15:31 <-- editieren / zitieren --> Unities abgeben: Nur für jime
..@Axel : überleg mal noch mal, oder hat ist bei dir eine Polylinie immer eine Strecke ( Anstieg Konstant ) auf der einfach nur ein paar Punkte abgesetz sind. Also bei mir kann diese Bögen, Knicke usw enthalten..un da ist wohl mit "Reihe" nichts ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matgehrke Mitglied Landschaftsarchitekt
Beiträge: 651 Registriert: 31.08.2003 - ACAD 2015
|
erstellt am: 03. Mrz. 2004 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für jime
|
matgehrke Mitglied Landschaftsarchitekt
Beiträge: 651 Registriert: 31.08.2003 - ACAD 2015
|
erstellt am: 04. Mrz. 2004 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für jime
|
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5881 Registriert: 09.11.2001 Acad Architecture 2023 WIN 10
|
erstellt am: 04. Mrz. 2004 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für jime
Moin, ich habe da mal eine Zwischenfrage: Es gibt ein Lisp, das eine Kombination aus Teilen und Bruch sein soll. Vielleicht könnte es helfen, aber es läuft nicht, und man kann das Lisp nicht mit dem normalen Editor editieren . Was ist das? Verarsche? Vielleicht kann ein geübter Cadfachmann das mal überprüfen... Lothar [Diese Nachricht wurde von Kramer24 am 04. Mrz. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 04. Mrz. 2004 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für jime
@Kramer ... das ist ein "AutoCAD PROTECTED LISP file" , da wollte einer sein KnowHow - ob schützenswert oder nicht sollen andere beurteilen - schützen. Meine Empfehlung : Schmeiß das Lisp weg, da es nach deiner Aussage eh nicht läuft! .. Bei so einer Aufgabenstellung geht neuschreiben meist sowieso schneller als suchen bzw.Fehlersuchen ! ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 04. Mrz. 2004 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für jime
das Lisp kannst du vergessen, da es 1. falsch programmiert wurde, 2. nur für den Amerikanischen Markt gemacht wurde und 3. nur mit linien arbeitet. @ Kramer24 - klopp das Teil in die Tonne - ist keinerlei Beachtung Wert ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VMichl Mitglied
Beiträge: 211 Registriert: 04.01.2001
|
erstellt am: 04. Mrz. 2004 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für jime
|
heidi Mitglied CAD-Dienstleister
Beiträge: 1130 Registriert: 01.11.2001 Dell Precicion M6700 Nvidia Quadro K3000M AutoCAD 2012 Sp2 nXtRender Tetra4D eigene Tools Adobe CreativeSuite 6 ——————————— MacBook Pro i9 2,3/16/5 Big Sur 11.5.1 BricsCAD V21 Pro
|
erstellt am: 04. Mrz. 2004 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für jime
versuch es mal hiermit (defun c:BTel(/ entity SegLn Letztes Pts cmd kw Segmente ss count) (setq osmd (getvar "osmode")) (setvar "osmode" 0) (setq ss (ssget "_I")) (if ss (if (= 1 (sslength ss)) (setq entity (ssname ss 0)) ) ) (if (not entity) (if (setq entity (entsel "\nObjekt wählen")) (setq entity (car entity)) ) ) (if entity (progn (initget "M T") (setq kw (getkword "\nMessen/Teilen: ") cmd (getvar "cmdecho") Letztes (entlast) ) (setvar "cmdecho" 0) (if (= "M" kw)(progn (setq SegLn (getdist "\nLänge der Segmente: ")) (command "_measure" entity SegLn) )(progn (setq Segmente (getint "\nAnzahl der Segmente: ")) (command "_divide" entity Segmente) )) (setq Pts(SammlePunkte Letztes) count (length pts) ) (if Pts (progn (Brechen entity Pts) ;-- Lösche die Punkte die AutoCAD durch _MEASURE _DIVIDE einfügte (mapcar 'entdel pts) )) (setvar "cmdecho" cmd) )) (if (= "M" kw) (mapcar 'princ (List "\nEs wurden " (1+ count) " Einzelstücke erzeugt")) (princ "Fertig!") ) (setvar "osmode" osmd) (princ) ) ; Aufbrechen der Polylinie <pl> an den Punkten die durch ; die Liste der Entitynamen <pts> angegeben sind (defun Brechen(pl pts / en n) (foreach n pts (command "_break" pl (cdr (assoc 10 (entget n))) "@") (setq pl (entlast)) ) ) ; <en> ist entlast bevor die Punkte eingefügt wurden ; Result: Liste der Elementnamen aller Punkte (defun SammlePunkte(en / result ) (while (setq en(entnext en)) (setq result (cons en result)) ) (reverse result) )
------------------ Gruß Heidi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jime Mitglied
Beiträge: 2 Registriert: 02.03.2004 P4 2,8 512MB, WinXp,
|
erstellt am: 04. Mrz. 2004 17:39 <-- editieren / zitieren --> Unities abgeben:
finde ich wirklich super, wieviele hilfreiche tipps und lösungen hier geboten werden! die lsp von heidi ist genau das was ich gesucht habe, vielen herzlichen dank dafür. jetzt müssen wir für den lehrling glatt neue arbeit suchen :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jette Mitglied
Beiträge: 2 Registriert: 14.05.2018
|
erstellt am: 14. Mai. 2018 14:48 <-- editieren / zitieren --> Unities abgeben: Nur für jime
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Das wär genau das wonach ich gesucht habe, aber wie kann ich das denn nun benutzten??? hab keine Ahnung von programmieren, oä... ich weiß der beitrag ist schon etwas älter, aber vll sieht es ja jmd!?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 2966 Registriert: 26.08.2002 ACAD R11 - 2022 (Plant3D) AVIS ACAD LT 2013- 2021 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 14. Mai. 2018 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für jime
|
Jette Mitglied
Beiträge: 2 Registriert: 14.05.2018
|
erstellt am: 14. Mai. 2018 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für jime
|