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

Zeichnen eines Polyline mit dedizierter Schicht

  • Ersteller Ersteller brizio
  • Erstellt am Erstellt am

brizio

Guest
ich muss eine polyline auf einer dedizierten schicht von n punkten zeichnen, aber wenn ich den pline-befehl mit senden (pause) beendet, kann ich die schicht 0 nicht wieder aufnehmen oder vorher siehe unten:
(defun c:tr)
(befehl "_pline" "0,0" "la" "0.00" "0.00" "")
(befehl "_layer" "_t" "ic_tratte" "_s" "ic_tratte"")
(befehl "_pline" pausen)
(befehl "_layer" "_t" "0" "_s" "0"")
)
kann mir jemand helfen? danke.
 
vielen dank!
es gibt jedoch einen kleinen fehler, da er den koorden nicht erkennt, sollte wahrscheinlich vor (setq list (koordin) definiert werden.
 
seltsam, ich änderte das posting, heruntergeladen die datei, geladen, es funktioniert.
ich bin neugierig.

hi.
 
es tut mir leid, aber ich verstehe es nicht letzte nacht, es wird nicht funktionieren und zuerst auf dem schichtbefehl und dann auf dem koorden abgestürzt. heute morgen, als ich ihre antwort erhielt, versuchte ich wieder und alles funktioniert gut.
wieder danke und entschuldigen sie mich
 
Ich gehe zurück zu dieser Diskussion.
Können Sie von der Lippe oben starten und ändern, so dass bei Verwendung des Befehls "Baulinie" (wenn nicht vorhanden) die Schicht "Gebäude" erstellt wird und dass die gleichen Zeilen auf dieser Ebene platziert werden und beendet der Befehl zurück zur vorherigen Schicht?
ist es möglich?
 
was Sie fragen ist einfacher und anwendbar auf alle Befehle.

Sie definieren die Befehle salvavar und chargevar
Ich habe auch die anderen Variablen hinzugefügt, die in Zeichenstufen häufig verändert werden.
Code:
; Variablen sp14_.... sind öffentlich
; Osnap speichern, Schicht, ortho, Farbe, Snapmode
(defun salvavar)
(setq sp14_osnap (getvar "osmode")
(setq sp14_layer (getvar "clayer")
(setq sp14_ortho (getvar "orthomode")
(setq sp14_color (getvar "cecolor")
(setq sp14_snapmode (getvar "snapmode")
)

; wiederherstellt Osnap, Schicht, ortho, Farbe, Snapmode
; die Bedingung dient dazu, den Fehler mit dem Befehl zu vermeiden, ohne jemals salvavar gestartet zu haben
(defun caricavar)
(falls (/= sp14_osnap nil)
(setvar "osmode" sp14_osnap)
)
(falls (/= sp14_Schicht nil)
(Befehl "_-layer" sp14_layer ")
)
(falls (/= sp14_ortho nil)
(Setvar "orthomode" sp14_ortho)
)
(falls (/= sp14_color nil)
(setvar "cecolor" sp14_color)
)
(falls (/= sp14_color nil)
(setvar "snapmode" sp14_snapmode)
)
)
Sie erstellen den Befehl zum Starten (Zeile bauen)
Code:
(Defun startlineadicostruction()
(salvavar)
(lineadicostruction)
(loadvar)
)
in der Praxis, speichern in öffentlichen Variablen Werte, starten Sie Ihren Befehl, wiederherstellen alles.
 
in meiner Lispe verwenden:
; ... Eingabe variabili ambiente ... (defun modes (a) (Setq mlst '() (Repeat a) (Setq mlst (in ml (in Liste)))) (Satz a) ) ) ... ; riristina variabili ambiente ... (defun moder) (Länge ml) (Setvar (caar mlst) (jeweils mlst) (Setq mlst (cdr mlst) ) )dann Modi Ich nenne es zuerst, um den aktuellen Zustand der Variablen, die ich brauche, "merken":

z.(Modi '("osmode" "limcheck" "cmdecho"))während moderieren Ich rufe es vor dem Ausgang an, um alles wieder in die Ausgangssituation zu bringen:


(moder)wie Sie sehen können, dass Moder keine Parameter benötigt, da es die durch Moden definierte mlst-Variable verwendet
 
Tut mir leid, danke für die Tipps, aber ich dachte an etwas einfacher als das:
(die offensichtlich nicht funktioniert, weil ich nicht in der Lage bin)
Code:
(Defun c:lincos ()

(setq sp14_layer (getvar "clayer")); merkt die aktuelle Schicht

(Befehl "_layer" "_t" "Gebäude" "_m" "Gebäude""); erstellen Sie die neue Schicht

(Befehl "_xline" Pausen) ; Start der Baulinie

(Befehl ")

(Befehl "_layer" "_m" Toner ""); wiederherstellt die vorherige Schicht

)
 
sagen Sie mir nicht, dass ich Sie in die Krise gebracht habe;)
die Notwendigkeit, so viel wie möglich zu vereinfachen, ist, einen einzigen Befehl zu erhalten, der anderen Menschen, die von lisp noch weniger verstehen als ich übergeben und erklären kann.
Wenn Sie mir sagen, dass es unmöglich ist, einen einzigen Befehl zu erstellen, werde ich einen Grund haben, danke.
 
Ich glaube, ein einziger Befehl ist eigentlich unmöglich. .
wenn Sie immer auf den Schichten arbeiten (erstellen Sie es, dann ändern Sie es Farbe, dann schalten Sie es aus... etc.) dann ja.
Ich glaube nicht, dass ein einziger Befehl machbar ist.

"Das ist, was der einzige Befehl bringt mich zurück in das letzte Jahrhundert (!) als in einer Zeitschrift des Kommodore 64 und Sieg 20, gab es eine Spalte, in der sie interessante "Programme" vorgeschlagen, die in einer einzigen Linie konzentriert wurden...
 
Tut mir leid, danke für die Tipps, aber ich dachte an etwas einfacher als das:
(die offensichtlich nicht funktioniert, weil ich nicht in der Lage bin)
Code:
(Defun c:lincos ()

(setq sp14_layer (getvar "clayer")); merkt die aktuelle Schicht

(Befehl "_layer" "_t" "Gebäude" "_m" "Gebäude""); erstellen Sie die neue Schicht

(Befehl "_xline" Pausen) ; Start der Baulinie

(Befehl ")

(Befehl "_layer" "_m" Toner ""); wiederherstellt die vorherige Schicht

)
Ihr Prinzip funktioniert, ich denke nur, dass eine Korrektur vorgenommen werden sollte, versuchen Sie dies:

(Defun c:lincos ()

(setq namelayer "buildings"); Name der Zielschicht

(setq lay (getvar "clayer"); speichert die aktuelle Schicht

(falls (tblsearch "layer" nomelayer) ; Suche nach der Existenz der Zielschicht
(Befehl "Schicht" auf "Namensschicht"); wenn es existiert, zündet es
(Befehl "_.layer" "_make" namelayer ") ; wenn es nicht existiert
)

(Befehl "_setvar" "clayer" namelayer "") ;rende aktuelle die Zielschicht
(Befehl "_xline" Pausen ""); Ziehen Sie die Baulinie
(Befehl "_setvar" "clayer" lag ""); wiederherstellt die vorherige Schicht

(princ)
)
 
Ich muss eine einfache Variante zum Befehl machen oder die horizontalen Baulinien festlegen. Ich habe es geschafft, aber dann komme ich nicht zurück in die ursprüngliche Schicht. Wo bin ich falsch?
Code:
(Defun c:lincosh)
(setq namelayer "buildings"); Name der Zielschicht
(setq lay (getvar "clayer"); speichert die aktuelle Schicht
(falls (tblsearch "layer" nomelayer) ; Suche nach der Existenz der Zielschicht
(Befehl "Schicht" auf "Namensschicht"); wenn es existiert, zündet es
(Befehl "_.layer" "_make" namelayer ") ; wenn es keine Schöpfung gibt,
)
(Befehl "_setvar" "clayer" namelayer ""); macht Strom die Zielschicht
(Befehl "_xline" "oder" Pausen) ; zieht horizontale Baulinie
(Befehl "_setvar" "clayer" lag"); wiederherstellt die vorherige Schicht
(princ)
)
 
Ich dachte, ich sollte es auch senden, aber wenn ich die Lispe werfen und die bekannte Befehlszeile seltsamer Operationen betrachten und die Schicht nicht wiederhergestellt wird. wenn ich die Lispe-Werke sowieso nicht und "besser" sende, auch weil ich mich wohl fühle, dass Sie mehrere Zeilen einfügen können, aber dann stellt sie die Schicht sowieso nicht wieder her.
 
Ich dachte, ich sollte es auch senden, aber wenn ich die Lispe werfen und die bekannte Befehlszeile seltsamer Operationen betrachten und die Schicht nicht wiederhergestellt wird. wenn ich die Lispe-Werke sowieso nicht und "besser" sende, auch weil ich mich wohl fühle, dass Sie mehrere Zeilen einfügen können, aber dann stellt sie die Schicht sowieso nicht wieder her.
die lisp führt Schritt für Schritt die angegebenen Anweisungen aus, wenn sie etwas Unerwartetes trifft, das sie nicht schmeckt, einen Fehler erzeugt und stoppt.
in dieser Lippe läuft alles glatt bis Pause wo Sie erwarten, einen Punkt (vom Bediener) auszuwählen und dann die vorherige Schicht wiederherzustellen.
wenn anstelle eines Pause Sie setzen drei, Sie können drei xlines zeichnen, aber nicht zwei oder vier, so wenn Sie nicht wissen, a priori, wie viele xlines Sie zeichnen möchten, wird es komplizierter.
seltsame Operationen, die der Befehlszeile bekannt sind, sind meines Erachtens auf den Fehler zurückzuführen, der den Prozess unterbricht und daher die Schicht nicht wieder herstellen kann.
 
Ich korrigierte die Lippe wie vorgeschlagen und wieder aufgeladen, aber es zeigt immer noch die beigefügten Fehler.
Es scheint jedoch, dass es einen kontinuierlichen Zyklus gibt, weil nach dem ersten Einfügen, ohne zusätzliche Befehle zu geben, die Lispe unterbricht und wieder ausgeführt wird, so dass ich endlose Xlines zeichnen kann. um zu schließen Ich bin gezwungen, ec Tastatur zu drücken
 

Anhänge

  • Cattura.JPG
    Cattura.JPG
    153,8 KB · Aufrufe: 4

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