| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Polylinienbefehl auf Werkzeug (2631 mal gelesen)
|
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 30. Jan. 2013 10:22 <-- editieren / zitieren --> Unities abgeben:
Ich habe mir auf ein Werkzeug folgenden Befehl geschrieben: ^C^C_pline;0,0;"B";0.09;0.09;;_pline Es scheitert am unbekannten Befehl "B", wie der Versuch, diese Befehlsfolge in einem Command-Befehl zeigt (command "_pline" 0,0 "B" 1 1 "" "_pline") Beide Zeilen entsprechen doch exakt der Befehlsfolge im Eingabefenster. Steh ich komplett auf der Leitung und sehe den Wald vor lauter Bäumen nicht? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Jan. 2013 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
im Command übergibst du den String B im Werkzeugkasten den String "B" Meine Aussage mag zunächst falsch klingen, ist aber so - denke dich da noch einmal durch Lasse also im Makro die Anführungszeichen mal weg ! ------------------ Link: User:FAQ (einiges Wissenswertes über AutoCAD) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 2966 Registriert: 26.08.2002 ACAD R11 - 2022 (Plant3D) AVIS ACAD LT 2013- 2021 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 30. Jan. 2013 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
ohne " " aber was wilst du genau ? vorher die Breite auf einen Wert setzen ? cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist wie Öl suchen, je tiefer man bohrt desto mehr kommt ans Tageslicht Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 30. Jan. 2013 10:44 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von cadffm:
Lasse also im Makro die Anführungszeichen mal weg !
Darauf wäre ich nie gekommen! @cadwoman: . Ja, ich muss ständig Polilinien mit anderer Breite eingeben und diese Art erscheint mir am effektivsten
[Diese Nachricht wurde von cad4fun am 30. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 30. Jan. 2013 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 2966 Registriert: 26.08.2002 ACAD R11 - 2022 (Plant3D) AVIS ACAD LT 2013- 2021 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 30. Jan. 2013 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
wenn es dauert anderst ist dann wäre das evtl noch ne Alternative ^C^C_pline;0,0;B;\; cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist wie Öl suchen, je tiefer man bohrt desto mehr kommt ans Tageslicht [Diese Nachricht wurde von cadwomen am 30. Jan. 2013 editiert. streiche " noch "] [Diese Nachricht wurde von cadwomen am 30. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Jan. 2013 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 30. Jan. 2013 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Oder, eleganter: Code:
;| Aufruf Polylinienbefehl mit vordefinierter Breite und anschliessendem zurücksetzen auf vorherigen Wert. Parameter: REAL-PLINEWID = Real oder Integer ZahlRückgabe: Textinformation mit Ausgabe des aktuellen Wertes der Variable PLINEWID Anwendungsbeispiel: (DT:CMDPLINE 22.3) |; (defun DT:CMDPLINE (REAL-PLINEWID / OLD-PLINEWID) (setq OLD-PLINEWID (getvar "plinewid")) (setvar "plinewid" REAL-PLINEWID) (command "_.pline") (while (= 1 (logand (getvar "CMDACTIVE") 1)) (command PAUSE) ) (setvar "plinewid" OLD-PLINEWID) (princ (strcat "\nPolylinienbreite auf vorherigen Wert >" (rtos OLD-PLINEWID 2 2) "< zurückgesetzt!" ) ) (princ) )
------------------ Ciao, Marc
[Diese Nachricht wurde von marc.scherer am 30. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 30. Jan. 2013 11:48 <-- editieren / zitieren --> Unities abgeben:
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 30. Jan. 2013 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 25. Sep. 2020 09:57 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Für Hämmy Gefragt war nach globaler PLine Breite und Linientypfaktor, hier nun eine Variante des Programmes von Marc für dich.
Die Schreibweise sollte das Programm leicht "lesbar" machen und entsprechend anpassbar sein {wenn man sich etwas eingearbeitet hat} Hiermit bin ich dann raus aus dem Thema Code:
;| Aufruf Polylinienbefehl mit vordefinierter Breite + Linientypfaktor und anschliessendem zurücksetzen auf die vorherigen Werte. Parameter: REAL-PLINEWID = Real oder Integer Zahl REAL-CELTSCALE = Real oder Integer Zahl Anwendungsbeispiel: (PL_WIDLTS 3.5 0.1) AutoCAD-Befehl Beispiel für festgelegte Wert 1.1 und 0.5 (defun c:MeinBefehl nil (PL_WIDLTS 1.1 0.5)) |; (defun PL_WIDLTS (REAL-PLINEWID REAL-CELTSCALE / *ERROR* OLD-PLINEWID OLD-CELTSCALE) (defun *ERROR* (msg) (and OLD-PLINEWID (setvar 'PLINEWID OLD-PLINEWID)) (and OLD-CELTSCALE (setvar 'CELTSCALE OLD-CELTSCALE)) (if (not (member msg '("Function cancelled" "quit / exit abort" "Funktion abgebrochen" ) ) ) (princ (strcat "\nError: " msg)) ) (princ) ) (setq OLD-PLINEWID (getvar "plinewid")) (setvar "plinewid" REAL-PLINEWID) (setq OLD-CELTSCALE (getvar "celtscale")) (setvar "celtscale" REAL-CELTSCALE) (command "_.PLINE") (while (= 1 (logand (getvar "CMDACTIVE") 1)) (command PAUSE) ) (setvar "plinewid" OLD-PLINEWID) (setvar "celtscale" OLD-CELTSCALE) (princ) )
Wenn du mit den Zeilen nichts anfangen kannst: Schau beim User:FAQ vorbei und lesen den Beitrag FAQ:APPLOAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 25. Sep. 2020 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
@cadffm, danke für deine Mühe, du bist wirklich großartig Ich verstehe zwar nicht alles was da drin steht, aber damit klappt es schon ganz gut Ich muss aber doch noch einmal nachfragen, kann ich einen bestimmten Linientyp hinterlegen? Kann man das mit einbinden? Ich traue mich schon fast nicht mehr etwas zu Fragen, weil ich immer wieder mit noch etwas komme Aber das würde mir meine Arbeit um einges erleichtern, und hier sind nun mal viele Fachleute Gruß Hämmy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 25. Sep. 2020 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
>>Ich muss aber doch noch einmal nachfragen,Gern >>Kann man das mit einbinden? Klar >>kann ich einen bestimmten Linientyp hinterlegen? Versuche es, keine Ahnung ob du es kannst. Dafür muß der Linientype bereits geladen sein und könnte ähnlich der anderen Parameter über CELTYPE gesteuert werden. Tip: Versuche es umzusetzen für den einfachen Fall in dem der Linientyp bereits geladen ist, wenn das klappt, dann kann man sich um das automatische Laden kümmenr, falls nötig. Dachte du willst den Linientyp über den Layer beziehen(VonLayer), was praktisch wäre da der -LAYER Befehl die Standard Linientypen automatisch läd beim zuweisen.
Der aktuelle Layer ist in CLAYER enthalten, falls doch mal der Layer gefragt ist [F1] >>Aber das würde mir meine Arbeit um einges erleichtern, Das war bei 99% der Leute ausschlaggebende Punkt sich mit Automatisierung zu befassen (Macro,Script,API Programmierung), ich denke nur ganz wenige kommen von der IT-Schiene zu dem Thema. >>und hier sind nun mal viele Fachleute Fachleute, was immer das ist, haben alle genau an diesem Punkt angefangen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 25. Sep. 2020 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
@cadffm, Zitat: >>kann ich einen bestimmten Linientyp hinterlegen? Versuche es, keine Ahnung ob du es kannst. Dafür muß der Linientype bereits geladen sein und könnte ähnlich der anderen Parameter über CELTYPE gesteuert werden. Tip: Versuche es umzusetzen für den einfachen Fall in dem der Linientyp bereits geladen ist, wenn das klappt, dann kann man sich um das automatische Laden kümmenr, falls nötig.
natürlich kann ich es nicht :D -der Linientyp ist bereits geladen und heisst "Folie", das ist somit kein Problem -bei der Umsetzung scheitert es aber, keine Ahnung wie ich das machen soll Zitat: Dachte du willst den Linientyp über den Layer beziehen(VonLayer), was praktisch wäre da der -LAYER Befehl die Standard Linientypen automatisch läd beim zuweisen.
Nein diesen Linientyp will ich nicht über den Layer beziehen, da dieser Layer leider einen anderen hat, den ich nicht ändern kann. ich bin auf jeden Fall froh das dir das nicht zu viel Fragerei ist
Danke für dein Verständnis Gruß Hämmy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 25. Sep. 2020 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
>"natürlich kann ich es nicht" Sorry, aber da diese Antwort nicht mind zwei Tage später kam zählt alles was du versucht oder gelassen hast für mich nicht als Versuch es umzusetzen ;-) Und damit ist die Frage ob du es kannst nicht beantwortet Ich habe dir hier "das Drumherum" vorbereitet, nun muss nur der Rest zwischen beiden beiden ";---" Zeilen ergänzt werden, was dem Code zu den beiden anderen Fällen für die Breite und Linientypfaktor entsprechen sollte.
Code:
;| Aufruf Polylinienbefehl mit vordefinierter Breite + Linientypfaktor + Linientyp und anschliessendem zurücksetzen auf die vorherigen Werte.Parameter: REAL-PLINEWID = Real(1.0) oder Integer Zahl(1) REAL-CELTSCALE = Real(1.0) oder Integer Zahl(1) REAL-CELTYPE = Zeichenkette ("NAME") Anwendungsbeispiel: (PL_WIDLTS 3.5 0.1 "VERDECKT")) AutoCAD-Befehl Beispiel für festgelegte Wert 1.1 und 0.5 und Linientyp Folie (defun c:MeinBefehl nil (PL_WIDLTSLAY 1.1 0.5 "FOLIE")) |; (defun PL_WIDLTSLAY (REAL-PLINEWID REAL-CELTSCALE REAL-CELTYPE / *ERROR* OLD-PLINEWID OLD-CELTSCALE OLD-CELTYPE) ;------------------- (defun *ERROR* (msg) (and OLD-PLINEWID (setvar 'PLINEWID OLD-PLINEWID)) (and OLD-CELTSCALE (setvar 'CELTSCALE OLD-CELTSCALE)) ;? (if (not (member msg '("Function cancelled" "quit / exit abort" "Funktion abgebrochen" ) ) ) (princ (strcat "\nError: " msg)) ) (princ) ) (setq OLD-PLINEWID (getvar "plinewid")) (setvar "plinewid" REAL-PLINEWID) (setq OLD-CELTSCALE (getvar "celtscale")) (setvar "celtscale" REAL-CELTSCALE) ;? ;? (command "_.PLINE") (while (= 1 (logand (getvar "CMDACTIVE") 1)) (command PAUSE) ) (setvar "plinewid" OLD-PLINEWID) (setvar "celtscale" OLD-CELTSCALE) ? ;------------------- (princ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 25. Sep. 2020 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Zitat: Sorry, aber da diese Antwort nicht mind zwei Tage später kam zählt alles was du versucht oder gelassen hast für mich nicht als Versuch es umzusetzen ;-) Und damit ist die Frage ob du es kannst nicht beantwortet
Ok das gebe ich zu Danke für deine unendliche Mühe, ich werde es dann testen Gruß Hämmy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 25. Sep. 2020 12:17 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 09:13 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
@cadffm, das komische ist, wenn ich celtype eingebe, und dann "Folie", dann wechselt es zu diesem Linientyp. Warum es aber in der Lisp nicht geht, kann ich leider nicht nachvollziehen, hier bleibt es auf "ByLayer" nach ausführen der Lisp Gruß Hämmy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 28. Sep. 2020 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Das ist ziemlich einfach, und ab dort würde man schon sehen müssen was du gemacht hast Also hänge deine LSP Datei einfach hier an, oder als Code direkt in die Antwort. Du wirst sehen: (setvar wie in dem Lisp oben genutzt funktioniert ebenso | (setvar "CELTYPE" REAL-CELTYPE) wie dein händischer Versuch dann mit (Command automatisert | (Command "CELTYPE" REAL-CELTYPE) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
@cadffm, ich habe das so getestet Code: (defun c:test nil (PL_WIDLTSLAY 1.1 0.5 "Folie"))(defun PL_WIDLTSLAY (REAL-PLINEWID REAL-CELTSCALE REAL-CELTYPE / *ERROR* OLD-PLINEWID OLD-CELTSCALE OLD-CELTYPE) ;------------------- (defun *ERROR* (msg) (and OLD-PLINEWID (setvar 'PLINEWID OLD-PLINEWID)) (and OLD-CELTSCALE (setvar 'CELTSCALE OLD-CELTSCALE)) ;? (if (not (member msg '("Function cancelled" "quit / exit abort" "Funktion abgebrochen" ) ) ) (princ (strcat "\nError: " msg)) ) (princ) ) (setq OLD-PLINEWID (getvar "plinewid")) (setvar "plinewid" REAL-PLINEWID) (setq OLD-CELTSCALE (getvar "celtscale")) (setvar "celtscale" REAL-CELTSCALE) ;? ;? (command "_.PLINE") (while (= 1 (logand (getvar "CMDACTIVE") 1)) (command PAUSE) ) (setvar "plinewid" OLD-PLINEWID) (setvar "celtscale" OLD-CELTSCALE) ;------------------- (princ) )
Sollte doch so richtig sein oder? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 28. Sep. 2020 09:57 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Zitat: Original erstellt von Hämmy: @cadffm, <code> ich habe das so getestet Die Frage ist warum du dies gemacht hast, es sieht aus wie meine Vorlage von oben, praktisch unverändert Sollte doch so richtig sein oder? Nein, keinesfalls, das ist ja ein unfertiger Code!?
hmm. Ich postete diese Codevorlage mit den Worten:
Zitat: Original erstellt von cadffm: >Ich habe dir hier "das Drumherum" vorbereitet, nun muss nur der Rest zwischen beiden beiden ";---" Zeilen ergänzt werden, was dem Code zu den beiden anderen Fällen für die Breite und Linientypfaktor entsprechen sollte
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 11:27 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
also so meinst du dann? Code: (defun c:test nil (PL_WIDLTSLAY 1.1 0.5 "Folie"))(defun PL_WIDLTSLAY (REAL-PLINEWID REAL-CELTSCALE REAL-CELTYPE / *ERROR* OLD-PLINEWID OLD-CELTSCALE OLD-CELTYPE) ;------------------- (defun *ERROR* (msg) (and OLD-PLINEWID (setvar 'PLINEWID OLD-PLINEWID)) (and OLD-CELTSCALE (setvar 'CELTSCALE OLD-CELTSCALE)) (and OLD-CELTYPE (setvar 'CELTYPE OLD-CELTYPE)) ;? (if (not (member msg '("Function cancelled" "quit / exit abort" "Funktion abgebrochen" ) ) ) (princ (strcat "\nError: " msg)) ) (princ) ) (setq OLD-PLINEWID (getvar "plinewid")) (setvar "plinewid" REAL-PLINEWID) (setq OLD-CELTSCALE (getvar "celtscale")) (setvar "celtscale" REAL-CELTSCALE) (setq OLD-CELTYPE (getvar "celtype")) (setvar "celtype" REAL-CELTYPE) ;? ;? (command "_.PLINE") (while (= 1 (logand (getvar "CMDACTIVE") 1)) (command PAUSE) ) (setvar "plinewid" OLD-PLINEWID) (setvar "celtscale" OLD-CELTSCALE) (setvar "celtype" OLD-CELTYPE) ;------------------- (princ) )
Gruß Hämmy [Diese Nachricht wurde von Hämmy am 28. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Und jetzt noch ein Posting, sorry das ich euch alle nerve, aber ich möchte es verstehen: Code: (defun c:test nil (PL_WIDLTSLAY 1.1 0.5 "Folie"))
- "defun" startet den Befehl oder? - "nil" was macht das? - "PL_WIDLTSLAY" ist das vordefiniert oder frei erstellt? es bezieht sich ja auf den unteren Code: Code: (defun PL_WIDLTSLAY (REAL-PLINEWID REAL-CELTSCALE REAL-CELTYPE / *ERROR* OLD-PLINEWID OLD-CELTSCALE OLD-CELTYPE)
heisst das, es wir mit dem oben alles ausgeführt was hier in Klammern steht? und wie ist es beim Rest, wie muss ich diesen Aufbau verstehen?
Code: (defun *ERROR* (msg) (and OLD-PLINEWID (setvar 'PLINEWID OLD-PLINEWID)) (and OLD-CELTSCALE (setvar 'CELTSCALE OLD-CELTSCALE)) (and OLD-CELTYPE (setvar 'CELTYPE OLD-CELTYPE))
das sagt sicherlich aus, was danach passiert, was macht "(msg)" ? wie es darunter steht? Ich denke ich muss den Aufbau verstehen um so etwas selbst zu können Gruß und trotzdem danke für die Hilfe Hämmy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 28. Sep. 2020 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Servus, bin noch ein paar Minuten unterwegs und kann daher etwas schlecht nachsehen und nicht testen >"also so meinst du dann?" Sieht auf den ersten Blick gut aus. Was passiert denn wenn jetzt wenn du alles geladen hast und Befehl TEST startest? Den Rest dann in 10-20min.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 28. Sep. 2020 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
>>"damit geht es dann natürlich Na aber Hallo! Super. So sietze ich nun wieder am PC und kann den Rest beantworten - wenigstens im Groben. >>aber ich möchte es verstehen:
Code: (defun c:test nil (PL_WIDLTSLAY 1.1 0.5 "Folie"))
>>- "defun" startet den Befehl oder? defun DEfiniert FUNktionen, der Funktionsname folgt direkt nach defun Funktionsnamen welche mit C: beginnen sind besonders: Hiermit wird ein AutoCAD Befehl definiert (defun C:TEST definiert einen Befehl TEST- "nil" was macht das? nil macht überhaupt nichts, im Grunde bedeuted es wirklich "nichts". NotInList, NothingInList Aber da DEFUN als zweites Argument die Liste von lokalen und globalen Variablen erwartet muss ich dort etwas angeben, auch wenn es "nichts" ist. Zu 99% wirst du die Zeile so im Netz finden: (defun c:TEST ()... Aber da ist eben "nichts in der Liste" - "PL_WIDLTSLAY" ist das vordefiniert oder frei erstellt? es bezieht sich ja auf den unteren Code: Code: (defun PL_WIDLTSLAY (REAL-PLINEWID REAL-CELTSCALE REAL-CELTYPE / *ERROR* OLD-PLINEWID OLD-CELTSCALE OLD-CELTYPE)
Wie oben geschrieben. Das ist mein ausgedachter Funktionsname, diese ist bis auf ein paar generellen Einschränkungen frei zu wählen BTW: PL_WIDLTS war gewählt um "PLine_WIDTH+LTSCALE als Abkürzung im Funktionsnamen darzustellen PL_WIDLTSLAY war ursprünglich für PLine_WIDTH+LTSCALE+LAYER angedacht von mir. Da jetzt aber der Linientyp und nicht der Layer kontrolliert wird, wäre die Abkürzung eher ungünstig und ich würde PL_WIDLTSLTY für PLine_WIDTH+LTSCALE+LTYPE nutzen Dein Befehl (defun c:TEST kann aber natürlich auch ganz anders lauten, wie zB. FOLIE => (defun c:FOLIE>>heisst das, es wir mit dem oben alles ausgeführt was hier in Klammern steht? Diese Zeile wird ausgeführt wenn man TEST startet: (PL_WIDLTSLAY 1.1 0.5 "Folie") Was dann bedeutet: Die Funktion PL_WIDLTSLAY wird gestartet und dabei drei Argumente übergeben, 1.1 0.5 und "Folie" [i]>>und wie ist es beim Rest, wie muss ich diesen Aufbau verstehen? Code: (defun *ERROR* (msg) (and OLD-PLINEWID (setvar 'PLINEWID OLD-PLINEWID)) (and OLD-CELTSCALE (setvar 'CELTSCALE OLD-CELTSCALE)) (and OLD-CELTYPE (setvar 'CELTYPE OLD-CELTYPE))
das sagt sicherlich aus, was danach passiert, was macht "(msg)" ? wie es darunter steht?[/i] Das ist aus der Funktion *ERROR* die nur im Fehlerfall (wie Abbruch) ausgeführt wird, die Zeile(n) sollen dann nachsehen ob zB. ein Wert für OLD-PLINEWID vorhanden ist und dann diesen Wert wieder aktuell setzen. Das Programm speichert den Wert beim Start (setq OLD-PLINEWID (getvar "plinewid")) damit dieser am Ende wieder zurückgesetzt werden kann, zwischendrin ändert man ja den Wert auf den Wert, welche du als erstes übergibst. >>Ich denke ich muss den Aufbau verstehen um so etwas selbst zu können Ja klar, den Originalcode (nur für PlineWid und CeLTscale) umarbeiten, das wäre etwas hoch gegriffen, daher auch meine "Fast fertig"-Vorlage und mit dieser ging es ja dann auch nachdem du dich mal damit beschäftigt hast.
[F1] Hilfe zu AutoLISP/VisualLisp So ziemlich ALLES im Entwickler-Handbuch [X] Die Lisp-Funktionen im einzelnen [X] Wer ernsthaft einsteigen möchte, nicht nur eine paar Befehle steuern möchte und dabei über jede Klammer stolpern, der fängt mit sowas an: Axels AutoLISP Tutorial [X]
Dort wird von Grund auf erklärt wie in Lisp alles funktioniert. Schlag dir alle "Ziele" aus dem Kopf und arbeite das Tutorial durch, lesen, testen in der Befehlszeile, verstehen. Egal wie komplizert später die Programme sind, für alle muß an diese Basics verstanden haben damit man nicht über jede Klammer und Zeile nachdenken muss. Allerdings muss man neben der Programmiersprache auch den Aufbau von so einer DWG/DXF Datei kennen, die Prorgrammiersprache ist also nicht das Einzige was es zu lernen gilt und oft nicht bewußt ist oder vergessen wird dabei. Kommt alles mit der Zeit.. Und Hilfeseiten wie diese hier ObjectModel [X], und die DXF Referenz [X] aber an erster Stelle steht mal die Lisp Syntax, das Werkzeug um damit arbeiten zu können. Viel Spaß noch damit Sebastian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 13:01 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
das ist doch einmal eine super Erklärung, das hat mir wirklich geholfen es etwas besser zu verstehen. Es ist schon so wie ich mir das gedacht habe, also war ich nicht ganz auf dem Holzweg Ich werde einmal schauen ob ich die Zeit finde mich etwas mehr damit zu beschäftigen, Vorlagen habe ich jetzt genug bekommen Danke noch einmal für die Geduld Gruß Hämmy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 28. Sep. 2020 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Zitat: Original erstellt von Hämmy: Ich werde einmal schauen ob ich die Zeit finde mich etwas mehr damit zu beschäftigen, ...
Wenn Du mehr mit ACAD und sich immer wiederholenden Abläufen zu tun hast, ist die Zeit sich damit mehr zu beschäftigen, sehr wertvoll eingesetzte Zeit. Sie kommt früher oder später in einem Vielfachen durch Zeiteinsperung zurück! Gruß Thomas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Bauingenieur (m/w/d) Stahlbau | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden im Anlagenbau und arbeiten mit an anspruchsvollen Lösungen für die Industrie.... | Anzeige ansehen | Bauwesen |
|
Hämmy Mitglied Technischer Zeichner
Beiträge: 86 Registriert: 01.04.2020 Windows 10 Professional 64-Bit Intel Core i7-3770 3,40GHz 32,0 GB RAM Grafikkarte Radeon RX 470
|
erstellt am: 28. Sep. 2020 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
ich zeichne den ganzen Tag, darum fallen mir auch immer so Dinge auf, die mir das Zeichnen erleichtern könnten. Generell hast du damit schon Recht, ich werde sicherlich das ein oder andere mal hier noch dumm fragen, aber ich versuche mich etwas einzulesen und zu testen. Gruß Hämmy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |