Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Mittellinie

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:  Mittellinie (1225 mal gelesen)
Zec
Mitglied
Cad Konstr.


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

Beiträge: 58
Registriert: 28.09.2005

erstellt am: 16. Feb. 2006 09: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

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




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 16. Feb. 2006 09: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 Zec 10 Unities + Antwort hilfreich

Den Übernimmt er auch nur dann, wenn der Layer noch nicht existiert. der Layer 0 ist aber immer und sicherlich mit anderen Eigenschaften vorhanden.

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

Zec
Mitglied
Cad Konstr.


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

Beiträge: 58
Registriert: 28.09.2005

erstellt am: 16. Feb. 2006 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,

habe layer auf 1, übernimmt trotzdem nicht den linientyp, das einzige was er ändert ist die farbe.

was muß ich ändern?

mfg
Zec

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 16. Feb. 2006 11:35    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 Zec 10 Unities + Antwort hilfreich

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.


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

Beiträge: 58
Registriert: 28.09.2005

erstellt am: 16. Feb. 2006 12:15    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 hat geklappt!!

mfg
ZEC

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: 16. Feb. 2006 15: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 Zec 10 Unities + Antwort hilfreich

Hallo Thomas,

hast Du nur "LT" zu "_L" geändert? Oder noch mehr?

Dann kann ich es im Original auch ändern, wenn z.B. "LT" nicht will.

Gruß
Theodor Schönwald

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 16. Feb. 2006 15: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 Zec 10 Unities + Antwort hilfreich

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



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: 16. Feb. 2006 16:09    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 Zec 10 Unities + Antwort hilfreich

Danke Thomas,

das habe ich auch noch gefunden:

(command "_UCS" "N" W_K)

ist so besser

(command "_UCS" "O" W_K)

Gruß
Theodor

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