| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Probleme mit LSP (1787 mal gelesen)
|
andreasmax Mitglied
Beiträge: 6 Registriert: 19.02.2007 WinXP SP2, AutoCAd 2006 SP1, 1GB RAM
|
erstellt am: 19. Feb. 2007 01:43 <-- editieren / zitieren --> Unities abgeben:
Da ich hier neu bin ein HALLO an alle. Jetzt zu meinem Problem. Habe nach einer LSP Datei gesucht die mir bestimmte Layer erstellt beim start von z.B. "*TEXT" oder "*ARC". Habe hier auch was gefunden. So wie es aber jetzt ist macht es ein Problem .Habe ich die Zeichnung ganz normal gespeichrt über Datei, Speichern unter usw. und will danach AutoCad schliessen bekomme ich immer die Meldung "Änderungen in C:\Dokumente.....dwg. speichern?" Wird die LSP Datei nicht geladen kann ich CAD ganz normal schliessen. Kann mir bitte jemand sagen wie muß es aussehen damit ich die Meldung nicht mehr bekomme. Die LSP macht sonst das was ich brauche nur beim schliessen von Cad gibt es die Warnung. Kann es vielleicht an einer anderen LSP liegen die geladen ist? Alles auf WinXP SP2 mit AutoCad 2006 SP1. Code: ----- (vl-load-com) (vlr-remove-all :vlr-editor-reactor) (vlr-editor-reactor nil '((:vlr-commandWillStart . MyCommandWillStart) (:vlr-commandEnded . MyCommandEnded) (:vlr-commandCancelled . MyCommandEnded) ) ) (defun MyCommandWillStart (reactor value / ) (setq value (car value)) (cond ((wcmatch value "*ARC") (setlayer "Bogenlayer" 7)) ((= value "CIRCLE") (setlayer "KREISLAYER" 7)) ((wcmatch value "*TEXT") (setlayer "TEXTLAYER" 7)) ) ) (defun MyCommandEnded (reactor value / ) (setvar "CLAYER" "0") ) (defun setlayer ( layer farbe / ) (if (not (tblsearch "LAYER" layer)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 layer) (cons 70 0) (cons 62 farbe) ) ) ) (setvar "clayer" layer) ) Bernd [Diese Nachricht wurde von andreasmax am 19. Feb. 2007 editiert.] [Diese Nachricht wurde von andreasmax am 19. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 19. Feb. 2007 08:13 <-- editieren / zitieren --> Unities abgeben: Nur für andreasmax
Ich vermute mal ungetestet das auf grund der Tatsache, das am ende eines jeden Befehl (setvar "CLAYER" "0") gesetzt wird, und dadurch eine Änderung an der Zeichnung vorgenommen wird. Das merkt ler End oder quit befehl natürlich und stellt die Frage nach sichern. Die Func MyCommandEnded musst du ändern ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andreasmax Mitglied
Beiträge: 6 Registriert: 19.02.2007 WinXP SP2, AutoCAd 2006 SP1, 1GB RAM
|
erstellt am: 19. Feb. 2007 12:31 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 19. Feb. 2007 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für andreasmax
(ungestestet) aber mach doch bei Command-ende auch bloß was bei "ARC"/"CIRCLE" oder "TEXT" ... also ähnlich wie MyCommandWillStart ------------------ - 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 |
andreasmax Mitglied
Beiträge: 6 Registriert: 19.02.2007 WinXP SP2, AutoCAd 2006 SP1, 1GB RAM
|
erstellt am: 19. Feb. 2007 13:34 <-- editieren / zitieren --> Unities abgeben:
Auch an CADmium danke für die Mühe. Also ich glaube dass ich den Tip missverstanden habe (Sorry) und so wie es jetzt ist geht es nicht. Code: ----- (vl-load-com) (vlr-remove-all :vlr-editor-reactor) (vlr-editor-reactor nil '((:vlr-commandWillStart . MyCommandWillStart) (:vlr-commandEnded . MyCommandEnded) (:vlr-commandCancelled . MyCommandEnded) ) )
(defun MyCommandWillStart (reactor value / ) (setq value (car value)) (cond ((wcmatch value "*ARC") (setlayer "Bogenlayer" 7)) ((= value "CIRCLE") (setlayer "KREISLAYER" 7)) ((wcmatch value "*TEXT") (setlayer "TEXTLAYER" 7)) ) ) (defun MyCommandEnded (reactor value / ) (cond ((wcmatch value "*ARC") (setlayer "Bogenlayer" 7)) ((= value "CIRCLE") (setlayer "KREISLAYER" 7)) ((wcmatch value "*TEXT") (setlayer "TEXTLAYER" 7)) ) (defun setlayer ( layer farbe / ) (if (not (tblsearch "LAYER" layer)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 layer) (cons 70 0) (cons 62 farbe) ) ) ) (setvar "clayer" layer) ) Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 19. Feb. 2007 14:08 <-- editieren / zitieren --> Unities abgeben: Nur für andreasmax
Du bewegst dich mit den Reaktoren auf ziemlich hohem Know Hoff Solltest du nicht wissen, was du tust, bzw. was eigentlich diese Programmzeilen tun, rate ich dir dich ersteinmal mir diesem Thema vertraut zu machen. Es kann nicht Sinn und Zweck dieses Forums sein, den Usern fertig durchgekaute Programmlösungen vorzusetzen, sondern es soll hier Hilfestellung gegeben werden. Wenn hier eine mach-mir-mal Mentalität gefordert werden sollte, brauchen sich die Leute auch nicht zu Wundern, wenn mal eines Tages hier Programmcode auftaucht, der die gesamte Zeichnung zerstört, oder noch anderes macht. ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andreasmax Mitglied
Beiträge: 6 Registriert: 19.02.2007 WinXP SP2, AutoCAd 2006 SP1, 1GB RAM
|
erstellt am: 19. Feb. 2007 14:48 <-- editieren / zitieren --> Unities abgeben:
Ich kann die Kritik verstehen und sehe es nicht so eng. Ich habe das Thema hier nicht 5x geöffnet sondern nur gantwortet und hätte ich keine Antwort bekommen so wäre es auch zu ende. Man sollte vielleicht auch mal abwarten ob jemand der keine Antwort bekommt es auch richtig interpretieren kann und nicht gleich so zu reagieren. Sicher ist es auch die Aufgabe von einem Moderator so etwas zu machen, aber ich habe das Thema nicht versucht hier x mal zu starten. Es ist nicht meine Art, aber ich konnte mir diesmal nicht selbst helfen und habe eben versucht die Hilfe woanders zu finden. Bitte das hier nicht missverstehen, ich kann mir denken dass sowas hier vielleicht öfter passiert und man es satt hat. Fragen sollten schon erlaubt sein und ein Forum ist für mich die Platform dafür. Bitte den Beitrag schliessen oder löschen. Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 19. Feb. 2007 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für andreasmax
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 19. Feb. 2007 16:14 <-- editieren / zitieren --> Unities abgeben: Nur für andreasmax
natürlich hast du das Thema hier geöffnet. Wer denn sonst? Zwar nicht 5x sondern 1mal aber das bleibt. Und was ist an dem Hinweis falsch, das du lieber bei solchen Dingen die Finger weglässt, wenn du nicht weißt, was da passiert. Du solltest ja auch kein Flugzeug fliegen, nur weil du 'ne Bedienungsanleitung im Internet gefunden hast. Es ist richtig, das ein Forum auch für Fragen da ist. Aber auich für solche Antworten. Und Kritik einstecken müssen wir alle. geschlossen odergelöscht wird das sicherlich auch nicht, denn noch bewegt sich alles im Rahmen des Mitmenschlichen. ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andreasmax Mitglied
Beiträge: 6 Registriert: 19.02.2007 WinXP SP2, AutoCAd 2006 SP1, 1GB RAM
|
erstellt am: 19. Feb. 2007 19:31 <-- editieren / zitieren --> Unities abgeben:
Was kommt als nächstes, dass ich kein Computer benutzen darf? Ich bin keine 40 mehr um mich in dieser Form belehren zu lassen. Es sollte reiche dass ich mir die Blöße gebe und zeige dass ich es offenbar nicht kann, da muss man auch nicht nachlegen. Ja ich habe das Thema geöffnet, aber nicht um mich in dieser Form vorführen zu lassen. Es gibt auch Moderatoren die meinen immer im Recht zu sein. Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 19. Feb. 2007 20:11 <-- editieren / zitieren --> Unities abgeben: Nur für andreasmax
Zitat: Original erstellt von andreasmax: Was kommt als nächstes, dass ich kein Computer benutzen darf? Ich bin keine 40 mehr um mich in dieser Form belehren zu lassen. Es sollte reiche dass ich mir die Blöße gebe und zeige dass ich es offenbar nicht kann, da muss man auch nicht nachlegen. Ja ich habe das Thema geöffnet, aber nicht um mich in dieser Form vorführen zu lassen. Es gibt auch Moderatoren die meinen immer im Recht zu sein. Bernd
Was is'n dir über die Leber gelaufen? Das Forum lebt von Fragen und Antworten und gefragt hast du ja auch ganz vernüftig. Aber Fakt scheint mir auch, dass du nicht weißt, was bei so einem Programm passiert. Und das kann u.U. gefährlich werden. Das nicht für alles gleich ne Komplettlösung gepostet wird, verstehe ich auch etwas in der Art Selbstschutz der User ( auch wenn das für dich vielleicht wieder belehrend klingen mag .. ist nicht so gemeint, nur ein "Schubser zum Nachdenken" ) in deinem Fall meinte ich bei meiner ersten Antwort einfach (defun MyCommandEnded (reactor value / ) (setq value (car value)) (cond ((wcmatch value "*ARC") (setvar "CLAYER" "0")) ((= value "CIRCLE") (setvar "CLAYER" "0")) ((wcmatch value "*TEXT") (setvar "CLAYER" "0")) ) ) durchdenke dir den Code, überleg was er macht und dann bau ihn ein. (Und nächstes Mal bitte in einem freundlicheren Ton posten, sonst vergeht auch mir das helfen wollen.)
------------------ - 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 |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 19. Feb. 2007 20:49 <-- editieren / zitieren --> Unities abgeben: Nur für andreasmax
[EDIT-hatte CADmium´s Beitrag noch nicht gelesen gehabt] Das "Belehrung" nichts mit dem Alter zutun hat und sowas nebensächliches habe ich dir ja via PM gesendet Wegen dem Thema selbst: Ist dir nicht klar was du ändern mußt oder hast du das Problem als solches noch nicht begriffen ? Du setzt (nach selbst durchgeführtem Befehl) mit einem Reactor (setvar "CLAYER" "0") - dies wiederum ist ja auch wieder ein "Befehl" und Acad erkennt (Systemvariable "DBMOD") das eine Änderung stattgefunden hat ohne danach gespeichert worden zu sein. Somit kommt logischer Weise die Frage von Acad nach dem speichern. Lösung-überlegen wie man diese (nun "bekannte") Problem löst. Weiter zum dem Code: Ist das nur zum testen oder dein Ernst ? Also möchtest du nach jedem Befehl den aktullen Layer auf "0" setzen ? Ist ja völliger Quatsch meiner Meinung nach.. Also entweder darfst du nicht jedem Befehl ein "setvar" hinterher schicken, oder oder du mußt es versuchen an andere Stelle zutun. [Diese Nachricht wurde von cadffm am 19. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andreasmax Mitglied
Beiträge: 6 Registriert: 19.02.2007 WinXP SP2, AutoCAd 2006 SP1, 1GB RAM
|
erstellt am: 19. Feb. 2007 21:18 <-- editieren / zitieren --> Unities abgeben:
Um es kurz zu machen. Will es hier nicht unbeantwortet lassen. War gestern lange auf und heute sehr früh auf der Arbeit. Am meisten ärgert mich dass ich aus den Hinweisen nichts machen konnte obwohl mir klar war dass es hilfreich war. Versuche es morgen erneut und mache jetzt den Kasten aus sonst schlafe ich morgen auf der Arbeit. Antwort folgt. Bernd Edit Volltreffer cadffm ich habe es (noch) nicht begriffen obwohl CADmium erste Hinweis sehr gut war. Immerhin habe ich mich als ich es dann begriffen habe selbst am meisten geärgert. Da aber CADmium so freundlich war um es noch deutlicher beim zweiten mal geschrieben hat, hat der Hinweis auch mein Problem gelöst. DANKE!! Ich hätte mich wohl noch heute im Kreis gedreht. Auch an cadffm Dankeschön für die kurze Erklärung aus dem letzten Beitrag. Es Funktionirt natürlich jetzt auch dank der Hilfe hier. Bernd
[Diese Nachricht wurde von andreasmax am 20. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |