Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Anfängerproblem Punkte auswählen Objektfang

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:  Anfängerproblem Punkte auswählen Objektfang (940 mal gelesen)
KeMü
Mitglied
Straßenplaner

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

Beiträge: 5
Registriert: 19.02.2008

AUTODESK CIVIL 3D 2007 SP3
Aufsatz: VESTRA Civil 3D 2007
MS Windows 2000 Professional SP4

erstellt am: 19. Feb. 2008 17:28    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,
ich bin gerade an meinen ersten Lisp-Schritten und mache wahrscheinlich einen grundlegenden Anfängerfehler. Im Forum und meinen Büchern habe ich dazu auch nichts gefunden, vielleicht kann mir ja hier jemand helfen?

Ich habe eine Lisp geschrieben, die mir die Neigung zwischen zwei Punkten in Prozent genau in die 2D-Mitte zweier Punkte als Text ausliest. Zum Testen habe ich mir eine 3D-Linie gezeichnet. Nach dem Start der Lisp-Datei werde ich aufgefordert zwei Punkte einzugeben. Wenn ich die Punkte frei wähle (oder mit "nächster Punkt"), plaziert mir das Programm den gewünschten Text genau zwischen die Punkte. Wenn ich diese Punkte jedoch mit dem Objektfang Endpunkt auswähle (und alle anderen Fangmodi ausgeschaltet sind), wird der neue Text auf die Koordinate eines der beiden ausgewählten Punkte gesetzt und nicht auf die berechnete Mitte (pt3). Anscheinend wird die richtig? ermittelte Koordinate von pt3 dann im command "Text" ignoriert?

So sieht meine Lisp aus:
(defun c:test (/ ech ang pt1 pt2 pt3 x1 y1 x2 y2 x3 y3 )
  (setq ech (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
 
  (princ "\n Angabe über %-Neigung zweischen zwei Punkten")
  (princ "\n Wert wird als Text in die Mitte der Punkte gesetzt")
 
  (SETQ pt1 (getpoint "\nErster Punkt:"))
  (SETQ pt2 (getpoint pt1 "\nZweiter Punkt:")) 
  ;xy Koordinaten der Punkte filtern (ein anderer Weg wäre über "Polar")
  (SETQ x1 (car pt1))
  (SETQ y1 (cadr pt1))
  (SETQ x2 (car pt2))
  (SETQ y2 (cadr pt2))
 
  ;pt3 2D-Mittelpunkt zwischen den zwei gewählten Punkten
  (SETQ X3 (/ (+ X1 X2) 2.0))
  (SETQ y3 (/ (+ y1 y2) 2.0))
  (SETQ pt3 (list x3 y3))

  ;Testausdruck zu Prüfen von pt3-Koordinate
  (princ pt3)

  ;Text wird auf den 2D-Mittelpunkt der angetippten Punkte gesetzt
  ;; Prozent ist noch ein Platzhalter

  (command "text" pt3 "2" "0" "Prozent")

  (setvar "CMDECHO" ech)
  (princ)
)

Kann mich jemand einlispen?
Danke Kerstin

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 19. Feb. 2008 17:50    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 KeMü 10 Unities + Antwort hilfreich

ergänze dein Tool um folgende fett gedruckten Zeilen:

Code:

(defun c:test (/ ech ang pt1 pt2 pt3 x1 y1 x2 y2 x3 y3 )
  (setq ech (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq oldsnco (getvar "OSNAPCOORD"))
  (setvar "OSNAPCOORD" 0)


  (princ "\n Angabe über %-Neigung zweischen zwei Punkten")
  (princ "\n Wert wird als Text in die Mitte der Punkte gesetzt")

  (SETQ pt1 (getpoint "\nErster Punkt:"))
  (SETQ pt2 (getpoint pt1 "\nZweiter Punkt:"))
  ;xy Koordinaten der Punkte filtern (ein anderer Weg wäre über "Polar")
  (SETQ x1 (car pt1))
  (SETQ y1 (cadr pt1))
  (SETQ x2 (car pt2))
  (SETQ y2 (cadr pt2))

  ;pt3 2D-Mittelpunkt zwischen den zwei gewählten Punkten
  (SETQ X3 (/ (+ X1 X2) 2.0))
  (SETQ y3 (/ (+ y1 y2) 2.0))
  (SETQ pt3 (list x3 y3))

  ;Testausdruck zu Prüfen von pt3-Koordinate
  (princ pt3)

  ;Text wird auf den 2D-Mittelpunkt der angetippten Punkte gesetzt
  ;; Prozent ist noch ein Platzhalter

  (command "text" pt3 "2" "0" "Prozent")

  (setvar "CMDECHO" ech)
  (setvar "OSNAPCOORD" oldsnco)
  (princ)
)



------------------
Grüsse

Thomas

Korrekturen zum Kochbuch AutoLISP

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

KeMü
Mitglied
Straßenplaner

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

Beiträge: 5
Registriert: 19.02.2008

AUTODESK CIVIL 3D 2007 SP3
Aufsatz: VESTRA Civil 3D 2007
MS Windows 2000 Professional SP4

erstellt am: 19. Feb. 2008 18:21    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 für die schnell Antwort.
Das Umstellen der Objektfangpriorität hat leider auch nicht geholfen. Aber es hat mich auf die Idee gebracht den OSNAP zu ändern:

(setvar "OSMODE" 75) (Endpunkt, Punkt, Mitte, Basis)

Damit geht es jetzt meisten, aber nicht immer. Was ich nicht wirklich begreife, was aber für die Anwendung vorerst reicht. Wenn OSMODE z.B. auf 1 (Endpunkt) steht, wird der Text immer auf die Koordinate des ersten ausgewählten Punktes (pt1)und nicht auf den berechneten Punkt pt3 gesetzt, seltsam. Vielleicht weiß ja noch jemand den Grund, ich würde das ja gerne verstehen.
Gruß Kerstin

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 19. Feb. 2008 18:27    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 KeMü 10 Unities + Antwort hilfreich

Ja - ein anderer Grund dafür ist (du kannst es mal testen in dem du OSNAPCOORD händisch auf 0 stellst), dass deine OSnaps nicht richtig gesetzt sind.

Das bedeutet:

Zum einen musst du die "Osnaps" ausschalten und zum anderen musst die "Running OSnaps" einschalten.

Zitat:

Type: Integer
Saved in: Registry
Initial value: 4133

Sets running Object Snap modes using the following bitcodes:


0 NONe
1 ENDpoint
2 MIDpoint
4 CENter
8 NODe
16 QUAdrant
32 INTersection
64 INSertion
128 PERpendicular
256 TANgent
512 NEArest
1024 QUIck
2048 APParent Intersection
4096 EXTension
8192 PARallel

To specify more than one object snap, enter the sum of their values. For example, entering 3 specifies the Endpoint (bitcode 1) and Midpoint (bitcode 2) object snaps. Entering 16383 specifies all object snaps.

When object snaps are switched off using the Osnap button on the status bar, a bitcode of 16384 (0x4000) is returned, in addition to the normal value of OSMODE. With this additional value, developers can write applications for AutoCAD, and distinguish this mode from Object Snap modes that have been turned off from within the Drafting Settings dialog box. Setting this bit toggles running object snaps off. Setting OSMODE to a value with this bit off toggles running object snaps on.


Somit kommt hinzu:

Code:

(setvar "OSMODE" (logior (getvar "OSMODE") 16384)) (einführend)

bzw.

(setvar "OSMODE" (logand (getvar "OSMODE") 16383)) (abschließend)


------------------
Grüsse

Thomas

Korrekturen zum Kochbuch AutoLISP

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

KeMü
Mitglied
Straßenplaner

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

Beiträge: 5
Registriert: 19.02.2008

AUTODESK CIVIL 3D 2007 SP3
Aufsatz: VESTRA Civil 3D 2007
MS Windows 2000 Professional SP4

erstellt am: 19. Feb. 2008 19:10    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

Mensch bist du schnell!

Das händische Umstellen des OSNAPCOORD auf 0 ändert leider auch nichts. Wenn ich den OSMODE auf 1 setze, ist doch der Running Osnap richtig auf Endpunkt gesetzt? Mit
(setvar "OSMODE" (logior (getvar "OSMODE") 16384)
schalte ich den fortlaufenden OFANG doch ganz aus? Und müsste bei jeder Auswahl den temporären Objektfang z.B. auf Endpunkt setzen, da wir dieses Tool später wahrscheinlich sehr häufig benutzen, wäre das sehr aufwändig (aber besser als nichts) bzw. vielleicht habe ich dich auch nicht ganz richtig verstanden?

Mit freundlichem Gruß
Kerstin

Werde mich jetzt auf ins Kino machen, vielleicht bekomme ich den Kopf dann frei)


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

KeMü
Mitglied
Straßenplaner

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

Beiträge: 5
Registriert: 19.02.2008

AUTODESK CIVIL 3D 2007 SP3
Aufsatz: VESTRA Civil 3D 2007
MS Windows 2000 Professional SP4

erstellt am: 20. Feb. 2008 10:21    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

Ich habe noch etwas gebastelt und es funktioniert, wenn:
(setvar "OSNAPCOORD" 1)
also die Skribteingabe Vorrang hat, ich nehme an, dass meine Lisp so einer Art Skribt ist. Jetzt funktioniert es einwandfrei und die im command übergebene Koordinate wird auch immer benutzt.
Vielen Dank für die Hilfe

Kerstin

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 20. Feb. 2008 10: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 Nur für KeMü 10 Unities + Antwort hilfreich

Hi,

ungetestet: Schalte OSMODE direkt vor deinem (command "_text"...)
aus und danch wieder ein.


Gruß
CADchup

------------------
CADmaro.de

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