Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  Lisp
  Polylinienendpunktabstände markieren

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  Polylinienendpunktabstände markieren (744 mal gelesen)
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: 28. Mai. 2004 11: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

Hab da Lisp gefunden, jedoch funktioniert es nicht mit Polylinien ""Fehlerhafter Argumenttyp: numberp: nil"". Kann da einer mit Krücke an den Kopp werfen ? 
Code:

; Locates and marks ends of arcs, lines, and plines that are close
; but not exactly coincident.
; Gaps are marked by drawing circles on the current layer.
; Set to the layer you want the marker circles on and run
;  Command: GAPS
; You can select part of a drawing to check or press ENTER to check
; The whole drawing.
; 9/27/93 LW, Robert McNeel & Associates

; These are distances to control how the gaps are located
(setq gaplimit 5.0) ; Gaps less than this, but more than fluff are marked
(setq circlesize 2.0) ; Size of circle to mark gaps with
(setq fluff 1.0) ; Gaps less than this are not marked
(defun dxf (x e) (cdr (assoc x e)))
; Removes entities other than ine, pline, arc from a selection set
(defun checkss (ss / i)
(setq i (sslength ss))
(while (> i 0)
(setq i (1- i))
(setq ent (entget (ssname ss i)))
(or
(= "LINE" (dxf 0 ent))
(= "POLYLINE" (dxf 0 ent))
(= "ARC" (dxf 0 ent))
(ssdel (ssname ss i) ss)
)
)
(if (> (sslength ss) 0)
ss
)
)
; Returns the endpoints of lines, arcs and pines
(defun endsofent (ent / v e1 e2)
(cond
((= "LINE" (dxf 0 ent))
(list (dxf 10 ent) (dxf 11 ent))
)
((= "ARC" (dxf 0 ent))
(list
(polar (dxf 10 ent) (dxf 50 ent) (dxf 40 ent))
(polar (dxf 10 ent) (dxf 51 ent) (dxf 40 ent))
)
)
((= "*POLYLINE" (dxf 0 ent))
(setq v (entget (entnext (dxf -1 ent))))
(setq e1 (dxf 10 v))
(while (/= "SEQEND" (dxf 0 v))
(setq e2 (dxf 10 v))
(setq v (entget (entnext (dxf -1 v))))
)
(list e1 e2)
)

)
)
; gets a selection set of all entities near a point
(defun ssat (pt dist)
(ssget "_C"
(list (- (car pt) dist) (- (cadr pt) dist))
(list (+ (car pt) dist) (+ (cadr pt) dist))
)
)
; Looks through a selection set and finds ends near but not at ends
; of other entities
(defun markgaps (ss / i ends)
(setq i (sslength ss))
(while (> i 0)
(setq i (1- i))
(setq ent (entget (ssname ss i)))
(setq ends (endsofent ent))
; (princ "\n")
; (princ (car ends))
; (princ  " -- ")
; (princ (cadr ends))
(endsnear (car ends) gaplimit)
(endsnear (cadr ends) gaplimit)
)
)
(defun circle (pt r)
(setvar "cmdecho" 0)
  (command "_point" pt)
;;;(command "_circle" pt r)
(setvar "cmdecho" 1)
)
; Finds the entities near a point and marks their ends if they
; are also near the point
(defun endsnear ( pt dist / ent ends)
(if (setq sse (ssat pt dist))
(progn
(setq j (sslength sse))
(while (> j 0)
(setq j (1- j))
(setq ent (entget (ssname sse j)))
(if
(setq ends (endsofent ent))
(progn
(setq d (distance (car ends) pt))
(if (< 0.0 d gaplimit)
(circle pt circlesize)
)
(setq d (distance (cadr ends) pt))
(if (< 0.0 d gaplimit)
(circle pt circlesize)
)
)
)
)
)
)
)
; Main control function
(defun c:gaps ( / ss )
(or
(and
(setq ss (ssget))
(setq ss (checkss ss))
)
(setq ss (ssget "X"
'((-4 . "<OR")
(0 . "LINE")
(0 . "ARC")
(0 . "*POLYLINE")
  (-4 . "OR>")
))
)
)
(markgaps ss)
(princ)
)


Ein paar Treffer für die Suchfunktion: Spalt, Öffnung, Lücke, Durchbruch, Abstand, Bresche und Kluft


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



Anzeige:Infos zum Werbeplatz >>

CADPower V23 CAD APP für Tiefbau, Allgemeine Werkzeuge, Mechanik

CADPower ist ein domänenneutrales Produktivitätstool für .dwg-CAD-Nutzer mit über 400 Lisp-Routinen und Werkzeugen für häufige Aufgaben. Es steigert die Effizienz von AutoCAD- und BricsCAD-Anwendern. Die Entwicklung basiert vollständig auf dem Feedback realer Nutzer.

valerich
Mitglied
Programmierer


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

Beiträge: 12
Registriert: 22.09.2003

erstellt am: 28. Mai. 2004 13: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 Proxy 10 Unities + Antwort hilfreich

Hallo Proxy,

die Zeile
((= "*POLYLINE" (dxf 0 ent))
in (defun endsofent ....
ersätze durch
(wcmatch (dxf 0 ent)"*POLYLINE" ).
Aber, das ist nur eine schnele Lösung.

Gruß Serghei

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)2025 CAD.de | Impressum | Datenschutz