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

AutoCAD Verhalten mit langen lisp Interaktionen

  • Ersteller Ersteller Giuseppe Beatrice
  • Erstellt am Erstellt am

Giuseppe Beatrice

Guest
Hallo, alle.
Ich möchte ein Problem aussetzen, dass ich glaube, dass Interessen all diejenigen, die lisp-Befehle verwenden, die sehr lange Iterationen beinhalten (Zyklen mit während oder Foreach-Befehle oder sogar vl-some etc...).
wenn dies geschieht, erscheint auf dem Bildschirm ein rotierendes Rad und die Nachricht "Autocad reagiert nicht"; In der Tat ist es nicht so, da nach der Zeit, die erforderlich ist, um den Zyklus zu führen, geht alles zurück zur Arbeit und das Programm lisp auch weiter.
Ich versuchte dann, den Zyklus mit Fortschrittsbars zu überwachen (bitte auf diesem Forum in einer anderen Diskussion zur Verfügung stellen), aber auch diese an einem Punkt stoppen und sind daher nicht von Nutzen.
Ich frage Sie: Ist es möglich, etwas zu tun, um solche Verhaltensweisen zu vermeiden?
es ist notwendig oder angemessen, vielleicht einige Pausen einzuführen, und wie?
Könnten Sie einige Beispiele von Programmen vorschlagen, die diesen ärgerlichen Nachteil lösen können?
Vielen Dank im Voraus!
 
Ich zeige in der Regel einen Wert, der den Prozentsatz der geleisteten Arbeit anzeigt... so dass mehr oder weniger der Benutzer erkennt, wie viel es nehmen wird, um den Job zu beenden.
Offensichtlich ist dieser Prozentsatz indikativ, da er auf der n. von Zyklen basiert, die Sie zu erreichen beabsichtigen, stattdessen ist es möglich, dass etwas im Programm erlaubt, zuerst aus der Schleife...
Im Wesentlichen, wenn ich mir vorstellen, dass der Zyklus ziemlich lang ist, füge ich diesen Teil ein:

;
;
---------------------------------------------------------------------------------------------------------------
%
---------------------------------------------------------------------------------------------------------------
(prozentuale Wohnung)
;
;; index = ist eine Zahl, die erhöht wird, bevor man dieses Unterprogramm zurückruft
;; num = die Gesamtzahl zu erreichen (wenn Index = num sind wir 100%)
;; Zunahme = gibt den Schritt an, um den die Prozentangaben angezeigt werden: es.with a value
; 10 Werte werden 10% - 20% - 30% usw. angezeigt.
;
;; die Grundformel ist 100* Index / num, aber nur die von
;; variable Zunahme muss das Ergebnis durch Inkrement geteilt werden, entfernen (fix) die
;; Zahlen nach dem Komma und remultiplicate für die variable Zunahme.
Beispiel mit Zunahme = 10:
;; in diesem Fall die Prozentsätze von 0% bis 9% - von 11% bis 19% usw. ... nicht angezeigt
; erwartet jedoch einen Mehrfachwert von 10 (10% 20% 30% ... usw.)
;
(setq perc (* (fix (/ (* 100 index) num) inkrement));
(falls) (proc perc)
(prompt "\r")(prin1 perc)(prompt " %"); Videodruck
)
(setq perc1 perc)

(falls (und (> perc 100) (Länge tlst) 3))
;
)
;



dann im Zyklus ein Befehl des Typs eingeben:

;
(Satzindex (+ Index 1))
(prozentuale Indexnummer 5) und aktualisieren Sie den Prozentsatz auf Video.
;

... dass ich den Prozentsatz aktualisieren möchte.
 
Ich danke Ihnen für die xl11start Antwort, aber - wie ich eingangs sagte - habe ich bereits eine routinemäßige Überwachung des Fortschritts des Befehls vorhergesagt, die gut funktioniert, bis die erforderliche Operation nur wenige Sekunden dauert.
das Problem Ich habe hervorgehoben wird mit einer lisp-Funktion, die die Reihenfolge in einer Liste einer Sammlung von vielen Polylines (nicht weniger als ein paar tausend, aus einer ssget-Anweisung extrahiert) nach den Koordinatenwerten der Extrempunkte.
In diesen Fällen, die in der Regel nicht weniger als 20-25 Sekunden wegnehmen, kommt die Überwachungsleiste typischerweise Werte um 10-15% an, danach hört alles auf, die Nachricht "autocad nicht anspricht" erscheint und ein Scrollrad (in einigen Fällen, wenn die Laufzeit die Minute übersteigt, sogar die Anzeige der Designblenden). Sie verstehen auch, dass dies Angst vor dem Ergebnis der Operation verursacht, aber dann, plötzlich, alles wieder normal und die Ausführung des Projekts lisp wieder regelmäßig.
Das ist das Problem, das ich beheben möchte, aber ich weiß nicht, wie ich es tun soll.
Wie auch immer, danke für die Verfügbarkeit, und ich hoffe, Sie können mir helfen.
 
