Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Polylinien-Bögen in mehrere Polylinien-Linien umwandeln

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:  Polylinien-Bögen in mehrere Polylinien-Linien umwandeln (4401 / mal gelesen)
BellaRosa
Mitglied
Werkstudentin


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

Beiträge: 10
Registriert: 17.05.2017

Autodesk AutoCAD 2016

erstellt am: 11. Aug. 2017 11:23    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 hoffe man kann mir helfen.

Ich bearbeite CAD-Pläne, die in ein GIS-Programm geladen werden müssen. Das GIS-Programm kann keine Bögen erkennen und stellt es als gerade Linien dar. Ich bräuchte also eine Möglichkeit, Polylinien-Bögen in viele einzelne Segmente zu unterteilen um die Form zu behalten.

Gefunden habe ich bereits diese Lösung:
http://ww3.cad.de/foren/ubb/Forum145/HTML/000581.shtml

Mein Problem: Ich habe absolut keine Ahnung von Codes und LISP und wie genau diese funktionieren. Außerdem sind in dem Topic zwei Lösungen geschrieben, welche davon ich jetzt brauche oder besser ist erschließt sich mir nicht...
Außerdem: Funktioniert das auch noch genau so mit AutoCAD 2016 oder gibt es mittlerweile sogar eine integrierte Lösung?

Es wäre sehr nett wenn mir einer von euch Experten bei der Sache weiterhelfen und mir eine exakte Schritt-für-Schritt Anleitung geben könnte, "for Dummies" sozusagen 

Vielen Dank!

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 11. Aug. 2017 12:54    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 BellaRosa 10 Unities + Antwort hilfreich

Hallo BellaRosa,

In dem von Dir gefundenen und verlinkten Thread nimm den Code von Proxy (gleich in der ersten Antwort) und kopiere diesen in eine neue Textdatei. (Code markieren und mit Strg+C in die Zwischenablage kopieren. Notepad starten und neue Text-Datei anlegen. Inhalt der Zwischenablage mit Strg+V hineinkopieren). Die Datei abspeichern mit der Dateinamenserweiterung .lsp  (z.B. b2pl.lsp).
In AutoCAD mußt Du nun diese LISP-Datei laden. Eine Möglichkeit - Befehl appload starten und sich zur gespeicherten Date b2pl.lsp durchhangeln. Andere Möglichkeiten finden sich in der FAQ (suche ich jetzt nicht raus, solltest Du Dir aber mal zu Gemüte führen).
Nun steht Dir in AutoCAD ein neuer Befehl kbla zur Verfügung. Diesen starten, den Aufforderungen in der Befehlszeile folgen und fertig.
Funktioniert übrigens auch in ACAD 2016.
Die anderen dort aufgeführten Varianten habe ich gar nicht erst getestet ...


Jürgen

Anm: Der Bogen wird von dieser Routine nicht automatisch gelöscht - das müßtest Du also am Ende noch selbst tun.

------------------
Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty)

[Diese Nachricht wurde von jupa am 11. Aug. 2017 editiert.]

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

BellaRosa
Mitglied
Werkstudentin


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

Beiträge: 10
Registriert: 17.05.2017

Autodesk AutoCAD 2016

erstellt am: 11. Aug. 2017 13:17    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

Vielen lieben Dank! Es klappt!  

Edit: ähm... doch nicht so ganz. meine Linie ist jetzt kürzer geworden, das soll natürlich nicht sein. Muss ich doch einen anderen code nehmen?

[Diese Nachricht wurde von BellaRosa am 11. Aug. 2017 editiert.]

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

Kuschelfee
Mitglied
Bauzeichnerin


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

Beiträge: 186
Registriert: 07.05.2007

Windows 10 Pro
AutoCAD 2022.1.3
Soficad 2022-4
Advance Steel 2022.1.3

erstellt am: 11. Aug. 2017 13:56    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 BellaRosa 10 Unities + Antwort hilfreich

Habe mit gelesen
und auch nochmal probiert.

Es scheint das ein Segment fehlt.
Hier wurde das auch schon behandelt und in eine Funktionierende Lisp geändert.

https://ww3.cad.de/foren/ubb/Forum54/HTML/004124.shtml#000007

Probiere es mal damit.
Genau so wie vor
Befehlsaufruf = kbla
Ansonsten ist es natürlich eine andere Länge (je mehr Scheitelpunkte desto genauer der Wert)

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

BellaRosa
Mitglied
Werkstudentin


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

Beiträge: 10
Registriert: 17.05.2017

Autodesk AutoCAD 2016

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

also ich habe jetzt das hier verwendet, indem ich meine bestehende gespeicherte Datei damit ersetzt habe
Code:
(defun c:kbla (/ elem selem pts selemType ptst pte bogenL)
  (setq elem (entlast))
  (command "_.DIVIDE" (setq selem(car (entsel)))(getint "\nAnzahl der Segmente:"))
  (setq selemType (cdr(assoc 0 (entget selem))))
  (if (member selemType '("ARC" "CIRCLE"))
    (progn
      (setq selem (vlax-ename->vla-object selem)
    ptst (vlax-curve-getStartPoint selem)
    pts (list ptst)
    pte (vlax-curve-getEndPoint selem)
    bogenL (vlax-get-Property selem (if (= "ARC" selemType)'ArcLength 'Circumference))
    )
      (while (setq elem(entnext elem))
(setq pts(cons (cdr(assoc 10 (entget elem))) pts))
(entdel elem)
)
      (setq pts (cons (if (= "ARC" selemType)pte ptst)pts))
      (entmake(append(list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(67 . 0)
      '(410 . "Model")
      (cons 8 (vlax-get-property selem "LAYER"))
      '(100 . "AcDbPolyline")
      (cons 90 (length pts))
      '(70 . 0)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0))
    (apply 'append (mapcar  '(lambda (x)
(list (cons 10 x) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0))
)
    pts
    )
    )
    (list '(210 0.0 0.0 1.0))
    )
      )
      (terpri)
      (princ bogenL)
      )
    (alert "Keinen Kreis oder Bogen gewählt!")
    )
  (princ)
  )

AutoCAD gibt mir jetzt aber die Meldung raus, ich hätte keinen Bogen oder Kreis gewählt... ich wähle aber nach wie vor eine polylinie aus, die einen bogen darstellt.

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

System: F1
und Google

erstellt am: 11. Aug. 2017 15:05    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 BellaRosa 10 Unities + Antwort hilfreich

..und dieses Programm möchte gerne einen KREIS oder einen BOGEN, KEINE POLYLINIE 

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Bricscad V11-V21 pro
Plateia, Canalis
Visual Basic

erstellt am: 11. Aug. 2017 15:58    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 BellaRosa 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von BellaRosa:
Edit: ähm... doch nicht so ganz. meine Linie ist jetzt kürzer geworden, das soll natürlich nicht sein.

Was aber logisch ist da die Sekante immer kürzer ist als die Bogenlinie ...
Um dies zu optimieren gibt es Programme die nicht von einer festen Anzahl von Bogenteilungen ausgehen sondern hierfür einen max. Sekantenabstand verwenden. Natürlich verkürzt sich auch hier die Gesamtlänge der Polylinie aber es wird ein Optimum zwischen Anzahl der neuen Segmente und erforderlicher Genauigkeit erzeugt. In der Vermessung verwende ich als Sekantenabstand i.A. 10 - 20 cm, für GIS-Anwendungen könnte man aber auch auf 0,5 bis 1,0 Meter gehen.

Cadmium hatte mal so ein Programm (pl_convert.vlx), war als Testversion kostenfrei aber nur eine gewisse Zeit lauffähig.

Grüße
Klaus 

PS.: habe auch so ein Programm, dass 2D-Polylinien in 3D-Polylinien umwandelt. Allerdings eingebaut in ein größeres Projekt und in VBA programmiert. Sollte ich wirklich mal herausziehen und separat lauffähig machen ...

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

Windows 10 64bit, ACAD Rel. 14 - ACAD 2023

erstellt am: 12. Aug. 2017 08: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 BellaRosa 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von KlaK:

Was aber logisch ist da die Sekante immer kürzer ist als die Bogenlinie ...

Ich befürchte, BellaRosa  bezieht sich darauf, daß ein Segment fehlt (und deshalb "zu kurz"). Obwohl dieses Problem bereits in dem verlinkten Thread angesprochen wird, das hatte ich übersehen - sorry.
Muß also doch eine andere Lösung her ...  (Bin selbst aber bis nächste Woche nicht mehr online  ).


Jürgen

------------------
Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty)

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

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: 12. Aug. 2017 18:13    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 BellaRosa 10 Unities + Antwort hilfreich

