| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Alle Objekte die auf dem Bildschirm sichtbar sind (1130 mal gelesen)
|
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 24. Feb. 2011 12:02 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte folgendes machen: Ich möchte alle Entitys haben, die zur Zeit auf dem Bildschirm sichtbar sind. Der Grund ist folgender: Ich habe ein Makro geschrieben, bei dem man eine Linie auswählt, und das dann alle angrenzenden Objekte sucht und aus allen dann eine Polylinie macht. Funktioniert soweit auch gut. Das Problem ist nur bei sehr großen Zeichnungen (ca. 50.000 Entitys) dauert das Suchen der angrenzenden Objekte natürlich sehr lange. Und aus diesem Grund möchte ich nicht die ganze Zeichnung durchsuchen, sondern nur jene Entitys, die auf dem Bildschirm sichtbar sind. Nur wie filtere ich diese Objekte raus? Danke schon mal für Eure Hilfe!
------------------ Grüsse Benny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 24. Feb. 2011 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für Benny4
|
Ex-Mitglied
|
erstellt am: 24. Feb. 2011 12:49 <-- editieren / zitieren -->
Hi, VIEWSIZE ist eine Sysvar, aus der kannst Du mal die Höhe des Bildschirms abnehmen. VIEWCTR ist eine Sysvar, die gibt Dir den Mittelpunkt der aktuellen Ansicht Und wenn Du nach den beiden Variablen >>>suchst<<<, findest Du auch eine Menge Code. Vorsicht aber, das funkt nicht, wenn Du schräg oder perspektivisch draufguckst. Zusatzfrage: wenn Du nur den sichtbaren Bereich machst, ist das Ergebnis dann richtig? Ich meine, wenn man sich die 50000 Elemente mit einem intelligenten Index zurechtlegt, dann ist das keine großartige Leistungssache mehr.
- alfred -
[EDIT] man sollte nicht telefonieren während Beitrag schreiben, sonst sind andere schon lang fertig [/EDIT] ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 24. Feb. 2011 editiert.] |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 24. Feb. 2011 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für Benny4
Zitat: Original erstellt von Benny4: ... Ich habe ein Makro geschrieben, bei dem man eine Linie auswählt, und das dann alle angrenzenden Objekte sucht und aus allen dann eine Polylinie macht. F...
Und Befehl: PEDIT Verbinden Alle (oder Bildschirmwahl) reicht dafür nicht? P.S: Befehl: Pedit Mehrfach Verbinden macht dann auch gleich alle zusammenhängenden Linien zu Polylinien und verbindet diese. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 24. Feb. 2011 15:07 <-- editieren / zitieren --> Unities abgeben:
Hallo, werde das mal probieren. Das Ergebnis ist immer richtig, ich möchte nur an Zeit einsparen. Und das mit den Indexen: Ich habe ja eine Zeichnung die von irgendjemand irgendwie gezeichnet wurde. Da kann es sein dass eine Linie mit index 0 mit einer Linie mit index 40.000 verbunden ist und diese muss ich suchen. PEDIT: So habe ich das bisher gemacht, nur funktioniert das bei einigen AutoCAD - Versionen nicht richtig. Und da der Benutzer nur die Linie anklicken soll und weiter nichts, habe ich auch das Problem, dass wenn der User eine Polylinie anklickt dass es wieder nicht geht. ------------------ Grüsse Benny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 24. Feb. 2011 15:21 <-- editieren / zitieren -->
Hi, nee, ich hätte da mehr Topologie (GIS) -artig gedacht. Lese die Linien/Polylinien/Bögen ein. Sammle die Start- und Endpunkte der Elemente in einer Collection von benutzerdefinierten Objekten, solch ein Objekt kann so aussehen:
Code:
ID as Long GeoLoc as String 'und dieser String (GeographicLocation) baust Du Dir aus X und Y (und bei Bedarf C) zusammen EntList as Collection Pnt as Double(2)
Und diese Collection von Punkten baust Du Dir beim Einlesen der Elemente auf, mit dem Key = GeoLoc, damit Du schnell suchen/finden kannst. Damit kommt jeder Punkt nur einmal in der Collection vor und jeder Punkt kennt seine Anzahl von Elementen, die da dran hängen. Ist nur ein Element in der Liste, dann ist es das letzte Element Sind zwei Elemente in der Liste, dann verbinden Sind drei Elemente in der Liste, dann gibt's wohl einen Kreuzungspunkt ==> was auch immer dann für Dich richtig ist. Hoffe, es ist verständlich, - alfred - ------------------ www.hollaus.at |
Benny4 Mitglied Softwareentwickler
Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2010 ZW-CAD 2012
|
erstellt am: 28. Feb. 2011 12:48 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|