Das ist seltsam. Das habe ich nie.

Ich mache auch lange Operationen. aber der Zähler geht ohnehin weiter. ...

Sagen wir, dass das Wort "Autocad nicht beantwortet" passieren kann... aber nur, wenn ich andere Fenster und andere Software öffnen gehe, während die lange Operation stattfindet... aber autonom, ohne etwas zu berühren, das mir nie passiert ist. .
 
Anhang anzeigen albero polilinee.dwgAnhang anzeigen costruzione albero polilinee.LSPIch stecke eine aufwendige Dwg mit etwa 800 Polylinien, die miteinander verbunden sind, an einen Baum.
Ich hänge auch ein Lisp-Programm an, das darum bittet, eine der Polylinien auszuwählen, die den Anfang des Polylinebaums bilden wird.
das Programm sucht dann nach den Polylinien, die eines der beiden Extremen haben, die mit dem ausgewählten übereinstimmen und mit ihm "verbunden" sind; die aufeinanderfolgenden Polylinien werden dann mit demselben Suchkriterium "verbunden".
Wenn alle Polylinien dem Konstruktionskriterium gehorchen, baut das Programm schließlich eine Liste mit der lpt+ent-Variablen, die dann zum Beispiel verwendet werden kann, um die Längen vom Quellpunkt zu jedem Terminalzweig zu berechnen.
das Programm beginnt automatisch, sobald Sie es laden, offensichtlich mit dem offenen Design.
Ich habe sowohl die Berechnung der Laufzeit als auch eine Fortschrittsleiste (gemeintlich in anderer Diskussion über das Forum) eingefügt, die unten links auf der Kommandozeile sichtbar ist.
auf meinem Computer (autocad 2014), das Programm dauert wenig mehr als 20 Sekunden, aber das Problem ist genau, dass "Kreis" erscheint, wenn der Fortschritt etwa 38% ist und der geschriebene "Autokad nicht reagiert" erscheint... stattdessen ist es nicht so, da, wenn Sie die Geduld haben, zu warten, werden Sie sehen, dass das Programm seine Operationen beendet.
ps, wenn Sie Variablen steuern möchten, geben Sie einen Programmbruchpunkt auf der letzten Zeile ein.
hallo und danke für die Verfügbarkeit
 
mir irrtümlich:
selektieren Sie die Herkunft der Branche; Fehler: keine Funktionsdefinition: lm:listdifference

(vielleicht, weil ich autocad 2010!)
 
versuchen Sie ein bisschen meine Lispe: Es wird verwendet, um alle Polylinien zusammen zu kombinieren (obvily, wenn mehr als 2 Linien haben den gleichen Ursprung in "chooses" ein).
Ich habe es geschafft, alle Kurven des Levels zusammenzuführen...

Egal... es dauert ein paar Sekunden und kommt ohne Probleme zum Ende...
 

Anhänge

wie das Programm, das Sie posten, reagiert leider nicht auf meinen Zweck, der völlig anders ist und bezieht sich auf Situationen wie die der Zeichnung.
Wie auch immer, danke.
 
Ich habe es wieder versucht... macht weiter einen Fehler...

Leider habe ich keine Chance, es auf höheren Autocaden zu versuchen. . .
 
Ich habe es versucht, aber der Kreis erschien nicht, das ist mein Test:
Code:
Befehl: vl
vl Select branch Origin
Laufzeitprogramm: 10563 m
Befehl:
das Problem Hervorhebung könnte etwas ähnlich wie Stack-Überlauf, in aktuellen pcs vor allem durch die Verwendung von wiederkehrenden Funktionen gebracht werden, Typ lm..
 
Ich danke Ihnen unendlich gp, auch wenn mit der Verzögerung von ein paar Tagen, für Ihre kompetente und präzise Antwort; Gibt es irgendeine Möglichkeit, den Überlauf Stapel von Ihnen hervorgehoben zu vermeiden?
 

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