Die Datei  Curves2SegmentPL.VLX.txt aus dem Beitrag runterladen und auf Festplatte speichern .... umbenennen in Curves2SegmentPL.VLX .... per Drag&Drop aus dem Windowsexplorer in die aktuelle Zeichnung ziehen ... Aufrufen mit C2PL oder -C2PL .... Anweisungen im Programm folgen ...

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

BellaRosa
Mitglied
Werkstudentin


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

Beiträge: 10
Registriert: 17.05.2017

Autodesk AutoCAD 2016

erstellt am: 14. Aug. 2017 14:08    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

Vielen Dank euch allen. Es klappt jetzt soweit 

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

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: 11. Mai. 2021 09:37    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 BellaRosa 10 Unities + Antwort hilfreich

Servus,

(entdel elem) Müsste das LISP nicht den Kreis löschen? Bei mir bleibt der stehen.

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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

System: F1
und Google

erstellt am: 11. Mai. 2021 09:54    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 BellaRosa 10 Unities + Antwort hilfreich

Nein, elem bezieht sich dabei nicht mehr auf das gewählte Objekt, sondern auf die nachfolgend erzeugten Punkte.

Schaue es dir mal so an:

Code:
(defun c:kbla (/ elem selem pts selemType ptst pte bogenL)
  (setq elem (entlast))
  (command "_.DIVIDE" (setq selem(car (entsel)))(getint "\nAnzahl der Segmente:"))
  (setq selemType (cdr(assoc 0 (entget selem))))
  (if (member selemType '("ARC" "CIRCLE"))
    (progn
      (setq selem (vlax-ename->vla-object selem)
    ptst (vlax-curve-getStartPoint selem)
    pts (list ptst)
    pte (vlax-curve-getEndPoint selem)
    bogenL (vlax-get-Property selem (if (= "ARC" selemType)'ArcLength 'Circumference))
    )
    (setvar "PDMODE" 35)
    (setvar "pdsize" -5)

      (while (progn(getstring"Drücken Sie die EINGABETASTE, um fortzufahren: ")(setq elem(entnext elem)))
(setq pts(cons (cdr(assoc 10 (entget elem))) pts))
(entdel elem)
)
      (setq pts (cons (if (= "ARC" selemType)pte ptst)pts))
      (entmake(append(list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(67 . 0)
      '(410 . "Model")
      (cons 8 (vlax-get-property selem "LAYER"))
      '(100 . "AcDbPolyline")
      (cons 90 (length pts))
      '(70 . 0)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0))
    (apply 'append (mapcar  '(lambda (x)
(list (cons 10 x) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0))
)
    pts
    )
    )
    (list '(210 0.0 0.0 1.0))
    )
      )
      (terpri)
      (princ bogenL)
      )
    (alert "Keinen Kreis oder Bogen gewählt!")
    )
  (princ)
  )

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

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: 11. Mai. 2021 10:13    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 BellaRosa 10 Unities + Antwort hilfreich

thy...  (vla-delete selem)

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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