• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

In welcher Richtung ziehe ich eine Zeile mit lsp-Daten 2 pt no perp

  • Ersteller Ersteller mazzetti68
  • Erstellt am Erstellt am

mazzetti68

Guest
Hallo, alle!
Ich werde immer mehr leidenschaftlich über lsp, und diesmal möchte ich Dinge zu wissen bekommen, aber ich brauche Hilfe, ich setze Dinge, die ich in italienischer/mathematischer Sprache tun möchte. ...
-- in der Praxis geht es darum, Autocad zu verstehen, wenn ich eine Linie von oben nach unten... oder rechts und links... oder links rechts... oder niedrig hoch...

Hier ist der Code (Ich setze die Farben zumindest etwas einfacher zu verstehen... zumindest hoffe ich):
Code:
(setq) [COLOR="#EE82EE"]p_temp_1[/COLOR] (getpoint "\nindiziert den Ausgangspunkt der Linie: ")
(Sectq) [COLOR="#A52A2A"]p_temp_2[/COLOR] (getpoint "\nindiziert den Endpunkt der Zeile: ")

(Sectq) [COLOR="#FF0000"]P_temp_1_x[/COLOR] (nächst 0) [COLOR="#EE82EE"]p_temp_1[/COLOR])
(setq) [COLOR="#FFD700"]p_temp_1_y[/COLOR] (noch) [COLOR="#EE82EE"]p_temp_1[/COLOR])
(q p_temp_1_z) [COLOR="#EE82EE"]p_temp_1[/COLOR])

(setq) [COLOR="#00FF00"]P_temp_2_x[/COLOR] (nächst 0) [COLOR="#A52A2A"]p_temp_2[/COLOR])
(setq) [COLOR="#0000FF"]p_temp_2_y[/COLOR] (noch) [COLOR="#A52A2A"]p_temp_2[/COLOR])
(q p_temp_2_z) [COLOR="#A52A2A"]p_temp_2[/COLOR])

;
;
;soever:
;
; wenn der Unterschied zwischen [COLOR="#FFD700"]p_temp_1_y[/COLOR] e) [COLOR="#0000FF"]p_temp_2_y[/COLOR] weniger als die Hälfte der Differenz [COLOR="#FF0000"]P_temp_1_x[/COLOR] e) [COLOR="#00FF00"]P_temp_2_x[/COLOR] (was zu verstehen ist, wenn ich eine Linie senkrecht oder horizontal gab)
;
; dann gilt dies:
;
; [COLOR="#FF0000"]P_temp_1_x[/COLOR] [COLOR="#00FF00"]P_temp_2_x[/COLOR]) wenn negativ [COLOR="#00FF00"]P_temp_2_x[/COLOR] = p2 e [COLOR="#FF0000"]P_temp_1_x[/COLOR] = p1, wenn und positiv [COLOR="#00FF00"]P_temp_2_x[/COLOR] = p1 e [COLOR="#FF0000"]P_temp_1_x[/COLOR] = p
;
(schlafen) (schlafen)
;
; wenn der Unterschied zwischen [COLOR="#FFD700"]p_temp_1_y[/COLOR] e) [COLOR="#0000FF"]p_temp_2_y[/COLOR] mehr als die Hälfte [COLOR="#FF0000"]P_temp_1_x[/COLOR] e) [COLOR="#00FF00"]P_temp_2_x[/COLOR];
; dann gilt dies:
;
; [COLOR="#FFD700"]p_temp_1_y[/COLOR] [COLOR="#0000FF"]p_temp_2_y[/COLOR]) wenn negativ [COLOR="#0000FF"]p_temp_2_y[/COLOR] = p2 e [COLOR="#FFD700"]p_temp_1_y[/COLOR] = p1, wenn und positiv [COLOR="#0000FF"]p_temp_2_y[/COLOR] = p1 e [COLOR="#FFD700"]p_temp_1_y[/COLOR] = p2
;
In den meisten Fällen hat die Kommission den Vorschlag für eine Verordnung des Rates zur Änderung der Verordnung (EWG) Nr. 1408/71 in den Fällen, in denen sie die Anwendung der Verordnung (EWG) Nr. 1408/71 befürwortet.


(Befehl "_line" "_no" p1 "_no" p2 ")
Ist das möglich? Ich kann es einfach nicht tun, vielleicht weil ich noch bei "ersten Waffen" mit bestimmten Funktionen bin

Vielen Dank, wenn Sie mir helfen können

Guten Tag!
 
die Funktion, die Sie suchen ist wenn (wenn, in Englisch)

Die Syntax ist (wenn (cond1) (dann) (else - optional) )Also... (falls
cond1--> (< ( - p_temp_1_y p_temp_2_y) (-p_temp_1_x e p_temp_2_x) 2.0)
dann- (Befehl "_line" "_no" p1 "_no" p2 ")
andere --> (Befehl "_line" p1 p2 ")
— Chiusura, wenn
 
Vielen Dank!
Ich habe den Code entwickelt, aber Autocad sagt: Fehler: falsche Funktion: 1487.9 (1487.9 ist an die Länge gebunden, die ich gab...)
Code:
(setq p_temp_1 (getpoint "\nindicated the start point of the line: ")
(setq p_temp_2 (getpoint "\nindicated the end point of the line: ")

(setq p_temp_1_x (nth 0 p_temp_1))
(setq p_temp_1_y (nth 1 p_temp_1))
(setq p_temp_1_z (nth 2 p_temp_1))

(setq p_temp_2_x (nth 0 p_temp_2))
(setq p_temp_2_y (nth 1 p_temp_2))
(setq p_temp_2_z (nth 2 p_temp_2))
[COLOR="#FF0000"](f)
(— p_temp_1_y p_temp_2_y)(/ (- p_temp_1_x p_temp_2_x)2.0)
(f)
(<(- p_temp_1_x p_temp_2_x)0.0)
((setq p1 (p_temp_1_x))(setq p2 (p_temp_2_x))); falls die Differenz negativ ist
((setq p1 (p_temp_2_x))(setq p2 (p_temp_1_x)))))); wenn die Differenz positiv ist
)

(f)
(> > p_temp_1_y p_temp_2_y)0.0; wenn er größer als 0 ist
((setq p1 (p_temp_1_y))(setq p2 (p_temp_2_y)))))), wenn die Differenz negativ ist
((setq p1 (p_temp_2_y))(setq p2 (p_temp_1_y)))))); wenn die Differenz positiv ist
)
)[/COLOR](Befehl "_line" "_no" p1 "_no" p2 ")
seltsam, weil die Klammern ok sind, habe ich sie ein paar Mal überprüft:finger::
Vielleicht ist das Problem, weil ich ein "wenn" in den anderen :confused:
Ich dokumentierte mich noch ein bisschen und fand, dass es auch die "cond" Funktion gibt, um mehr Optionen zu haben, vielleicht ist das mein Problem so gelöst?
Vielen Dank noch einmal im Voraus für die Antwort!
Guten Tag!
 

(setq p1 (p_temp_1_x) ist falsch, Sie schreiben (setq p1 p_temp_1_x)


die Koordinaten eines Punktes mindestens 2 betragen müssen, x e) y, con (setq p1 p_temp_1_x) nur einen Wert, so dass Punkt nie gezeichnet werden kann.

wenn kann nur eine dann e un solo andere
Code:
(falls (<(- p_temp_1_x p_temp_2_x)0.0)
(()[B][COLOR="#0000FF"]Setq p1[/COLOR][/B] p_temp_1_x)([B][COLOR="#0000FF"]Setq p2[/COLOR][/B] p_temp_2_x) [COLOR="#FF0000"];then -> hai assegnato 2 valori[/COLOR](([B][COLOR="#0000FF"]Setq p1[/COLOR][/B] p_temp_2_x)([B][COLOR="#0000FF"]Setq p2[/COLOR][/B] p_temp_1_x) [COLOR="#FF0000"];else -> haben Sie 2 Werte zugeordnet[/COLOR])
Sie haben zwei Möglichkeiten zu lösen:

1) Verwendung Prog, alles, was in der Progn ist nur eine Anweisung wert:
Code:
(falls (<(- p_temp_1_x p_temp_2_x)0.0)
 [COLOR="#FF0000"][B]([/B][/COLOR]Prog
([B][COLOR="#0000FF"]Setq p1[/COLOR][/B] p_temp_1_x)
([B][COLOR="#0000FF"]Setq p2[/COLOR][/B] p_temp_2_x)
 [COLOR="#FF0000"][B])[/B][/COLOR]
    [COLOR="#FF0000"][B]([/B][/COLOR]Prog
([B][COLOR="#0000FF"]Setq p1[/COLOR][/B] p_temp_2_x)
([B][COLOR="#0000FF"]Setq p2[/COLOR][/B] p_temp_1_x)
 [COLOR="#FF0000"][B])[/B][/COLOR])
2) oder
Code:
(falls (<(- p_temp_1_x p_temp_2_x)0.0)
 [COLOR="#FF0000"][B]([/B][/COLOR][B][COLOR="#0000FF"]Setq p1[/COLOR][/B] P_temp_1_x [B][COLOR="#0000FF"]ANHANG[/COLOR][/B] P_temp_2_x[COLOR="#FF0000"][B])[/B][/COLOR]
    [COLOR="#FF0000"][B]([/B][/COLOR][B][COLOR="#0000FF"]Setq p1[/COLOR][/B] P_temp_2_x [B][COLOR="#0000FF"]ANHANG[/COLOR][/B] P_temp_1_x[COLOR="#FF0000"][B])[/B][/COLOR])



aber ich würde einen anderen Ansatz verwenden und all diese Überlegungen über x e) yWas tut das?
Code:
(setq p1 (getpoint "\nindiziert den Ausgangspunkt der Linie: ")
(setq p2 (getpoint "\nindiziert den Endpunkt der Linie: ")
(setq ang (Winkel p1 p2))

(cond)
(= Ang 0.0)
(= ang (* pi 0.5)) (alert "vertical line up") )
(= ang pi) (alert "horizontale Linie links") )
(= ang (* pi 1.5) (alert "vertical line down") )
(<= 0,0 ang pi)
(<= pi ang (* pi 2.0) (alert "non-orthogonal line down"))
)
 
Meine Mami! Sie haben uns in der Mitte mit der alternativen Lösung... und ich war dort herumgeschlichen mit all dem!

cmq danke auch für Klarheit auf wenn, dann, sonst und progn!

für die Funktion der Ecken versuchte ich, auf 4 Bedingungen zu reduzieren, aber autocad von Fehler:(..... :

diese Regelung:
angoli-schema.PNGe qui il codice:
Code:
(setq p1 (getpoint "\nindiziert den Ausgangspunkt der Linie: ")
(setq p2 (getpoint "\nindiziert den Endpunkt der Linie: ")
(setq ang (Winkel p1 p2))
(cond)
(* pi 1.75)<= ang <=(* pi 0.25) ('horizontal line to the right'); horizontale Linie nach rechts)
(* pi 0.25) < (* pi 0.75) (alert "vertical line up")
(* pi 0.75)<= ang <=(* pi 1.25) (eine horizontale Linie links)
(* Pi 1.25) < (* Pi 1.75) (alert "vertical line down")
)
Danke im Voraus

Guten Tag!
 
die zu verwendende Syntax ist dies, jeder Wert ist kleiner oder gleich der folgenden:

(<= 3 4 5 6)
(< = 3 4 5 5) -- > t
(< = 3 4)
 
Tut mir leid, gp, aber ich habe es nicht bekommen... könnte ich Sie ein Beispiel für die Anwendung fragen? ...das ist mir nicht klar
 
Schauen Sie sich das Beispiel an, das ich veröffentlicht habe(<= 0,03 Frage stellen Pipi)

dove:0,03 kleiner oder gleich Frage stellen
Frage stellen kleiner oder gleich Pipiovvero: Frage stellen è Inklusive Warenbezeichnung 0,03 e) Pipi in Bezug auf Ihren Code, sollte eine der Zeilen werden:
(* mehr 0.75) ang (* mehr 1.25)
 
Jetzt ist es mir klar! Vielen Dank, dieses Forum ist wunderbar!
Vielen Dank für die Verfügbarkeit gp und Kristall!
Guten Abend!
 
Aber ich hatte ein Problem, bevor ich nur mit zwei Zeilen versucht hatte, aber jetzt habe ich immer die "horizontale Linie nach rechts".... der Code sollte richtig sein.... vielleicht ist es, weil Autocad nicht versteht, dass von 0,25 bis 1,75 muss die Werte vor überspringen, da es nicht versteht, dass es ein "Kreis". Kannst du mir noch mal helfen?
Code:
(setq p1 (getpoint "\nindiziert den Ausgangspunkt der Linie: ")
(setq p2 (getpoint "\nindiziert den Endpunkt der Linie: ")
(setq ang (Winkel p1 p2))
(cond)

(* pi 0.25) ang (* pi 0.75) (alert "vertical line up")
(* pi 0.75) ang (* pi 1.25) (Alert "horizontale Linie nach links"); horizontale Linie nach links
(* pi 1.25) ang (* pi 1.75) (alert "vertical line down")) vertikale Linie nach unten
(* pi 0.25) ang (* pi 1.75) (Alert "horizontale Linie nach rechts"); horizontale Linie nach rechts
)
hallo und danke im voraus
 
Sie verpassten Klammern
Code:
(cond)
 [COLOR="#FF0000"][B]([/B][/COLOR] (* pi 0.25) ang (* pi 0.75) (alert "line up") )
 [COLOR="#FF0000"][B]([/B][/COLOR] (* pi 0.75) ang (* pi 1.25) (alert "links") )
 [COLOR="#FF0000"][B]([/B][/COLOR] (* Pi 1.25) ang (* Pi 1.75) (alert "line down") )
 [COLOR="#FF0000"][B]([/B][/COLOR] (oder (< ang (* pi 0.25)) (* pi 1.75)) (alert "line right")
)
Ich habe den letzten Fall geändert, weil es falsch ist zu sagen, dass der Winkel zwischen (* pi 0,25) und (* pi 1.75) liegen muss, aber
weniger als (* Pi 0,25) oder größer als (* Pi 1.75)

Da es jedoch ein Ereignis ist, das auftritt, wenn die vorherigen nil (kein Wert) zurückgeben, können Sie auch den Wert t (wahr) als letzten Ausdruck der Verifikation verwenden:
Code:
(cond)
(* pi 0.25) ang (* pi 0.75) (alert "line up") )
(* pi 0.75) ang (* pi 1.25) (alert "links") )
(* pi 1.25) ang (* pi 1.75)) (alert "unte line") )
( [B]t[/B] (Alert rechts)
)
 
Ich fügte die Funktion der Erstellung der Zeile hinzu, die eine Rückkehr schafft, anstatt eines Beispiels Alarm... und dennoch funktioniert es nicht...
Code:
(setq p1 (getpoint "\nindiziert den Ausgangspunkt der Linie: ")
(setq p2 (getpoint "\nindiziert den Endpunkt der Linie: ")
(setq ang (Winkel p1 p2))
(cond)
(* Pi 0,25) ang (* Pi 0,75), nach oben
[COLOR="#FF0000"](progn ; ich habe progn verwendet, um alles unter einem Befehl zu passieren
(setq bs_x (nth 0 p1)
(setq bs_y (nth 1 p1)
(setq bs_z)
(setq bs_02(list(bs_x)(+ bs_y 0.2)(bs_z))))

(setq al_x (nth 0 p2))
(setq al_y (nth 1 p2))
(setq al_z)
(setq al_02(list(bs_x)(- al_y 0.2)(al_z))))); ich setze bs_x anstelle von al_x auf eine senkrechte Linie

(Befehl "_line" "_non" bs_02 "_non" al_02 ")
)[/COLOR])


(* pi 0.75) ang (* pi 1.25) (Alert "Zeile nach links"); Linie nach links

(* Pi 1.25) ang (* Pi 1.75) (alert "line down") ) ;down line

(oder (< ang (* Pi 0.25)) (* Pi 1.75) (rechts) )
)
Kannst du mir helfen? Dieses Versprechen wird mein letztes Problem sein, das zu mir kommt!

Guten Abend noch mal! und vielen Dank!
 
Code:
[COLOR="#FF0000"](setvar "osmode" 0)[/COLOR](setq p1 (getpoint "\nindiziert den Ausgangspunkt der Linie: ")
(setq p2 (getpoint "\nindiziert den Endpunkt der Linie: ")
(setq ang (Winkel p1 p2))

(cond)
(* Pi 0,25) ang (* Pi 0,75), nach oben
(setq bs_x (nth 0 p1)
(setq bs_y (nth 1 p1)
(setq bs_z)
(setq bs_02) [COLOR="#FF0000"]b)[/COLOR] (+ bs_y 0,2) [COLOR="#FF0000"]b)[/COLOR])

(setq al_x (nth 0 p2))
(setq al_y (nth 1 p2))
(setq al_z)
(setq al_02(list [COLOR="#FF0000"]b)[/COLOR] (- al_y 0,2) [COLOR="#FF0000"]Al_z[/COLOR]) ; ich set bs_x anstelle von al_x eine senkrechte Linie
(Befehl "_line" bs_02 al_02 ")
)

(* pi 0.75) ang (* pi 1.25) (Alert "Zeile nach links"); Linie nach links

(* Pi 1.25) ang (* Pi 1.75) (alert "line down") ) ;down line

(oder (< ang (* Pi 0.25)) (* Pi 1.75) (rechts) )
)
Tut mir leid für die Einweihung. Ich darf den Code minimal anpassen.
die auf 0 gesetzte Funktion (setvar "osmode") vermeidet das Einfügen der beiden "_non" in die Befehlsfunktion, in diesem Fall dient die Funktion progn nicht, da die internen Funktionen bereits in einer der Alternativen von cond enthalten sind, sollten die drei Variablen bs_x, al_z und bs_z nicht die Klammern aufweisen.
Darüber hinaus könnten Sie den Code weiter vereinfachen, aber ich lasse die Arbeit an die gute gp...:wink:
 
Hei dankt tausend Confutatis und Kristall! Ich habe mich für "_non" entschieden, osmode 0 und osmode 16383 nicht weiter zu aktivieren. .
confutatis zu mir schien es bereits reduziert auf den Knochen dieser Code, ich bin wirklich neugierig zu sehen, wie Sie können...ah Ich vergaß...es ist immer willkommen die Einführung;)
Dank anocra und guten Tag für alle!
 
Dies könnte eine weitere Codeverdichtung sein. diese Vorteile bei der Geschwindigkeit der Ausführung und nimmt weniger Speicher ein, da die gespeicherten Größen nur zwei sind: p1 und p2
Code:
(Setvar "osmode" 0)
(setq p1 (getpoint "\nindiziert den Ausgangspunkt der Linie: "
p2 (getpoint "\nindiziert den Endpunkt der Linie: "
)
(cond)
(* Pi 0.25) (* Winkel p1 p2) (* Pi 0.75));
(Befehl "_line" (Liste (Auto p1) (+ (cadr p1) 0.2) (caddr p1)) (Liste (Auto p1) (- (cadr p2) 0.2) (caddr p2)) ")
)
(* mehr 0.75) (* Winkel p1 p2) (* mehr 1.25)) (linke Zeile)
(* mehr 1.25) (Winkel p1 p2) (* Pi 1.75) (Zeilen nach unten));
(oder (< (angle p1 p2) (* pi 0.25)) (> (angle p1 p2) (* pi 1.75)) (alert "line to right");
)
 
Ich entschuldige mich zu gp, ich habe keine Versuchung widerstehen! Nun, Sie können immer die Enmake anstelle des üblichen starken Befehls hinzufügen, was sagen Sie? vla-addline scheint mir nicht der Fall und dann sahen wir, dass die Entmake Funktion schneller ist als die verschiedenen vla-add, es wurde vor langer Zeit bewiesen.
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben