Abstürze X6 nach Makroausführung
#1
Moin liebe Gemeinde!

Habe mal was neues. Ich hatte mal wieder eine Datei mit einigen übereinanderliegenden Linien, das war diesmal aber kein Importfehler sondern der Kunde hatte ordentlich gepfuscht.
Das Makro "RemoveUnderlyingDups" hatte bei der Corel Version X4 immer großartige Dienste geleistet, also sollte es ja auch mit X6 funktionieren. Dachte ich...

Nach ausführen des Makros hängt sich X6 in einigen Funktionen auf, so ist zum Beispiel die Statusleiste unten "eingefroren".
Beendet man nach getaner Arbeit dann Corel, kommt das unschöne PopUp "Corel reagiert nicht mehr...".
Das dumme ist, "Corel reagiert nicht mehr" kommt jetzt bei jedem schliessen auch ohne Ausführung des Makros, das ist mir nicht ganz geheuer.

Hatte das schon mal jemand?

LG
Thorsten
Zitieren
#2
Hallo,

Das manche älteren Macros zicken oder gar nicht erst laufen wenn die auf neuen Versionen eingesetzt werden ist bekannt. Aber dass dies auch Auswirkungen beim Neustart von Corel hatte ich noch nicht

Das Macro hatte ich erst letztens in Gebrauch, ich habe gerade noch mal nachgeschaut, dass die Statusleiste einfriert habe ich auch, ist mir bis jetzt noch nicht aufgefallen ;-) aber sonstige andere Auswirkungen kann ich bei mir nicht bestätigen.
Nachtrag: Da ich CARM nicht aktiviert habe, bekomme ich natürlich keine weiteren Meldungen

Dass manches auf neuen Versionen nicht läuft hängt mit geänderten Befehlen in der VBA zusammen, (hoffe ich habe richtig wiedergegeben) Dr.Macro Koter hatte dazu mal etwas geschrieben, ich finde es jetzt allerdings gerade nicht
Zitieren
#3
Hallo,
das Macro kam ursprünglich von wOxxOm aber der hat schon seit Jahren nichts mehr gemacht, also wird das Macro wahrscheinlich auch nicht an die neuen Versionen angepasst werden :-(

Edit

Ein Macro das die Funktion, also das Löschen doppelter Linien enthält ist ECut
hier http://eng.e-cut.ru/
schau mal ganz unten das Video bei Remove double edges an

Gibts auch bei Macromonster http://macromonster.com/index.php?mod=de...&Submit=Go
Zitieren
#4
Hi Norre!

Ja, das hatte ich mir auch schon mal angeschaut. Scheint auf Dauer doch eine sinnvolle Ergänzung zu sein.

So ganz langsam Fuchse ich mich ja auch durch Euch und den Job in Geschichten rein, mit denen man vorher nichts zu tun haben wollte :daumen:, oder grundsätzlich nicht hatte. :haue:

Schau mal wie sich Corel weiter verhält. Im Moment habe ich das Gefühl es ist auch langsamer geworden. Aber vielleicht spinn ich auch nur rum und hör die Flöhe husten...

BG
Thorsten
Zitieren
#5
Hallo,
vielleicht mal Corel mit F8 zurücksetzen, aber wenn du dann das Macro wieder lädst............
Zitieren
#6
Hallo Thorsten, hallo Norre,

ich kann nur raten, weil ich X6 nicht besitze:

Das Makro greift auf den Programmstatus und damit auch auf die Statusleiste zu,
um dem Benutzer die Möglichkeit zu bieten, das Makro durch einen Druck auf die Escape-Taste zu unterbrechen.
Außerdem zeigt es einen Fortschrittsbalken in der Statusleiste an.

Um den Ablauf zu beschleunigen, werden die Funktionen boostStart und boostFinish aufgerufen.

Da es bei X6 ein Problem mit der Statusleiste zu geben scheint, sollte man den Zugriff des Makros auf dieselbe vielleicht mal „abschalten“.

Es kann auch möglich sein, dass boostStart und boostFinish Probleme machen.

Im folgenden Code-Beispiel sind diese Funktionen auskommentiert (abgeschaltet):

Code:
Option Explicit

Sub removeUnderlyingDups()
   Dim s As Shape, sr As New ShapeRange, props() As Double
   Dim toDel As New ShapeRange, stat As AppStatus, Jitter As Double, cnt&, idx&, _
       x As Double, y As Double, w As Double, h As Double, n&, match%, i&
   Jitter = 0.0001
   On Error Resume Next
   If ActiveSelectionRange.Count = 0 Then Set sr = ActivePage.FindShapes _
      Else Set sr = ActiveSelectionRange.Shapes.FindShapes
   If sr.Count = 0 Then Exit Sub
   ReDim props(1 To sr.Count, 1 To 5): cnt = 0: idx = 0
   'Set stat = Application.Status'                                  auskommentiert
   'stat.BeginProgress "Looking for curve duplicates...", True'     auskommentiert
   'boostStart'                                                     auskommentiert
   For Each s In sr
      'idx = idx + 1: stat.Progress = idx / sr.Count * 100'         auskommentiert
      'If stat.Aborted Then Exit For'                               auskommentiert
      x = s.PositionX: y = s.PositionY: n = s.DisplayCurve.Nodes.Count
      w = s.SizeWidth: h = s.SizeHeight: match = False
      If w < Jitter And h < Jitter Then
         toDel.Add s: cnt = cnt + 1
      Else
         For i = 1 To cnt
            'If stat.Aborted Then Exit For'                         auskommentiert
            If Abs(props(i, 1) - x) < Jitter Then _
               If Abs(props(i, 2) - y) < Jitter Then _
                  If Abs(props(i, 3) - w) < Jitter Then _
                     If Abs(props(i, 4) - h) < Jitter Then _
                        If props(i, 5) = n Then _
                           toDel.Add s: match = True: Exit For
         Next i
         If Not match Then
            cnt = cnt + 1: props(cnt, 1) = x: props(cnt, 2) = y
            props(cnt, 3) = w: props(cnt, 4) = h: props(cnt, 5) = n
         End If
      End If
   Next s
   'boostFinish'                                                    auskommentiert
   If toDel.Count = 0 Then Exit Sub
   toDel.CreateSelection
   If MsgBox("Confirm delete " + CStr(toDel.Count) + " objects", vbOKCancel) = vbOK Then _
      toDel.Delete
End Sub

Vielleicht klappt es auf diese Weise mit X6

Nachtrag: Man kann das Makro so natürlich nicht mehr mit der Escape-Taste unterbrechen.

Gruß

Koter
[-] 1 Benutzer bedankt sich bei koter für diesen Beitrag:
  • Unkraut
Zitieren
#7
Hallo Koter,

Moment, habe gedacht der Code von dir ist nur ein Beispiel, aber dat ist ja das Macro :daumen:
Gleich mal antesten
Zitieren
#8
Hallo Koter,

dein geänderter Code funktioniert bestens unter X6 :daumen:
Zitieren
#9
Hallo Norre,

zu Deinem Beitrag vor der Änderung:

Ich hoffe ich verletze hier niemandes Recht! Ich weiß nicht mehr aus welcher Quelle ich das Makro habe, ich benutze es schon sehr lange, es war aber nie Passwortgeschützt.
Das Makro kursiert auch in mehreren Variationen im Netz. Der Autor hat den Quellcode hier veröffentlicht.

Sollte ich mich irren, muss ich Jürgen bitten meinen Beitrag zu löschen.

Gruß

Koter
Zitieren
#10
Hallo Koter,
mein Fehler - Sorry,
ich habe genau das Macro unter Win7 noch im Programmordner liegen und da kann ich ja nicht Speichern [Bild: g070.gif]

Muss ich jetzt doch mal freigeben ;-)
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Corel Draw - Schrift Quicksand nach Umwandeln in Kurven nicht plottbar annalotta 1 162 15.02.2024, 13:57
Letzter Beitrag: Piet
  vorlage nach pixelgröße erstellen panzerauto 1 385 11.05.2023, 12:16
Letzter Beitrag: Karthagos
Photo Kreis erhält nach Export über Makro als DXF sehr viele Knotenpunkte Olaf 4 1.080 22.06.2022, 08:34
Letzter Beitrag: Olaf
  Kontur nach dem Export in PDF nicht mehr 100 % schwarz Ueckendorf 6 1.427 23.11.2021, 21:28
Letzter Beitrag: mvm
  CorelDraw home&Student 19 - ich scheitere jetzt nach einem Jahr wieder komplett dynacophil 1 1.220 24.10.2021, 17:02
Letzter Beitrag: dynacophil
  Vektorgrafik nach virtuellen Segmente löschen nicht brauchbar zum plotten Mecky 3 1.286 25.08.2020, 11:05
Letzter Beitrag: Mecky
  Dateisuche nach Eigenschaften (X7) OsCor 8 1.731 29.11.2017, 11:30
Letzter Beitrag: OsCor
  Export von Corel nach Adobe PDF, hier Sichtbarkeitseinst. der Ebenen im PDF gesperrt wdreinheim 2 1.513 27.07.2017, 10:30
Letzter Beitrag: wdreinheim
  CorelDraw X8 / nach PDF-Export ist ein weiterer PDF-Export nicht mehr möglich /661 niereeck 0 1.034 10.05.2017, 13:31
Letzter Beitrag: niereeck
  Verfeinerung nach Vektorisierung Internetsurfer 2 1.149 08.03.2017, 15:12
Letzter Beitrag: Internetsurfer