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

Variabler Offset mit AutoCAD 2012

  • Ersteller Ersteller spinamike
  • Erstellt am Erstellt am

spinamike

Guest
Hallo, Leute!
Ich habe ein Problem, das ich nicht lösen kann, weil ich nicht weiß, wie man in Lisp plant (Ich hoffe, die Diskussion wurde vorher nicht behandelt, aber ich fand nichts darüber).
im Grunde hätte ich die Notwendigkeit, eine Anzahl "n" von Offset zu machen, wo die nächste Distanz die Hälfte der vorherigen ist. die Ausgangsdaten sind: der erste Abstand und die Anzahl der Offsets (d.h. "n").
Ich hoffe, ich habe das Problem klar zum Ausdruck gebracht !!!
Dank im Voraus an diejenigen, die einen Teil seiner Zeit widmen wollen, um mein Problem zu lösen
Michael
 
Zunächst einmal danke paolomath.
Wir sind fast... Ich werde es erklären.
Sobald Sie die Offset-Nummer (z.B. 4) und die maximale Entfernung (z.B. 400) wählen, muss der erste Offset (d.h. der nächste zum Originalobjekt) 400, der zweite 200, der dritte 100 und der vierte 50 betragen.
Ich glaube, dass für jemanden, der weiß, wie man gut in lisp programmiert, da Sie nur wenige Änderungen an der Datei vornehmen, die Sie bereits erstellt haben.
Danke noch mal!
 
Sobald Sie die Offset-Nummer (z.B. 4) und die maximale Entfernung (z.B. 400) wählen, muss der erste Offset (d.h. der nächste zum Originalobjekt) 400, der zweite 200, der dritte 100 und der vierte 50 betragen.
Hi.

(außer dass 400 die am weitesten verbreitete Ausrede ist, sollte aber schon so sein...
 
Ich versuchte, die Lispe nach meinen Bedürfnissen zu ändern....(Ich versuche etwas zu lernen dank Ihrer Hilfe: wink:) aber, meiner Meinung nach, ist etwas falsch mit den "Argumenten" des "offset" Befehls (kann "_e" sein?? )
Dies ist die modifizierte Lisp:


(Defun c:off)
(Initget 7)
(Setq-Nummer (getint "insert die Offset-Nummer: ")
(Einleitung 2)
(setq delta (getreal "insert den ersten Offsetabstand: ")
(wenn (= delta nil) (setq delta) 0)
(seq Objekt (ssget ":s"))
(falls zutreffend)
(Progn)
(Einleitung 1)
(setq pt1 (getpoint "select Offset-Position: ")
(Sectq i 0)
(while)
(Setvar "cmdecho" 0)
(Befehl "_offset" (* delta (- 2 (- i)))
(setq i (+ i 1))
(Setvar "cmdecho" 1)
)
)
(princ "kein Objekt wurde ausgewählt. "
)
(Principles)
)


Danke!
 
Test mit diesen Änderungen

(Defun c:off)

(Initget 7)
(Setq-Nummer (getint "insert die Offset-Nummer: ")
(Einleitung 2)
(setq delta (getreal "insert den ersten Offsetabstand: ")
(wenn (= delta nil) (setq delta) 0)
(seq Objekt (ssget ":s"))
(falls zutreffend)
(Progn)
(Einleitung 1)
(setq pt1 (getpoint "select Offset-Position: ")
(setq delta2 delta)
(Befehl "_offset" delta2 Objekt pt1 "_e")
(setq delta2 (* delta 1.5)
(setq diff (- delta2 delta)
(Abschnitt 2)
(while)
(Setvar "cmdecho" 0)
(falls (> i 2)(setq diff (- delta2 delta3))
(Befehl "_offset" delta2 Objekt pt1 "_e")
(setq i (+ i 1))
(setq delta3 delta2)
(setq delta2 (+ delta2 (/ diff 2.0)))

(Setvar "cmdecho" 1)
)
)
(princ "kein Objekt wurde ausgewählt. "
)
(Principles)
)
(princ "\noffset parabolic Funktion. Verwendung ab)
(Setq diff nil delta2 nil delta3 nil number nil pt1 nil)
 
im konkreten Fall will michele die Offset-Abstände des Objekts 400, 600, 700 und 750 betragen.
Tut mir leid, ich habe es nicht erwischt. .

nach Wissen: Ich habe einen Righa des Originals modifiziert, um zu tun, was du wolltest.

(Defun c:off)
(Initget 7)
(Setq-Nummer (getint "insert die Offset-Nummer: ")
(Initget 4)
(setq delta (getreal "insert den ersten Offsetabstand: ")
(wenn (= delta nil) (setq delta) 0)
(seq Objekt (ssget ":s"))
(falls zutreffend)
(Progn)
(Einleitung 1)
(setq pt1 (getpoint "select Offset-Position: ")
(1)
(while)
(Setvar "cmdecho" 0)
(Befehl "_offset" (* delta (/- 1 (expt 0.5 i) 0.5) pt1 "_e")
(setq i (+ i 1))
(Setvar "cmdecho" 1)
)
)
(princ "kein Objekt wurde ausgewählt. "
)
(Principles)
)
 
Dank auch an Sie paolomath!
Ich habe auch die von mir veränderte "Du"-Spule repariert.
Jetzt funktioniert es, aber ich entdeckte etwas Verrücktes: wenn in der einfachen Put-Formel "2" der Deckel nicht funktioniert... wenn ich "2.0" ja.
die lisp Sprache ist wirklich verrückt!!!
 
Jetzt funktioniert es, aber ich entdeckte etwas Verrücktes: wenn in der einfachen Put-Formel "2" der Deckel nicht funktioniert... wenn ich "2.0" ja.
die lisp Sprache ist wirklich verrückt!!!
Es ist keine verrückte Sprache, im Gegenteil. nur diese Art Umwandlung ist nicht implizit.

wenn in vba/vb (z.B.) pippo = 2 + "3" schreiben, nimmt die pippo-Variable (wenn nicht als String bezeichnet) den Wert 5. wenn als String angegeben der Stringwert "5" annimmt.

in lisp wenn Sie schreiben (+ 2 "3") haben Sie einfach einen Typfehler.

dann überprüfen, was Sie in Ihren Formeln geschrieben. .

Bye
 
mike, es gibt 3 Arten von Werten, die Variablen zugeordnet werden können.
Ganzzahl: (2 zum Beispiel, 3 oder 56 usw., jedoch nicht 2,001, 3,15 usw.)
real: (2 zum Beispiel, das ist Look Case 2.0, eine echte Zahl)
String (2 als Text, als wäre es ein "a", ein "b" usw.)

Wenn Sie teilen, subtrahieren, multiplizieren Sie ein Real mit einer ganzen Zahl, Ich denke, es gibt kein Problem, weil das Ergebnis wird immer ein real (3,17 / 2 wird ein Real geben)
wenn Sie eine ganze Zahl mit einem realen Problem teilen, subtrahieren oder multiplizieren, ergeben sich Probleme: 2 ganz für 3.1 wird 6,2 geben, was nicht ein ganzer Wert ist
wenn Sie teilen, entfernen usw. eine echte oder eine ganze Zahl für einen String.... Wie viel kostet 34 für "a"?
 

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