Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  BricsCAD
  Schraffuren erstellen per .Net

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für BricsCAD
Autor Thema:  Schraffuren erstellen per .Net (1044 mal gelesen)
jootto
Mitglied


Sehen Sie sich das Profil von jootto an!   Senden Sie eine Private Message an jootto  Schreiben Sie einen Gästebucheintrag für jootto

Beiträge: 4
Registriert: 13.09.2016

erstellt am: 06. Nov. 2016 12:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

in meiner Anwendung müssen ca. 25000 Polylinien gezeichnet werden und mit einer Schraffur versehen werden. Dies dauert im Moment 1-2s. Das Problem ist, dass die Schraffuren oberhalb der Polylinien gezeichnet werden. Möchte ich diese nun in den Hintergrund bringen dauert es ca. 50s. Mein Ziel ist es, die Geometrien jedes mal beim Starten der Anwendung zu zeichnen, wodurch die 50s nicht vertretbar sind.

Hier ist der Code mit dem ich im Moment die Hatches in den Hintergrund bringe Das Object Hatches ist hierbei eine ObjectIDCollection in der alle bisher gezeichneten Hatches eingetragen sind).

Code:
private static void SetHatchesToBackground()
        {
            Database database = HostApplicationServices.WorkingDatabase;
            _AcDb.TransactionManager manager = database.TransactionManager;
            using (Transaction action = manager.StartTransaction())
            {
                BlockTable blockTable = action.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable;
                if (blockTable == null) throw new System.NullReferenceException("blockTable == null");
                BlockTableRecord blockTableRecord = action.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                if (blockTableRecord == null) throw new System.NullReferenceException("block TableRecord == null");
                DrawOrderTable dot = action.GetObject(blockTableRecord.DrawOrderTableId, OpenMode.ForWrite) as DrawOrderTable;
                dot.MoveToBottom(Hatches);
                action.Commit();
            }
            Hatches.Clear();
        }


Habt Ihr Tipps oder kennt ihr einen schnelleren Weg?

Schönen Sonntag,

jootto

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

ACAD; defun-tools

erstellt am: 07. Nov. 2016 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jootto 10 Unities + Antwort hilfreich

Hallo jooto,

wie ermittelst du die Hatches? Wie oft wird diese Routine aufgerufen? Wirklich Zeit kostet das Commit() - weshalb man das wirklich nur einmal aufrufen sollte.
Und wenn das einmalige Commit() 50sec dauert, dann hast du keine Möglichkeiten, den Vorgang zu beschleunigen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jootto
Mitglied


Sehen Sie sich das Profil von jootto an!   Senden Sie eine Private Message an jootto  Schreiben Sie einen Gästebucheintrag für jootto

Beiträge: 4
Registriert: 13.09.2016

erstellt am: 12. Nov. 2016 21:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ja ich rufe den Commit nur einmal auf, also die Ausführung der oben dargestellten Funktion dauert 50sec. Schade. Geht es vielleicht in C++ schneller?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADwiesel
Moderator
CAD4FM UG




Sehen Sie sich das Profil von CADwiesel an!   Senden Sie eine Private Message an CADwiesel  Schreiben Sie einen Gästebucheintrag für CADwiesel

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 14. Nov. 2016 10:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jootto 10 Unities + Antwort hilfreich

25000 Schraffuren hab'  ich noch nie probiert, nicht mal annnähernd diese Menge.
Wie lange dauert es, wenn du die AutoCAD eigene Draworder Funktionalität dafür verwenden würdest? In Lisp wäre das ein Command Aufruf: eg: (command"_draworder"(ssget"_X" '((0 . "HATCH")))"" "_B")

------------------
Gruß
CADwiesel
Besucht uns im CHAT

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz