(defun C:Blech (/ dcl_id ok lstmat lstdicke lstfarbe lstjanein Material Dicke Farbe Schraff Beschr Teil) (setq dcl_id (load_dialog "Reichel_Boxen.dcl")) (if (not (new_dialog "Blech_box" dcl_id)) (exit)) (setq lstmat (list "Stahl" "Alu" "Edelstahl")) (start_list "blech_mat") (mapcar 'add_list lstmat) (end_list) (set_tile "blech_mat" "0") (setq lstdicke (list "1" "1.5" "2" "2.5" "3" "4" "5" "6" "8" "10" "12" "15" "20")) (start_list "blech_dicke") (mapcar 'add_list lstdicke) (end_list) (set_tile "blech_dicke" "4") (setq lstfarbe (list "keine" "vz" "fvz" "Fb01" "Fb02" "Fb03" "Fb04" "Fb05" "Fb06")) (start_list "blech_farbe") (mapcar 'add_list lstfarbe) (end_list) (set_tile "blech_farbe" "0") (setq lstjanein (list "Ja" "Nein")) (start_list "blech_schraff") (mapcar 'add_list lstjanein) (end_list) (set_tile "blech_schraff" "0") (start_list "blech_beschr") (mapcar 'add_list lstjanein) (end_list) (set_tile "blech_beschr" "0") (action_tile "akzeptieren" "(setq Material (nth (atoi (get_tile \"blech_mat\")) lstmat)) (setq dicke (nth (atoi (get_tile \"blech_dicke\")) lstdicke)) (setq Farbe (nth (atoi (get_tile \"blech_farbe\")) lstfarbe)) (setq Schraff (nth (atoi (get_tile \"blech_schraff\")) lstjanein)) (setq Beschr (nth (atoi (get_tile \"blech_beschr\")) lstjanein)) (done_dialog 1)" ) (action_tile "abbrechen" "(done_dialog 0)" ) (start_dialog) (unload_dialog dcl_id) (if (= (strcat MATERIAL) "Stahl") (progn (setq teil (strcat "StBl ")) ) ) (if (= (strcat MATERIAL) "Alu") (progn (setq teil (strcat "AlBl ")) ) ) (if (= (strcat MATERIAL) "Edelstahl") (progn (setq teil (strcat "EStBl ")) ) ) (if (= (strcat Farbe) "keine") (progn (setq farbe (strcat "")) ) ) (command "_ucs" "_w");Koordinatensystem auf Welt setzen (setq obj1 (car (entsel "\nPolylinie w?hlen: "))) ;(setq obj1valtmp (ssname obj1 0)) (if (not (wcmatch (cdr (assoc 0 (entget obj1))) "LWPOLYLINE"));Wenn gew?hltes Objekt keine 2D-Polylinie, dann Abbruch (alert "Das gew?hlte Objekt ist keine Polylinie. Funktion beendet!") (progn (setq obj1val (vlax-ename->vla-object obj1)) (setq stpt (vlax-curve-getstartpoint obj1val)) (setq edpt (vlax-curve-getendpoint obj1val)) (if (equal stpt edpt);Wenn Kontur geschlossen, dann Abbruch (alert "Diese Operation ist bei geschlossenen Konturen nicht m?glich. Funktion beendet!") (Progn (setq osmodetmp (getvar "OSMODE"));Objektfang ausschalten, wenn aktiv (if (<= osmodetmp 16383) (progn (setvar "OSMODE" (+ osmodetmp 16384))(princ "\n")) ) (setq breite (atof Dicke)) (setq seite (Getpoint "\nSeite f?r Blechverlauf klicken: ")) (if (= (strcat MATERIAL) "Alu") (progn (setq obj1_data (entget obj1)); Eigenschaften PL (if (assoc 8 obj1_data) (setq obj1_data (subst (cons 8 "---Alu") (assoc 8 obj1_data) obj1_data)) (setq obj1_data (reverse (cons (cons 8 "---Alu") (reverse obj1_data)))) ) (entmod obj1_data) ) (progn (if (= (strcat Material) "Stahl") (progn (setq obj1_data (entget obj1)); Eigenschaften PL (if (assoc 8 obj1_data) (setq obj1_data (subst (cons 8 "---Stahl") (assoc 8 obj1_data) obj1_data)) (setq obj1_data (reverse (cons (cons 8 "---Stahl") (reverse obj1_data)))) ) (entmod obj1_data) ) (progn (setq obj1_data (entget obj1)); Eigenschaften PL (if (assoc 8 obj1_data) (setq obj1_data (subst (cons 8 "---Edelstahl") (assoc 8 obj1_data) obj1_data)) (setq obj1_data (reverse (cons (cons 8 "---Edelstahl") (reverse obj1_data)))) ) (entmod obj1_data) ) ) ) ) (command "_offset" (/ breite 2) obj1 seite ""); Mittellinie erzeugen (setq objtmp (entlast)) (setvar "filletrad" (* breite 1.5)); Rundungsradius Mittellinie (command "_fillet" "_p" objtmp) (setq objtmpname (vlax-ename->vla-object (entlast))); Deklaration VLA-Objekt objtmpname (command "_erase" obj1 "");Ursprungslinie l?schen (setq stpt (vlax-curve-getstartpoint objtmpname));Startpunkt (setq pt2 (vlax-curve-getpointatdist objtmpname 1));n?chster Punkt (setq winkel (angle stpt pt2));Winkel zwischen den Punkten (if (< winkel 0.1);Wenn Winkel sehr klein, (setq oswinkel1 (- pi 0.1));dann Offsetwinkel 1 auf knapp 180° (setq oswinkel1 (- winkel 0.02));sonst Offsetwinkel 1 kleiner Winkel ) (if (< winkel 0.1);Wenn Winkel sehr klein, (setq oswinkel2 (+ pi 3));dann Offsetwinkel 2 auf knapp 360° (setq oswinkel2 (+ winkel 0.02));sonst Offsetwinkel 2 gro?er Winkel ) (setq seite (polar stpt oswinkel1 2));Punktdefinition f?r Versetzen (setq seite2 (polar stpt oswinkel2 2));Punktdefinition f?r Versetzen (command "_offset" (/ breite 2) objtmp seite "");PL auf Blechseite versetzen (setq obj2 (entlast)) (command "_offset" (/ breite 2) objtmp seite2 "");PL auf Gegenseite versetzen (setq obj3 (entlast)) (command "_erase" objtmp "");Mittellinie l?schen (command "_PEDIT";Enden der PL verbinden "_M" obj2 obj3 "" ; Ende Objektwahl "_J" ; Verbinden "_J" ; Verbindungstyp "_A" ; Hinzuf?gen (1+ breite) ; Blechdicke (+1 zur Sicherheit) "_X" ; Exit ) (setq schraffobj (entlast)) (if (= (strcat Schraff) "Ja") (progn (if (/= (strcat Material) "Alu") (progn (command "_-hatch" "_c" "VonLayer" "_a" "_a" "" "" "_p" "ANSI32" 1 0 "_s" schraffobj "" "") (setq schraffur (entlast)) (setq schraffur_data (entget schraffur)) (if (assoc 8 schraffur_data) (setq schraffur_data (subst (cons 8 "---Schraffur") (assoc 8 schraffur_data) schraffur_data)) (setq schraffur_data (reverse (cons (cons 8 "---Schraffur") (reverse schraffur_data)))) ) (entmod schraffur_data) ) (progn (command "_-hatch" "_c" "_t" "219,219,219" "" "_a" "_a" "" "" "_p" "Solid" "_s" schraffobj "" "") (setq schraffur (entlast)) (setq schraffur_data (entget schraffur)) (if (assoc 8 schraffur_data) (setq schraffur_data (subst (cons 8 "---Schraffur") (assoc 8 schraffur_data) schraffur_data)) (setq schraffur_data (reverse (cons (cons 8 "---Schraffur") (reverse schraffur_data)))) ) (entmod schraffur_data) ) ) ) ) (setq osmodetmp (getvar "OSMODE"));Objektfang einschalten (if (> osmodetmp 16383) (progn(setvar "OSMODE" (- osmodetmp 16384))(princ "\n")) ) ) ) ) ) ; ) (command "_ucs" "_p");Koordinatensystem auf vorheriges setzen (if (= (strcat Beschr) "Ja") (Progn (command "_mleader" (getpoint "\nP1") (getpoint "\nP2") (strcat teil Dicke " mm " Farbe));Beschriftung erstellen (setq mleader (entlast)) (setq mleader_data (entget mleader)) (if (assoc 8 mleader_data) (setq mleader_data (subst (cons 8 "---BEM") (assoc 8 mleader_data) mleader_data)) (setq mleader_data (reverse (cons (cons 8 "---BEM") (reverse mleader_data)))) ) (entmod mleader_data) ) ) )