Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  mittellinie (und ewig grüßt das murmeltier)

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 (und ewig grüßt das murmeltier) (1164 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: 24. Jul. 2006 09: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

hallo zusammen,

benötige mal hilfe bei einem kleine problem, ich stell den linientyp ein und er wird nicht so ausgeführt, geschweige den die farbe.

danke vorab

autocad 2004
tga-desktop 6.0

lisp:
---------------------------------------------------------------
;; 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" "10" "" "_L" "STRICHPUNKT" "" "")
  (command "_LAYER" "_S" "1" "")
)

(defun R_VAR ()
  (setvar "OSMODE" O_M)
  (setvar "GRIDMODE" G_M)
  (command "_LAYER" "_SET" C_L "" "REGEN")
  (command "_UCS" "O" 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)
------------------------------------------------------
gruß
ZEC

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 24. Jul. 2006 09:46    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

Also du hast es ordentlich geändert, es funktioniert einwandfrei.
Farbe="10" , LType="Strichpunkt"

Frage: Gibt es den Layer "1" evtl bereits in deiner Zeichnung ?
Dann wird nämlich auch nichts geändert ! Es wird geprüft ob
es den Layer bereits gibt, wenn nein: Erstellen, wenn ja - so
belassen. Dafür ist die "Wenn/dies stimmt/mache das/ansonsten jenes"
Konstruktion da "(IF..." <siehe Acad-Entwicklerhilfe>

Code:

(if (not (tblsearch "LAYER" "1"))
(command "_LAYER" "_M" "1" "_C" "10" "" "_L" "STRICHPUNKT" "" "")
(command "_LAYER" "_S" "1" "")
)

Wenn du das rausnimmst, so erstellt er den Layer oder
überschreibt die vorhandene Layer-Definition. 

PS.: Wenn du es rausnehmen solltest, so vermerke das als
Kommentar in der Kopfzeile,
weil es ja nicht mehr dem Lisp von T.Schönwald vom 28.7.2003 entspricht.

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: 25. Jul. 2006 09: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 cadffm,

habs nochmal gecheckt und es klappt nicht, auch wenn layer 1 vorhanden ist, er nimmt keine farbe geschweige denn linientyp.

lieg es am acad 2004 ?

gruss
ZEC

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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

Autocad 2005-2010
Microstation V8
Photoshop CS4 + Camera Raw
Nikon Capture NX2
Nikon D90

erstellt am: 25. Jul. 2006 10:26    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

Zitat:
Original erstellt von Zec:
hallo cadffm,

habs nochmal gecheckt und es klappt nicht, auch wenn layer 1 vorhanden ist, er nimmt keine farbe geschweige denn linientyp.

lieg es am acad 2004 ?

gruss
ZEC


Yep, kann ich auch bestätigen 
Der Grund liegt hier!
Code:
(if (not (tblsearch "LAYER" "1"))
(command "_LAYER" "_M" "1" "_C" "10" "" "_L" "STRICHPUNKT" "" "")
(command "_LAYER" "_S" "1" "")
)

Klar, oder ?   

Theodor verfolgt dabei folgendes Ziel:
Der Layer wird mit vorgegebenen Attributen erstellt, danach wird einfach nur noch der Layer aktuell gesetzt. Wenn du aber grundsätzlich Attribute setzen willst, dann ändere es doch so ab, daß du das if... einfach wegläßt:

Code:
(command "_LAYER" "_M" "1" "_C" "10" "" "_L" "STRICHPUNKT" "" "")
Der Layer wird bei vorhandensein aktuell gesetzt mit den gewünschten Attributen (Eigenschaftswerte), gibt also kein Fehlerabbruch!
Nachteil, aber vernachlässigbar IMHO: bei jedem Aufruf wird dem Layer Attributswerte übergeben.

Greets Rolf

------------------
CADmaro.de

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: 25. Jul. 2006 12: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

Hallo,

ich geb auf, entweder ist es zu warm oder
"mei maschi is hi" wie wir in bayern sagen,
es klappt einfach nicht, wenn ich if... weglasse, und nur die Zeile

command "_LAYER" "_M" "1" "_C" "10" "" "_L" "STRICHPUNKT" "" "")

stehen lasse macht er genau das gleiche -> nämlich keine strichlinie oder farbe.

was mach ich falsch ?

gruss
ZEC

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