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

Finden Sie mit einer Auswahl die Polylinien in anderen

  • Ersteller Ersteller x11start
  • Erstellt am Erstellt am

x11start

Guest
Ich habe eine Lippe geschaffen, die ich gewöhnlich benutzte, um nacheinander verschiedene Tabellen (formed a4 und a3) zu drucken, die im Modellraum angeordnet sind.
grundsätzlich fragt der Befehl, die Tabellen auszuwählen, die ich beabsichtige zu drucken und als Druckkoordinaten verwenden die Scheiben (lwpolyline), die es auf "zz_format" Schichten findet.

(setq selpol(ssget; wählen Sie Einheiten' (mit Filter)
(Liste)
(Kons.<and") "and="" "lwpolyline")="" "zz_formato"="" "zz_formato")="" (cons="" -4="" ...="" 0="" 8="" ;="" entita'="" lascia="" le="" passare="" piano="" polilinea="" poste="" solo="" sul="">"
)
)

das Problem entsteht, wenn es irrtümlich zwei überlappende Quadrate gibt, oder man ist in einem anderen: z.B. der Rahmen des Formats, der sich auch auf der "zz_formato"-Schicht befindet, anstatt auf einer anderen Schicht, die die Lisp ignorieren würde.
In diesen Fällen wird mein Design zweimal irrtümlich gedruckt, wobei man das richtige Format einnimmt und der andere den Rahmen etwas kleiner nimmt.

Ich möchte daher einen Weg finden, um den Fehler zu finden, der es mir erlaubt, meine Lispe zu stoppen und die falsche Scheibe zu melden... mit einem schönen Kreis!

Der Workflow, den ich dachte, ist wie folgt:

- Ich führe eine von einer ausgewählten Polylinien und fand auf der "zz_formato"-Schicht.
Ich erstelle eine Liste mit den Tops jeder Polylinie gefunden.
- Ich erstelle eine zweite Liste mit dem Baricentro (Punkt der Kreuzung des ersten mit dem 3. Gipfel und dem 2. mit dem 4.).
- Ich sehe eine von einem die Baricentres gefunden und ich vergewissere, ob diese innerhalb sind, nicht nur die Liste der betrachteten Punkte
aber auch eine andere Liste. Wenn ja, bedeutet es, dass dieser Punkt intern ist, nicht nur von der Figur, von der er zentriert ist,
aber auch von einem anderen: Es ist also ein Fehler.

Ich weiß nicht, ob dies der richtige Fluss ist oder ob es schnellere Lösungen gibt: Ich möchte das Schreiben von Seiten und Codeseiten vermeiden, für
dann entdecken Sie, dass mit 4 vl-xx Befehlen Sie alles tun können!</and")>
 
aber die Formate a4 und a3 sind immer im gleichen Maßstab?

Sie könnten Polylinea ausschließen, die eineverschiedene Fläche Dai valori:
21x29.7xscala für die a4
29.7x42xscala von a3.
 
in der Firma können wir die Layouts nicht verwenden (der Chef weiß nicht, wie sie zu verwenden... so dass Sie es nicht verwenden!), folglich setzen wir alle Zeichnungen der Boards auf Modellraum.
Es handelt sich um Formate, die in a3 oder a4 gedruckt werden sollen, die jedoch je nach dem zu vertretenden Element unterschiedlich dimensioniert sind: eine 30 m lange Laune oder eine
1 m Panel, wird mit verschiedenen Skalen (auf a3 oder a4), je nachdem, wie Größe wir das Format.
Offensichtlich werden wir einige Details setzen, um sichtbar zu machen, was auf einem kleinen Blatt gedruckt, wäre unsichtbar.
die Details (nicht in der Lage, die Layouts zu verwenden!), erhalten wir sie, indem wir Blöcke machen und sie klettern.
Zeichnungen werden nicht nur aus dem obigen Grund skaliert.

die perfekt überlappten Polylinien würden mit einem Überkill eliminiert werden, aber häufiger gibt es 2 Formate: man, um das Blatt in vertikal a3 mit z.B. Rüstung und Schrein einer Pufferplatte zu drucken, und 1 in a4, die nur die Schreinerei drucken können.
Dieses letzte Format haben wir es in eine andere Schicht gelegt... aber es kann passieren, dass es falsch geht, in der gleichen Schicht der a3... Daher wollen wir nicht mit Überqualifikation in dem Teil, der sich auf die a3 überschneidet, beseitigen.

Mein Glück ist, dass wir immer Polylinien ohne Bögen behandeln und mit 4 Punkten (das Format a3 bis a4), so ist es nicht schwierig, das Mittelstück durch eine Kreuzung und den Zwischenbefehl zu finden.
Wie ich zuvor geschrieben habe, werde ich eines nach einer der verschiedenen Polylinien passieren, ich werde den Schwerpunkt extrahieren und prüfen, ob dieser Schwerpunkt auch in einer anderen Polylinie liegt. .

Wenn ich das tun kann, versuche ich, einen Code zu setzen.

danke sowieso dieva: Sie sind immer freundlich zu antworten!
 
Es dauerte einige Zeit, aber ich fand einen Weg, um das Problem zu lösen, das ich in diesem Beitrag angesprochen habe: jetzt teile ich es mit Ihnen.

Wir haben Paneele (eine Polylinie auf einer "zz_formato"-Schicht), die so viele Tabellen auf dem Modellraum darstellen, die wir beabsichtigen, auf vielen Blättern a3 zu drucken (mittels einer Lispe): wie ich in meiner Firma sagte "es ist verboten" die Verwendung von Layouts!

Manchmal konnte es passieren, dass 2 überlappende Platten gezogen wurden oder dass eine Polylinie irrtümlich auf die "zz_formato" Schicht verschoben wurde: das Ergebnis war, dass die Lispe, die mir den Mehrfachdruck erlaubte, mich 2 mal das gleiche Blatt oder einen Teil davon gedruckt.

Ich dachte zunächst an eine Lispe, die mir erlauben würde, zu verstehen, ob ein Punkt intern oder extern zu einer Polylinie war. durch Drehen dieser Lippe für jeden Punkt jedes ausgewählten Formats hätte ich verstanden, ob einer dieser Punkte irrtümlich innerhalb einer anderen Polylinie beendet wurde.
es funktionierte, aber es wurde zu lang: Auswahl 10 Formate, die ich überprüfen sollte
(9+8+7+6+5+4+3+2)*4 = 176 Punkte!

dann bekam ich eine Idee: Ich nehme die erste Polylinea, ich extrahiere die Punkte (4 Punkte des Formats) und ich mache eine neue Auswahl mit "crossing polyline" ... und natürlich die Filter, die mich nur die Polylinea-Entität und die Schicht passieren lassen, auf der sie liegt.
Auf diese Weise erhalte ich selnew: wenn selnew hat 1 nur Element ist ok, wenn gefunden 2 (oder mehr) bedeutet, dass es "entrückt" wurde auch eine falsche Polylinea.... und legt einen Kreis, um den Fehler zu markieren.

im beigefügten Gif-Bild stelle ich ein Beispiel:
Ich habe 6 Boxen gemacht, die so viele Formate zu überprüfen.
indem ich den Befehl "verifsovrap" starte, werde ich gebeten, sie auszuwählen.
"verifsovrap" startet auch eine Datei "makelayer.lsp" von leemac, die es Ihnen ermöglicht, einfach eine Schicht zu erstellen: Ich benutze es, um die Schicht zu erstellen, in der die Kreise gesetzt werden, die den Fehler hervorheben.

- Quadrate 1 - 2 - 4 sind korrekt,
- die 3 eine weitere Polylinie auf der gleichen Schicht, die teilweise auf das Format überlappt wird
- in 5 die extra Polylinie, ist völlig in der Box
- in 6 gibt es 2 Formate perfekt überlappt, aber es ist immer noch ein Fehler und wird auch berichtet
mit einem Kreis.

Diese Lispe kann auch von einer anderen Lispe gestartet werden: Starten (xxx:formsovrap setdiselection) wo Auswahl ist die Auswahl, die Sie passieren wollen.

Im Wesentlichen muss der "Lender" enthalten sein:

(falls (null xx:formsovrap)
(setq errsov (xx:formsovrap sel)); Kontrollüberlappungsscheiben (sel ist die zu prüfende Auswahl)
(wenn errsov (vl-exit-with-ror (alert "es gibt überlappende Scheiben\n(siehe Kreiszone)\ncorreggi und relaunch"))

Wenn errsov von nil verschieden ist, bedeutet es, dass er Fehler gefunden hat: Er schickt eine Nachricht.

Ich hoffe, es war hilfreich.
 

Anhänge

  • VerifSovrap.LSP
    VerifSovrap.LSP
    2,9 KB · Aufrufe: 1
  • VerifSovrap.gif
    VerifSovrap.gif
    111,1 KB · Aufrufe: 2
Zuletzt bearbeitet:
der Deckel, den ich hier aufgesetzt habe, hat eine Grenze: alles funktioniert, wenn die zu analysierenden Rahmen voneinander getrennt sind. Wenn Box 1 die 2 Seiten nebeneinander berührt und die 3 unten, zum Zeitpunkt der Überprüfung, es wird angenommen, dass die Scheiben sind 3, dann Fehler.... weitere Schritte sollten unternommen werden, um die Rahmen auszuschließen, deren Punkte auf der Linie sind, so müssen sie als gültig angesehen werden.
 

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