| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Mittellinie (1448 mal gelesen)
|
Zec Mitglied Cad Konstr.

 Beiträge: 58 Registriert: 28.09.2005
|
erstellt am: 16. Feb. 2006 09:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo, hab da ein kleines problem, vieleicht könnt ihr helfen da ich nicht der lisp-profi bin. folgendes lisp zum erzeugen von mittellinien, aber er übernimmt mir nicht den im programm eingestellten linietyp und linienstärke. ;; Mittellinie zeichnen an Kreise, Bögen, Linien LWPolylinien und Polylinien ;; Die Mittellinien werden zu einer Gruppe zusammengefügt. ;; (d) Schönwald ;; 28.7.2003 V 4.0 ACAD2000 ;; (defun C:M_L (/ ELEM ELDA KR L P1 P2 P3 P4 DS WB WG WB1 DS2 CLTS E1 E2 E3 E4 AS LEER) (defun *ERROR* (MSG) (R_VAR) (princ MSG) (princ)) (setq C_E (getvar "CMDECHO") ; ECHO C_L (getvar "CLAYER") ; Layer O_M (getvar "OSMODE") ; Fang G_M (getvar "GRIDMODE") ; Raster C_S (getvar "CELTSCALE") ; Linienscalierung lokal W_K (getvar "UCSORG") ; BKS LEER (strcat "\n" (chr 160) "\n" (chr 160) "\n" (chr 160) "\n") ) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (setvar "GRIDMODE" 0) (command "_UCS" "_W") ;; Hier kann man einen persönlichen Layer einstellen. ;; Eingestellt ist: Layer 1, Farbe 1, Linientyp MITTE (if (not (tblsearch "LAYER" "0")) (command "LAYER" "MACH" "0" "_COLOR" "0" "" "LT" "STRICHPUNKT" "" "") (command "LAYER" "SE" "0" "") ) (defun R_VAR () (setvar "OSMODE" O_M) (setvar "GRIDMODE" G_M) (command "LAYER" "_SET" C_L "" "REGEN") (command "_UCS" "N" W_K) (setvar "CELTSCALE" C_S) (setvar "CMDECHO" C_E) ) ;;-------------------------------------------------------------- (princ LEER) (setq ELEM (entsel "\nBitte einen Kreis, Bogen oder Linie wählen: ")) (setq ELDA (entget (car ELEM))) (if (or (= (cdr (assoc 0 ELDA)) "CIRCLE") ; wenn Kreis (= (cdr (assoc 0 ELDA)) "ARC") ; wenn Bogen ) (progn ; dann ... (setq MP (cdr (assoc 10 ELDA)) RA (cdr (assoc 40 ELDA)) L (+ RA 3) ; 3 mm Ueberstand ) (if (and (>= RA 2) (< RA 15)) (setq CLTS (* RA 0.08)) (if (< RA 2) (setq CLTS 0.16) (setq CLTS 1) ) ) (setq CLTS (distof (rtos CLTS 2 2))) (setvar "CELTSCALE" CLTS) (command "regen") (setq AS (ssadd)) (command "_LINE" MP (polar MP 0 L) "") (setq E1 (entlast)) (ssadd E1 AS) (command "_LINE" MP (polar MP (* pi (/ 90.0 180.0)) L) "") (setq E2 (entlast)) (ssadd E2 AS) (command "_LINE" MP (polar MP pi L) "") (setq E3 (entlast)) (ssadd E3 AS) (command "_LINE" MP (polar MP (* pi (/ 270.0 180.0)) L) "") (setq E4 (entlast)) (ssadd E4 AS) (command "_group" "" "*" "" AS "") ) ;_end progn ) ;_end if (if (or (= (cdr (assoc 0 ELDA)) "LINE") ; wenn ... (= (cdr (assoc 0 ELDA)) "POLYLINE") (= (cdr (assoc 0 ELDA)) "LWPOLYLINE") ) (progn (setvar "OSMODE" 2) ; Fang (setq P1 (osnap (cadr ELEM) "_MID")) ; Anpickpunkt Mitte (princ LEER) (setq P2 (getpoint "\n... zur nächsten Linie: ")) (setq DS (distance P1 P2)) (setq WB (angle P1 P2)) (setq WG (/ (* WB 180.0) pi)) (setq WB1 (* pi (/ (+ 180 WG) 180.0))) (setq DS2 (+ DS 6.0)) (setq P3 (polar P1 WB1 3.0)) (setq P4 (polar P3 WB DS2)) (command "_LINE" P3 P4 "") ; zeichnen ) ) (R_VAR) (princ) ) ; End defun (princ) danke vorab Zec Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
    

 Beiträge: 1997 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 16. Feb. 2006 09:30 <-- editieren / zitieren --> Unities abgeben:          Nur für Zec
|
Zec Mitglied Cad Konstr.

 Beiträge: 58 Registriert: 28.09.2005
|
erstellt am: 16. Feb. 2006 11:23 <-- editieren / zitieren --> Unities abgeben:         
|
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 16. Feb. 2006 11:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Zec
Poste doch mal was du wirklich drinstehen hast; in dem oben gebrachten Beispiel steht zB Farbe 0 - die gibt's aber nicht... EDIT: oder du nimmst das - das funktioniert nämlich...
Code:
;; Mittellinie zeichnen an Kreise, Bögen, Linien LWPolylinien und Polylinien ;; Die Mittellinien werden zu einer Gruppe zusammengefügt. ;; (d) Schönwald ;; 28.7.2003 V 4.0 ACAD2000 ;; (defun C:M_L (/ ELEM ELDA KR L P1 P2 P3 P4 DS WB WG WB1 DS2 CLTS E1 E2 E3 E4 AS LEER)(defun *ERROR* (MSG) (R_VAR) (princ MSG) (princ)) (setq C_E (getvar "CMDECHO") ; ECHO C_L (getvar "CLAYER") ; Layer O_M (getvar "OSMODE") ; Fang G_M (getvar "GRIDMODE") ; Raster C_S (getvar "CELTSCALE") ; Linienscalierung lokal W_K (getvar "UCSORG") ; BKS LEER (strcat "\n" (chr 160) "\n" (chr 160) "\n" (chr 160) "\n") ) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (setvar "GRIDMODE" 0) (command "_UCS" "_W") ;; Hier kann man einen persönlichen Layer einstellen. ;; Eingestellt ist: Layer 1, Farbe 1, Linientyp MITTE (if (not (tblsearch "LAYER" "1")) (command "_LAYER" "_M" "1" "_C" "1" "" "_L" "MITTE" "" "") (command "_LAYER" "_S" "1" "") ) (defun R_VAR () (setvar "OSMODE" O_M) (setvar "GRIDMODE" G_M) (command "_LAYER" "_SET" C_L "" "REGEN") (command "_UCS" "_N" W_K) (setvar "CELTSCALE" C_S) (setvar "CMDECHO" C_E) ) ;;-------------------------------------------------------------- (princ LEER) (setq ELEM (entsel "\nBitte einen Kreis, Bogen oder Linie wählen: ")) (setq ELDA (entget (car ELEM))) (if (or (= (cdr (assoc 0 ELDA)) "CIRCLE") ; wenn Kreis (= (cdr (assoc 0 ELDA)) "ARC") ; wenn Bogen ) (progn ; dann ... (setq MP (cdr (assoc 10 ELDA)) RA (cdr (assoc 40 ELDA)) L (+ RA 3) ; 3 mm Ueberstand ) (if (and (>= RA 2) (< RA 15)) (setq CLTS (* RA 0.08)) (if (< RA 2) (setq CLTS 0.16) (setq CLTS 1) ) ) (setq CLTS (distof (rtos CLTS 2 2))) (setvar "CELTSCALE" CLTS) (command "regen") (setq AS (ssadd)) (command "_LINE" MP (polar MP 0 L) "") (setq E1 (entlast)) (ssadd E1 AS) (command "_LINE" MP (polar MP (* pi (/ 90.0 180.0)) L) "") (setq E2 (entlast)) (ssadd E2 AS) (command "_LINE" MP (polar MP pi L) "") (setq E3 (entlast)) (ssadd E3 AS) (command "_LINE" MP (polar MP (* pi (/ 270.0 180.0)) L) "") (setq E4 (entlast)) (ssadd E4 AS) (command "_group" "" "*" "" AS "") ) ;_end progn ) ;_end if (if (or (= (cdr (assoc 0 ELDA)) "LINE") ; wenn ... (= (cdr (assoc 0 ELDA)) "POLYLINE") (= (cdr (assoc 0 ELDA)) "LWPOLYLINE") ) (progn (setvar "OSMODE" 2) ; Fang (setq P1 (osnap (cadr ELEM) "_MID")) ; Anpickpunkt Mitte (princ LEER) (setq P2 (getpoint "\n... zur nächsten Linie: ")) (setq DS (distance P1 P2)) (setq WB (angle P1 P2)) (setq WG (/ (* WB 180.0) pi)) (setq WB1 (* pi (/ (+ 180 WG) 180.0))) (setq DS2 (+ DS 6.0)) (setq P3 (polar P1 WB1 3.0)) (setq P4 (polar P3 WB DS2)) (command "_LINE" P3 P4 "") ; zeichnen ) ) (R_VAR) (princ) ) ; End defun (princ)
------------------ Grüsse Thomas [Diese Nachricht wurde von tunnelbauer am 16. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zec Mitglied Cad Konstr.

 Beiträge: 58 Registriert: 28.09.2005
|
erstellt am: 16. Feb. 2006 12:15 <-- editieren / zitieren --> Unities abgeben:         
|
Theodor Schoenwald Ehrenmitglied
    
 Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 16. Feb. 2006 15:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Zec
|
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 16. Feb. 2006 15:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Zec
Unterschiede sind (hab's jetzt nochmal von deiner Seite gezogen) Zeile 25+26: Code:
(command "_LAYER" "_M" "1" "_C" "1" "" "_L" "MITTE" "" "") (command "_LAYER" "_S" "1" "")
Zeile 32: Code:
(command "_LAYER" "_SET" C_L "" "REGEN")
Aber ich habe mit der Linie "MITTE" auch so meine Liebe Not, da es diese bei mir nicht gibt... Vielleicht lässt sich das was besseres finden... ------------------ Grüsse Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
    
 Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 16. Feb. 2006 16:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Zec
|