Absturz bei intelligenter Füllung
#11
Hallo,
(01.03.2019, 17:22)wdreinheim schrieb: ... In meinem Fall kommt es aber häufig vor, daß Linien stumpf an ener anderen Linie enden müssen, um korrekt füllen zu können, also ohne Knoten an der anderen Linie (siehe Anlage). Die Funktion Kurven verbinden bietet dazu leider keine Möglichkeit.
jein, du kannst auch diese Objekte schließen, allerdings werden überstehende Kurven entfernt.
Wähle mal beide Kurven aus und probiere diese Einstellungen.
Das Ergebnis    

Jetzt mal laut gedacht:
Wenn du alle Objekte auf eine zweite Ebene kopierst und nur auf diese Objekte (auch abschnittsweise)"Kurven verbinden" mit einer größeren Toleranz anwendest, sollten die offenen Kurven geschlossen werden und die durch die Funktion abgeschnittenen Kurven von der ersten Ebene ergänzt werden.
Wie das allerdings bei Bögen aussieht?????

(01.03.2019, 17:45)wdreinheim schrieb: ...weil möglicherweise schon in Autocad nicht präzise gearbeitet wurde...
Denke ich auch, nach meiner Erfahrung mit importierten Autocad Datein waren die Kurven zwar oft offen aber die Endknoten lagen eigentlich übereinander und waren so leicht automatisch zu schließen.
???Könnte man vielleicht die Autocaddatei in einer älteren Version abspeichern, vielleicht tut sich Corel dann leichter???


Gruß
Norre
Zitieren
#12
Hallo Norre,
 
den ersten Vorschlag werde ich mal testen. 
 
Die Autocad-Datei ist eine Anlieferung von Dritten, leider habe ich keinen Einfluß auf die Art der Abspeicherung. Ich bin froh, daß ich sie in Coreldraw importieren kann.
 
Beste Grüße
WDReinheim
Zitieren
#13
Hallo WDReinheim,
würde es sich nicht lohnen,  die Testversion (30 Tage) von CorelCad 2019  herunter zu laden, um so vielleicht den Fehlern auf die Spur zu kommen oder um anders speichern zu können?

Viele Grüße, Chris

Betriebssystem / Grafik-Software: Win 7
Zitieren
#14
Hallo Chris, hallo Norre,
 
danke für den Hinweis auf Corelcad, aber ich denke, wir sind hier in einer Sackgasse. 
 
Noch mal von vorne: Das Problem für den Absturz liegt vermutlich in nicht geschlossenen Flächen, bei denen die intelligente Füllung versagt. Bei Betrachtung der ursprünglichen aus Autocad importierten DWG-Datei fällt auf, daß manche Umrisse nicht an einem benachbarten Umriss enden, sondern wenige Hundertstel mm vorher, es liegt also eine kleine Lücke vor (siehe in der Mitte des beigefügten Bildes).  Für die intelligente Füllung benötigt man aber keinen geschlossenen Umriß, es genügt, wenn die zu füllende Fläche allseitig von Umrissen begrenzt, also die kleine Lücke geschlossen ist.
 
   
 
Im vorgenannten Fall ist dies wegen der Lücke nicht gegeben: Wenn ich das Kuchenstück oben links intelligent füllen möchte, wird wegen der Lücke der ganze obere Halbkreis mit gefüllt.  Wenn die Lücke geschlossen ist, passiert das nicht.  
 
M E würde es genügen, wenn die Lücke durch eine kurze gerade Linie mit dem nächsten Punkt auf der nächsten benachbarten Linie geschlossen wird. Dadurch entsteht eine geschlossene Fläche, die intelligent gefüllt werden kann.
 
Wünschenswert wäre ein Makro, das in der Zeichnung alle im Freien endenden Umrisse sucht und sie um eine gerade Linie verlängert, die an dem nächstliegenden Punkt (nicht Knoten) der nächsten Linie endet. Dabei entstehende Ungenauigkeiten können bei den wenigen Hundertstel mm in Kauf genommen werden.
 
Ich hoffe, daß ich das ganze klar genug beschrieben habe. Wenn nicht: Bitte rückfragen.
 
Beste Grüße und Dank für die bisherige Hilfe
WDReinheim
Zitieren
#15
Hallo,
das Problem war schon klar.
Makro wäre natürlich ne tolle Sache da müssen die Makrospezialisten um @Koter ran.
Da er sich noch nicht gemeldet hat denke ich wird das nicht so einfach sein ??

Falls das mit dem Macro nicht geht hätte ich noch eine Idee.
Erstelle dir eine schmale Pfeilspitze,
diese Pfeilspitze weist du allen Kurven zu,
dann alle Umrisse in Objekte umwandeln ( weil, Pfeilspitzen schließen die Kurve nicht)
nun sollten die Kurven optisch geschlossen sein (schwarz) und sich füllen lassen.
   

Gruß
Norre
Zitieren
#16
Hallo Norre,
 
das mit der Pfeilspitze ist eine pfiffige Idee, sie funktioniert auch.  Allerdings entstehen auf diese Weise sehr viele winzig kleine geschlossene Flächen, die das ganze wieder stören.
 
Ich hoffe noch auf ein professionelles Makro.
 
Beste Grüße
WDReinheim
Zitieren
#17
Hallo Wolfgang,

Das folgende Makro flickt an jede offene Kurve ein Stück an. Die angeflickten Stücke landen auf der Ebene „Flickebene“ die man nach Gebrauch löschen kann.


Code:
Sub anflicken()
   Dim s1 As Shape, s2 As New Shape, zForm As New Shape
   Dim n1 As Node, n2 As Node
   Dim Flickebene As New Layer
   Dim sr As ShapeRange
   Dim seg As Segment, segVor As Segment, segNach As Segment
   Dim L As Double, k1x As Double, k1y As Double, k2x As Double, k2y As Double
   ActiveDocument.Unit = cdrMillimeter
   On Error GoTo weiter
   
   L = 3
       
   Set sr = ActivePage.Shapes.FindShapes(Type:=cdrCurveShape)
   Set sr = sr.Shapes.FindShapes(Query:="@com.curve.closed = false")
   
   ActiveDocument.BeginCommandGroup "Flickebene"
   Application.Optimization = True
   Set Flickebene = ActivePage.CreateLayer("Flickebene")
   For Each s1 In sr
       k1x = s1.Curve.Nodes.First.PositionX
       k1y = s1.Curve.Nodes.First.PositionY
       k2x = s1.Curve.Nodes.Last.PositionX
       k2y = s1.Curve.Nodes.Last.PositionY
       
       Set n1 = s1.Curve.Nodes.First
       Set n2 = s1.Curve.Nodes.Last
       Set segVor = n2.PrevSegment
       Set segNach = n1.NextSegment
       Set s2 = ActiveVirtualLayer.CreateLineSegment(k1x, k1y, k1x, k1y + L)
       s2.RotateEx segNach.StartingControlPointAngle + 90, k1x, k1y
       ActiveDocument.LogCreateShape s2
       Set s2 = ActiveVirtualLayer.CreateLineSegment(k2x, k2y, k2x, k2y + L)
       s2.RotateEx segVor.EndingControlPointAngle + 90, k2x, k2y
       ActiveDocument.LogCreateShape s2
   Next
weiter:
   Application.Optimization = False
   ActiveDocument.EndCommandGroup
   ActiveSelectionRange.Shapes.All.RemoveFromSelection
   ActiveWindow.Refresh
End Sub

Die Länge der angeflickten Linien kann über die Variable „L“ eingestellt werden. Sie steht hier auf 3mm, das wird für Dich zu lang sein. 

Das Makro basiert auf Norres Idee mit den Pfeilspitzen, nur das es keine Flächen sondern Linien produziert.
Ich bin allerdings skeptisch. Das ist bestimmt kein „professionelles Makro“ und ob es wirklich den erhofften Zweck erfüllt kann ich nicht vorhersagen.

Gruß

Koter
[-] 3 Benutzer bedanken sich bei koter für diesen Beitrag:
  • norre, Unkraut, wdreinheim
Zitieren
#18
Hallo Koter,
 
zunächst besten Dank für dieses Makro und den dafür getriebenen Aufwand, ich wollte, ich könnte mir selbst mit der Programmierung helfen, aber dazu brauche ich wohl erst eine Schulung.
 
Ich werde das Makro in Kürze installieren und zurückmelden, ab es mein Problem löst. Aus gesundheitlichen Gründen bitte ich um etwas Geduld.
 
Beste Grüße
WDReinheim
Zitieren
#19
Hallo Koter,
 
ich habe nun versucht, das Makro Anflicken.GMS zu laden. Leider kommt nur die Fehlermeldung:
 
"Projektdatei kann nicht geladen werden ..."
 
Das passiert in den Versionen X7, X8 und 2018 in gleicher Weise.
 
Was mache ich falsch? Was tun?
 
Beste Grüße
WDReinheim
Zitieren
#20
Hallo Wolfgang,
(05.03.2019, 12:56)wdreinheim schrieb: ...ich habe nun versucht, das Makro Anflicken.GMS zu laden...

Das Makro in meinem letzten Beitrag ist nur der Quellcode, die GMS müsstest Du selbst erstellen.
Ich habe an diesen Beitrag eine GMS angehängt. Das Makro in dieser GMS hat ein Dialogfeld:

[Bild: kappen0kkvq.gif]

Mit dem Makro kann man auch die Enden der angeflickten Stücke kappen. Das dauert allerdings seht lange.
In der Animation sind nur 640 Enden zu kappen. Wie lange das bei tausenden von Objekten dauert, möchte ich mir gar nicht vorstellen. Meine Zweifel bleiben also.

Gruß

Koter


Angehängte Dateien
.zip   anflicken1.zip (Größe: 57,68 KB / Downloads: 4)
[-] 1 Benutzer bedankt sich bei koter für diesen Beitrag:
  • norre
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Doppelte Schneidelinien durch Füllung beseitigen. Henni 6 623 28.09.2017, 13:22
Letzter Beitrag: Hartmut
  JPG bringt Grafik Suite 2017 zum Absturz Baumal 2 256 24.07.2017, 14:58
Letzter Beitrag: Baumal
  Bitmapausschnitt als Füllung für Schrift nutzen. Henni 12 632 19.04.2017, 11:52
Letzter Beitrag: Henni
  Füllung zuweisen??? Max 2 496 06.08.2016, 18:14
Letzter Beitrag: Max
  Füllung in mehrfach ineinanderliegende Konturen Litespeed 5 521 04.05.2016, 15:52
Letzter Beitrag: Litespeed
  Füllung aus einer Grafik entfernen grimereaper 6 849 12.02.2016, 10:06
Letzter Beitrag: Hartmut
  Corel X6-64 Bit "Füllung bearbeiten" Blacky 23 1.861 29.06.2015, 12:23
Letzter Beitrag: Blacky
  schmutzige Füllung (dirty, grunge) mifoma 10 1.475 17.12.2014, 09:39
Letzter Beitrag: morphsuite
  Ungültige Füllung? seppel69 4 949 29.09.2014, 20:37
Letzter Beitrag: seppel69
  E/A Lesefehler nach Absturz beim Speichern Corel Draw X6 KirstenKAT 8 4.996 28.08.2014, 17:37
Letzter Beitrag: norre