(defun ROUND (ZAHL STELLEN / TEMP ) (setq ZAHL (cdr (assoc 40 Ltentlist))) (setq STELLEN 6) (if (and(numberp ZAHL) (=(type STELLEN) 'INT)) (progn (setq TEMP (abs ZAHL)) (repeat STELLEN (setq TEMP (* TEMP 10.0))) (cond ( (> (- TEMP (fix TEMP)) 0.5) (setq TEMP (+ (fix TEMP) 1))) ( (< (- TEMP (fix TEMP)) 0.5) (setq TEMP (fix TEMP) )) ( (= (- TEMP (fix TEMP)) 0.5) (if (equal (/ (fix TEMP) 2.0) (fix(/ (fix TEMP) 2.0)) 0.001) (setq TEMP (fix TEMP) ) (setq TEMP (+ (fix TEMP) 1)) ) ) ) (repeat STELLEN (setq TEMP (/ TEMP 10.0))) (setq TEMP (* TEMP (if (< Zahl 0 ) -1.0 1.0))) ) ) TEMP ) ;----------------------------- (defun LstToString ( lst del / str ) (setq str (car lst)) (foreach itm (cdr lst) (setq str (strcat str del itm))) str );end defun LstToString ;----------------------------- ;einfacher Linientyp (defun ltakteinfach ( / penUpDown,Ltentlistnewtemp,Ltentlistnew) (setq anzPenUpDown (length (vl-remove-if-not '(lambda (x) (= (car X) 49)) Ltentlist))) ; (print "Anzahl Stift rauf Stift runter: ")(princ anzPenUpDown)(princ " -> einfacher Linientyp wird aktualisiert ")(terpri) (setq abbruch "abbruch") (setq Ltentlistnewtemp nil) (setq Ltentlistnewtemp (vl-remove-if '(lambda (x) (= (car X) 49)) Ltentlist)) (setq Ltentlistnewtemp (vl-remove-if '(lambda (x) (= (car X) 74)) Ltentlistnewtemp)) (setq Ltentlistnew Ltentlist) (foreach listpart Ltentlistnew ; (print "listpart: ")(princ listpart)(terpri) ; (print "listpart vorne: ")(princ (car listpart))(terpri) (if (= (car listpart) 40) (progn (setq Ltentlistnewtemp (subst (cons 40 (* (cdr listpart) 25.4))(assoc 40 Ltentlistnewtemp) Ltentlistnewtemp)) ; (print "40 neu: ")(princ (assoc 40 Ltentlistnewtemp))(terpri) ; (print "neue Entityliste für entmod: ")(princ Ltentlistnewtemp)(terpri) );end progn );end if (if (= (car listpart) 49) (progn (setq Ltentlistnewtemp (append Ltentlistnewtemp (list (cons 49 (* (cdr listpart) 25.4)))(list (cons 74 0)))) ; (print "49 neu: ")(princ (assoc 49 Ltentlistnewtemp))(terpri) ; (print "neue Entityliste für entmod: ")(princ Ltentlistnewtemp)(terpri) );end progn );end if );end foreach ; (print "nun kommt entmod in ltakteinfach")(terpri) ; (print "neue Entityliste für entmod: ")(princ Ltentlistnewtemp)(terpri) (entmod Ltentlistnewtemp) ; (print "verlasse ltakteinfach")(terpri) );end defun ltakteinfach ;----------------------------- (defun Update_XrefLt ( / acadapp,archbasedbpref,AECZeichnungseinheitenwert,AECZeichnungseingeiten,blktbllst,lauf,xrefnamelst,anzxref,xrefmeternamelst,xrefEinheitfaktor,XrefUnit,wmatchbedxref,wmatchbedxreflay,testlauf,linetypelst,LtObjName,lintypist,lintypsoll,ltlenges,entfxrefnamelst,entfxrefentlst,laufnew,vorhxref,entfxrefnamestrlen,entfxrefnamelstneu,dul,xrefunload) ;------------------------------------------------------ ;begin ACA Zeichnungeinheiten ermitteln (setq acadapp (vlax-get-acad-object) actdoc (vlax-get acadapp "ActiveDocument") archbasedoc (vlax-invoke acadapp "getinterfaceobject" "AecX.AecArchBaseDocument.8.0")) (vlax-invoke archbasedoc "init" actdoc) (setq archbasedbpref (vla-get-preferences archbasedoc)) (setq AECZeichnungseinheitenwert (vlax-get archbasedbpref "LinearUnit")) (cond ((= AECZeichnungseinheitenwert 25) (setq AECZeichnungseingeiten "Millimeter")) ((= AECZeichnungseinheitenwert 23) (setq AECZeichnungseingeiten "Dezimeter")) ((= AECZeichnungseinheitenwert 2) (setq AECZeichnungseingeiten "Meter")) ((= AECZeichnungseinheitenwert 30) (setq AECZeichnungseingeiten "Fuß")) ((= AECZeichnungseinheitenwert 31) (setq AECZeichnungseingeiten "Zoll")) (t nil) );end cond ; (print "aktuelle ACA-Zeichnungseinheit: ")(princ AECZeichnungseingeiten) ;end ACA Zeichnungeinheiten ermitteln ;------------------------------------------------------ ;begin suche alle Xrefs ; (print "bin in Update_XrefLt: ")(terpri) (setq blktbllst 0) (setq lauf 0) (setq xrefnamelst nil) (setq entfxrefnamelst nil) (while (/= blktbllst nil) (setq blktbllst (tblnext "Block")) ; (print "bin in while-schleife in Update_XrefLt, blktbllst: ")(princ blktbllst)(terpri) (if (and (/= (cdr (assoc 1 blktbllst)) nil);ist Xref (/= (findfile (cdr(assoc 1 blktbllst))) nil);Xref gefunden ) (progn ; (print "Xref gefunden: ")(princ (cdr(assoc 1 blktbllst)))(terpri) (if (= lauf 0) (progn ;----------------------------- ;entfernet Xrefs in Extra-Liste sammeln (if (or (and (= (cdr (assoc 70 blktbllst)) 4);Xref zugeordnet und entfernt oder verschachtelt und nicht gefunden oder nicht refernziert (/= (cdr (assoc 71 (entget(tblobjname "BLOCK" (cdr (assoc 2 blktbllst)))))) nil);Flagbit (71 . 1) -> Xref verschachtelt und entfernt (= (assoc 331 (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" (cdr (assoc 2 blktbllst)))))))) nil);Xref verschachtelt, nicht in Zeichnung positioniert );end and (and (= (cdr (assoc 70 blktbllst)) 4);Xref zugeordnet und entfernt oder verschachtelt und nicht gefunden oder nicht refernziert (/= (assoc 331 (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" (cdr (assoc 2 blktbllst)))))))) nil);Xref in Zeichnung positioniert );end and (= (cdr (assoc 70 blktbllst)) 12);Xref überlagert und entfernt );end or (progn ; (print "in lauf 0: ")(princ (cdr (assoc 1 blktbllst)))(princ " und findfile ")(princ (findfile (cdr(assoc 1 blktbllst))))(terpri) (setq entfxrefnamelst (list (cdr (assoc 2 blktbllst))));Name von erstem entferntem Xref in Liste sammeln ; (print "Objektname von entferntem Xref: ")(princ (cdr (assoc 331 (entget (cdr (assoc 330 (entget (cdr (assoc -2 blktbllst)))))))))(terpri) ; (print "erstes entferntes Xrefs: ")(princ entfxrefnamelst)(terpri) );end progn );end if ;end entfernet Xrefs in Extra-Liste sammeln ;----------------------------- (setq xrefnamelst (list (cdr (assoc 2 blktbllst))));Name von erstem Xref in Liste sammeln ; (print "Entityliste in Lauf 0: ")(princ blktbllst)(terpri) ; (print "Xrefs in Liste Lauf 0: ")(princ xrefnamelst)(terpri) );end progn );end if = lauf 0 ;----------------------------- (if (> lauf 0) (progn ;----------------------------- ;weitere entfernet Xrefs in Extra-Liste sammeln (if (or (and (= (cdr (assoc 70 blktbllst)) 4);Xref zugeordnet und entfernt oder verschachtelt und nicht gefunden oder nicht refernziert (/= (cdr (assoc 71 (entget(tblobjname "BLOCK" (cdr (assoc 2 blktbllst)))))) nil);Flagbit (71 . 1) -> Xref verschachtelt und entfernt (= (assoc 331 (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" (cdr (assoc 2 blktbllst)))))))) nil);Xref verschachtelt, nicht in Zeichnung positioniert );end and (and (= (cdr (assoc 70 blktbllst)) 4);Xref zugeordnet und entfernt oder verschachtelt und nicht gefunden oder nicht refernziert (/= (assoc 331 (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" (cdr (assoc 2 blktbllst)))))))) nil);Xref in Zeichnung positioniert );end and (= (cdr (assoc 70 blktbllst)) 12);Xref überlagert und entfernt );end or (progn ; (print "in lauf ")(princ lauf)(princ " -> ")(princ (cdr (assoc 1 blktbllst)))(princ " und findfile ")(princ (findfile (cdr(assoc 1 blktbllst))))(terpri) (if (/= entfxrefnamelst nil) (progn (setq entfxrefnamelst (append (list (cdr (assoc 2 blktbllst)))entfxrefnamelst));Namen von weiteren entfernten Xrefs in Liste sammeln );end progn );end if (if (= entfxrefnamelst nil) (progn (setq entfxrefnamelst (list (cdr (assoc 2 blktbllst))));Name von erstem entferntem Xref in Liste sammeln );end progn );end if ; (print "Objektname von entferntem Xref: ")(princ (cdr (assoc 331 (entget (cdr (assoc 330 (entget (cdr (assoc -2 blktbllst)))))))))(terpri) ; (print "entfernte Xrefs: ")(princ entfxrefnamelst)(terpri) );end progn );end if ;end entfernet Xrefs in Extra-Liste sammeln ;----------------------------- (setq xrefnamelst (append (list (cdr (assoc 2 blktbllst)))xrefnamelst));Namen von weiteren Xrefs in Liste sammeln ; (print "Entityliste in Lauf ")(princ lauf)(princ " :")(princ blktbllst)(terpri) ; (print "Xrefs in Liste Lauf ")(princ lauf)(princ " :")(princ xrefnamelst)(terpri) );end progn );end if > lauf 0 ;----------------------------- (setq lauf (+ lauf 1)) );end progn );end if );end while ; (print "blktbllst: ")(princ blktbllst)(terpri) ;----------------------------- ;nach alle Xrefs neu laden teste ob Xref nicht gefunden (command "-xref" "_r" "*");alle Xrefs neuladen ; (print "bin in teste ob Xref nicht gefunden: ")(terpri) ;----------------------------- ;suche nach Xref nicht gefunden oder nicht refernziert (foreach notfoundxref xrefnamelst (setq entfxrefentlst (entget(tblobjname "BLOCK" notfoundxref)));Entityliste von Xref (if (= (cdr (assoc 70 entfxrefentlst)) 4);nach alle Xrefs neuladen immer noch (70 . 4) -> Xref nicht gefunden oder nicht refernziert (progn (setq missingxref (cdr(assoc 2 entfxrefentlst))) ; (print missingxref)(princ " in Testlauf 2: nicht gefunden")(terpri) ;(CheckXREFnichtGefunden) (setq missingxref nil) );end progn );end if wenn Xref nicht gefunden );end foreach ;end suche nach Xref nicht gefunden oder nicht refernziert ;----------------------------- (setq laufnew 0) (foreach vorhxreflst xrefnamelst (setq vorhxref (entget(tblobjname "BLOCK" vorhxreflst))) (if (/= (cdr (assoc 70 entfxrefentlst)) 4);nach alle Xrefs neuladen nicht (70 . 4) -> ist Xref und Xref gefunden (progn ; (print "vor laufnew =0: ")(princ (cdr (assoc 1 vorhxref)))(princ "und findfile ")(princ (findfile (cdr(assoc 1 vorhxref))))(terpri) ;----------------------------- (if (= laufnew 0) (progn ; (print "Objektname von ehemals entferntem und gefundenem Xref: ")(princ (cdr (assoc 331 (entget (cdr (assoc 330 (entget (cdr (assoc -2 vorhxref)))))))))(terpri) (setq vorhfxrefnamelstnew (list (cdr (assoc 2 vorhxref))));Name von erstem vorhandenem Xref in Liste sammeln ; (print "Entityliste: ")(princ vorhxref)(terpri) );end progn );end if = laufnew 0 ;----------------------------- (if (> laufnew 0) (progn ; (print "in laufnew =")(princ laufnew)(princ ": ")(princ (cdr (assoc 1 vorhxref)))(princ "und findfile ")(princ (findfile (cdr(assoc 1 vorhxref))))(terpri) ; (print "Objektname von entferntem Xref: ")(princ (cdr (assoc 331 (entget (cdr (assoc 330 (entget (cdr (assoc -2 vorhxref)))))))))(terpri) (setq vorhfxrefnamelstnew (append (list (cdr (assoc 2 vorhxref)))vorhfxrefnamelstnew));Namen von weiteren vorhandenen Xref in Liste sammeln ; (print "Entityliste: ")(princ vorhxref)(terpri) );end progn );end if > laufnew 0 ;----------------------------- (setq laufnew (+ laufnew 1)) );end progn );end if ; (print "Liste vorhandenen Xrefs: ")(princ vorhfxrefnamelstnew)(terpri) );end foreach ;----------------------------- (if (/= vorhfxrefnamelstnew nil) (progn (setq anzxref (length vorhfxrefnamelstnew)) ; (print "vorhanden Xrefs in Zeichnung: ")(princ vorhfxrefnamelstnew)(terpri) );end progn );end if ;end suche alle Xrefs ;----------------------------- ;begin suche nur Xrefs mit Blockeinheit "Meter" oder Xrefs mit Blockeinheit "Keine" und Einheitenfaktor 1.0 (if (/= xrefnamelst nil) (progn (setq xrefmeternamelst nil) (command "-layer" "_ma" "Xreftemp" "") (foreach xref vorhfxrefnamelstnew (if (= (assoc 331 (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" xref)))))) nil);wenn Xref in Blocktabelle vorhanden aber nicht in Zeichnung eingefügt (progn (if (= AECZeichnungseinheitenwert 2);AECZeichnungseinheitenwert Meter=2 (progn ; (print xref)(princ " zuordnen Meter")(terpri) (command "-XREF" "_a" xref "5000,0" "1" "1" "0");Xref in Zeichnung einfügen );end progn );end if (if (= AECZeichnungseinheitenwert 25);AECZeichnungseinheitenwert Millimeter=25 (progn ; (print xref)(princ " zuordnen Millimeter")(terpri) (command "-XREF" "_a" xref "5000000,0" "1" "1" "0");Xref in Zeichnung einfügen );end progn );end if );end progn );end if (if (/= (cdr (assoc 331 (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" xref))))))) nil) (progn (setq xrefEinheitfaktor (getpropertyvalue (cdr (assoc 331 (entget(cdr(assoc 330 (entget(tblobjname "BLOCK" xref)))))))"BlockTableRecord/UnitFactor"));Einheitfaktor Block/Xref ; (print "xrefEinheitfaktor Anfang")(princ xrefEinheitfaktor)(terpri) (if (or (and (= (setq XrefUnit(vla-get-Units (vla-item (vla-get-Blocks(vla-get-activeDocument(vlax-get-acad-Object))) xref))) 6)) (and (= (setq XrefUnit(vla-get-Units (vla-item (vla-get-Blocks(vla-get-activeDocument(vlax-get-acad-Object))) xref))) 0)(= xrefEinheitfaktor 1.0)) );Xrefs mit Blockeinheit Meter=6 oder Xrefs mit Blockeinheit Keine=0 und Einheitfaktor 1.0 (progn (setq xrefmeternamelst (append (list (strcase xref)) xrefmeternamelst));Xrefname von Xrefs mit Einheit Merter=6 zu Liste xrefmeternamelst hinzufügen ; (print ", Xrefname: ")(princ xref)(princ " -> Xref-Einheitenfaktor: ")(princ xrefEinheitfaktor)(princ ", Xref-Blockeinheit: ")(princ XrefUnit)(terpri) ; (print "MeterXrefFilterListe: ")(princ xrefmeternamelst)(terpri) );end progn );end if (if (and (= XrefUnit 0)(= xrefEinheitfaktor 1.0));Xrefs mit Blockeinheit Keine=0 und Einheitfaktor 1.0 (progn ; (print "Xref-Blockeinheit von ")(princ xref)(princ " wird auf Meter umgestellt")(terpri) (vla-put-Units (vla-item (vla-get-Blocks(vla-get-activeDocument(vlax-get-acad-Object))) xref)6);setzt Blockeinheit auf Meter=6 );end progn );end if );end progn );end if );end foreach (if (/= (ssget "_x" (list (cons 8 "Xreftemp"))) nil) (progn (command "_erase" (ssget "_x" (list (cons 8 "Xreftemp"))) "") );end progn );end if (setvar "clayer" "0") (command "_-Purge" "_la" "Xreftemp" "_n") ; (print "Xrefs mit Einheit Meter: ")(princ xrefmeternamelst)(terpri) (setq wmatchbedxref (LstToString xrefmeternamelst ","));String für wcmatch alle Xrefs mit Einheit Meter=6 (setq wmatchbedxreflay (LstToString xrefmeternamelst "|*,"));String für wcmatch alle Layer von Xrefs mit Einheit Meter=6 (setq wmatchbedxreflay (strcat wmatchbedxreflay "|*"));String für wcmatch Xreflayer und am Ende "|*" anfügen ; (print "Wmatchbedingung Xrefs: ")(princ wmatchbedxref)(terpri) ; (print "Wmatchbedingung Xreflayer: ")(princ wmatchbedxreflay)(terpri) ;end suche nur Xrefs mit Blockeinheit "Meter" oder Xrefs mit Blockeinheit "Keine" und Einheitenfaktor 1.0 ;----------------------------- ;begin Linientypen von Xrefs mit Blockeinheit "Meter" aktualisieren (vlax-for obj (vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object))) (if (wcmatch (strcase (vla-get-name obj)) wmatchbedxreflay) (progn ; (print "vla-get-name obj: ")(princ (strcase (vla-get-name obj)))(terpri) (setq linetypelst (cons (strcase (vla-get-name obj)) linetypelst)) );end progn );end if );end vlax-for obj (reverse lst) (foreach linetyp linetypelst (setq abbruch nil)(setq testlauf 0) ; (print "bin in foreach linetyp")(terpri) (setq LtObjName (tblobjname "LTYPE" linetyp)) (if (/= LtObjName nil) (progn (setq Ltentlist (entget LtObjName)) ; (print "LinetypEntity: ")(princ Ltentlist)(terpri) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 7) 8)))(setq lintypsoll (strcase "GETRENNT")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 31.75))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 8) 9)))(setq lintypsoll (strcase "GETRENNT2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 15.875))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 9) 10)))(setq lintypsoll (strcase "GETRENNTX2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 63.5))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 4) 5)))(setq lintypsoll (strcase "MITTE")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 50.8))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 5) 6)))(setq lintypsoll (strcase "MITTE2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 28.575))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 6) 7)))(setq lintypsoll (strcase "MITTEX2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 101.6))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 6) 7)))(setq lintypsoll (strcase "PHANTOM")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 63.5))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 7) 8)))(setq lintypsoll (strcase "PHANTOM2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 31.75))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 8) 9)))(setq lintypsoll (strcase "PHANTOMX2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 127.0))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 10) 11)))(setq lintypsoll (strcase "STRICHPUNKT")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 25.4))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 11) 12)))(setq lintypsoll (strcase "STRICHPUNKT2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 12.7))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 12) 13)))(setq lintypsoll (strcase "STRICHPUNKTX2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 50.8))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 10) 11)))(setq lintypsoll (strcase "STRICHLINIE")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 19.05))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 11) 12)))(setq lintypsoll (strcase "STRICHLINIE2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 9.525))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 12) 13)))(setq lintypsoll (strcase "STRICHLINIEX2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 38.1))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 7) 8)))(setq lintypsoll (strcase "VERDECKT")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 9.525))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 8) 9)))(setq lintypsoll (strcase "VERDECKT2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 4.7625))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 8) 9)))(setq lintypsoll (strcase "VERDECKT3")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 2.38125))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 9) 10)))(setq lintypsoll (strcase "VERDECKTX2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 19.05))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 5) 6)))(setq lintypsoll (strcase "|PUNKT")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 6.35))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 6) 7)))(setq lintypsoll (strcase "|PUNKT2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 3.175))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if (if (and (= abbruch nil)(= (setq lintypist (strcase (substr (cdr (assoc 2 Ltentlist))(- (strlen (cdr (assoc 2 Ltentlist))) 7) 8)))(setq lintypsoll (strcase "|PUNKTX2")))(/= (setq ltlenges (rtos(round ZAHL STELLEN))) (rtos 12.7))) (progn ; (print "Linientyp ist: ")(princ lintypist)(princ " -> Linientyp soll: ")(princ lintypsoll)(princ " -> Länge ber.: ")(princ ltlenges)(princ " -> Länge ist: ")(princ (rtos (cdr (assoc 40 Ltentlist))))(terpri) (setq testlauf (+ testlauf 1))(ltakteinfach) );end progn );end if ; (print "Testlauf: ")(princ testlauf)(terpri) );end foreach ;end Linientypen von Xrefs mit Blockeinheit "Meter" aktualisieren ;----------------------------- ;ehemals entfernte Xrefs wieder entfernen (setq entfxrefnamestrlen 0) (setq entfxrefnamelstneu entfxrefnamelst);übergabe ehemals entfernter Xref-Liste an entfxrefnamelstneu (setq dul 0) (foreach entfxrefnamelstpart entfxrefnamelstneu (if (= (length entfxrefnamelst) 1);wenn nur 1 ehemals entferntes Xref in Liste (progn (setq xrefunload (strcat (car entfxrefnamelstneu)));Name vom ehemals entfernten Xref ; (print "es war nur ein ehemals entferntes Xref in Zeichnung: ")(terpri) (command "-XREF" "_u" xrefunload) (setq entfxrefnamelstneu nil) (setq dul nil) );end progn );end if (while (/= entfxrefnamelstneu nil) ; (print "entfxrefnamestrlen: ")(princ entfxrefnamestrlen)(terpri) ; (print "entfxrefnamelstneu: ")(princ entfxrefnamelstneu)(terpri) (while (<= entfxrefnamestrlen 999);ausführen bis Zeichenanzahl 999 (if (= dul 0) (progn ; (print "dul: ")(princ dul)(terpri) ; (print "noch ")(princ (length entfxrefnamelstneu))(princ " ehemals entfernte Xref in Liste")(terpri) (setq xrefunload (strcat (car entfxrefnamelstneu)));Name von erstem ehemals entfernte Xref in strcat sammeln ; (print "xrefunload: ")(princ xrefunload)(terpri) (setq entfxrefnamelstneu (cdr entfxrefnamelstneu));erstes Element aus Liste ehemals entfernter Xrefs löschen (setq entfxrefnamestrlen (strlen xrefunload)) ; (print "entfxrefnamelstneu: ")(princ entfxrefnamelstneu)(terpri) ; (print "Zeichenanzahl für nächste Bedingung: ")(princ (+ (strlen (car entfxrefnamelstneu)) entfxrefnamestrlen))(princ " Zeichen")(terpri) (if (>= (length entfxrefnamelstneu) 1) (progn (setq dul 1) );end progn );end if );end progn );end if dul=0 (if (/= entfxrefnamelstneu nil) (progn (if (and (= dul 1)(<= (+ (strlen (car entfxrefnamelstneu))(strlen xrefunload)) 999)(> (length entfxrefnamelstneu) 1)) (progn ; (print "dul in =1: ")(princ dul)(terpri) ; (print "noch ")(princ (length entfxrefnamelstneu))(princ " ehemals entfernte Xref in Liste in =1:")(terpri) (setq xrefunload (strcat xrefunload "," (car entfxrefnamelstneu)));wieder Name von erstem ehemals entfernte Xref in strcat sammeln (setq entfxrefnamelstneu (cdr entfxrefnamelstneu));wieder erstes Element aus Liste ehemals entfernter Xrefs löschen (setq entfxrefnamestrlen (strlen xrefunload)) ; (print "entfxrefnamelstneu =1: ")(princ entfxrefnamelstneu)(terpri) ; (print "Zeichenanzahl für nächste Bedingung =1: ")(princ (+ (strlen (car entfxrefnamelstneu)) entfxrefnamestrlen))(princ " Zeichen")(terpri) );end progn );end if dul=1 und Anzahl entfxrefnamelstneu >1 ;----------------------------- (if (and (= dul 1)(<= (+ (strlen (car entfxrefnamelstneu))(strlen xrefunload)) 999)(= (length entfxrefnamelstneu) 1)) (progn ; (print "dul in =11: ")(princ dul)(terpri) (setq xrefunload (strcat xrefunload "," (car entfxrefnamelstneu)));wieder Name von erstem ehemals entfernte Xref in strcat sammeln (setq entfxrefnamelstneu (cdr entfxrefnamelstneu));wieder erstes Element aus Liste ehemals entfernter Xrefs löschen -> entfxrefnamelstneu wird nil -> Ende 1. While-Schleife (setq entfxrefnamestrlen (strlen xrefunload)) ; (print "entfxrefnamelstneu =11: ")(princ entfxrefnamelstneu)(terpri) ; (print "Zeichenanzahl für letzte Bedingung =11: ")(princ entfxrefnamestrlen)(princ " Zeichen")(terpri) (command "-XREF" "_u" xrefunload) (setq entfxrefnamestrlen 1000) (setq dul nil) );end progn );end if dul=1 und Anzahl entfxrefnamelstneu =1 ;----------------------------- (if (/= entfxrefnamelstneu nil) (progn (if (and (= dul 1)(>= (+ (strlen (car entfxrefnamelstneu))(strlen xrefunload)) 999)) (progn ; (print "setze dul auf 0 zurück: ")(terpri) ; (print "Zeichenanzahl der zu entfernenden Xrefs wäre: ")(princ (+ (strlen (car entfxrefnamelstneu))(strlen xrefunload)))(terpri) ; (print "xrefunload: ")(princ xrefunload)(terpri) (setq dul 0) (command "-XREF" "_u" xrefunload) );end progn );end if );end progn );end if /= entfxrefnamelstneu nil );end progn );end if entfxrefnamelstneu nicht nil );end while <= entfxrefnamestrlen 999 );end while entfxrefnamelstneu nil );end foreach ;----------------------------- (setq Ltentlist nil) (setq abbruch nil) );end progn );end if (print "alle vorhanden Xrefs in Zeichnung: ")(princ vorhfxrefnamelstnew)(terpri) (print "entfernte Xrefs: ")(princ entfxrefnamelst)(terpri) (print "alle Xrefs mit Einheit Meter: ")(princ xrefmeternamelst)(terpri) (print "Wmatchbedingung Xrefs: ")(princ wmatchbedxref)(terpri) (print "Wmatchbedingung Xreflayer: ")(princ wmatchbedxreflay)(terpri) ; (print "verlasse Update_XrefLt")(terpri) );end defun Update_XrefLt ;----------------------------- (Update_XrefLt)