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

Sortierung einer Auswahlliste

  • Ersteller Ersteller Cristallo
  • Erstellt am Erstellt am

Cristallo

Guest
Ich habe eine Reihe von einfachen Linien Objekte, Polylinien, die nach ssget auswählen (im Bild diejenigen von magenta Farbe).
Ich bekomme die gute Auswahlliste, aus der ich jede einzelne Einheit für meine Operationen extrahieren kann, die Nummer usw. kennen.

Nachdem ich Segmente in rot und grün bauen muss, kann ich wissen, wie viele auf sechs gehen und wie viele auf der rechten Seite und durch Berechnung von Winkeln ziehen Segmente.
das Problem ist, dass die Startliste des Ssgets nicht nach einem x-y-Parameter sortiert wird, sondern durch die Erstellungsordnung in der Zeichnung, die ruhig nicht nach x oder y sein kann.
die Alternative ist, eine nach einer Einheit auszuwählen (die unangenehm ist).

existiert eine "schnelle" Möglichkeit, die Sortierung der Auswahlliste mittels einer koordinierten x- oder koordinierten y-Methode vorzunehmen?
Ich habe versucht, das Vl-Sortiment zu benutzen, aber ich bin erst seit gestern in meinem Kopf..
Code:
(setq p1 (getpoint "\nselect first point: ")
(setq p2 (getpoint "\nselect second point: ")
(setq-Objekte (ssget '(0 . "line,*polyline"))))
(Setq-Nummer (Längenobjekte)
(setq interasse (entfernung (cdr(assoc '10(entget(sname object 2))))))))))))))))))))))))))))))))))
(Abschnitt 2)
(Setq Winkelbasis (Winkel p1 p2))
(setq Halbliste (/ Nummer 2))

immagine 1.jpg
 
für einen Moment war ich enttäuscht zu empfehlen, dass Sie intercept (Fence) verwenden.... aber dann aus einem schnellen Test erkannte ich, dass es keine Objekte bestellt.
die einzige Lösung, die in den Sinn kommt, ist, durch das gesamte Auswahlset zu scrollen, die Koordinaten zu extrapolieren; die Auswahl mit einem ssadd
zur Sortierung einer Liste basierend auf einer anderen Liste können Sie versuchen, meine Bestellung zu verwenden. lsp-Datei durch Start der Sub x11: order1
 

Anhänge

Danke x11, ich werde es versuchen.
Es ist jedoch ein netter Roam, um eine Auswahl-Set zu bestellen, aber es gibt acad lisp, die es egregious machen. ein Beispiel ist die Zählung, aber es ist in einer solchen raffinierten Lispe geschrieben, dass es fast unmöglich wird, zu verstehen, wie es tut.
 
In der Tat habe ich ohne die verschiedenen vl-xxx aufgehört: Dafür bin ich manchmal gezwungen, kilometrische Lösungen zu finden (oder die Experten des Forums zu fragen!) sogar für die trivialen Dinge!
 
Solange die Wege, eine Lösung zu erreichen, endlos sind, ist das, was jetzt in den Sinn kommt:

nach ssget erhalten Sie die Liste der ausgewählten Artikel
Code:
(setq selez (ssget))

(Repeat)
(setq lista (cons (ssname selez (setq n (1-n))))))
)
Ich nahm: (<nome 21148ae8910="" entità:=""> <nome 21148ae8900="" entità:=""> <nome 21148ae88f0="" entità:="">)</nome></nome></nome>erstellt die Liste der Objekte mit der Koordinaten x ihres Anfangspunktes --> (car (vlax-curve-getstartpoint elem))
Code:
(foreach elem lista
(setq elenco (cons (list (auto (vlax-curve-getstartpoint elem)))
)
Ich nahm: (212.453) <nome 21148ae88f0="" entità:="">(197.518) <nome 21148ae8900="" entità:="">) (205.859) <nome 21148ae8910="" entità:="">)</nome></nome></nome>die vorherige Liste nach x-> (< (car e1)(car e2)) bestellen
Code:
(Setq Cast (vl-sort cast '(lambda (e1 e2)(< (car e1)(car e2)))))
Ich nahm: (197.518) <nome 21148ae8900="" entità:="">) (205.859) <nome 21148ae8910="" entità:="">(212.453) <nome 21148ae88f0="" entità:="">)</nome></nome></nome>gereinigte Liste des ersten Elements, d.h. der Koordinaten x
Code:
(foreach elem cast
(setq listdef (cons (cadr elem) listdef)
)
(setq listdef)
Ich nahm: (<nome 21148ae8900="" entità:=""> <nome 21148ae8910="" entità:=""> <nome 21148ae88f0="" entità:="">)</nome></nome></nome>
 
Ich versuche es.
und wenn es funktioniert... Ich nehme einen Zug und komme von einem Biss zur Hand.
 
Natürlich funktioniert es:
die einzige venial sin ist, dass (kein fragt warum) die (foreach elem list) nicht geht, aber ich ersetzte sie brutal durch eine (repeat (vl-list-length list)
und dass die Endliste (obvily) eine Liste ist und nicht mehr eine Auswahlmenge, so dass die Entitäten sie nicht mehr über ssname, sondern über n.

Ich bin überzeugt, dass Sie eine Zukunft als Programmierer haben. eine große professionelle Fallschirm.
Danke, dass Sie veraltet sind. Ich schulde dir eine Pizza.
 

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