Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Probleme mit OSNAP / OSMODE - ON / OFF

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:  Probleme mit OSNAP / OSMODE - ON / OFF (3685 mal gelesen)
Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

erstellt am: 29. Dez. 2005 13:35    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

Liebe Gemeinde,

bei diversen Zeichenbefehlen, die aus AutoLISP heraus aufgerufen werden, passiert scheinbar nicht das, was passieren sollte. Vor einiger Zeit bin ich schon mal auf einen Beitrag gestoßen, der - so ganz nebenbei - erwähnt, man solle doch OSNAP auf "0" (Null) setzen.

Diese Randbemerkung wurde nicht weiter diskuiert. Es ging darum, eine Linie "von Punkt... nach Punkt..." zu zeichnen. Beispielsweise wurde hier eine Linie mit der Länge "0" erstellt. Mit OSMODE auf "0" wird eine Linie mit der gewünschten Länge konstruiert.

Fragen: Welchen Einfluß haben die Einstellungen der o.g. sysvars? Warum klappt es, wenn die sysvars auf "0" gestellt werden? Spielt z.B der Abstand der beiden Punkte voneinander eine Rolle? Inwiefern macht sich die Art der Koordinateneingabe bemerkbar (mit "@" oder absolut)?

Da ich in Lisp nicht so fit bin, arbeite ich bisher mit "command". Tritt dieses Phänomen auch bei "entmake" auf?

Zwar läßt sich dieses Problem durch ordentliche Steuerung der sysvars umgehen. Allerdings würde ich gerne den Hintergrund verstehen. Bin für jede Hilfe dankbar!

Freddy

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

.

erstellt am: 29. Dez. 2005 13:44    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 Paulchen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Paulchen:

Fragen: Welchen Einfluß haben die Einstellungen der o.g. sysvars? Warum klappt es, wenn die sysvars auf "0" gestellt werden? Spielt z.B der Abstand der beiden Punkte voneinander eine Rolle?


Dazu gibt die ACAD-Hilfe eigentlich ausfürlich Auskunft:
Zitat:
OSMODE (Systemvariable)
Typ: Ganzzahl
Gespeichert in: Registrierdatenbank des Systems
Ausgangswert: 4133
Stellt fortlaufende Objektfangmodi unter Verwendung der folgenden Bitcodes ein:
0 KEIner
1 ENDPunkt
2 MITtelpunkt
4 ZENtrum
8 PUNkt
16 QUADrant
32 SCHnittpunkt
64 BASispunkt
128 LOT
256 TANgente
512 NÄChster Punkt
1024 QUIck
2048 Angenomm. Schnittpunkt (ANP)
4096 HILfslinie
8192 PARallel

Um mehrere Objektfangmodi festzulegen, geben Sie die Summe der Einzelwerte ein. Mit der Eingabe 3 aktivieren Sie beispielsweise die Objektfangmodi Endpunkt (1) und Mittelpunkt (2). Wenn Sie 16383 eingeben, werden alle Objektfangmodi verwendet.

Wenn Sie die Objektfangmodi mit der Schaltfläche Ofang in der Statuszeile deaktivieren, wird der Bitcode 16384 (0x4000) zusätzlich zum normalen Wert von OSMODE zurückgegeben. Mit diesem zusätzlichen Wert können Entwickler Anwendungen für AutoCAD schreiben und diesen Modus von den Objektfangmodi unterscheiden, die aus dem Dialogfeld Entwurfseinstellungen heraus deaktiviert wurden. Mit diesem Bit können die Objektfangmodi aktiviert und deaktiviert werden. Wenn Sie einen Wert für OSMODE eingeben, während dieses Bit nicht gesetzt ist, aktivieren Sie die fortlaufenden Objektfangmodi.

Weiterhin ist OSNAPCOORD vielleicht interessant:

OSNAPCOORD (Systemvariable)
Typ: Ganzzahl
Gespeichert in: Registrierdatenbank des Systems
Ausgangswert: 2
Steuert, ob in der Befehlszeile eingegebene Koordinaten fortlaufende Objektfänge außer Kraft setzen.

0 Fortlaufende Objektfangeinstellungen setzen Tastaturkoordinateneinträge außer Kraft.
1 Tastatureinträge setzen Objektfangeinstellungen außer Kraft.
2 Tastatureinträge setzen Objektfangeinstellungen, bis auf diejenigen in Skripten, außer Kraft.

und dann gibt's noch den Befehl "Öffnung"

Zitat:
Original erstellt von Paulchen:
 
Da ich in Lisp nicht so fit bin, arbeite ich bisher mit "command". Tritt dieses Phänomen auch bei "entmake" auf?

Nein, entmake interessieren die Objektfänge nicht, das es die Elemente entsprechend der übergebenen GC-Liste in der Datenbank erzeugt.

------------------
  - 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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

erstellt am: 29. Dez. 2005 15: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


test.GIF

 
Danke schön für Deine Bemühungen! Allerdings läßt sich mein Problem dadurch nicht vollständig lösen. Hier eine genauere Beschreibung anhand von zwei Beispielen.

Zunächst der Aufruf über die Befehlszeile:

Zitat:
Command: _.line
Specify first point: 0,0,0
Specify next point or [Undo]: 10,0,0
Specify next point or [Undo]: @0,10,0
Specify next point or [Close/Undo]:

Hier werden hübsch anständig zwei Linien erstellt. Nun der gleiche Ablauf als defun:

Code:
(defun test (/ pt1 pt2)
  (setq pt1 '(0 0 0)
        pt2 '(10 0 0)
  )
  (command "_.line" pt1 pt2 "@0,10,0" "")
)

Funktioniert auch prächtig, solange keine Objekte "in der Nähe" sind. Sobald andere Elemente existieren, wird die defun gestört. Hier der Punkt pt2 nach Eingabe von "id" in der Befehlszeile:

Zitat:
id Specify point:  X = 9.9695    Y = -0.5356    Z = 0.0000

Dieser Punkt entspricht nun wirklich nicht den Vorgaben; zufällig (?) ist dieser Punkt auch der Mittelpunkt einer der zum Test willkürlich erstellten Linien. An diesem hängt sich die defun dann auf. Auch der Nullpunkt (in der defun pt1) ist nicht der Startpunkt der ersten Linie.

Ein Bildchen im Anhang hilft vielleicht, das nachzuvollziehen. Die weißen Linien sind die willkürlich erstellten Stör-Test-Objekte, die magentafarbenen die der defun, in gelb die der Befehlszeileneingabe.

Kannst Du/ihr zur Erweiterung meines Horizontes beitragen?

[Nachtrag]
Ich arbeite mit ACAD2000; Werte der sysvars (für alle o.g. Fälle unverändert): OSMODE 175, OSNAP on, OSNAPCOORD 2. Hm - irgendwie hat es mir beim Editieren die Formatierung zerlegt. Ich bitte um Verzeihung:-)
[/Nachtrag]

Freddy dankt!

[Diese Nachricht wurde von Paulchen am 29. Dez. 2005 editiert.]

[Diese Nachricht wurde von Paulchen am 29. Dez. 2005 editiert.]

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

.

erstellt am: 29. Dez. 2005 18:51    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 Paulchen 10 Unities + Antwort hilfreich

Steht zwar schon alles da, aber setze mal an den Anfang deines  Lisps
(setvar "OSNAPCOORD" 1)
oder
(setvar "OSMODE" 0)

am Ende kannst du die Variablen ja wieder zurücksetzen oder du nimmst gleich den hier im Forum diskutierten Errorhandler!

------------------
- 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

andi2050
Mitglied



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

Beiträge: 107
Registriert: 11.03.2003

erstellt am: 29. Dez. 2005 19: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 Paulchen 10 Unities + Antwort hilfreich

Hallo allerseits !

Beim Durchlesen des Threads ist mir bei einer Antwort von Cadmium (Auszug aus der Hilfedatei) was aufgefallen. Durch setzen/löschen eines Bits in "OSMODE" kann der Objektfang temporär ausgeschaltet werden, ohne daß die Objektfangbits gelöscht werden (wie beim Drücken von F3)

Müsste mit folgendn Funktionen machbar sein (nicht ausführlich getestet)

(defun os-off (/)
  (setvar "OSMODE"(logior (getvar "OSMODE") 16384))
  )
(defun os-on (/)
  (setvar "OSMODE"(logand (getvar "OSMODE") 16383))
  )

Beispiel:

...
(os-off)
(command "_LINE".......)
(commnad "_CIRCLE" .......)
(os-on)
...

Man muß die aktuellen Objektfangeinstellungen nicht in einer Variablen zwischenspeichern wie sonst üblich:
...
(setq osvar (getvar "OSMODE"))
(setvar "OSMODE" 0)
... Zeichnen ...
(setvar "OSMODE" osvar)
...

Grüße
Andi

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

.

erstellt am: 30. Dez. 2005 10:59    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 Paulchen 10 Unities + Antwort hilfreich

@andi ..kann man machen ..entspricht den "schalten" des OFang-Buttons in der Statusleiste... ich ziehe jedoch die Variante mit den Errorhandler deinen beiden Funktionen vor, da das Rücksetzen auch im Fehlerfall bzw. User-Abbruch erfolgt.

------------------
- 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

Paulchen
Mitglied
Bauing./SW-Entwickler


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

Beiträge: 1227
Registriert: 19.08.2004

erstellt am: 30. Dez. 2005 11: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

Danke euch beiden! Habe wieder was dazugelernt.

Guten Rutsch!

Freddy

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