| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Polylinienendpunktabstände markieren (728 mal gelesen)
|
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 28. Mai. 2004 11:42 <-- editieren / zitieren --> Unities abgeben:
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 |
valerich Mitglied Programmierer
Beiträge: 12 Registriert: 22.09.2003
|
erstellt am: 28. Mai. 2004 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|