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

Gemeinsame Unternehmen an einem Punkt

Gio_S

Guest
Guten Morgen, alle. mag sein, dass es in anderen Programmen implementiert ist, aber nicht in meinem Cad.
Ich habe zwei Routinen benutzt, um Duplikate oder Gesichter oder Zeilen zu suchen und zu löschen. wirklich schwere Prozeduren, weil die Schleife die aufeinanderfolgenden Entitäten bis zum Ende der Auswahl schrittweise analysiert und dann wieder mit dem nächsten Element beginnt. schwer auch, weil sie analysieren muss, wie die Wesen entworfen wurden, und vergleichen sie unabhängig von der Ordnung der Vertikale. würde jemand an ein effizienteres System denken? Verwenden Sie ein Token für Entität dann mit einer kleinen Abflachung ein kreuzendes Fenster, und überprüfen Sie darauf, scheint es mir schlank und wenig elegant. Natürlich würde ich einen Scan machen, und mit der Güte, die Auswahl zu vereinfachen, indem ich die bereits ausgelöschten Wesen entfernte, aber ich würde nicht darauf hinweisen, es zu schreiben, während vielleicht eine bessere Idee ist.
Wenn jemand eine Idee hat, danke!
g.
 
Was meinst du?
Du hast "mein Cad" geschrieben und es ist nicht sehr klar.
verwenden intellicad mit autolisp perfekt kompatibel mit autocad, aber ich habe nicht die vba und vbscript Funktionen verschiedene .. in der Praxis arbeiten nur mit lisp
Ich habe präzisiert, warum autocad Duplikate können sie nativen löschen und ich wollte nicht hören, dass ich sagen, verwenden Sie diesen Artikel des solchen Menüs:)
 
Okay, danke für die Klärung.

Es ist nicht ganz wahr, dass intellicad oder andere "Klonen" (entspricht den Begriff) von autocad und autocad selbst nicht verwenden vba, vbs oder andere Programmiersprachen.

Ich habe verschiedene Programmiersprachen versucht, die Büropakete von cad & ms zu automatisieren.

Automatisierungsskripte/Anwendungen verwenden diejenigen, die als Client/Brücke definiert sind, da sie mit der Software verbinden und Bienen für die Automatisierung verwenden (wenn verfügbar).
 
Deshalb habe ich geschrieben, dass "mein" es nicht unterstützt. intellicad ist ein Konsortium daher nicht zählen die Marken und Versionen in Umlauf. Meine ist sehr alt, aber ich behalte es beide, weil es nur wenige Ressourcen verbraucht, dann weil es alles hat, was ich brauche, und was es nicht hatte mich zu messen gemacht.
Aber diese Reinigungsfunktion erfüllt mich nicht für seine Langsamkeit, nicht sehr dick, aber ich benutze es, wenn ich auf dem 3d-Stock für verschiedene Zwecke der Illustration und Erläuterungen zu denen, die den 3d-Druck machen, und ich finde mich zu reinigen riesige Redundanzen.
die Funktion zum Ziehen von Teilen ist schnell, aber wenn ich in Eile bin und eine saubere 2d in einem Fass durch einen vollen 3d erstellen möchte, im Gegenteil, die oben beschriebene Routine nimmt mich ein Leben.
Ich weiß gut, dass Autocad Ansichten und Abschnitte erzeugen kann, aber für meine allgemeine Verwendung, was ich gemacht habe, um in vielen Jahren zu messen, ist funktionsfähiger für mich alle übrigen, und vor allem verlangt es nicht nach Ressourcen.
Ich arbeite gleichzeitig an intellicad, meshlab und povray. und diese Kombination, jedoch angepasst, gibt mir Zufriedenheit für meine Bedürfnisse, und erzeugt Dateien viel sauberer und leichter als jeder automatische Modellierer.
Für diese Lücke würde ich nur eine Getpoint-basierte Auswahlfunktion benötigen, aber ich verstehe nicht, wie ich es schneller machen soll als die Routine funktioniert. in der Praxis ist das Problem: "Es ist nutzlos zu gehen, um entfernte Wesen von dem versuchten zu scannen, aber wie man sie nicht betrachten, ohne mich zu zwingen, für mehr Auswahlen mit kleinen Schnittfenstern zu gehen? "
 
Okay, ich verstehe, aber ohne das geschriebene Drehbuch zu kennen, kann ich Ihnen keine gezielten Ratschläge geben.

Wenn Sie jedoch vermeiden möchten, entfernte Entitäten zu scannen, müssen Sie Gruppierungen von Entitäten pro Zone/Koordinaten erstellen.
 
Es ist sehr einfach, da meine Lisp funktioniert, die Hauptschleife durchläuft alle Elemente der ausgewählten Liste, beginnend vom ersten Element und wiederholen mit den späteren Elementen. wenn in der geschachtelten Schlaufe das Pilotelement einen gleichen trifft, kommt es sofort aus der geschachtelten Schlaufe heraus, löscht sich selbst, und die Steuerung nimmt vom nächsten Element. Offensichtlich, wie die Hauptschleife gemacht wird, wächst ihr Index, und dann werden geschachtelte Schleifen kürzer. Auch die Kontrolle, gleiche Gesichter zu finden, ist nicht von wenig Berücksichtigung, müssen Sie berücksichtigen, dass die Reihenfolge der Vertiken zeitnah oder gegen den Uhrzeigersinn sein kann, kann vom ersten Gipfel ab dem zweiten ab dem dritten ab, wie vom vierten. Wenn das Gesicht zudem drei Seiten aufweist, könnte es ein oberes Element dupliziert werden, obwohl typischerweise dupliziert wird, ist das letzte. auf den Leitungen ist schneller, überprüfen Sie einfach, ob a-b gleich b-a ist.
Ich glaube nicht, dass die Einrichtung von Bereichen der Gruppierung eine robuste Methode ist, es können Wesen auf dem Pferd sein, und die Verwaltung wird kompliziert.
Wenn wir nicht andere Wege sehen, denke ich, wie ich schrieb, eine zweite kleine Auswahleinheit zu erstellen, in einer Schleife, die alle Elemente der Auswahl kümmert. aber auch das ist keine triviale Aufgabe, das Fenster muss dreidimensional sein und die Begrenzungsbox des Pilotelements haben, um alles zu erfassen und zu analysieren und Solo die Einheiten, die sich schneiden. .
 
Ich glaube nicht, dass die Einrichtung von Bereichen der Gruppierung eine robuste Methode ist, es können Wesen auf dem Pferd sein, und die Verwaltung wird kompliziert.
Wenn wir nicht andere Wege sehen, denke ich, wie ich schrieb, eine zweite kleine Auswahleinheit zu erstellen, in einer Schleife, die alle Elemente der Auswahl kümmert. aber auch das ist keine triviale Aufgabe, das Fenster muss dreidimensional sein
die Einrichtung eines Gruppierungsgebiets ist nicht stabil, aber dann gruppieren Sie?
vielleicht sagen wir dasselbe, aber anders, kleine Auswahlen +-= Gruppierungen

immer nach der ausführlichen Beschreibung Ihres Codes wollte ich Ihnen ein Detail Ihres Codes zeigen, dass ich vielleicht schlecht interpretiere, aber wir sehen, ob ich mich selbst erklären kann.

wenn der Hauptzyklus von 1 bis 1000 (Anzahl nach Fall) und der geschachtelte Zyklus 100(Anzahl nach Fall) Einheiten beseitigt, der Hauptzyklus, wie er sich verhält?
 
wenn der Hauptzyklus von 1 bis 1000 (Anzahl nach Fall) und der geschachtelte Zyklus 100(Anzahl nach Fall) Einheiten beseitigt, der Hauptzyklus, wie er sich verhält?
Nein, ist es nicht. Wenn der geschachtelte Zyklus eine Einheit eliminiert, wenn sie sie erfüllt, würde es mir die Auswahl für die Verwendung auch der späteren geschachtelten Zyklen rückgängig machen. der Hauptzyklus hätte in diesem Fall die Sonde, um sie zu berücksichtigen. aber es gibt eine einfache Lösung.
der Hauptzyklus funktioniert so, nimmt die Elemente in progressiver Reihenfolge, nennen sie idx für Klarheit.
jeder geschachtelte Zyklus beginnt mit Idx als Pilot, um die folgenden Elemente von idx +1 zu vergleichen.
wenn der geschachtelte Zyklus ein idx+n gleich dem Idx des Vergleichs findet, schließt er seinen geschachtelten Zyklus und springt aus.
Wiederholt den Hauptzyklus durch Erhöhung, beseitigt aber in der Zwischenzeit Idx, die bereits verwendet wurde und von denen eine Wiederholung gefunden wurde.
Ich sagte, dass das Verfahren beschleunigt, aber nicht, weil es geht, um die Liste zu löschen, zu beobachten, aber weil das geschachtelt wird mehr und mehr kurz, beginnen jedes Mal von idx+1.
 
Ich sagte, dass das Verfahren beschleunigt, aber nicht, weil es geht, um die Liste zu löschen, zu beobachten, aber weil das geschachtelt wird mehr und mehr kurz, beginnen jedes Mal von idx+1.
In der Tat war das klar, wie alle Erklärungen des Codes, den Sie gaben.

mit dem Ziel, die Leistung zu verbessern, jedes Mal, wenn Sie eine einzelne Einheit eliminieren, werden verschiedene Operationen durchgeführt, die den Code mehr "langsam" machen könnten, insbesondere mit großen Mengen an zu verarbeitenden Einheiten.

unter bestimmten Bedingungen, wenn ich ein Element aus dem "Auswahl-Set" löschen (wir sagen, dass ich 10 Einheiten in der "Auswahl-Set" habe und das zwischengeschaltete Gatter), wird die "Umschaltung" des "Auswahl-Sets" durchgeführt, um die Daten zusammenhängend zu machen und diese Operation (automatisiert) leistungsverschlechtert.

Wenn dies Ihr Fall ist, könnte dies ein Punkt sein, um neu zu bewerten.
 
Ich verstehe das Konzept, sagen Sie?
Ich denke, die Auswahl bleibt intakt, weil sich der Index nicht ändert, ich bin der Anstieg und der Fall eliminiert, wie viel ich löschen muss.
Sehen Sie den Hauptschleifenschuh. I dann die Größe max. Ich mische es nicht mehr. Meiner Meinung nach wird eine Art Nil erstellt, aber ich werde überprüfen, solange ich das Programm mit einem schönen "Komment" vor entdel schreibe, werde ich Sie kennen.
Ich denke, es ist der Vergleich, der Zeit wegnimmt, aber ich versuche, die Stornierung zu eliminieren und die jeweiligen Zeiten zu missbrauchen
(falls/= nilselez)
(Prog.)
(Setq max (Länge) contasel 0)
(Während)
(setq en (ssname selez contasel) alist (entget en))
(falls Gold (= "3dline" (cdr(assoc 0 alist))))) (= "line" (cdr(assoc 0 alist)))))
(Prog.)
.......................
 
besser in die Praxis gehen, ich weiß offen nicht, wie zu optimieren, setzen Sie den gesamten Code auf der Linie, weil für das auf den Gesichtern Vergleichskontrollen sind Kilometrisch.
Hier ist das Scankonzept identisch, aber der Code ist kompakt.
Anmerkung:
das dritte Begrenzungsargument gleich ist für das bekannte Doppelproblem unlösbar. wenn der zweite Punkt aus einer Rotation kommt, wird nie wirklich gleich sein.
Anmerkung 2:
das Princ ". Ich weiß, dass es meine Zeit verschwendet, aber ich bevorzuge den Fortschritt beim Video zu sehen, es wird eine Fortschrittsleiste


