Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Bögen in POLYLINIEN -> X Geraden

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:  Bögen in POLYLINIEN -> X Geraden (14030 mal gelesen)
m-troeger
Mitglied
gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 16. Mai. 2004 21:18    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 alle zusammen,

ich brauch mal eure Unterstützung.

Mit PEDIT ist es doch möglich, Polylinien mit Bögen, in Polylinien ohne Kurven zu konvertieren.
Nun wäre es aber für mich interessant, die Bögen in einer Polylinie nicht nur durch eine Gerade, sondern durch eine belibige Anzahl (frei definierbar) von Geraden/Sehnen zu ersetzen.
Grund, ich will demnächst meine PL aus dwg in eine dgn exportieren, und diese in MicroStation hochladen, und sie in ein GIS (PARIS) übernehmen, welches aber keine Bögen in einem Linienzug versteht.

Wäre schön wenn Ihr mir da helfen könntet.
sicher gibts da was mit vlax.... wovon ich keine Ahnung habe.

Servus, Mario

------------------
Servus,
Mario 

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 16. Mai. 2004 21:30    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 m-troeger 10 Unities + Antwort hilfreich

Gesucht und gefunden.

Code:

(defun c:kbla (/ elem selem pts)
  (vl-load-com)
  (setq elem (entlast))
  (command "_.DIVIDE" (setq selem(car (entsel)))(getint "\nAnzahl der Segmente:"))
  (setq selem (vlax-ename->vla-object selem)
pts (list (vlax-curve-getStartPoint selem))
)
  (while (setq elem(entnext elem))
    (setq pts(cons (cdr(assoc 10 (entget elem))) pts))
    (entdel elem)
    )
  (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))
)
  )
  )
(princ"\nCADlon - Lisp over night!")
(princ"\nhttp://www.CADlon.de")
(princ"\nAufteilung von Kreisen/Bögen in LWPolyliniensegmente...Start mit: kbla")

------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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

.

erstellt am: 16. Mai. 2004 21:42    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 m-troeger 10 Unities + Antwort hilfreich

@Mario ... die Idee mit vlax war schon sehr gut 

@Proxy
..Also gehen die U's an Brischke ...

und sonst :ich hätte noch auf  http://ww3.cad.de/foren/ubb/Forum54/HTML/006555.shtml
zu verweisen ... Da hat man dann die Punkte zur Weiteren Verarbeitung. Aber da eine Fertiglösung vorliegt, spare ich mir das umfummeln...

(wieder ein Beitrag mehr, um den Thread aufzublähen)

------------------
- Thomas -

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

m-troeger
Mitglied
gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 17. Mai. 2004 17:41    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

erstmal vielen Dank euch Beiden,

ja, sowas ähnliches suche ich.
Jedoch teilt das lsp die komplette PL in eine Anzahl von Geraden auf, es sollen aber lediglich die Bogensegmente innerhalb einer PL durch eine Anzahl von Geraden ersetzt werden.
Das Tool soll also die PL entlang rennen, und wenn es merkt das ein Bogen kommt, so soll dieser durch eine Anzahl von Geraden ersetzt werden (Kontrollpunkte innerhalb des Bogensegmentes hinzufügen).
Nun weiterrennen bis zum nächsten Bogen.

Gibts eigentlich eine dt. vlax Doku?

Servus, Mario

------------------
Servus,
Mario  

[Diese Nachricht wurde von m-troeger am 17. Mai. 2004 editiert.]

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

scj
Mitglied
 


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

Beiträge: 554
Registriert: 09.08.2001

erstellt am: 18. Mai. 2004 17:55    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 m-troeger 10 Unities + Antwort hilfreich

Sieh Dir mal mein PEDIT3D an (www.black-cad.de). Wenn da eine kleine Modifikation dran vorgenommen wird (_3DPOLY durch _PLINE ersetzen), müsste es eigentlich schon funktionieren.
Beste Grüße aus der Rhön
Jochen

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

m-troeger
Mitglied
gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 18. Mai. 2004 20:07    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


Rampf.txt

 
Hi,
die Tools können alle etwas von dem wie ich es benötige.

Das LSP von Proxy (Autor: Brischke) zeichnet zwar eine gewünschte Anzahl von Geraden, jedoch funktioniert es nicht bei eine PL mit mehreren Segmenten. Siehe Bild "links"

Das Tool pedit3d ersetzt einen Bogen wiederum nur durch eine Gerade.
Also pedit/kurve LÖschen macht ja das selbe. Siehe Bild "mitte"
@Jochen  Wie editiert man eine *.fas ???

Ziel ist, das alle Bögen innerhalb einer PL durch eine definierbare Anzahl von Geraden/Sehnen (z.B. 3) ersetzt werden soll. Siehe Bild "rechts"

Wär euch echt dankbar wenn Ihr da was hinbekommt.
Ich muß sonnst tausende PL in PARIS/MicroStation nachzeichnen.

------------------
Servus,
Mario  

[Diese Nachricht wurde von m-troeger am 18. Mai. 2004 editiert.]

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

scj
Mitglied
 


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

Beiträge: 554
Registriert: 09.08.2001

erstellt am: 18. Mai. 2004 21:43    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 m-troeger 10 Unities + Antwort hilfreich

Hier (und im AutoCAD-Magazin) http://ww3.cad.de/foren/ubb/Forum54/HTML/007227.shtml
wurde der Quelltext veröffentlicht.
Korrigieren müsstest Du die 5.letzte Zeile (glaube ich) ...
Viel Erfolg
Beste Grüße aus der Rhön
Jochen

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 18. Mai. 2004 21: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 m-troeger 10 Unities + Antwort hilfreich


GMK_RT.txt

 
hi mario!

ich könnte dir ein lisp anbieten das bögen in abhängigkeit von der pfeilhöhe in linien aufteilt (bogen wird anschließend gelöscht). jetzt mit _pedit noch drüber und die pl aus linien wäre fertig.
ich nehme aber mal schwer an du brauchst das für höhenlinien, dann ist mein vorschlag bestimmt nicht der angenehmste, aber es wäre ein anfang bis einer der hiesigen experten :-) was anderes anbietet.

ciao georg

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 18. Mai. 2004 22:53    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 m-troeger 10 Unities + Antwort hilfreich

Hallo Mario,

ich hätte einen ausgefallenen Vorschlag.
Im HPGL-Format werden Bögen in kurze "Linien" zerlegt.

- Als Plotter HP7475 einrichten,
- in Datei Plotten,
- mit "HPGLIN.LSP" diese Plotdatei einfügen.

Wenn Du diesen Weg gehen willst und kein Programm findest das HPGL einlesen kann, melde Dich einfach.

Gruß
Theodor Schönwald

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

.

erstellt am: 19. Mai. 2004 10: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 Nur für m-troeger 10 Unities + Antwort hilfreich

Mal zum testen :

(vl-load-com)
(defun DT:PL-ARG->LINES ( OBJEKT SEGMENTE ERSETZEN? / OBJEKTDATEN PKTANZ  PKT1 PKT2 PKTLIST I1 I2) 
  (if (and(=(type OBJEKT) 'ENAME)
          (member (cdr(assoc 0 (setq OBJEKTDATEN(entget OBJEKT)))) '("LWPOLYLINE" "POLYLINE")) 
      )
    (progn                             
      (setq OBJEKT(vlax-ename->vla-object OBJEKT))     
      (setq PKTANZ(/(length
      (vlax-safearray->list
                        (vlax-variant-value                 
                          (vlax-get-property OBJEKT 'coordinates)
                        )
                      )
    )
    (cond
                      ((=(cdr(assoc 0 OBJEKTDATEN)) "LWPOLYLINE") 2)
                      ((=(cdr(assoc 0 OBJEKTDATEN))   "POLYLINE") 3)
                    )
  ) 
      )     
      (setq I1 0)
      (repeat PKTANZ
        (if(=(length(setq PKT1 (vlax-safearray->list
                                (vlax-variant-value                 
                                  (vlax-get-property OBJEKT 'coordinate I1)
                                )
                              )
                     )
              )
              2
           )
          (setq PKT1 (append PKT1 '(0.0)))
)
        (setq PKTLIST (cons PKT1 PKTLIST))
       
        (if(and(not(equal
       (vlax-invoke-method  OBJEKT 'GetBulge I1)
                     0.0
                     0.000001
                   )
       )
               (/= I1 (- PKTANZ 1))
           )   
          (progn           
           
            (if(=(length(setq PKT2 (vlax-safearray->list
                                     (vlax-variant-value                 
                                       (vlax-get-property OBJEKT 'coordinate (1+ I1))
                                     )
                                   )
                        )
                 )
                 2
               )
              (setq PKT2 (append PKT2 '(0.0)))
    )
            (setq DIST(/(-(vlax-curve-getDistAtPoint OBJEKT (vlax-curve-getclosestpointto OBJEKT PKT2))
                          (vlax-curve-getDistAtPoint OBJEKT (vlax-curve-getclosestpointto OBJEKT PKT1))
                ) 
                SEGMENTE
              )
            )
    (setq I2 0)
    (repeat (- SEGMENTE 1)             
              (setq PKTLIST
                (cons (vlax-curve-getclosestpointto OBJEKT
                        (vlax-curve-getPointAtDist OBJEKT                                              
                                                   (+(vlax-curve-getDistAtPoint OBJEKT (vlax-curve-getclosestpointto OBJEKT PKT1))
                                                     (* DIST (setq I2 (1+ I2)))
                                                   )
                        ) 
                      )
                      PKTLIST
                )
              )
    )
            (if ERSETZEN? (vlax-invoke-method  OBJEKT 'SetBulge I1 0.0))
  ) 
        )
        (setq I1 (1+ I1))
      )
      (setq PKTLIST(reverse PKTLIST))
      (if(=(cdr(assoc 0 OBJEKTDATEN)) "LWPOLYLINE")
        (setq PKTLIST(mapcar '(lambda(x) (list (car x)(cadr x))) PKTLIST))
      )
                       
      (if ERSETZEN?
        (progn
          (setq PKTLIST (apply 'append (reverse PKTLIST)))         
          (vlax-put-property OBJEKT
                             'coordinates
                             (vlax-safearray-fill
                               (vlax-make-safearray
                                 vlax-vbdouble
                                 (cons 0 (- (length PKTLIST) 1))
                               )
                               PKTLIST
                             )
          )
        )
        (progn
          (command "_pline")
          (repeat (length PKTLIST)
            (command (car PKTLIST))
            (setq PKTLIST(cdr PKTLIST))       
          )
          (command "")
        )
      ) 
    )
  )
)


(defun C:PL-ARG->LINES ( / OBJEKT SEGMENTE ERSETZEN? Mod)
  (if (and(setq OBJEKT (ssget "_:S" '((0 . "POLYLINE,LWPOLYLINE"))))
          (setq OBJEKT (ssname OBJEKT 0))
          (setq SEGMENTE (getint "\nANZAHL SEGMENTE : "))
      )
    (progn
      (initget "J N")
      (if (not(setq MOD(getkword "\nPolylinie Ersetzen? [J]a/[N]ein:<J> ")))
        (setq MOD "J")                      
      )
      (if (= MOD "J")
        (DT:PL-ARG->LINES OBJEKT SEGMENTE 'T)
        (DT:PL-ARG->LINES OBJEKT SEGMENTE nil)
      ) 
    ) 
  ) 
)

.. und zum  verbessern ...... ( command ersetzen usw. )

------------------
  - Thomas -

[Diese Nachricht wurde von CADmium am 19. Mai. 2004 editiert.]

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: 19. Mai. 2004 12:48    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 m-troeger 10 Unities + Antwort hilfreich

Hallo,

ich habe mal ein paar Zeilen zusammengeschrieben, die die Bogensegmente in LWPOLYLINEs in eine zu bestimmende Anzahl von Liniensegmente zerlegt.
Schaut es euch an, testet und bei Fragen ...

Code:

(defun c:lwboa (/ selem velem bptli nptli bsp bep abst anzbos dist tmp)
(vl-load-com)
(setq selem (ssget "_:S" '((0 . "LWPOLYLINE"))))
(if selem
(progn
(setq selem (ssname selem 0)
anzbos (getint "\nAnzahl der Segmente je Bogensegment:")
velem (vlax-ename->vla-object selem)
tmp (mapcar '(lambda (GRC)
(mapcar 'cdr
(vl-remove-if-not
'(lambda (E)
(= (car E) GRC)
)
(entget selem)
)
)
)
'(10 42)
)
bptli (vl-remove-if
'(lambda (E)
(equal 0.0 (cadr E) 0.000001)
)
(mapcar 'list
(car tmp)
(cadr tmp)
)
)
)
(foreach BPT
(if
(= :vlax-true (vlax-get-property velem 'closed))
bptli
(reverse(cdr(reverse bptli)))
)
(setq nptli nil
bsp (vlax-curve-getparamAtPoint velem (car BPT))
bep (1+ bsp)
abst (/(-
(vlax-curve-getDistAtParam velem bep)
(setq dist(vlax-curve-getDistAtParam velem bsp))
)
anzbos
)
)
(repeat (1- anzbos)
(setq npt (vlax-curve-getPointAtDist velem (setq dist (+ dist abst)))
nptli (cons npt nptli))
)
(vlax-invoke-method
velem
'SetBulge
bsp
0.0
)
(foreach PT (reverse nptli)
(vla-AddVertex velem (setq bsp (1+ bsp))
(vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1))
(list (car PT)(cadr PT))
)
)
)
)
)
)
)
(princ"\n(defun - Lisp over night!")
(princ"\nhttp://www.defun.de")
(princ"\nAufteilung von Bögen in LWPolyliniensegmente...Start mit: lwboa")


Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

Treffen Sie (defun auf dem Autodesk Anwendertreffen am 15.06. in Steyr/Österreich!

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

m-troeger
Mitglied
gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 19. Mai. 2004 17: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

Danke Euch allen, 

für diese vielen guten Tips und den den interessanten Codes.

@CADmium
Die Routine ist vom Prinzip richtig und erzeugt auch weitestgehend die gewünschte PL. Nur manchmal bastelt sie einen Bogen mit ein, woran das aber liegt hab ich noch nicht herausgefunden. Werde mich mal näher damit beschäftigen.

@Brischke
Dein Code erzeugt genau die gewünschte PL. Respekt. Wenn ich mir den Code ansehe  , bin ich sprachlos. Da ist bestimmt Hexerei mit im Spiel.    Vielen Dank!

Ich würd euch ja glatt einen ausgeben, na dann gibts wenigsten U's

Besten Dank nochmal

------------------
Servus,
Mario 

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: 19. Mai. 2004 17: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 Nur für m-troeger 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von m-troeger:
Da ist bestimmt Hexerei mit im Spiel.
<schnipp>
Ich würd euch ja glatt einen ausgeben, na dann gibts wenigsten U's

Hex Hex ;-)
Aufgeschoben ist nicht aufgehoben. Vielleicht schaffst du es ja auf ein Adesk, oder CAD.de Anwendertreffen.


Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

Treffen Sie (defun auf dem Autodesk Anwendertreffen am 15.06. in Steyr/Österreich!

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

m-troeger
Mitglied
gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 19. Mai. 2004 17:48    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

Jo, geht klar !!!

Na dann noch schönen Feiertag uns schönes Wochenende.
Feiert morgen schön!

Bin echt froh das das ich meine PL's jetzt umrubeln kann.

------------------
Servus,
Mario 

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

m-troeger
Mitglied
gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 19. Okt. 2004 19:21    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


LWBOA-TEST.dwg.txt

 
Hallo,

die Freude wird gedämpft.
Ich hab nun einige LWPL's mit LWBOA bearbeitet, jedoch bleibt hin und wieder ein Bogen standhaft gegen LWBOA.

Ich hänge mal eine dwg zum testen ran.

------------------
Servus,
Mario 

www.the-skier.de

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

m-troeger
Mitglied
gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 21. Okt. 2004 22:41    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 schon wieder

ich will ja nicht nerven, aber wie kann ich PL's mit Bögen filtern, die nach den obigen Progs übrig blieben?
So kann man denen zB eine andere Farbe verpasen um sie kenntlich zu machen, und sie dann manuel bearbeiten.


------------------
Servus,
Mario 

www.the-skier.de

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

Artschie
Mitglied



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

Beiträge: 33
Registriert: 19.02.2008

WinXP | AutoCAD LT 2008 | Adobe Acrobat 8.0

erstellt am: 01. Mai. 2008 10: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 m-troeger 10 Unities + Antwort hilfreich

schönen tag der arbeit erstmal...

...und da ich selbiges auch heute mache bin ich auf diesen beitrag hier gestossen!

das hier gepostete lisp von brischke würde genau mein problem lösen!

nur... bin ich absoluter lisp-anfänger. musste mich erstmal schlau machen, wie das ding überhaupt zum laufen bekommt. hat dann aber doch geklappt...

hab einen bogen mit pe zur poly gemacht, lwboa ausgeführt, eben die poly gewählt, segmente eingegeben...

...nur am ende wirft mir acad "nil" aus und zerstückelt den polylinisierten bogen leider doch nicht. (arbeite derzeit schon mit acad 2009) mache ich da was falsch?

wäre SEHR dankbar über ein skript das auch mit der aktuellsten version funktioniert! ...dann würde das meine planungsarbeiten viel leichter machen!


edit: hab nun "kbla" probiert, funktioniert !!!!!!!!!

wäre aber sehr fein, wenn "lwboa" auch laufen würde. wenn ich das richtig verstanden hab,läuft das eine polylinie entlang und zerlegt jeden bogen der sich auf ihr befindet. würde meine arbeit wiederum beschleunigen. will standard-vorlagenblöcke erstellen! ginge ja auch mit kbla, aber ich finde lwboa irgendwie eleganter!


------------------
pure vernunft darf niemals siegen !!!

[Diese Nachricht wurde von Artschie am 01. Mai. 2008 editiert.]

[Diese Nachricht wurde von Artschie am 01. Mai. 2008 editiert.]

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

.

erstellt am: 03. Mai. 2008 19: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 m-troeger 10 Unities + Antwort hilfreich

Nur als Ergänzung ... in irgendeinem Thread hier im Forum muss  auch die Curves2SegmentPL.VLX.txt verlinkt sein...

------------------
  - 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

mazur-ch
Mitglied



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

Beiträge: 73
Registriert: 31.10.2008

ACAD 2014, Win 7 64Bit

erstellt am: 25. Jun. 2019 17:27    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 m-troeger 10 Unities + Antwort hilfreich

Hallo zusammen

Ich muss ebenfalls aus diverse Polylinien die Bögen eliminieren. Die App (lwboa) von Brischke scheint mir sehr sinnvoll zu sein. Jedoch bemerkte auch ich, dass jeweils ein Bogen (es ist immer der letzte) nicht in gerade Linien umgewandelt wird.

Da ich leider nicht ganz so versiert in Lisp bin, die Frage: an welcher Stelle (vermutlich eine Schlaufe) wird die Schlaufe 1x zu wenig durchlaufen und wie kann ich dies anpassen?

Weitere Frage: wenn ich die Anzahl Segmente fest programmieren möchte, was mach ich falsch, wenn ich:

Code:
(setq anzbos 5)


Statt
Code:
anzbos (getint "\nAnzahl der Segmente je Bogensegment:")

verwende?

Weiter möchte ich alle Polylinien in der Zeichnung durcharbeiten. Dafür müssten vorgängig alle Polylinien ausgewählt werden und dann einzeln verarbeitet werden. Kann ich bei der Stelle

Code:
(setq selem (ssget "_:S" '((0 . "LWPOLYLINE"))))

"selem" jeweils die nächste Polylinie übergeben statt eine nächste von Hand auszuwählen?
Somit wäre das Programm ab der Zeile 3 in weiterem Code eingebettet.

Zitat:
Original erstellt von Brischke:
Hallo,

ich habe mal ein paar Zeilen zusammengeschrieben, die die Bogensegmente in LWPOLYLINEs in eine zu bestimmende Anzahl von Liniensegmente zerlegt.
Schaut es euch an, testet und bei Fragen ...

<BLOCKQUOTE><font size="2" face="Courier New">Code:<HR>
(defun c:lwboa (/ selem velem bptli nptli bsp bep abst anzbos dist tmp)
  (vl-load-com)
  (setq selem (ssget "_:S" '((0 . "LWPOLYLINE"))))
  (if selem
    (progn
      (setq selem (ssname selem 0)
    anzbos (getint "\nAnzahl der Segmente je Bogensegment:")
    velem (vlax-ename->vla-object selem)
    tmp (mapcar '(lambda (GRC)
    (mapcar 'cdr
    (vl-remove-if-not
      '(lambda (E)
  (= (car E) GRC)
  )
      (entget selem)
      )
    )
  )
'(10 42)
)
    bptli (vl-remove-if
    '(lambda (E)
      (equal 0.0 (cadr E) 0.000001)
      )
    (mapcar 'list
    (car tmp)
    (cadr tmp)
    )
    )
    )
  (foreach BPT
  (if
    (= :vlax-true (vlax-get-property velem 'closed))
    bptli
    (reverse(cdr(reverse bptli)))
    )
    (setq nptli nil
  bsp (vlax-curve-getparamAtPoint velem (car BPT))
  bep (1+ bsp)
  abst (/(-
  (vlax-curve-getDistAtParam velem bep)
  (setq dist(vlax-curve-getDistAtParam velem bsp))
  )
anzbos
)
  )
    (repeat (1- anzbos)
      (setq npt (vlax-curve-getPointAtDist velem (setq dist (+ dist abst)))
    nptli (cons npt nptli))
      )
    (vlax-invoke-method
      velem
      'SetBulge
      bsp
      0.0
      )
    (foreach PT (reverse nptli)
      (vla-AddVertex velem (setq bsp (1+ bsp))
(vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1))
  (list (car PT)(cadr PT))
  )
)
      )
    )
  )
    )
  )
(princ"\n(defun - Lisp over night!")
(princ"\nhttp://www.defun.de")
(princ"\nAufteilung von Bögen in LWPolyliniensegmente...Start mit: lwboa")
<HR></font></BLOCKQUOTE>
Grüße Holger


------------------
-----------
Auch wenn ich noch so viel Bier trinke, Goethe war dichter...

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

mazur-ch
Mitglied



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

Beiträge: 73
Registriert: 31.10.2008

ACAD 2014, Win 7 64Bit

erstellt am: 25. Jun. 2019 17:32    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 m-troeger 10 Unities + Antwort hilfreich

doppelt gesendet

[Diese Nachricht wurde von mazur-ch am 25. Jun. 2019 editiert.]

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

mazur-ch
Mitglied



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

Beiträge: 73
Registriert: 31.10.2008

ACAD 2014, Win 7 64Bit

erstellt am: 25. Jun. 2019 17:34    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 m-troeger 10 Unities + Antwort hilfreich

dreifach versendet. Sorry, Browser spinnte

[Diese Nachricht wurde von mazur-ch am 25. Jun. 2019 editiert.]

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 02. Jul. 2019 15:43    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 m-troeger 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!


Zitat:
Original erstellt von m-troeger:
Hallo alle zusammen,

ich brauch mal eure Unterstützung.

Mit PEDIT ist es doch möglich, Polylinien mit Bögen, in Polylinien ohne Kurven zu konvertieren.
Nun wäre es aber für mich interessant, die Bögen in einer Polylinie nicht nur durch eine Gerade, sondern durch eine belibige Anzahl (frei definierbar) von Geraden/Sehnen zu ersetzen.


Hier ist was, mit dem kannst Du die meisten Entities einschließlich Ellipsen und Splines in Polylinien mit geraden Linienstückchen definierter Auflösung umwandeln:

Code:

(defun curve->poly (en / ACCURACY el closedflag lastent len vertexnumber stparam endparam
      diffparam startpt endpt)
  (if (not AT:CURVE->POLY-ACCURACY)
    (setq AT:CURVE->POLY-ACCURACY 0.01)
    )
  (setq ACCURACY AT:CURVE->POLY-ACCURACY)
  (if (= 'ENAME (type en))
    (progn (setq el (entget en)
en (vlax-ename->vla-object en)
  )
    )
    (progn (setq el (entget (vlax-vla-object->ename en))))
  )
  (if (and (assoc 70 el) (logand 1 (cdr (assoc 70 el))))
    (setq closedflag T)
  )
  (setq lastent (entlast))
  (if (vlax-property-available-p en 'Length)
    (setq len (vlax-get-property en 'Length))
    (progn
      (setq len (vlax-curve-getDistAtPoint en (vlax-curve-getEndPoint en)))
      ;; Ellipsenbögen liefern vlax-curve-getDistAtParam = 0 aus:
      (if (= 0.0 len)
(setq len (vlax-curve-getDistAtParam en 1.0))
      )
    )
  )
  (setq vertexnumber (fix (/ len ACCURACY)))
  (if (= 0 vertexnumber)
    (setq vertexnumber 1)
  )
  (setq stparam   (vlax-curve-getstartparam en)
endparam  (vlax-curve-getendparam en)
diffparam (/ (- endparam stparam) (float vertexnumber))
startpt   (trans (vlax-curve-getStartPoint en) 0 1)
endpt   (trans (vlax-curve-getEndPoint en) 0 1)
  )
  (deactivate-osmode)
  (command "._pline" startpt)
  (while (< (+ stparam diffparam) endparam)
    (setq stparam (+ stparam diffparam))
    (setq startpt (vlax-curve-getPointAtParam en stparam))
    (command (trans startpt 0 1))
  )
  (if (= 1 closedflag)
    (command "_cl")
    (command endpt "")
  )
  (restore-osmode)
  (if (not (eq (entlast) lastent))
    (entlast)
  )
)

(defun c:curve->poly ()
  (if (not AT:CURVE->POLY-ACCURACY)
    (setq AT:CURVE->POLY-ACCURACY 0.01)
    )
  (prompt (strcat "\nCURVE->POLY Auflösung: " (vl-prin1-to-string AT:CURVE->POLY-ACCURACY)))
  (if (setq en (car (entsel)))
    (if (member (cdr (assoc 0 (entget en))) '("LINE" "POLYLINE" "LWPOLYLINE" "ARC" "CIRCLE" "ELLIPSE" "SPLINE"))
      (curve->poly en)
      (alert "Fehler: für AT-CURVE->POLY nur zulässig:\n\nLINE, POLYLINE, LWPOLYLINE, ARC, CIRCLE, ELLIPSE, SPLINE")
      )
    )
  (prin1)
  )

   
(defun deactivate-osmode ()
  (if (not AT:OLDOSMODE)
    (setq AT:OLDOSMODE (getvar "osmode"))
  )
  (if (not (or (= 0 AT:OLDOSMODE)
      (< 16384 AT:OLDOSMODE)
  )
      )
    (setvar "osmode" (+ 16384 AT:OLDOSMODE))
  )
)

(defun restore-osmode ()
  (if AT:OLDOSMODE
    (setvar "osmode" AT:OLDOSMODE)
  )
)



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