Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Linientyp in Layerdefinition ändern

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:  Linientyp in Layerdefinition ändern (2757 mal gelesen)
Musicus
Mitglied
Staatl. gepr. Techniker


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

Beiträge: 685
Registriert: 26.07.2005

AutoCAD 2021
Linear Building 18
Linear CAD Solutions 18
C.A.T.S.
Windows 10 64bit

erstellt am: 12. Dez. 2016 09:54    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 Forum,

folgendes Problem:
Ich bekomme Dateien aus Microstation, die ihre eigenen Linientypen mitbringen. Diese möchte ich gerne durch ACAD-Linientypen ersetzen.
Die Eigenschaften sind immer VONLAYER, ich brauche also "nur" den Layern in der Definition den neuen Linientyp zuweisen.

Jetzt das Problem: Die Linientypen sind immer dieselben, die Layer aber nicht. Händisch ist das nicht weiter schwer, ich suche aber eine Lösung, mit der das automatisiert gelöst werden kann. Mit -layer brauche ich ja den konkreten Layernamen, und an der Stelle gehen mir die Ideen aus.

Vielen Dank schon mal für Denkanstöße,
Musicus

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

csfalk
Mitglied
IT-Admin / CAD-Zeichner


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

Beiträge: 204
Registriert: 14.06.2012

AutoCad Civil 3D 2020-20223
Autoturn
Rehm Wasserwirtschaft
Fluss
Flussplot
Cross
Graps
Hykas
Kanalplot
W10 x64

erstellt am: 12. Dez. 2016 10:05    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 Musicus 10 Unities + Antwort hilfreich

Hallo,
warum machst Du das nicht über die Layersteuerung. Befehl "LA" ?
LG Christian

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

Musicus
Mitglied
Staatl. gepr. Techniker


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

Beiträge: 685
Registriert: 26.07.2005

AutoCAD 2021
Linear Building 18
Linear CAD Solutions 18
C.A.T.S.
Windows 10 64bit

erstellt am: 12. Dez. 2016 10:16    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 Christian,

das habe ich schon geschrieben, wenn ich über die Layersteuerung gehe (-layer), muss ich den konkreten Layernamen eingeben. Da die in jedem Plan anders sein können, komme ich an der Stelle nicht weiter.

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 12. Dez. 2016 10:56    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 Musicus 10 Unities + Antwort hilfreich

Probiers mal hiermit

(defun LTCHANGE ( LTYPES / LT NEWLT ITEM)
  (vl-load-com)
  (if(and(=(type LTYPES)'LIST)
(vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES)
    )      
    (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
      (setq LT (vla-get-linetype ITEM))
      (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES))))
(not(vl-catch-all-error-p(vl-catch-all-apply  'vla-put-linetype (list ITEM NEWLT))))
      )
    )
  ) 
)


Aufruf
(LTCHANGE '(("Alter_LT1" "Neuer_LT1") (("Alter_LT2" "Neuer_LT2") (("Alter_LT3" "Neuer_LT3")))
z.B:
(LTCHANGE '(("AM_DIN_G_W050" "HIDDEN") ("AM_ISO02W050" "CENTER")("Linie" "Continuous")))

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Musicus
Mitglied
Staatl. gepr. Techniker


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

Beiträge: 685
Registriert: 26.07.2005

AutoCAD 2021
Linear Building 18
Linear CAD Solutions 18
C.A.T.S.
Windows 10 64bit

erstellt am: 12. Dez. 2016 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 Thomas,

ich bin begeistert! Vielen Dank!

Gruß,
Musicus

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 23. Mrz. 2020 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 Nur für Musicus 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!


Zitat:
Original erstellt von CADmium:
Probiers mal hiermit

(defun LTCHANGE ( LTYPES / LT NEWLT ITEM)
  (vl-load-com)
  (if(and(=(type LTYPES)'LIST)
(vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES)
     )      
    (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
      (setq LT (vla-get-linetype ITEM))
      (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES))))
(not(vl-catch-all-error-p(vl-catch-all-apply  'vla-put-linetype (list ITEM NEWLT))))
      )
    )
  ) 
)


Aufruf
(LTCHANGE '(("Alter_LT1" "Neuer_LT1") (("Alter_LT2" "Neuer_LT2") (("Alter_LT3" "Neuer_LT3")))
z.B:
(LTCHANGE '(("AM_DIN_G_W050" "HIDDEN") ("AM_ISO02W050" "CENTER")("Linie" "Continuous")))


Ich habe jetzt eine LISP erstellt.

Befehl: LTCHANGE
Zu wenig Argumente
Befehl:

Das kommt dabei raus...
Was mache ich denn falsch?

Und mit dem Aufruf Befehl verstehe ich nicht.
Muss ich das in die LISP integrieren oder ist das ein extra Befehl.

Der Beitrag ist ja schon etwas älter, hoffe mir kann jemand helfen zu verstehen, was ich falsch mache.

MFG
Manuel

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

System: F1
und Google

erstellt am: 23. Mrz. 2020 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 Musicus 10 Unities + Antwort hilfreich

Die Beschreibung des "Aufruf" zeigt dir im Detail wie du die Funktion nutzten kann.

Da steht nicht
LTCHANGE

sondern
(LTCHANGE '(("Alter_LT1" "Neuer_LT1")("Alter_LT2" "Neuer_LT2")("Alter_LT3" "Neuer_LT3"))) ; Zeile editiert

Weiteres Beispiel
(LTCHANGE '(("AUSGEZOGEN" "Continuous")))


Aber Achtung: Man kann nur Linientypen zuweisen wenn die auch existieren!
Also muß dein Lisp/Script whatever zunächst alle benötigten Linientyp-Definitionen laden
falls diese noch nicht in der DWG vorhanden sind.
  

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 23. Mrz. 2020 10:08    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 Musicus 10 Unities + Antwort hilfreich

Ich verstehe immer noch nicht ob ich den "Aufruf" in die LISP packen muss oder extra.

Allen Linientypen sind geladen.

Nur nochmal zum Verständnis, was habe ich gemacht:
Ich habe LTCHANGE.lsp erstellt,
mit folgendem Inhalt:
(defun LTCHANGE ( LTYPES / LT NEWLT ITEM)
  (vl-load-com)
  (if(and(=(type LTYPES)'LIST)
(vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES)
    )     
    (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
      (setq LT (vla-get-linetype ITEM))
      (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES))))
(not(vl-catch-all-error-p(vl-catch-all-apply  'vla-put-linetype (list ITEM NEWLT))))
      )
    )
  )
)
Ich lade diese LISP.
Ich erstelle ein Werkzeug das
(LTCHANGE '(("DGN Style 1" "VERDECKT2") (("DGN Style 2" "VERDECKT2") (("DGN Style 4" "STRICHPUNKT2") (("DGN Style 6" "GETRENNT2") (("DGN Style 7" "MITTE2")))
als Befehlsstring ausführt.

Ergebnis:
Befehl: (LTCHANGE '(("DGN Style 1" "VERDECKT2") (("DGN Style 2" "VERDECKT2") (("DGN Style 4" "STRICHPUNKT2") (("DGN Style 6" "GETRENNT2") (("DGN Style 7" "MITTE2"))))
('((_> *Abbruch*
Funktion abgebrochen

Das kommt dabei raus wenn ich den "Aufruf" ausführe.

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

System: F1
und Google

erstellt am: 23. Mrz. 2020 10:38    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 Musicus 10 Unities + Antwort hilfreich

1. Jetzt wolltest du es richtig anwenden, sehr gut.

2. Ach Mist, CADmium hatte einen Tipfehler im ersten Beispiel, das hatte ich dann noch einmal ungeprüft zitiert.
   Sein und mein zweites Beispiel sind aber korrekt - Das hast du natürlich nicht erkannt.
   Dumm gelaufen, aber warf dich jetzt nur eine Stunde nach hinten.

3. Die übergebene Liste muß so aussehen:
   (LTCHANGE '( ("ALT1" "NEU1") ))
   (LTCHANGE '( ("ALT1" "NEU1")("ALT2" "NEU2") ))
   (LTCHANGE '( ("ALT1" "NEU1")("ALT2" "NEU2")("ALT3" "NEU3") ))

    Siehst du den Aufbau?

Dann mal los:
(LTCHANGE '(("DGN Style 1" "VERDECKT2")("DGN Style 2" "VERDECKT2")("DGN Style 4" "STRICHPUNKT2")("DGN Style 6" "GETRENNT2")("DGN Style 7" "MITTE2")))

 

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 24. Mrz. 2020 09:00    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 Musicus 10 Unities + Antwort hilfreich

Vielen dank, jetzt funktioniert es. 

Das schöne an dieser Methode ist das er einfach weiter läuft auch wenn ein Linientyp mal doch nicht mehr in der Zeichnung ist.

Jetzt gibt es noch Linientypen die nicht auf "VON LAYER" stehen, sondern direkt einen Linientyp zugewiesen haben.

Ich habe das dann so gelöst. (Ich weis, ist nicht gern gesehen mit dem Befehlsstring)

^C^C(sssetfirst nil (ssget "_X" '((6 . "DGN Style 1")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;VERDECKT2;;(sssetfirst nil (ssget "_X" '((6 . "DGN Style 2")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;VERDECKT2;;(sssetfirst nil (ssget "_X" '((6 . "DGN Style 4")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;STRICHPUNKT2;;(sssetfirst nil (ssget "_X" '((6 . "DGN Style 6")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;GETRENNT2;;(sssetfirst nil (ssget "_X" '((6 . "VERDECKT")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;VERDECKT2;;(sssetfirst nil (ssget "_X" '((6 . "AM_DIN_F_W050x2")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;Continuous;;(sssetfirst nil (ssget "_X" '((6 . "DASHDOT")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;STRICHPUNKT2;;(sssetfirst nil (ssget "_X" '((6 . "IMPORT")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;Continuous;;

Wenn jetzt aber hier z.B. DGN Style 4 nicht in der Zeichnung ist, bricht er den Befehl dort ab...

Gibts da ne Lösung?

MFG
Manuel

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

System: F1
und Google

erstellt am: 24. Mrz. 2020 21: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 Musicus 10 Unities + Antwort hilfreich

Ich sehe schon, weder die erste noch die jetzige Sache beschreiben die eigentliche Aufgabe!

Daher ist es oft dennoch gut *alles* zu erzählen,
auch wenn man selbst schonen einen Gedanken dazu hat.


Richtige Frage/Aufgabenbeschreibung wäre wohl vermutlich gewesen:
Ich möchte Linientypen austauschen/mischen,
das ganze soll automatisiert ablaufen und
Alle Vorkommen Linientyp"X" durch Linientyp"Y" ersetzen.

Aktuell hast du die Lösung für Linientypen in Layern
und eine Lösung für Objekt-zugewiesene Linientypen.
Dies funktioniert aber nicht wenn nicht mind ein Objekt i. Aktuellen Bereich vorhanden ist (andere Bereiche bearbeitet der Befehl Change nicht)
und auch nur wenn diese Unverschachtelt vorliegen, also kein Atteibut, kein Blockinhalt.

Man würde so allgemeingültige Tools finden, aber ich helfe mal nur in der aktuellen Frage:

1. Nicht gern gesehen in Makros und Scripten?
Wenn es nicht anders geht, why not.

2. Soo lang würde ich aber doch fast eher ein Script empfehlen.

3.(if (ssget "_X" (list '(6 . "DGN 7")(cons 410 (getvar 'CTAB))))(command "_.chprop" "_p" "" "_LTYPE" "Continuous" ""))

Oder so ähnlich.
WENN du was gefunden hast,
dann führe den Befehl aus..

Hilft das schon, oder brauchst du es genauer?

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 11. Aug. 2020 16:33    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 Musicus 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!


Zitat:
Original erstellt von CADmium:
Probiers mal hiermit

(defun LTCHANGE ( LTYPES / LT NEWLT ITEM)
  (vl-load-com)
  (if(and(=(type LTYPES)'LIST)
(vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES)
     )      
    (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
      (setq LT (vla-get-linetype ITEM))
      (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES))))
(not(vl-catch-all-error-p(vl-catch-all-apply  'vla-put-linetype (list ITEM NEWLT))))
      )
    )
  ) 
)


Aufruf
(LTCHANGE '(("Alter_LT1" "Neuer_LT1")("Alter_LT2" "Neuer_LT2")("Alter_LT3" "Neuer_LT3")))
z.B:
(LTCHANGE '(("AM_DIN_G_W050" "HIDDEN")("AM_ISO02W050" "CENTER")("Linie" "Continuous")))


Wäre es möglich die LISP so zu schreiben das er * erkennt?
Also das er alle Linientypen mit dem Inhalt *XYZ* Filtert.
so z.B. (LTCHANGE '(("*STRICHPUNKT*" "STRICHPUNKT2")))
Suche nach Inhalt *STRICHPUNKT* und leg auf STRICHPUNKT2.

[Diese Nachricht wurde von Manuel486 am 11. Aug. 2020 editiert.]

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

System: F1
und Google

erstellt am: 11. Aug. 2020 16:47    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 Musicus 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Manuel486:
Wäre es möglich die LISP so zu schreiben das er * erkennt?

Also die Frage kann auch ich beantworten: Ja

Bin jetzt öfters beim Bäcker, die haben jetzt eine Klimaanlage im Verkaufsraum 

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 12. Aug. 2020 08:19    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 Musicus 10 Unities + Antwort hilfreich

Moin Moin.

Meine Eltern haben eine Bäckerei, aber leider keine Klimaanlage. 

Zitat:
Wäre es möglich die LISP so zu schreiben das er * erkennt?

Ich stelle die frage mal anders:

Welchen Zeitaufwand würde das mit sich bringen die LISP umzuschreiben?
Würde das jemand hier hin bekommen? Wobei das wahrscheinlich auch mit Ja beantwortet werden kann.
Ich weis dass es kein "bitte mach mir das mal (für umme)" Forum ist.
Ich kann es auch nicht einschätzen wie lange ich dafür brauchen würde.
Meine LISP Kenntnisse gehen gegen 0.

LG
Manuel

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

System: F1
und Google

erstellt am: 12. Aug. 2020 10:29    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 Musicus 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Manuel486:
Welchen Zeitaufwand würde das mit sich bringen die LISP umzuschreiben?
Auf diesem Level? 2 Minuten +testen +im Forum antworten

Würde das jemand hier hin bekommen?
Von denen die in Lisp programmieren und dabei nicht nur AutoCAD-Befehle steuern(command), Jeder.



Aber es ist nur ein Codebeispiel, kein fertiges Programm auf welches man einen User loslassen würde.
Linientypen die nicht geladen sind?
Linientypen die geladen werden können, ab in mehreren Definitionsdateien zu finden sind?
Linientypen die nicht geladen werden können?
Aufruf als Befehl?
Optionen für Xref berücksichtigen Ja/Nein?
Andere/Weitere Filterkriterien? Zb. Alle Layer mit Namen "*RAUM*" -> "Strichpunkt2"..
Nicht nur Layer sondern auch Objekte berücksichtigen, Objekteigenschaft Linientyp?
- auch verschachtelt in Blöcken?
Grafische Benutzeroberfläche?
usw.
Es findet ja kein Ende und für jede einzelne Aufgabe ein neues Tool? eine neue Suche?
Dann lieber einmal ein allgemeingültiges Werkzeug anschaffen mit dem man viele Dinge umsetzen kann
und nicht nur eine spezifische Sache.

Da ist man schnell weg von "2 Minuten", hätte dann aber mind. ein Werkzeug welches man auch sorgenfrei einsetzen könnte
und je nach Optionen auch noch viel mehr abdeckt.


-

Hier mal eine reine AutoLISP Version welche ganz simple den -LAYER Befehl zum ändern nutzt,
damit werden dann wenigstens die Standardlinientypen automatisch nachgeladen falls nötig.
(aber ob das dann die Linientypdefinition ist welche man wollte? Besser ist vorab sicherzustellen die benötigten Linientypen geladen zu haben)
Und du kannst es evtl. besser "lesen" und somit selbst anpassen.


(defun LLTCHANGE (LTYPES / TND) ; LTypeSwap ohne XRef-Layer
  (while (setq TND (tblnext "LAYER" (not TND)))
    (if (wcmatch (cdr(assoc 2 TND)) "~*|*")
        (foreach LTYPE LTYPES
          (if (wcmatch (strcase (cdr(assoc 6 TND))) (strcase(car LTYPE)))
              (command "_.-LAYER" "_ltype" (cadr LTYPE) (cdr(assoc 2 TND)) "")
          )
        )
    )
         
  )
  (command "_.regenall")
);_defun

(LLTCHANGE '(("Grenz*" "ZickZack")("Strichpunkt*" "Strichpunkt")))


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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 12. Aug. 2020 12:54    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 Musicus 10 Unities + Antwort hilfreich

_.-LAYER
Aktueller Layer:  "0"
Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIN/AUs/FArbe/Ltyp/LStärke/TRansparenz/MATerial/Plot/Frieren/Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen/Xref]: _ltype
Namen des geladenen Linientyps eingeben oder [?] <Continuous>: STRICHPUNKT2
Namensliste der/des Layer/s für Linientyp "STRICHPUNKT2" eingeben <0>: arc_SVL_Schnittverlauf Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIN/AUs/FArbe/Ltyp/LStärke/TRansparenz/MATerial/Plot/Frieren/Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen/Xref]:
Befehl: _.-LAYER

Der Befehl macht das was ich brauche.
Warum habe ich hier jetzt eine Auflistung und bei dem LTCHANGE passiert nichts im Hintergrund.
Denke ja mal das kommt vom _.-LAYER Befehl

Habe mich etwas belesen, dass man das auch unterdrücken kann:

Code:
(defun LLTCHANGE (LTYPES / TND) ; LTypeSwap ohne XRef-Layer
  (while (setq TND (tblnext "LAYER" (not TND)))
    (if (wcmatch (cdr(assoc 2 TND)) "~*|*")
        (foreach LTYPE LTYPES
          (if (wcmatch (strcase (cdr(assoc 6 TND))) (strcase(car LTYPE)))             
              (setq cmdecho (getvar "cmdecho"))
              (setvar "cmdecho" 0)
              (command "_.-LAYER" "_ltype" (cadr LTYPE) (cdr(assoc 2 TND)) "")
              (setvar "cmdecho" cmdecho)
          )
        )
    )
       
  )
  (command "_.regenall")
);_defun

Raus kommt das hier:

Befehl: (LOAD "G:/1000SONS/CAD/Faust/LISP/LLTCHANGE - Kopie.lsp") Syntaxfehler

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

System: F1
und Google

erstellt am: 12. Aug. 2020 14:04    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 Musicus 10 Unities + Antwort hilfreich

Für die Standard LTypes in der Acad(iso).pat Datei lädt er die nach, ja.

Rückgabe im Textfenster kommt von dem Autocadbefehl, richtig.
In CADmiums Version wird der Layer über die Programmierschnittstelle geändert,
meine Version steuert einfach nur einen Autocadbefehl.

CMDECHO ist korrekt! Freu!!


Daher auch die Lösung:
Schlage IF (AutoLISP) in der Hilfe nach,
dort steht: IF erwartet einen Ausdruck,
ist dieser wahr, dann wird der nächste Ausdruck (EINER) ausgewertet, optional der Zweite(wenn vorhanden).

Du hast nun aber 4 Ausdrücke welche alle ausgeführt werden sollen wenn die Bedingung wahr ist = Crash, weil max 2 erwartet werden.
Einer für wahr, einer wenn nicht(optional).

Die Lösung ist PROGN, siehe wieder [F1]

(if (Bedingung)(progn(Ausdruck1)(Ausdruck2)(Ausdruck3)...))

Progn fasst mehrere zusammen, somit wird bei Wahr nur EINER übergeben, nämlich (progn .....)

?

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