(defun deletelinecopy)
(prompt "\ndelete line copy new: ") (setq selez(ssget))) (setq tot 0 spy 0)
(falls (/= nil selez)
(Progn)
(setq max (länge selez) Contasel 0)
(Während)
(setq en (ssname selez contasel) alist (entget en)
(falls (oder (= "3dline" (cdr(assoc 0 alist))))))))
(Progn)
(setq tot 0)
(setq pnta (cdr(assoc 10 alist))) pntb (cdr(assoc 11 alist))
(Sectq spying 1)
(d.h. (- max contasel ) (/= tot) 1)
(setq en2 (ssname selez (+ Gegenwire spy)) alist2 (entget en2))
(setq pnta2 (cdr(assoc 10 alist2)) pntb2 (cdr(assoc 11 alist2))
(falls (und (gleich pnta2 0,00000001) (gleich pntb pntb2 0,00000001)) (setq dead 1))
(falls (und (gleich pntb2 0.00000001) (gleich pntb pnta2 0,00000001)) (setq dead 1))
(setq Flatness (+ Flatness) 1)
)
) enden, wenn
;wend geschachtelt

(wenn (= tot 1)(entdel en))
(setq tot 0 spy 0)

;(princ (rtos contasel))
(princ)
(setq contasel (+ 1 Buchhalter))
)
) enden, wenn
)
)

 
Okay, mehr am Tag sehe ich es vorsichtiger an.

für Notizen2, ich bevorzuge auch die Progression des Prozesses zu sehen, Ich glaube nicht, dass es ein Problem für die Leistung darstellt, aber wenn Sie irgendwelche Zweifel haben, kommen Sie einfach auf den Code und sehen Sie den Unterschied in der Ausführung.

Haben Sie eine Skriptanalyse durchgeführt, um herauszufinden, welcher Teil des Codes länger dauert?
 
Ich tat es jetzt, mit Ergebnissen noch höher als ich dachte.
Ich betonte den Code am meisten, mit einer extremen Auswahl, in der ich alle Elemente verdoppelte. in der Praxis musste er immer löschen.
daher mit Stornierung Minuten 13:20
ohne Stornierung Minuten 13:12
sehen, dass die Stornierung nicht wiegt? Der Code ist hier, wer es testen kann.
Aufmerksamkeit, wie ich "entdel" unterdrückte.
Ich musste das Gewicht des Vergleichs behalten, wenn, so habe ich die beiden Zeilen des Codes getauscht

(wenn (= tot 1)(entdel en))
(setq tot 0 spy 0)

zu werden

(setq tot 0 spy 0)
(wenn (= tot 1)(entdel en))

dass die Variable "dead" zurückgesetzt wird, die die Bedingung darstellt, dass sie abbrechen muss.

Stattdessen glauben Sie mir, die Ausgabe princ ".", die meine Statuszeile erhöht, die eine sicher wiegt, aber ich kann sie jederzeit wegnehmen.
das Problem ist, eine intelligente zu finden, um die Auswahl aus dem Prinzip zu begrenzen, weil, wenn man geschachtelte Zyklen, der Gewinn wäre exponentiell.

N
weil nach mir princ ". jeder Zyklus wiegt?
Ich teste es nicht mal. mit anderen Sprachen, wenn Sie einen Text ausgeben, um Video, während komplexe Operationen, Sie müssen eine sehr schwere "Doevents", oder ich weiß, wenn Sie es kleben und aktualisieren Sie die Ausgabe, sobald es Zeit hat, das ist, wenn Sie Ihre Berechnung Zyklen beenden.
die "Doevents", oder so etwas, verpflichtet mich, diese Ausgabeanweisung im Auge zu behalten, in lisp muss ich es nicht setzen, aber das bedeutet, dass der Code es bereits tut... sonst würden Sie das klassische Rad sehen, das sich an das Ende der Loops wendet... mit der gefrorenen Statusleiste. Es passiert normalerweise so...
Ich könnte es testen, aber es ist nutzlos. früher oder später werde ich es neben entdel platzieren, nur um anzuzeigen, dass "eine" Stornierung stattgefunden hat, und nicht auf all das, was der Hauptzyklus.
Danke!
 
Ist Ihnen klar, dass ich Ihren Code nie vollständig gesehen habe und dass oder Annahmen basierend auf Ihren Beschreibungen getroffen haben?

Nach Ihrem letzten Beitrag weiß ich nicht, ob ich das Gespräch fortsetzen soll oder nicht, ich habe den berechtigten Zweifel, dass dieser "Code" zu optimieren ist nur ein Vorwand, würden Sie mir bitte Ihre Bestätigung geben?

Danke.
 
Sie antworteten mir auch: "Ok, mehr an dem Tag, an dem ich es aufmerksamer sehe. "
Welcher Vorwand für was? Machst du Witze?
 
Wie hast du ihn nicht gesehen?
Ich habe alles hier veröffentlicht.
Ja, ich habe es gesehen, aber wenn ich voll sage, meine ich vollständig in jedem Teil von ihm, er veröffentlichte den ganzen Teil, der die Linien betrifft.
cmq, ich sah den Code heute Morgen und ich hatte noch keine Chance ihn zu lesen.
Sie antworteten mir auch: "Ok, mehr an dem Tag, an dem ich es aufmerksamer sehe. "
Welcher Vorwand für was? Machst du Witze?
in einer ersten Lesung habe ich die letzten Notizen Ihrer Nachricht falsch interpretiert, jetzt, da ich sie gelesen habe... du kennst die Eile...

Vielleicht kann ich jetzt einen Blick auf den Code werfen, den du geschrieben hast. .

Sie sagten, dass in Ihren Tests die Ausführung des Skripts knapp über 13 Minuten dauerte (13:12 - 13:20), wie viele Wesen es funktionierte?

Können Sie dem Code zusätzliche Kontrolle hinzufügen, um eine gezieltere Situation bei Ausführungszeiten zu haben?

Es wäre nützlich zu verstehen, welcher Teil des Codes mehr Zeit für die Ausführung benötigt.

ps:
Können Sie eine Beispieldatei teilen, damit ich das Skript testen kann?
 
den Code, den ich geschrieben habe, aber du hast geflogen, ist sehr vollständig sicher, dass es die linearen Wesen betrifft. und Zwilling des anderen auf den Gesichtern, dass ich nicht war zu posten.
und es wäre genauso Zwilling, wenn es Polyline-Entität oder andere verglichen.
Dies, weil, wie ich bereits erläutert hatte, der Code bezüglich der Gesichter bei der Einstellung der Abtastschleifen identisch ist, obwohl dann offensichtlich innerhalb der Zyklen die Vertiken zum Vergleich und die Verifikationen in der Reihenfolge der Vertiken erhöhen und daher weniger sofort und kompakt zu analysieren ist.das große Problem ist, die Auswahl zu begrenzen, die Anzahl der Zyklen zu verringern. Aber ich finde, ich wiederhole Dinge, die bereits gesagt und geschrieben wurden, also meinen wir nicht zu viel.
wenn Sie denken, Sie können optimieren auch die Methode der Schleifen und Vergleiche, der Code ist da, um zu sehen, und ich wäre glücklich, wenn Sie mir in der Praxis sagen, wo Sie fühlen sich zu intervenieren und wie. viel besser, aber ich bin überzeugt, dass es nicht viel zu erfinden gibt. der Test, durchgeführt auf ein paar tausend Gesichter, diente mir, das "Gewicht", wie Sie vorgeschlagen, der im Zyklus, die sich bewährt hat proportional wenig signifikant auch durch Unterdrückung. Dies, ich wiederhole, weil es die Vielzahl von Zyklen wiegt.
meine Absicht, bereits im Thema geäußert, ist auf der Suche nach einer Möglichkeit, die Auswahl zu begrenzen a priori, weil was wiegt ist die Anzahl weil es zunimmt exponentiell Erhöhung der Zahl der Unternehmen. Ich danke Ihnen, aber da ich die Diskussion nicht wirklich mag, danke ich Ihnen, aber vielleicht ist es besser, sich zu verabschieden.
 

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